r267756 - [CMake] On Darwin bootstrap LTO builds set DYLD_LIBRARY_PATH instead of using llvm-ar
Rafael EspĂndola via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 27 15:16:47 PDT 2016
BTW, do you know what is missing in llvm-ar? I know of fat archive
support, but if there is something else could you open a bug report?
Cheers,
Rafael
On 27 April 2016 at 14:52, Chris Bieneman via cfe-commits
<cfe-commits at lists.llvm.org> wrote:
> Author: cbieneman
> Date: Wed Apr 27 13:52:48 2016
> New Revision: 267756
>
> URL: http://llvm.org/viewvc/llvm-project?rev=267756&view=rev
> Log:
> [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.
>
> Modified:
> cfe/trunk/CMakeLists.txt
>
> Modified: cfe/trunk/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=267756&r1=267755&r2=267756&view=diff
> ==============================================================================
> --- cfe/trunk/CMakeLists.txt (original)
> +++ cfe/trunk/CMakeLists.txt Wed Apr 27 13:52:48 2016
> @@ -685,17 +685,21 @@ if (CLANG_ENABLE_BOOTSTRAP)
>
> set(STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NEXT_CLANG_STAGE}-stamps/)
> 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
> - # DARWIN_LTO_LIBRARY so that -flto will work using the just-built compiler
> + # If the next stage is LTO we need to depend on LTO and possibly LLVMgold
> if(BOOTSTRAP_LLVM_ENABLE_LTO OR LLVM_ENABLE_LTO)
> - set(LTO_DEP LTO 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)
> + set(LTO_DEP LTO)
> 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(cmake_command ${CMAKE_COMMAND} -E env DYLD_LIBRARY_PATH=${LLVM_LIBRARY_OUTPUT_INTDIR} ${CMAKE_COMMAND})
> 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()
>
> @@ -791,6 +795,7 @@ if (CLANG_ENABLE_BOOTSTRAP)
> -DCLANG_STAGE=${NEXT_CLANG_STAGE}
> ${COMPILER_OPTIONS}
> ${LTO_LIBRARY} ${LTO_AR} ${LTO_RANLIB} ${verbose} ${PGO_OPT}
> + CMAKE_COMMAND ${cmake_command}
> INSTALL_COMMAND ""
> STEP_TARGETS configure build
> ${cmake_3_4_USES_TERMINAL_OPTIONS}
> @@ -799,7 +804,7 @@ if (CLANG_ENABLE_BOOTSTRAP)
> # exclude really-install from main target
> set_target_properties(${NEXT_CLANG_STAGE} PROPERTIES _EP_really-install_EXCLUDE_FROM_MAIN On)
> 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}'"
> DEPENDEES build
> ${cmake_3_4_USES_TERMINAL}
> @@ -815,7 +820,7 @@ if (CLANG_ENABLE_BOOTSTRAP)
> set_target_properties(${NEXT_CLANG_STAGE} PROPERTIES _EP_${target}_EXCLUDE_FROM_MAIN On)
>
> 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}'"
> DEPENDEES configure
> ${cmake_3_4_USES_TERMINAL}
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list