From dccbb4a4b57b89a92f5b29082f2efc0febcd545e Mon Sep 17 00:00:00 2001 From: "long.vu" Date: Tue, 30 Apr 2024 11:36:16 +0700 Subject: [PATCH] add support cross-compiling for armv7eabi --- cmake/armv7_debian.cmake | 28 ++++++++++++++++++++++++++++ cmake/modules/CargoMeta.cmake | 4 ++++ 2 files changed, 32 insertions(+) create mode 100644 cmake/armv7_debian.cmake diff --git a/cmake/armv7_debian.cmake b/cmake/armv7_debian.cmake new file mode 100644 index 0000000000..459f3a0f42 --- /dev/null +++ b/cmake/armv7_debian.cmake @@ -0,0 +1,28 @@ +# this one is important +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR armv7) +set(CONFIGURE_HOST arm-linux) +# this one not so much +set(CMAKE_SYSTEM_VERSION 1) + +set(triple arm-linux-gnueabi) + +# specify the cross compiler If CMAKE_CLANG is set, use clang, otherwise use gcc +if(CMAKE_CLANG) + set(CMAKE_C_COMPILER clang) + set(CMAKE_C_COMPILER_TARGET ${triple}) + set(CMAKE_CXX_COMPILER clang++) + set(CMAKE_CXX_COMPILER_TARGET ${triple}) +else() + set(CMAKE_C_COMPILER ${triple}-gcc) + set(CMAKE_CXX_COMPILER ${triple}-g++) +endif() + +set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE armel) +set(CPACK_FILE_NAME_EXTRA bullseye) + +# Configure pkg-config to only find target libs +set(PKG_CONFIG_EXECUTABLE + "/usr/bin/${triple}-pkg-config" + CACHE PATH "pkg-config") +set(ENV{PKG_CONFIG_PATH} "/usr/lib/${triple}/pkgconfig") diff --git a/cmake/modules/CargoMeta.cmake b/cmake/modules/CargoMeta.cmake index 35f25257e8..fbfb6cb948 100644 --- a/cmake/modules/CargoMeta.cmake +++ b/cmake/modules/CargoMeta.cmake @@ -41,6 +41,10 @@ function(get_target_triple CARGO_TARGET_TRIPLE) set(CARGO_TARGET_TRIPLE "armv7-unknown-linux-gnueabihf" PARENT_SCOPE) + elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7") + set(CARGO_TARGET_TRIPLE + "armv7-unknown-linux-gnueabi" + PARENT_SCOPE) elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64") set(CARGO_TARGET_TRIPLE "aarch64-unknown-linux-gnu"