diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt index ac7a9a8db37c0..01ce019e40262 100644 --- a/clang/tools/libclang/CMakeLists.txt +++ b/clang/tools/libclang/CMakeLists.txt @@ -157,15 +157,21 @@ if(ENABLE_STATIC) endif() if(ENABLE_SHARED) - if(WIN32) + if(WIN32 OR CYGWIN) set_target_properties(libclang PROPERTIES VERSION ${LIBCLANG_LIBRARY_VERSION} DEFINE_SYMBOL _CINDEX_LIB_) - # Avoid declaring clang c++ symbols that are statically linked into libclang as dllimport'ed. - # If llvm/libclang-cpp dll is also being built for windows clang c++ symbols will still be - # implicitly be exported from libclang. - target_compile_definitions(libclang PRIVATE CLANG_BUILD_STATIC) + if (CYGWIN) + # cygclang.dll is needed in build-tree for testsuite of python bindings. + add_custom_command(TARGET libclang POST_BUILD + COMMAND ${CMAKE_COMMAND} -E create_symlink "$" + "$/$clang$") + endif() + # Avoid declaring clang c++ symbols that are statically linked into libclang as dllimport'ed. + # If llvm/libclang-cpp dll is also being built for windows clang c++ symbols will still be + # implicitly be exported from libclang. + target_compile_definitions(libclang PRIVATE CLANG_BUILD_STATIC) elseif(APPLE) set(LIBCLANG_LINK_FLAGS " -Wl,-compatibility_version -Wl,1") set(LIBCLANG_LINK_FLAGS "${LIBCLANG_LINK_FLAGS} -Wl,-current_version -Wl,${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}") diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 83772ed8d2b13..60ec7ea178e66 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -750,12 +750,20 @@ function(llvm_add_library name) set(library_name ${output_name}-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}) set(api_name ${output_name}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}) set_target_properties(${name} PROPERTIES OUTPUT_NAME ${library_name}) - if(UNIX AND NOT CYGWIN) + if(UNIX) llvm_install_library_symlink(${api_name} ${library_name} SHARED COMPONENT ${name}) llvm_install_library_symlink(${output_name} ${library_name} SHARED COMPONENT ${name}) endif() + elseif(CYGWIN) + get_target_property(output_name ${name} OUTPUT_NAME) + if(${output_name} STREQUAL "output_name-NOTFOUND") + set(output_name ${name}) + endif() + set(library_name ${output_name}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}${LLVM_VERSION_SUFFIX}) + llvm_install_library_symlink(${output_name} ${library_name} SHARED + COMPONENT ${name}) endif() endif() diff --git a/llvm/tools/llvm-shlib/CMakeLists.txt b/llvm/tools/llvm-shlib/CMakeLists.txt index 9a2015f61f2bf..521387a7d2aa5 100644 --- a/llvm/tools/llvm-shlib/CMakeLists.txt +++ b/llvm/tools/llvm-shlib/CMakeLists.txt @@ -33,12 +33,15 @@ if(LLVM_BUILD_LLVM_DYLIB) if (LLVM_LINK_LLVM_DYLIB) set(INSTALL_WITH_TOOLCHAIN INSTALL_WITH_TOOLCHAIN) endif() - if (WIN32 OR CYGWIN) + if (WIN32) add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${INSTALL_WITH_TOOLCHAIN} ${SOURCES}) else() add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB OUTPUT_NAME LLVM ${INSTALL_WITH_TOOLCHAIN} ${SOURCES}) # Add symlink for backwards compatibility with old library name llvm_install_library_symlink(LLVM-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX} $ SHARED FULL_DEST COMPONENT LLVM) + if (CYGWIN) + llvm_install_library_symlink(LLVM-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX} $ IMPORT FULL_DEST COMPONENT LLVM) + endif() endif() list(REMOVE_DUPLICATES LIB_NAMES)