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