[llvm-dev] FYI: Ninja-build user may use CMake-3.9
NAKAMURA Takumi via llvm-dev
llvm-dev at lists.llvm.org
Thu Jul 20 08:31:38 PDT 2017
This is useful for developer who uses multicore builder.
https://cmake.org/cmake/help/v3.9/release/3.9.html#other-changes
- The Ninja
<https://cmake.org/cmake/help/v3.9/generator/Ninja.html#generator:Ninja>
generator
has loosened the dependencies of object compilation. Object compilation now
depends only on custom targets and custom commands associated with
libraries on which the object’s target depends and no longer depends on the
libraries themselves. Source files in dependent targets may now compile
without waiting for their targets’ dependencies to link.
With BUILD_SHARED_LIBS, compiling units don't wait for preceding shared
libs.
See also; http://bb.pgr.jp/builders/i686-mingw32-RA-on-linux
Regardless of BUILD_SHARED_LIBS, compile units in add_executable() don't
wait for preceding libraries,
but targets by add_dependencies().
It doesn't break anything in llvm tree. Assume;
add_executable(foo foo.cpp)
target_link_libraries(foo LLVMCore) # depends on intrinsics_gen
Compiling foo.cpp doesn't wait for LLVMCore, but intrinsics_gen.
Linking foo waits for LLVMCore.
I have been working for cutting dependencies to increase parallelism.
For example, I introduced ENABLE_OBJLIB.
See also, https://reviews.llvm.org/rL305635
Ninja with CMake-3.9 doesn't require parallelize with objlib.
I love ninja-build.
Thanks,
Takumi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170720/396f2f4d/attachment.html>
More information about the llvm-dev
mailing list