<div dir="ltr"><div>This is useful for developer who uses multicore builder.</div><div><a href="https://cmake.org/cmake/help/v3.9/release/3.9.html#other-changes">https://cmake.org/cmake/help/v3.9/release/3.9.html#other-changes</a></div><div><br></div><div><ul class="inbox-inbox-simple" style="color:rgb(68,68,68);font-size:24px"><li style="text-align:justify;line-height:31.2px">The <span class="inbox-inbox-target" id="inbox-inbox-index-1-generator:Ninja"></span><a class="inbox-inbox-reference inbox-inbox-internal" href="https://cmake.org/cmake/help/v3.9/generator/Ninja.html#generator:Ninja" title="Ninja" style="color:rgb(43,99,168);text-decoration-line:none"><code class="inbox-inbox-xref inbox-inbox-cmake inbox-inbox-cmake-generator inbox-inbox-docutils inbox-inbox-literal" style="background-color:transparent;padding:0px 1px;font-size:0.95em;font-weight:bold"><span class="inbox-inbox-pre" style="hyphens: none;">Ninja</span></code></a> 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.</li></ul>With BUILD_SHARED_LIBS, compiling units don't wait for preceding shared libs.</div><div>See also; <a href="http://bb.pgr.jp/builders/i686-mingw32-RA-on-linux">http://bb.pgr.jp/builders/i686-mingw32-RA-on-linux</a></div><div>Regardless of BUILD_SHARED_LIBS, compile units in add_executable() don't wait for preceding libraries,</div><div>but targets by add_dependencies().</div><div><br></div><div>It doesn't break anything in llvm tree. Assume;</div><div>  add_executable(foo foo.cpp)</div><div>  target_link_libraries(foo LLVMCore) # depends on intrinsics_gen</div><div>Compiling foo.cpp doesn't wait for LLVMCore, but intrinsics_gen.</div><div>Linking foo waits for LLVMCore.</div><div><br></div><div>I have been working for cutting dependencies to increase parallelism.</div><div>For example, I introduced ENABLE_OBJLIB.</div><div>See also, <a href="https://reviews.llvm.org/rL305635">https://reviews.llvm.org/rL305635</a></div><div>Ninja with CMake-3.9 doesn't require parallelize with objlib.</div><div><br></div><div>I love ninja-build.</div><div><br></div><div>Thanks,</div><div>Takumi</div></div>