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

Chris Bieneman via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 27 15:18:06 PDT 2016


Fat archives is the big thing. Since we can do fat multi-stage builds using llvm-ar isn’t really ideal.

-Chris

> On Apr 27, 2016, at 3:16 PM, Rafael Espíndola <rafael.espindola at gmail.com> wrote:
> 
> 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