[PATCH] D26649: [CMake] Support lld with LTO bootstrap

Mehdi AMINI via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 14 20:49:17 PST 2016


mehdi_amini added a comment.

What about the following logic?

   if(BOOTSTRAP_LLVM_ENABLE_LLD)
        add_dependencies(clang-bootstrap-deps lld)
   endif()
   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.
      # However if System Integrity Protection is enabled the DYLD variables
      # will be scrubbed from the environment of any base system commands. This
      # includes /bin/sh, which ninja uses when executing build commands. To
      # work around the envar being filtered away we pass it in as a CMake
      # variable, and have LLVM's CMake append the envar to the archiver calls.
      set(LTO_LIBRARY -DDARWIN_LTO_LIBRARY=${LLVM_SHLIB_OUTPUT_INTDIR}/libLTO.dylib
        -DDYLD_LIBRARY_PATH=${LLVM_LIBRARY_OUTPUT_INTDIR})
    elseif(NOT WIN32)
      add_dependencies(clang-bootstrap-deps llvm-ar llvm-ranlib)
      if(NOT LLVM_ENABLE_LLD AND LLVM_BINUTILS_INCDIR)
        add_dependencies(clang-bootstrap-deps LLVMgold)
      endif()
      set(LTO_AR -DCMAKE_AR=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-ar)
      set(LTO_RANLIB -DCMAKE_RANLIB=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-ranlib)
    endif()
  endif()

I'm not even sure why we don't use `llvm-ar` and `llvm-ranlib` on OSX by the way, this makes the logic more complicated here, but there might be a good reason for that.


Repository:
  rL LLVM

https://reviews.llvm.org/D26649





More information about the cfe-commits mailing list