diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -556,6 +556,7 @@ message(STATUS "Setting current clang stage to: ${CLANG_STAGE}") endif() +message(NOTICE "CLANG_ENABLE_BOOTSTRAP is ${CLANG_ENABLE_BOOTSTRAP}") if (CLANG_ENABLE_BOOTSTRAP) include(ExternalProject) @@ -595,13 +596,14 @@ add_dependencies(clang-bootstrap-deps lld) endif() - if (WIN32) + # message(NOTICE "CMAKE_CROSSCOMPILING is ${CMAKE_CROSSCOMPILING}") + # if (WIN32 OR CMAKE_CROSSCOMPILING) # Build llvm-rc and llvm-mt which are needed by the Windows build. - add_dependencies(clang-bootstrap-deps llvm-rc) - if(LLVM_ENABLE_LIBXML2) - add_dependencies(clang-bootstrap-deps llvm-mt) - endif() + add_dependencies(clang-bootstrap-deps llvm-rc llvm-lib) + if(LLVM_ENABLE_LIBXML2) + add_dependencies(clang-bootstrap-deps llvm-mt) endif() + # endif() # If the next stage is LTO we need to depend on LTO and possibly lld or LLVMgold if(BOOTSTRAP_LLVM_ENABLE_LTO OR LLVM_ENABLE_LTO AND NOT LLVM_BUILD_INSTRUMENTED) diff --git a/llvm/cmake/modules/LLVMExternalProjectUtils.cmake b/llvm/cmake/modules/LLVMExternalProjectUtils.cmake --- a/llvm/cmake/modules/LLVMExternalProjectUtils.cmake +++ b/llvm/cmake/modules/LLVMExternalProjectUtils.cmake @@ -165,6 +165,9 @@ endforeach() endforeach() + message(NOTICE "extproj ARG_USE_TOOLCHAIN is ${ARG_USE_TOOLCHAIN}") + message(NOTICE "extproj CMAKE_CROSSCOMPILING is ${CMAKE_CROSSCOMPILING}") + message(NOTICE "extproj CLANG_IN_TOOLCHAIN is ${CLANG_IN_TOOLCHAIN}") if(ARG_USE_TOOLCHAIN AND NOT CMAKE_CROSSCOMPILING) if(CLANG_IN_TOOLCHAIN) if(is_msvc_target) @@ -249,18 +252,40 @@ endif() if(CMAKE_CROSSCOMPILING OR _cmake_system_name STREQUAL AIX) - set(compiler_args -DCMAKE_ASM_COMPILER=${CMAKE_ASM_COMPILER} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_LINKER=${CMAKE_LINKER} - -DCMAKE_AR=${CMAKE_AR} - -DCMAKE_RANLIB=${CMAKE_RANLIB} - -DCMAKE_NM=${CMAKE_NM} - -DCMAKE_OBJCOPY=${CMAKE_OBJCOPY} - -DCMAKE_OBJDUMP=${CMAKE_OBJDUMP} - -DCMAKE_STRIP=${CMAKE_STRIP} - -DCMAKE_READELF=${CMAKE_READELF}) + if (ARG_USE_TOOLCHAIN AND CLANG_IN_TOOLCHAIN AND is_msvc_target) + get_filename_component(HOST_TOOLCHAIN_DIR ${CMAKE_C_COMPILER} DIRECTORY) + set(compiler_args -DCMAKE_C_COMPILER=${HOST_TOOLCHAIN_DIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX} + -DCMAKE_CXX_COMPILER=${HOST_TOOLCHAIN_DIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX} + -DCMAKE_ASM_COMPILER=${HOST_TOOLCHAIN_DIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}) + if(lld IN_LIST TOOLCHAIN_TOOLS) + list(APPEND compiler_args -DCMAKE_LINKER=${HOST_TOOLCHAIN_DIR}/lld-link${CMAKE_EXECUTABLE_SUFFIX}) + endif() + if(llvm-ar IN_LIST TOOLCHAIN_TOOLS) + list(APPEND compiler_args -DCMAKE_AR=${HOST_TOOLCHAIN_DIR}/llvm-lib${CMAKE_EXECUTABLE_SUFFIX}) + endif() + if(llvm-mt IN_LIST TOOLCHAIN_TOOLS) + list(APPEND compiler_args -DCMAKE_MT=${HOST_TOOLCHAIN_DIR}/llvm-mt${CMAKE_EXECUTABLE_SUFFIX}) + endif() + if(llvm-rc IN_LIST TOOLCHAIN_TOOLS) + list(APPEND compiler_args -DCMAKE_RC_COMPILER=${HOST_TOOLCHAIN_DIR}/llvm-rc${CMAKE_EXECUTABLE_SUFFIX}) + endif() + else() + set(compiler_args -DCMAKE_ASM_COMPILER=${CMAKE_ASM_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_LINKER=${CMAKE_LINKER} + -DCMAKE_AR=${CMAKE_AR} + -DCMAKE_RANLIB=${CMAKE_RANLIB} + -DCMAKE_NM=${CMAKE_NM} + -DCMAKE_OBJCOPY=${CMAKE_OBJCOPY} + -DCMAKE_OBJDUMP=${CMAKE_OBJDUMP} + -DCMAKE_STRIP=${CMAKE_STRIP} + -DCMAKE_READELF=${CMAKE_READELF} + -DCMAKE_RC_COMPILER=${CMAKE_RC_COMPILER} + -DCMAKE_MT=${CMAKE_MT}) + endif() endif() + message(NOTICE "extproj compiler_args is ${compiler_args}") if(CMAKE_CROSSCOMPILING) set(llvm_config_path ${LLVM_CONFIG_PATH}) diff --git a/llvm/runtimes/CMakeLists.txt b/llvm/runtimes/CMakeLists.txt --- a/llvm/runtimes/CMakeLists.txt +++ b/llvm/runtimes/CMakeLists.txt @@ -77,6 +77,12 @@ set_enable_per_target_runtime_dir() + message(NOTICE "builtin target for default") + #message(NOTICE "cmake args ${CMAKE_ARGS}") + message(NOTICE "cmake common args ${COMMON_CMAKE_ARGS}") + message(NOTICE "extra args:") + message(NOTICE ${BUILTINS_CMAKE_ARGS}) + llvm_ExternalProject_Add(builtins ${compiler_rt_path}/lib/builtins DEPENDS ${ARG_DEPENDS} @@ -111,6 +117,12 @@ endif() endforeach() + message(NOTICE "builtin target for ${target}") + #message(NOTICE "cmake args ${CMAKE_ARGS}") + message(NOTICE "cmake common args ${COMMON_CMAKE_ARGS}") + message(NOTICE "extra args:") + message(NOTICE ${${target}_extra_args}) + llvm_ExternalProject_Add(builtins-${target} ${compiler_rt_path}/lib/builtins DEPENDS ${ARG_DEPENDS} @@ -221,6 +233,13 @@ set_enable_per_target_runtime_dir() + message(NOTICE "runtime target for default") + #message(NOTICE "cmake args ${CMAKE_ARGS}") + message(NOTICE "cmake common args ${COMMON_CMAKE_ARGS}") + message(NOTICE "extra args:") + message(NOTICE ${RUNTIMES_CMAKE_ARGS}) + message(NOTICE ${ARG_CMAKE_ARGS}) + llvm_ExternalProject_Add(runtimes ${CMAKE_CURRENT_SOURCE_DIR}/../../runtimes DEPENDS ${ARG_DEPENDS} @@ -349,6 +368,12 @@ set_enable_per_target_runtime_dir() + message(NOTICE "runtime target for ${target}") + #message(NOTICE "cmake args ${CMAKE_ARGS}") + message(NOTICE "cmake common args ${COMMON_CMAKE_ARGS}") + message(NOTICE "extra args:") + message(NOTICE ${${name}_extra_args}) + llvm_ExternalProject_Add(runtimes-${name} ${CMAKE_CURRENT_SOURCE_DIR}/../../runtimes DEPENDS ${${name}_deps}