Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / compiler-rt / cmake / Modules / UseLibtool.cmake
blob130810c970d89c0f8951eac3ac61ac9219501fe2
1 # if CMAKE_LIBTOOL is not set, try and find it with xcrun or find_program
2 if(NOT CMAKE_LIBTOOL)
3   if(NOT CMAKE_XCRUN)
4     find_program(CMAKE_XCRUN NAMES xcrun)
5   endif()
6   if(CMAKE_XCRUN)
7     execute_process(COMMAND ${CMAKE_XCRUN} -find libtool
8       OUTPUT_VARIABLE CMAKE_LIBTOOL
9       OUTPUT_STRIP_TRAILING_WHITESPACE)
10   endif()
12   if(NOT CMAKE_LIBTOOL OR NOT EXISTS CMAKE_LIBTOOL)
13     find_program(CMAKE_LIBTOOL NAMES libtool)
14   endif()
15 endif()
17 get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
18 if(CMAKE_LIBTOOL)
19   set(CMAKE_LIBTOOL ${CMAKE_LIBTOOL} CACHE PATH "libtool executable")
20   message(STATUS "Found libtool - ${CMAKE_LIBTOOL}")
22   execute_process(COMMAND ${CMAKE_LIBTOOL} -V
23     OUTPUT_VARIABLE LIBTOOL_V_OUTPUT
24     OUTPUT_STRIP_TRAILING_WHITESPACE)
25   if("${LIBTOOL_V_OUTPUT}" MATCHES ".*cctools-([0-9.]+).*")
26     string(REGEX REPLACE ".*cctools-([0-9.]+).*" "\\1" LIBTOOL_VERSION
27       ${LIBTOOL_V_OUTPUT})
28     if(NOT LIBTOOL_VERSION VERSION_LESS "862")
29       set(LIBTOOL_NO_WARNING_FLAG "-no_warning_for_no_symbols")
30     endif()
31   endif()
33   foreach(lang ${languages})
34     set(CMAKE_${lang}_CREATE_STATIC_LIBRARY
35       "\"${CMAKE_LIBTOOL}\" -static ${LIBTOOL_NO_WARNING_FLAG} -o <TARGET> <LINK_FLAGS> <OBJECTS>")
36   endforeach()
38   # By default, CMake invokes ranlib on a static library after installing it.
39   # libtool will have produced the table of contents for us already, and ranlib
40   # does not understanding universal binaries, so skip this step. It's important
41   # to set it to empty instead of unsetting it to shadow the cache variable, and
42   # we don't want to unset the cache variable to not affect anything outside
43   # this scope.
44   set(CMAKE_RANLIB "")
45 endif()
47 # If DYLD_LIBRARY_PATH is set we need to set it on archiver commands
48 if(DYLD_LIBRARY_PATH)
49   set(dyld_envar "DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}")
50   foreach(lang ${languages})
51     foreach(cmd ${CMAKE_${lang}_CREATE_STATIC_LIBRARY})
52       list(APPEND CMAKE_${lang}_CREATE_STATIC_LIBRARY_NEW
53            "${dyld_envar} ${cmd}")
54     endforeach()
55     set(CMAKE_${lang}_CREATE_STATIC_LIBRARY
56       ${CMAKE_${lang}_CREATE_STATIC_LIBRARY_NEW})
57   endforeach()
58 endif()