You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.1 KiB
59 lines
2.1 KiB
4 months ago
|
# if CMAKE_LIBTOOL is not set, try and find it with xcrun or find_program
|
||
|
if(NOT CMAKE_LIBTOOL)
|
||
|
if(NOT CMAKE_XCRUN)
|
||
|
find_program(CMAKE_XCRUN NAMES xcrun)
|
||
|
endif()
|
||
|
if(CMAKE_XCRUN)
|
||
|
execute_process(COMMAND ${CMAKE_XCRUN} -find libtool
|
||
|
OUTPUT_VARIABLE CMAKE_LIBTOOL
|
||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||
|
endif()
|
||
|
|
||
|
if(NOT CMAKE_LIBTOOL OR NOT EXISTS CMAKE_LIBTOOL)
|
||
|
find_program(CMAKE_LIBTOOL NAMES libtool)
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
|
||
|
if(CMAKE_LIBTOOL)
|
||
|
set(CMAKE_LIBTOOL ${CMAKE_LIBTOOL} CACHE PATH "libtool executable")
|
||
|
message(STATUS "Found libtool - ${CMAKE_LIBTOOL}")
|
||
|
|
||
|
execute_process(COMMAND ${CMAKE_LIBTOOL} -V
|
||
|
OUTPUT_VARIABLE LIBTOOL_V_OUTPUT
|
||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||
|
if("${LIBTOOL_V_OUTPUT}" MATCHES ".*cctools-([0-9.]+).*")
|
||
|
string(REGEX REPLACE ".*cctools-([0-9.]+).*" "\\1" LIBTOOL_VERSION
|
||
|
${LIBTOOL_V_OUTPUT})
|
||
|
if(NOT LIBTOOL_VERSION VERSION_LESS "862")
|
||
|
set(LIBTOOL_NO_WARNING_FLAG "-no_warning_for_no_symbols")
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
foreach(lang ${languages})
|
||
|
set(CMAKE_${lang}_CREATE_STATIC_LIBRARY
|
||
|
"\"${CMAKE_LIBTOOL}\" -static ${LIBTOOL_NO_WARNING_FLAG} -o <TARGET> <LINK_FLAGS> <OBJECTS>")
|
||
|
endforeach()
|
||
|
|
||
|
# By default, CMake invokes ranlib on a static library after installing it.
|
||
|
# libtool will have produced the table of contents for us already, and ranlib
|
||
|
# does not understanding universal binaries, so skip this step. It's important
|
||
|
# to set it to empty instead of unsetting it to shadow the cache variable, and
|
||
|
# we don't want to unset the cache variable to not affect anything outside
|
||
|
# this scope.
|
||
|
set(CMAKE_RANLIB "")
|
||
|
endif()
|
||
|
|
||
|
# If DYLD_LIBRARY_PATH is set we need to set it on archiver commands
|
||
|
if(DYLD_LIBRARY_PATH)
|
||
|
set(dyld_envar "DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}")
|
||
|
foreach(lang ${languages})
|
||
|
foreach(cmd ${CMAKE_${lang}_CREATE_STATIC_LIBRARY})
|
||
|
list(APPEND CMAKE_${lang}_CREATE_STATIC_LIBRARY_NEW
|
||
|
"${dyld_envar} ${cmd}")
|
||
|
endforeach()
|
||
|
set(CMAKE_${lang}_CREATE_STATIC_LIBRARY
|
||
|
${CMAKE_${lang}_CREATE_STATIC_LIBRARY_NEW})
|
||
|
endforeach()
|
||
|
endif()
|