[llvm] [BOLT] Enable cross compilation of runtime libraries (PR #101180)
Peter Waller via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 2 08:32:05 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)
----------------
peterwaller-arm wrote:
This doesn't look as I'd expect. I'd expect to see `CMAKE_FLAGS -DCMAKE_CXX_FLAGS=...`. (link to [docs](https://cmake.org/cmake/help/v3.20/command/try_compile.html#try-compiling-source-files)).
Also I'd suggest not doing `set(CMAKE_CXX_FLAGS)`, and instead calling it CROSS_CXX_FLAGS or something to be clear it is intended to be distinct (then in try compile you could have `-DCMAKE_CXX_FLAGS=${CROSS_CXX_FLAGS}` to make it clear you're overriding not using the original CXX flags.
https://github.com/llvm/llvm-project/pull/101180
More information about the llvm-commits
mailing list