Index: compiler-rt/trunk/CMakeLists.txt =================================================================== --- compiler-rt/trunk/CMakeLists.txt +++ compiler-rt/trunk/CMakeLists.txt @@ -89,58 +89,8 @@ endif() # Ensure that fat libraries are built correctly on Darwin - if(CMAKE_SYSTEM_NAME STREQUAL Darwin) - if(NOT CMAKE_LIBTOOL) - find_program(CMAKE_XCRUN - NAMES - xcrun) - 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 ") - endforeach() - endif() - - # Workaround SIP :-( - 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() - endforeach() - endif() + if(CMAKE_HOST_APPLE AND APPLE) + include(UseLibtool) endif() # Define default arguments to lit. Index: compiler-rt/trunk/cmake/Modules/UseLibtool.cmake =================================================================== --- compiler-rt/trunk/cmake/Modules/UseLibtool.cmake +++ compiler-rt/trunk/cmake/Modules/UseLibtool.cmake @@ -0,0 +1,50 @@ +# 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 ") + endforeach() +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() Index: compiler-rt/trunk/lib/builtins/CMakeLists.txt =================================================================== --- compiler-rt/trunk/lib/builtins/CMakeLists.txt +++ compiler-rt/trunk/lib/builtins/CMakeLists.txt @@ -20,6 +20,9 @@ if(APPLE) include(CompilerRTDarwinUtils) endif() + if(CMAKE_HOST_APPLE AND APPLE) + include(UseLibtool) + endif() include(AddCompilerRT) endif()