3 stage ninja bootstrap on darwin?

Hi all

I just ran into the same issue Jack described below.
I did a 2-stage build of LLVM/Clang/Compiler-rt on the current release_50 branch.

Versions:
OSX 10.12.6, Xcode 8.0, CMake 1.8.2, Ninja 1.7.2, Ccache 3.3.4

Log:
$ cmake -G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
-DCMAKE_BUILD_TYPE=Release
-DLLVM_ENABLE_LTO=ON
-DLLVM_TARGETS_TO_BUILD=host
-DLLVM_CREATE_XCODE_TOOLCHAIN=ON
-DLLVM_INCLUDE_TESTS=ON
-DLLVM_INCLUDE_EXAMPLES=OFF
-DLLVM_INCLUDE_DOCS=OFF
-DLLVM_ENABLE_PROJECTS="clang;compiler-rt;lldb"
-DCLANG_ENABLE_BOOTSTRAP=ON ../llvm
-- The C compiler identification is AppleClang 8.0.0.8000038
-- The CXX compiler identification is AppleClang 8.0.0.8000038
...
-- Build files have been written to: /media/Dev/llvm50/build-ninja-clang-release
$ ninja stage2
...
-- Performing Test LLVM_NO_OLD_LIBSTDCXX
-- Performing Test LLVM_NO_OLD_LIBSTDCXX - Failed
CMake Error at cmake/modules/CheckCompilerVersion.cmake:38 (message):
Host Clang must be able to find libstdc++4.8 or newer!
Call Stack (most recent call first):
cmake/config-ix.cmake:14 (include)
CMakeLists.txt:584 (include)

Hack to force LLVM_ENABLE_LIBCXX=ON:
diff --git a/cmake/modules/CheckCompilerVersion.cmake b/cmake/modules/CheckCompilerVersion.cmake
index 2e8f5445781..38ec06c7631 100644
--- a/cmake/modules/CheckCompilerVersion.cmake
+++ b/cmake/modules/CheckCompilerVersion.cmake
@@ -1,6 +1,7 @@
# Check if the host compiler is new enough. LLVM requires at least GCC 4.8,
# MSVC 2015 (Update 3), or Clang 3.1.
`+set(LLVM_ENABLE_LIBCXX ON)` `include(CheckCXXSourceCompiles)`
if(NOT DEFINED LLVM_COMPILER_CHECKED)

Maybe it just got messed up. However, I never explicitly pass
-DLLVM_ENABLE_LIBCXX=ON and it never caused problems in single-stage builds,
as on OSX the setting defaults to ON. Shouldn't that be the same for 2-stage
out of the box? Maybe stage 1 passes an invalid setting to the ```stage 2`` configuration that overrides the otherwise correct default?`

Cheers
Stefan

When doing multi-stage builds on Darwin you must have libcxx checked out in your source tree. Otherwise this error is expected.

-Chris

Is this documented somewhere?

https://github.com/llvm-mirror/llvm/blob/master/docs/AdvancedBuilds.rst

only mentions compiler-rt

Csaba

The only place I’ve seen it mentioned is here (https://clang.llvm.org/get_started.html):

  1. Check out libcxx: (only required to build and run Compiler-RT tests on OS X, optional otherwise)