CMake: Set LIBS on llvm-config so we can query the system libraries
authorOscar Fuentes <ofv@wanadoo.es>
Wed, 27 May 2009 15:49:33 +0000 (15:49 +0000)
committerOscar Fuentes <ofv@wanadoo.es>
Wed, 27 May 2009 15:49:33 +0000 (15:49 +0000)
used by CMake with --ldflags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72470 91177308-0d34-0410-b5e6-96231b3b80d8

cmake/modules/AddLLVM.cmake
cmake/modules/LLVMConfig.cmake
tools/llvm-config/CMakeLists.txt

index 1f0ff74c12ce15d255597b12908f42ad435abb86..c531298a30f043ff9a5004ffe6b03393f884b574 100755 (executable)
@@ -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)
 
 
index 63f9ded19fd6d255718ee0a5b27624b9fc40aa5d..9776fb05d2a649d4b66ee28492ee73ed84d43117 100755 (executable)
@@ -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 )
index 4fb208b50011cf3ee5fe040d6272ea40475f4d15..29287ab82bdcc36d11fed57dfc586aa61f6a912b 100644 (file)
@@ -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