diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 8d8a94d1cddc4..83772ed8d2b13 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -137,7 +137,7 @@ function(add_llvm_symbol_exports target_name export_file) set_property(TARGET ${target_name} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--version-script,\"${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}\"") endif() - elseif(WIN32) + elseif(WIN32 OR CYGWIN) set(native_export_file "${target_name}.def") add_custom_command(OUTPUT ${native_export_file} @@ -153,7 +153,7 @@ function(add_llvm_symbol_exports target_name export_file) elseif(CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC") # clang in msvc mode, calling a link.exe/lld-link style linker set(export_file_linker_flag "-Wl,/DEF:${export_file_linker_flag}") - elseif(MINGW) + elseif(MINGW OR CYGWIN) # ${export_file_linker_flag}, which is the plain file name, works as is # when passed to the compiler driver, which then passes it on to the # linker as an input file. @@ -666,7 +666,7 @@ function(llvm_add_library name) # When building shared objects for each target there are some internal APIs # that are used across shared objects which we can't hide. if (LLVM_BUILD_LLVM_DYLIB_VIS AND NOT BUILD_SHARED_LIBS AND NOT APPLE AND - (NOT (WIN32 OR CYGWIN) OR (MINGW AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")) AND + (NOT (WIN32 OR CYGWIN) OR ((MINGW OR CYGWIN) AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")) AND NOT (${CMAKE_SYSTEM_NAME} MATCHES "AIX") AND NOT DEFINED CMAKE_CXX_VISIBILITY_PRESET) diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake index 5aa047a33ba6a..c126b0d073322 100644 --- a/llvm/cmake/modules/HandleLLVMOptions.cmake +++ b/llvm/cmake/modules/HandleLLVMOptions.cmake @@ -465,7 +465,7 @@ if( LLVM_ENABLE_PIC ) endif() if((NOT (${CMAKE_SYSTEM_NAME} MATCHES "AIX")) AND - (NOT (WIN32 OR CYGWIN) OR (MINGW AND CMAKE_CXX_COMPILER_ID MATCHES "Clang"))) + (NOT (WIN32 OR CYGWIN) OR ((MINGW OR CYGWIN) AND CMAKE_CXX_COMPILER_ID MATCHES "Clang"))) # GCC for MinGW does nothing about -fvisibility-inlines-hidden, but warns # about use of the attributes. As long as we don't use the attributes (to # override the default) we shouldn't set the command line options either. diff --git a/llvm/include/llvm/Support/Compiler.h b/llvm/include/llvm/Support/Compiler.h index f46a7aeccd0aa..f6d0d3591c33b 100644 --- a/llvm/include/llvm/Support/Compiler.h +++ b/llvm/include/llvm/Support/Compiler.h @@ -133,7 +133,7 @@ #endif #if (!(defined(_WIN32) || defined(__CYGWIN__)) || \ - (defined(__MINGW32__) && defined(__clang__))) + ((defined(__MINGW32__) || defined(__CYGWIN__)) && defined(__clang__))) #define LLVM_LIBRARY_VISIBILITY LLVM_ATTRIBUTE_VISIBILITY_HIDDEN // Clang compilers older then 15 do not support gnu style attributes on // namespaces. diff --git a/llvm/lib/Target/CMakeLists.txt b/llvm/lib/Target/CMakeLists.txt index 9472288229cac..f5f6f5386f899 100644 --- a/llvm/lib/Target/CMakeLists.txt +++ b/llvm/lib/Target/CMakeLists.txt @@ -22,7 +22,7 @@ add_llvm_component_library(LLVMTarget # When building shared objects for each target there are some internal APIs # that are used across shared objects which we can't hide. if (NOT BUILD_SHARED_LIBS AND NOT APPLE AND - (NOT (WIN32 OR CYGWIN) OR (MINGW AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")) AND + (NOT (WIN32 OR CYGWIN) OR ((MINGW OR CYGWIN) AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")) AND NOT (${CMAKE_SYSTEM_NAME} MATCHES "AIX") AND NOT DEFINED CMAKE_CXX_VISIBILITY_PRESET) # Set default visibility to hidden, so we don't export all the Target classes