Index: cmake/modules/LLVMExternalProjectUtils.cmake =================================================================== --- cmake/modules/LLVMExternalProjectUtils.cmake +++ cmake/modules/LLVMExternalProjectUtils.cmake @@ -28,7 +28,7 @@ # CMAKE_ARGS arguments... # Optional cmake arguments to pass when configuring the project # TOOLCHAIN_TOOLS targets... -# Targets for toolchain tools (defaults to clang;lld) +# Targets for toolchain tools (defaults to clang;lld;llvm-ar;llvm-ranlib) # DEPENDS targets... # Targets that this project depends on # EXTRA_TARGETS targets... @@ -44,10 +44,7 @@ ${ARGN}) canonicalize_tool_name(${name} nameCanon) if(NOT ARG_TOOLCHAIN_TOOLS) - set(ARG_TOOLCHAIN_TOOLS clang lld) - if(NOT APPLE AND NOT WIN32) - list(APPEND ARG_TOOLCHAIN_TOOLS llvm-ar llvm-ranlib) - endif() + set(ARG_TOOLCHAIN_TOOLS clang lld llvm-ar llvm-ranlib) endif() foreach(tool ${ARG_TOOLCHAIN_TOOLS}) if(TARGET ${tool}) Index: runtimes/CMakeLists.txt =================================================================== --- runtimes/CMakeLists.txt +++ runtimes/CMakeLists.txt @@ -61,6 +61,10 @@ # This variable makes sure that e.g. llvm-lit is found. set(LLVM_MAIN_SRC_DIR ${LLVM_BUILD_MAIN_SRC_DIR}) + if(APPLE) + set(LLVM_ENABLE_LIBCXX ON CACHE BOOL "") + endif() + # Handle common options used by all runtimes. include(AddLLVM) include(HandleLLVMOptions) @@ -149,7 +153,7 @@ # is required because the other runtimes need the builtin libraries present # before the just-built compiler can pass the configuration tests. if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/compiler-rt) - if(APPLE OR NOT LLVM_BUILTIN_TARGETS) + if(NOT LLVM_BUILTIN_TARGETS) llvm_ExternalProject_Add(builtins ${CMAKE_CURRENT_SOURCE_DIR}/compiler-rt/lib/builtins CMAKE_ARGS -DLLVM_LIBRARY_OUTPUT_INTDIR=${LLVM_LIBRARY_DIR}