Skip to content
Snippets Groups Projects
Commit ecca78db authored by Chris Bieneman's avatar Chris Bieneman
Browse files

[CMake] On Darwin bootstrap LTO builds set DYLD_LIBRARY_PATH instead of using llvm-ar

llvm-ar isn't really supported for Darwin, instead the host tools will load libLTO, so we can use the just-built libLTO.

This actually makes Darwin bootstrap builds a little faster because you don't need to build llvm-ar before starting the next stage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@267756 91177308-0d34-0410-b5e6-96231b3b80d8
parent a4cbc2e0
No related branches found
No related tags found
No related merge requests found
...@@ -685,17 +685,21 @@ if (CLANG_ENABLE_BOOTSTRAP) ...@@ -685,17 +685,21 @@ if (CLANG_ENABLE_BOOTSTRAP)
set(STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NEXT_CLANG_STAGE}-stamps/) set(STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NEXT_CLANG_STAGE}-stamps/)
set(BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NEXT_CLANG_STAGE}-bins/) set(BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NEXT_CLANG_STAGE}-bins/)
set(cmake_command ${CMAKE_COMMAND})
# If on Darwin we need to make bootstrap depend on LTO and pass # If the next stage is LTO we need to depend on LTO and possibly LLVMgold
# DARWIN_LTO_LIBRARY so that -flto will work using the just-built compiler
if(BOOTSTRAP_LLVM_ENABLE_LTO OR LLVM_ENABLE_LTO) if(BOOTSTRAP_LLVM_ENABLE_LTO OR LLVM_ENABLE_LTO)
set(LTO_DEP LTO llvm-ar llvm-ranlib) set(LTO_DEP LTO)
set(LTO_AR -DCMAKE_AR=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-ar)
set(LTO_RANLIB -DCMAKE_RANLIB=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-ranlib)
if(APPLE) if(APPLE)
# on Darwin we need to set DARWIN_LTO_LIBRARY so that -flto will work
# using the just-built compiler, and we need to override DYLD_LIBRARY_PATH
# so that the host object file tools will use the just-built libLTO.
set(LTO_LIBRARY -DDARWIN_LTO_LIBRARY=${LLVM_SHLIB_OUTPUT_INTDIR}/libLTO.dylib) set(LTO_LIBRARY -DDARWIN_LTO_LIBRARY=${LLVM_SHLIB_OUTPUT_INTDIR}/libLTO.dylib)
set(cmake_command ${CMAKE_COMMAND} -E env DYLD_LIBRARY_PATH=${LLVM_LIBRARY_OUTPUT_INTDIR} ${CMAKE_COMMAND})
elseif(NOT WIN32) elseif(NOT WIN32)
list(APPEND LTO_DEP LLVMgold) list(APPEND LTO_DEP LLVMgold llvm-ar llvm-ranlib)
set(LTO_AR -DCMAKE_AR=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-ar)
set(LTO_RANLIB -DCMAKE_RANLIB=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-ranlib)
endif() endif()
endif() endif()
...@@ -791,6 +795,7 @@ if (CLANG_ENABLE_BOOTSTRAP) ...@@ -791,6 +795,7 @@ if (CLANG_ENABLE_BOOTSTRAP)
-DCLANG_STAGE=${NEXT_CLANG_STAGE} -DCLANG_STAGE=${NEXT_CLANG_STAGE}
${COMPILER_OPTIONS} ${COMPILER_OPTIONS}
${LTO_LIBRARY} ${LTO_AR} ${LTO_RANLIB} ${verbose} ${PGO_OPT} ${LTO_LIBRARY} ${LTO_AR} ${LTO_RANLIB} ${verbose} ${PGO_OPT}
CMAKE_COMMAND ${cmake_command}
INSTALL_COMMAND "" INSTALL_COMMAND ""
STEP_TARGETS configure build STEP_TARGETS configure build
${cmake_3_4_USES_TERMINAL_OPTIONS} ${cmake_3_4_USES_TERMINAL_OPTIONS}
...@@ -799,7 +804,7 @@ if (CLANG_ENABLE_BOOTSTRAP) ...@@ -799,7 +804,7 @@ if (CLANG_ENABLE_BOOTSTRAP)
# exclude really-install from main target # exclude really-install from main target
set_target_properties(${NEXT_CLANG_STAGE} PROPERTIES _EP_really-install_EXCLUDE_FROM_MAIN On) set_target_properties(${NEXT_CLANG_STAGE} PROPERTIES _EP_really-install_EXCLUDE_FROM_MAIN On)
ExternalProject_Add_Step(${NEXT_CLANG_STAGE} really-install ExternalProject_Add_Step(${NEXT_CLANG_STAGE} really-install
COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target install COMMAND ${cmake_command} --build <BINARY_DIR> --target install
COMMENT "Performing install step for '${NEXT_CLANG_STAGE}'" COMMENT "Performing install step for '${NEXT_CLANG_STAGE}'"
DEPENDEES build DEPENDEES build
${cmake_3_4_USES_TERMINAL} ${cmake_3_4_USES_TERMINAL}
...@@ -815,7 +820,7 @@ if (CLANG_ENABLE_BOOTSTRAP) ...@@ -815,7 +820,7 @@ if (CLANG_ENABLE_BOOTSTRAP)
set_target_properties(${NEXT_CLANG_STAGE} PROPERTIES _EP_${target}_EXCLUDE_FROM_MAIN On) set_target_properties(${NEXT_CLANG_STAGE} PROPERTIES _EP_${target}_EXCLUDE_FROM_MAIN On)
ExternalProject_Add_Step(${NEXT_CLANG_STAGE} ${target} ExternalProject_Add_Step(${NEXT_CLANG_STAGE} ${target}
COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target ${target} COMMAND ${cmake_command} --build <BINARY_DIR> --target ${target}
COMMENT "Performing ${target} for '${NEXT_CLANG_STAGE}'" COMMENT "Performing ${target} for '${NEXT_CLANG_STAGE}'"
DEPENDEES configure DEPENDEES configure
${cmake_3_4_USES_TERMINAL} ${cmake_3_4_USES_TERMINAL}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment