From 10a71da05a5765ff15bb71a0dbd6d1986d6b0f12 Mon Sep 17 00:00:00 2001 From: Oscar Fuentes Date: Wed, 27 May 2009 15:49:33 +0000 Subject: [PATCH] CMake: Set LIBS on llvm-config so we can query the system libraries used by CMake with --ldflags. llvm-svn: 72470 --- llvm/cmake/modules/AddLLVM.cmake | 14 ++++---------- llvm/cmake/modules/LLVMConfig.cmake | 19 +++++++++++++++++++ llvm/tools/llvm-config/CMakeLists.txt | 7 ++++++- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 1f0ff74c12ce..c531298a30f0 100755 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -30,17 +30,11 @@ macro(add_llvm_executable name) target_link_libraries(${name} ${llvm_libs}) else( MSVC ) add_dependencies(${name} llvm-config.target) - if( MINGW ) - target_link_libraries(${name} imagehlp psapi) - elseif( CMAKE_HOST_UNIX ) - if( HAVE_LIBDL ) - target_link_libraries(${name} dl) - endif() - if( LLVM_ENABLE_THREADS AND HAVE_LIBPTHREAD ) - target_link_libraries(${name} pthread) - endif() - endif( MINGW ) endif( MSVC ) + get_system_libs(llvm_system_libs) + if( llvm_system_libs ) + target_link_libraries(${name} ${llvm_system_libs}) + endif() endmacro(add_llvm_executable name) diff --git a/llvm/cmake/modules/LLVMConfig.cmake b/llvm/cmake/modules/LLVMConfig.cmake index 63f9ded19fd6..9776fb05d2a6 100755 --- a/llvm/cmake/modules/LLVMConfig.cmake +++ b/llvm/cmake/modules/LLVMConfig.cmake @@ -1,5 +1,24 @@ include(FindPerl) + +function(get_system_libs return_var) + # Returns in `return_var' a list of system libraries used by LLVM. + if( NOT MSVC ) + if( MINGW ) + set(system_libs ${system_libs} imagehlp psapi) + elseif( CMAKE_HOST_UNIX ) + if( HAVE_LIBDL ) + set(system_libs ${system_libs} dl) + endif() + if( LLVM_ENABLE_THREADS AND HAVE_LIBPTHREAD ) + set(system_libs ${system_libs} pthread) + endif() + endif( MINGW ) + endif( NOT MSVC ) + set(${return_var} ${system_libs} PARENT_SCOPE) +endfunction(get_system_libs) + + macro(llvm_config executable) # extra args is the list of link components. if( MSVC ) diff --git a/llvm/tools/llvm-config/CMakeLists.txt b/llvm/tools/llvm-config/CMakeLists.txt index 4fb208b50011..29287ab82bdc 100644 --- a/llvm/tools/llvm-config/CMakeLists.txt +++ b/llvm/tools/llvm-config/CMakeLists.txt @@ -28,6 +28,11 @@ set(SHLIBEXT ${LTDL_SHLIB_EXT}) set(OS "${CMAKE_SYSTEM}") set(ARCH "X86") # TODO: This gives "i686" in Linux: "${CMAKE_SYSTEM_PROCESSOR}") +get_system_libs(LLVM_SYSTEM_LIBS_LIST) +foreach(l ${LLVM_SYSTEM_LIBS_LIST}) + set(LLVM_SYSTEM_LIBS ${LLVM_SYSTEM_LIBS} "-l${l}") +endforeach() + include(GetTargetTriple) get_target_triple(target) @@ -93,7 +98,7 @@ add_custom_command(OUTPUT ${LLVM_CONFIG} COMMAND echo 's!@LLVM_CXXFLAGS@!${CXX_FLGS}!' >> temp.sed # TODO: Use general flags for linking! not just for shared libs: COMMAND echo 's!@LLVM_LDFLAGS@!${CMAKE_SHARED_LINKER_FLAGS}!' >> temp.sed - COMMAND echo 's!@LIBS@!!' >> temp.sed # TODO: System libs + COMMAND echo 's!@LIBS@!${LLVM_SYSTEM_LIBS}!' >> temp.sed COMMAND echo 's!@LLVM_BUILDMODE@!${CMAKE_BUILD_TYPE}!' >> temp.sed COMMAND sed -f temp.sed < ${LLVM_CONFIG_IN} > ${LLVM_CONFIG} COMMAND ${CMAKE_COMMAND} -E remove -f temp.sed