haowei created this revision.
haowei added a reviewer: phosek.
Herald added a subscriber: abrachet.
Herald added a project: All.
haowei requested review of this revision.
Herald added projects: clang, LLVM.
Herald added subscribers: llvm-commits, cfe-commits.
Work in progress.
Initial work on building Windows compiler runtimes under Linux.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D141738
Files:
clang/cmake/caches/Fuchsia-stage2.cmake
llvm/cmake/modules/LLVMExternalProjectUtils.cmake
llvm/runtimes/CMakeLists.txt
Index: llvm/runtimes/CMakeLists.txt
===================================================================
--- llvm/runtimes/CMakeLists.txt
+++ llvm/runtimes/CMakeLists.txt
@@ -3,9 +3,12 @@
# similar although simpler functionality. We should figure out how to merge
# the two files.
+message(NOTICE "Fuchisa Clang compiler-rt hello world")
+message(NOTICE "CMAKE_CURRENT_SOURCE_DIR is ${CMAKE_CURRENT_SOURCE_DIR}")
set(COMMON_CMAKE_ARGS "-DHAVE_LLVM_LIT=ON")
foreach(proj ${LLVM_ENABLE_RUNTIMES})
set(proj_dir "${CMAKE_CURRENT_SOURCE_DIR}/../../${proj}")
+ message(NOTICE "${proj}'s proj_dir is ${proj_dir}")
if(IS_DIRECTORY ${proj_dir} AND EXISTS ${proj_dir}/CMakeLists.txt)
list(APPEND runtimes ${proj_dir})
else()
@@ -94,7 +97,9 @@
check_apple_target(${target} builtin)
get_cmake_property(variableNames VARIABLES)
+ #message(NOTICE "builtin variableNames ${variableNames}")
foreach(variableName ${variableNames})
+ #message(NOTICE "builtin variableName ${variableName}")
string(FIND "${variableName}" "BUILTINS_${target}" out)
if("${out}" EQUAL 0)
string(REPLACE "BUILTINS_${target}_" "" new_name ${variableName})
@@ -103,6 +108,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}
@@ -139,6 +150,7 @@
add_custom_target(install-builtins-stripped)
endif()
+ message(NOTICE "Fuchisa Clang builtins: ${LLVM_BUILTIN_TARGETS}")
foreach(target ${LLVM_BUILTIN_TARGETS})
builtin_register_target(${compiler_rt_path} ${target}
DEPENDS clang-resource-headers)
@@ -344,10 +356,16 @@
list(APPEND ${name}_extra_args -DLLVM_ENABLE_RUNTIMES=${LLVM_ENABLE_RUNTIMES_PASSTHROUGH})
endif()
- if(NOT RUNTIMES_${name}_LLVM_USE_LINKER AND NOT RUNTIMES_${target}_LLVM_USE_LINKER)
+ if(NOT RUNTIMES_${name}_LLVM_USE_LINKER AND NOT RUNTIMES_${target}_LLVM_USE_LINKER AND NOT ${target} STREQUAL "x86_64-pc-windows-msvc")
list(APPEND ${name}_extra_args -DLLVM_USE_LINKER=${LLVM_USE_LINKER})
endif()
+ 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}
@@ -419,6 +437,7 @@
endif()
endif()
+ message(NOTICE "Fuchisa Clang runtimes: ${LLVM_RUNTIME_TARGETS}")
foreach(name ${LLVM_RUNTIME_TARGETS})
if(builtins_dep)
if (LLVM_BUILTIN_TARGETS)
Index: llvm/cmake/modules/LLVMExternalProjectUtils.cmake
===================================================================
--- llvm/cmake/modules/LLVMExternalProjectUtils.cmake
+++ llvm/cmake/modules/LLVMExternalProjectUtils.cmake
@@ -168,7 +168,10 @@
if(is_msvc_target)
set(compiler_args -DCMAKE_C_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}
-DCMAKE_CXX_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}
- -DCMAKE_ASM_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
+ -DCMAKE_ASM_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}
+ -DCMAKE_RC_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-rc
+ -DCMAKE_MT=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-mt
+ )
else()
set(compiler_args -DCMAKE_C_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${CMAKE_EXECUTABLE_SUFFIX}
-DCMAKE_CXX_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${CMAKE_EXECUTABLE_SUFFIX}
Index: clang/cmake/caches/Fuchsia-stage2.cmake
===================================================================
--- clang/cmake/caches/Fuchsia-stage2.cmake
+++ clang/cmake/caches/Fuchsia-stage2.cmake
@@ -69,13 +69,49 @@
set(RUNTIMES_CMAKE_ARGS "-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13;-DCMAKE_OSX_ARCHITECTURES=arm64|x86_64" CACHE STRING "")
endif()
-if(WIN32)
+
+if(WIN32 OR (LINUX AND WINDOWS_SDK_DIR))
+#if(WINDOWS_SDK_DIR)
+ #message(FATAL_ERROR "${WINDOWS_SDK_DIR} is set")
set(target "x86_64-pc-windows-msvc")
list(APPEND BUILTIN_TARGETS "${target}")
set(BUILTINS_${target}_CMAKE_SYSTEM_NAME Windows CACHE STRING "")
set(BUILTINS_${target}_CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "")
+ if(LINUX AND WINDOWS_SDK_DIR)
+ if(NOT FUCHSIA_TOOLCHAIN_DIR)
+ message(FATAL_ERROR "FUCHSIA_TOOLCHAIN_DIR should be defined")
+ endif()
+ set(BUILTINS_${target}_WINDOWS_SDK_DIR ${WINDOWS_SDK_DIR})
+ # set(BUILTINS_${target}_CMAKE_C_COMPILER "${FUCHSIA_TOOLCHAIN_DIR}/bin/clang-cl")
+ # set(BUILTINS_${target}_CMAKE_CXX_COMPILER "${FUCHSIA_TOOLCHAIN_DIR}/bin/clang-cl")
+ # set(BUILTINS_${target}_CMAKE_ASM_COMPILER "${FUCHSIA_TOOLCHAIN_DIR}/bin/clang-cl")
+ # set(BUILTINS_${target}_CMAKE_LINKER_COMPILER "${FUCHSIA_TOOLCHAIN_DIR}/bin/llvm-link")
+ # set(BUILTINS_${target}_CMAKE_AR "${FUCHSIA_TOOLCHAIN_DIR}/bin/llvm-lib")
+ # set(BUILTINS_${target}_CMAKE_NM "${FUCHSIA_TOOLCHAIN_DIR}/bin/llvm-nm")
+ # set(BUILTINS_${target}_CMAKE_RC "${FUCHSIA_TOOLCHAIN_DIR}/bin/llvm-rc")
+ # set(BUILTINS_${target}_CMAKE_MT "${FUCHSIA_TOOLCHAIN_DIR}/bin/llvm-mt")
+ set(CLANG_WINDOWS_CROSS_FLAGS
+ -Xclang
+ -ivfsoverlay
+ -Xclang
+ "${WINDOWS_SDK_DIR}/llvm-vfsoverlay.yaml"
+ /winsysroot
+ ${WINDOWS_SDK_DIR})
+ set(LINK_WINDOWS_OVERLAY_FLAGS
+ /vfsoverlay:"${WINDOWS_SDK_DIR}/llvm-vfsoverlay.yaml"
+ -libpath:"${WINDOWS_SDK_DIR}/VC/Tools/MSVC/14.34.31933/lib/x64"
+ -libpath:"${WINDOWS_SDK_DIR}/VC/Tools/MSVC/14.34.31933/atlmfc/lib/x64"
+ -libpath:"${WINDOWS_SDK_DIR}/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64"
+ -libpath:"${WINDOWS_SDK_DIR}/Windows Kits/10/Lib/10.0.19041.0/um/x64")
+ set(BUILTINS_${target}_CMAKE_C_FLAGS ${CLANG_WINDOWS_CROSS_FLAGS} CACHE STRING "")
+ set(BUILTINS_${target}_CMAKE_CXX_FLAGS ${CLANG_WINDOWS_CROSS_FLAGS} CACHE STRING "")
+ set(BUILTINS_${target}_CMAKE_EXE_LINKER_FLAGS ${LINK_WINDOWS_OVERLAY_FLAGS} CACHE STRING "")
+ set(BUILTINS_${target}_CMAKE_SHARED_LINKER_FLAGS ${LINK_WINDOWS_OVERLAY_FLAGS} CACHE STRING "")
+ set(BUILTINS_${target}_CMAKE_MODULE_LINKER_FLAGS ${LINK_WINDOWS_OVERLAY_FLAGS} CACHE STRING "")
+ endif()
+
list(APPEND RUNTIME_TARGETS "${target}")
set(RUNTIMES_${target}_CMAKE_SYSTEM_NAME Windows CACHE STRING "")
set(RUNTIMES_${target}_CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "")
@@ -84,6 +120,39 @@
set(RUNTIMES_${target}_LIBCXX_ENABLE_ABI_LINKER_SCRIPT OFF CACHE BOOL "")
set(RUNTIMES_${target}_LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
set(RUNTIMES_${target}_LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx" CACHE STRING "")
+
+ if(LINUX AND WINDOWS_SDK_DIR)
+ if(NOT FUCHSIA_TOOLCHAIN_DIR)
+ message(FATAL_ERROR "FUCHSIA_TOOLCHAIN_DIR should be defined")
+ endif()
+ # set(RUNTIMES_${target}_WINDOWS_SDK_DIR ${WINDOWS_SDK_DIR})
+ # set(RUNTIMES_${target}_CMAKE_C_COMPILER "${FUCHSIA_TOOLCHAIN_DIR}/bin/clang-cl")
+ # set(RUNTIMES_${target}_CMAKE_CXX_COMPILER "${FUCHSIA_TOOLCHAIN_DIR}/bin/clang-cl")
+ # set(RUNTIMES_${target}_CMAKE_ASM_COMPILER "${FUCHSIA_TOOLCHAIN_DIR}/bin/clang-cl")
+ # set(RUNTIMES_${target}_CMAKE_LINKER_COMPILER "${FUCHSIA_TOOLCHAIN_DIR}/bin/llvm-link")
+ # set(RUNTIMES_${target}_CMAKE_AR "${FUCHSIA_TOOLCHAIN_DIR}/bin/llvm-lib")
+ # set(RUNTIMES_${target}_CMAKE_NM "${FUCHSIA_TOOLCHAIN_DIR}/bin/llvm-nm")
+ # set(RUNTIMES_${target}_CMAKE_RC "${FUCHSIA_TOOLCHAIN_DIR}/bin/llvm-rc")
+ # set(RUNTIMES_${target}_CMAKE_MT "${FUCHSIA_TOOLCHAIN_DIR}/bin/llvm-mt")
+ set(CLANG_WINDOWS_CROSS_FLAGS
+ -Xclang
+ -ivfsoverlay
+ -Xclang
+ "${WINDOWS_SDK_DIR}/llvm-vfsoverlay.yaml"
+ /winsysroot
+ ${WINDOWS_SDK_DIR})
+ set(LINK_WINDOWS_OVERLAY_FLAGS
+ /vfsoverlay:"${WINDOWS_SDK_DIR}/llvm-vfsoverlay.yaml"
+ -libpath:"${WINDOWS_SDK_DIR}/VC/Tools/MSVC/14.34.31933/lib/x64"
+ -libpath:"${WINDOWS_SDK_DIR}/VC/Tools/MSVC/14.34.31933/atlmfc/lib/x64"
+ -libpath:"${WINDOWS_SDK_DIR}/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64"
+ -libpath:"${WINDOWS_SDK_DIR}/Windows Kits/10/Lib/10.0.19041.0/um/x64")
+ set(RUNTIMES_${target}_CMAKE_C_FLAGS "-Xclang -ivfsoverlay -Xclang ${WINDOWS_SDK_DIR}/llvm-vfsoverlay.yaml /winsysroot ${WINDOWS_SDK_DIR}" CACHE STRING "")
+ set(RUNTIMES_${target}_CMAKE_CXX_FLAGS "-Xclang -ivfsoverlay -Xclang ${WINDOWS_SDK_DIR}/llvm-vfsoverlay.yaml /winsysroot ${WINDOWS_SDK_DIR}" CACHE STRING "")
+ set(RUNTIMES_${target}_CMAKE_EXE_LINKER_FLAGS "/vfsoverlay:${WINDOWS_SDK_DIR}/llvm-vfsoverlay.yaml" CACHE STRING "")
+ set(RUNTIMES_${target}_CMAKE_SHARED_LINKER_FLAGS "/vfsoverlay:${WINDOWS_SDK_DIR}/llvm-vfsoverlay.yaml" CACHE STRING "")
+ set(RUNTIMES_${target}_CMAKE_MODULE_LINKER_FLAGS "/vfsoverlay:${WINDOWS_SDK_DIR}/llvm-vfsoverlay.yaml" CACHE STRING "")
+ endif()
endif()
foreach(target aarch64-unknown-linux-gnu;armv7-unknown-linux-gnueabihf;i386-unknown-linux-gnu;x86_64-unknown-linux-gnu)
@@ -245,9 +314,18 @@
set(LLVM_RUNTIME_MULTILIB_hwasan+noexcept_TARGETS "aarch64-unknown-fuchsia" CACHE STRING "")
endif()
+
+# if(LINUX)
+# if (WINDOWS_SDK_DIR)
+# endif()
+# endif()
+
set(LLVM_BUILTIN_TARGETS "${BUILTIN_TARGETS}" CACHE STRING "")
set(LLVM_RUNTIME_TARGETS "${RUNTIME_TARGETS}" CACHE STRING "")
+message(NOTICE "Fuchisa Clang builtins: ${LLVM_BUILTIN_TARGETS}")
+message(NOTICE "Fuchisa Clang runtimes: ${LLVM_RUNTIME_TARGETS}")
+
# Setup toolchain.
set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "")
set(LLVM_TOOLCHAIN_TOOLS
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits