[llvm] [BOLT] Enable cross compilation of runtime libraries (PR #101180)
Gergely Bálint via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 15 07:57:32 PDT 2024
================
@@ -135,36 +134,168 @@ if (LLVM_INCLUDE_TESTS)
endif()
endif()
-if (BOLT_ENABLE_RUNTIME)
- message(STATUS "Building BOLT runtime libraries for X86")
- set(extra_args "")
- if(CMAKE_SYSROOT)
- list(APPEND extra_args -DCMAKE_SYSROOT=${CMAKE_SYSROOT})
+set(AARCH64_GNU_C_COMPILER aarch64-linux-gnu-gcc)
+set(AARCH64_GNU_CXX_COMPILER aarch64-linux-gnu-g++)
+set(X86_64_GNU_C_COMPILER x86_64-linux-gnu-gcc)
+set(X86_64_GNU_CXX_COMPILER x86_64-linux-gnu-g++)
+set(RISCV_GNU_C_COMPILER riscv64-linux-gnu-gcc)
+set(RISCV_GNU_CXX_COMPILER riscv64-linux-gnu-g++)
+
+function(bolt_rt_target_supported_clang target supported)
+
+ if(${target} STREQUAL ${HOST_NAME})
+ set(${supported} TRUE PARENT_SCOPE)
+ return()
+ elseif(${target} STREQUAL "X86")
+ set(CMAKE_CXX_FLAGS "--target=x86_64-linux-gnu")
+ elseif(${target} STREQUAL "AArch64")
+ set(CMAKE_CXX_FLAGS "--target=aarch64-linux-gnu")
+ elseif(${target} STREQUAL "RISCV")
+ set(CMAKE_CXX_FLAGS "--target=riscv64-linux-gnu")
+ endif()
+
+ try_compile(CROSS_COMP
+ ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeScratch
+ SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test/test.cpp
+ CMAKE_FLAGS ${CMAKE_CXX_FLAGS}
+ TRY_COMP_OUTPUT)
----------------
bgergely0 wrote:
After thorough investigation, I dont think it is possible to use `CMAKE_FLAGS` to set a target, as it is only used for `-DVAR=VALUE` type flags, and there is no way to easily pass target to `try_compile`.
Appending `--target` to `CMAKE_CXX_FLAGS` seems to be the best option, as the appended target string is only scoped to the function, and will not affect the compilation process outside of it.
https://github.com/llvm/llvm-project/pull/101180
More information about the llvm-commits
mailing list