UseLibtool.cmake 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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()
  11. if(NOT CMAKE_LIBTOOL OR NOT EXISTS CMAKE_LIBTOOL)
  12. find_program(CMAKE_LIBTOOL NAMES libtool)
  13. endif()
  14. endif()
  15. get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
  16. if(CMAKE_LIBTOOL)
  17. set(CMAKE_LIBTOOL ${CMAKE_LIBTOOL} CACHE PATH "libtool executable")
  18. message(STATUS "Found libtool - ${CMAKE_LIBTOOL}")
  19. execute_process(COMMAND ${CMAKE_LIBTOOL} -V
  20. OUTPUT_VARIABLE LIBTOOL_V_OUTPUT
  21. OUTPUT_STRIP_TRAILING_WHITESPACE)
  22. if("${LIBTOOL_V_OUTPUT}" MATCHES ".*cctools-([0-9.]+).*")
  23. string(REGEX REPLACE ".*cctools-([0-9.]+).*" "\\1" LIBTOOL_VERSION
  24. ${LIBTOOL_V_OUTPUT})
  25. if(NOT LIBTOOL_VERSION VERSION_LESS "862")
  26. set(LIBTOOL_NO_WARNING_FLAG "-no_warning_for_no_symbols")
  27. endif()
  28. endif()
  29. foreach(lang ${languages})
  30. set(CMAKE_${lang}_CREATE_STATIC_LIBRARY
  31. "\"${CMAKE_LIBTOOL}\" -static ${LIBTOOL_NO_WARNING_FLAG} -o <TARGET> <LINK_FLAGS> <OBJECTS>")
  32. endforeach()
  33. endif()
  34. # If DYLD_LIBRARY_PATH is set we need to set it on archiver commands
  35. if(DYLD_LIBRARY_PATH)
  36. set(dyld_envar "DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}")
  37. foreach(lang ${languages})
  38. foreach(cmd ${CMAKE_${lang}_CREATE_STATIC_LIBRARY})
  39. list(APPEND CMAKE_${lang}_CREATE_STATIC_LIBRARY_NEW
  40. "${dyld_envar} ${cmd}")
  41. endforeach()
  42. set(CMAKE_${lang}_CREATE_STATIC_LIBRARY
  43. ${CMAKE_${lang}_CREATE_STATIC_LIBRARY_NEW})
  44. endforeach()
  45. endif()