Author: phosek Date: Wed May 29 21:40:21 2019 New Revision: 362055 URL: http://llvm.org/viewvc/llvm-project?rev=362055&view=rev Log: [runtimes] Check if pragma comment(lib, ...) is supported first
This fixes the issue introduced by r362048 where we always use pragma comment(lib, ...) for dependent libraries when the compiler is Clang, but older Clang versions don't support this pragma so we need to check first if it's supported before using it. Modified: libunwind/trunk/CMakeLists.txt libunwind/trunk/cmake/config-ix.cmake libunwind/trunk/src/AddressSpace.hpp libunwind/trunk/src/RWMutex.hpp Modified: libunwind/trunk/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/CMakeLists.txt?rev=362055&r1=362054&r2=362055&view=diff ============================================================================== --- libunwind/trunk/CMakeLists.txt (original) +++ libunwind/trunk/CMakeLists.txt Wed May 29 21:40:21 2019 @@ -362,6 +362,10 @@ if (WIN32 AND LIBUNWIND_ENABLE_STATIC AN add_definitions(-D_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS) endif() +if (LIBUNWIND_HAS_COMMENT_LIB_PRAGMA) + add_definitions(-D_LIBUNWIND_HAS_COMMENT_LIB_PRAGMA) +endif() + #=============================================================================== # Setup Source Code #=============================================================================== Modified: libunwind/trunk/cmake/config-ix.cmake URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/cmake/config-ix.cmake?rev=362055&r1=362054&r2=362055&view=diff ============================================================================== --- libunwind/trunk/cmake/config-ix.cmake (original) +++ libunwind/trunk/cmake/config-ix.cmake Wed May 29 21:40:21 2019 @@ -1,7 +1,7 @@ - include(CheckCCompilerFlag) include(CheckCXXCompilerFlag) include(CheckLibraryExists) +include(CheckCSourceCompiles) check_library_exists(c fopen "" LIBUNWIND_HAS_C_LIB) @@ -55,6 +55,14 @@ if (LIBUNWIND_HAS_NODEFAULTLIBS_FLAG) endif () endif () +# Check compiler pragmas +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + check_c_source_compiles(" +#pragma comment(lib, \"c\") +int main() { return 0; } +" LIBUNWIND_HAS_COMMENT_LIB_PRAGMA) +endif() + # Check compiler flags check_c_compiler_flag(-funwind-tables LIBUNWIND_HAS_FUNWIND_TABLES) check_cxx_compiler_flag(-fno-exceptions LIBUNWIND_HAS_NO_EXCEPTIONS_FLAG) @@ -96,4 +104,3 @@ endif() check_library_exists(dl dladdr "" LIBUNWIND_HAS_DL_LIB) check_library_exists(pthread pthread_once "" LIBUNWIND_HAS_PTHREAD_LIB) - Modified: libunwind/trunk/src/AddressSpace.hpp URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/AddressSpace.hpp?rev=362055&r1=362054&r2=362055&view=diff ============================================================================== --- libunwind/trunk/src/AddressSpace.hpp (original) +++ libunwind/trunk/src/AddressSpace.hpp Wed May 29 21:40:21 2019 @@ -27,7 +27,7 @@ #if _LIBUNWIND_USE_DLADDR #include <dlfcn.h> -#if defined(__unix__) && defined(__ELF__) && defined(__clang__) +#if defined(__unix__) && defined(__ELF__) && defined(_LIBUNWIND_HAS_COMMENT_LIB_PRAGMA) #pragma comment(lib, "dl") #endif #endif Modified: libunwind/trunk/src/RWMutex.hpp URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/RWMutex.hpp?rev=362055&r1=362054&r2=362055&view=diff ============================================================================== --- libunwind/trunk/src/RWMutex.hpp (original) +++ libunwind/trunk/src/RWMutex.hpp Wed May 29 21:40:21 2019 @@ -17,7 +17,7 @@ #include <windows.h> #elif !defined(_LIBUNWIND_HAS_NO_THREADS) #include <pthread.h> -#if defined(__unix__) && defined(__ELF__) && defined(__clang__) +#if defined(__unix__) && defined(__ELF__) && defined(_LIBUNWIND_HAS_COMMENT_LIB_PRAGMA) #pragma comment(lib, "pthread") #endif #endif _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits