From be6dd79a74061614060d78c2d55d90252403baed Mon Sep 17 00:00:00 2001 From: Ivan Davydov Date: Fri, 6 Jun 2025 09:28:26 +0300 Subject: Add (GNU/)Linux ARM port --- source/CMakePresets.json | 37 ++++++++++++++++++++++++++++++++++ triplets/arm64-linux-mixed-clang.cmake | 21 +++++++++++++++++++ triplets/arm64-linux-mixed.cmake | 20 ++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 triplets/arm64-linux-mixed-clang.cmake create mode 100644 triplets/arm64-linux-mixed.cmake diff --git a/source/CMakePresets.json b/source/CMakePresets.json index 0d4eec2..800387a 100644 --- a/source/CMakePresets.json +++ b/source/CMakePresets.json @@ -71,6 +71,18 @@ } } }, + { + "inherits": "linux-release", + "name": "linux-arm-release", + "displayName": "Linux ARM", + "binaryDir": "${sourceParentDir}/build/linux-arm-release", + "architecture": { "value": "arm64", "strategy": "external" }, + "cacheVariables": { + "VCPKG_TARGET_TRIPLET": "arm64-linux-mixed", + "STAR_ENABLE_STEAM_INTEGRATION": false, + "STAR_ENABLE_DISCORD_INTEGRATION": false + } + }, { "inherits": "linux-release", "name": "linux-release-clang", @@ -84,6 +96,18 @@ "STAR_USE_JEMALLOC": true } }, + { + "inherits": "linux-arm-release", + "name": "linux-arm-release-clang", + "displayName": "Linux Clang ARM", + "binaryDir": "${sourceParentDir}/build/linux-arm-release-clang", + "cacheVariables": { + "CMAKE_C_COMPILER": "clang", + "CMAKE_CXX_COMPILER": "clang++", + "VCPKG_TARGET_TRIPLET": "arm64-linux-mixed-clang", + "STAR_USE_JEMALLOC": true + } + }, { "inherits": "base", "name": "macos-release", @@ -143,10 +167,18 @@ "name": "linux-release", "configurePreset": "linux-release" }, + { + "name": "linux-arm-release", + "configurePreset": "linux-arm-release" + }, { "name": "linux-release-clang", "configurePreset": "linux-release-clang" }, + { + "name": "linux-arm-release-clang", + "configurePreset": "linux-arm-release-clang" + }, { "name": "macos-release", "configurePreset": "macos-release" @@ -174,6 +206,11 @@ "name": "linux-release", "configurePreset": "linux-release" }, + { + "inherits": "base", + "name": "linux-arm-release", + "configurePreset": "linux-arm-release" + }, { "inherits": "base", "name": "macos-release", diff --git a/triplets/arm64-linux-mixed-clang.cmake b/triplets/arm64-linux-mixed-clang.cmake new file mode 100644 index 0000000..47c6697 --- /dev/null +++ b/triplets/arm64-linux-mixed-clang.cmake @@ -0,0 +1,21 @@ +set(VCPKG_TARGET_ARCHITECTURE arm64) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE static) + +set(VCPKG_CMAKE_SYSTEM_NAME Linux) +set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE ${CMAKE_CURRENT_LIST_DIR}/../toolchains/linux-clang.cmake) + +if(PORT MATCHES "opus") + string(CONCAT VCPKG_CMAKE_CONFIGURE_OPTIONS + "-DOPUS_INSTALL_PKG_CONFIG_MODULE=OFF" + "-DOPUS_INSTALL_CMAKE_CONFIG_MODULE=OFF" + "-DOPUS_ARM_MAY_HAVE_NEON=ON" + "-DOPUS_ARM_MAY_HAVE_NEON_INTR=ON" + "-DOPUS_ENABLE_FLOAT_API=ON" + "-DOPUS_FLOAT_APPROX=ON" + "-DOPUS_STACK_PROTECTOR=OFF" + "-DOPUS_NONTHREADSAFE_PSEUDOSTACK=OFF" + "-DOPUS_USE_ALLOCA=ON" + "-DBUILD_TESTING=OFF" + ) +endif() diff --git a/triplets/arm64-linux-mixed.cmake b/triplets/arm64-linux-mixed.cmake new file mode 100644 index 0000000..1885af2 --- /dev/null +++ b/triplets/arm64-linux-mixed.cmake @@ -0,0 +1,20 @@ +set(VCPKG_TARGET_ARCHITECTURE arm64) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE static) + +set(VCPKG_CMAKE_SYSTEM_NAME Linux) + +if(PORT MATCHES "opus") + string(CONCAT VCPKG_CMAKE_CONFIGURE_OPTIONS + "-DOPUS_INSTALL_PKG_CONFIG_MODULE=OFF" + "-DOPUS_INSTALL_CMAKE_CONFIG_MODULE=OFF" + "-DOPUS_ARM_MAY_HAVE_NEON=ON" + "-DOPUS_ARM_MAY_HAVE_NEON_INTR=ON" + "-DOPUS_ENABLE_FLOAT_API=ON" + "-DOPUS_FLOAT_APPROX=ON" + "-DOPUS_STACK_PROTECTOR=OFF" + "-DOPUS_NONTHREADSAFE_PSEUDOSTACK=OFF" + "-DOPUS_USE_ALLOCA=ON" + "-DBUILD_TESTING=OFF" + ) +endif() -- cgit v1.2.3