From d828fd6cb97d15d81a99e5be9270f5202383cd58 Mon Sep 17 00:00:00 2001 From: dev0 Date: Sun, 21 Dec 2025 16:13:41 +0530 Subject: [PATCH] [WORKFLOW]: CI Update --- .github/workflows/ci.yaml | 16 +++++-- CMake/Toolchains/linux-arm64.cmake | 24 ++++++++++ CMake/Toolchains/wasm.cmake | 4 ++ CMake/Toolchains/windows-arm64.cmake | 13 +++++ ...nux-neon.cmake => arm64-linux-clang.cmake} | 2 + CMakePresets.json | 48 ++++--------------- 6 files changed, 65 insertions(+), 42 deletions(-) create mode 100644 CMake/Toolchains/linux-arm64.cmake create mode 100644 CMake/Toolchains/wasm.cmake create mode 100644 CMake/Toolchains/windows-arm64.cmake rename CMake/Triplets/{arm64-linux-neon.cmake => arm64-linux-clang.cmake} (69%) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 132e92e..6cfe4bf 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -15,11 +15,21 @@ jobs: container: image: ghcr.io/i-a-s/iabuild-env:latest strategy: + fail-fast: false matrix: target: [linux-x64, linux-arm64, windows-x64, windows-arm64, wasm] steps: - uses: actions/checkout@v4 - - name: Build + + - name: Environment Info run: | - cmake --preset ${{ matrix.target }} - cmake --build --preset debug + clang --version + cmake --version + ls -R /usr/aarch64-linux-gnu/sys-root | head -n 20 + + - name: Configure + run: cmake --preset ${{ matrix.target }} + + - name: Build + run: cmake --build --preset ${{ matrix.target }} --config Debug + diff --git a/CMake/Toolchains/linux-arm64.cmake b/CMake/Toolchains/linux-arm64.cmake new file mode 100644 index 0000000..37b267e --- /dev/null +++ b/CMake/Toolchains/linux-arm64.cmake @@ -0,0 +1,24 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR aarch64) + +set(triple aarch64-linux-gnu) +set(CMAKE_C_COMPILER_TARGET ${triple}) +set(CMAKE_CXX_COMPILER_TARGET ${triple}) + +set(CMAKE_SYSROOT /usr/aarch64-linux-gnu/sys-root) +set(CMAKE_LIBRARY_ARCHITECTURE aarch64-linux-gnu) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=/usr") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --gcc-toolchain=/usr") + +set(CMAKE_C_FLAGS "-march=armv8-a+simd") +set(CMAKE_CXX_FLAGS "-march=armv8-a+simd") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + +link_directories(${CMAKE_SYSROOT}/usr/lib64) +link_directories(${CMAKE_SYSROOT}/lib64) + diff --git a/CMake/Toolchains/wasm.cmake b/CMake/Toolchains/wasm.cmake new file mode 100644 index 0000000..d0d81c8 --- /dev/null +++ b/CMake/Toolchains/wasm.cmake @@ -0,0 +1,4 @@ +set(CMAKE_SYSTEM_NAME Emscripten) +set(CMAKE_SYSTEM_PROCESSOR wasm32) + +include("$ENV{EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake") \ No newline at end of file diff --git a/CMake/Toolchains/windows-arm64.cmake b/CMake/Toolchains/windows-arm64.cmake new file mode 100644 index 0000000..c6960aa --- /dev/null +++ b/CMake/Toolchains/windows-arm64.cmake @@ -0,0 +1,13 @@ +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR aarch64) + +set(triple arm64-pc-windows-msvc) +set(CMAKE_C_COMPILER_TARGET ${triple}) +set(CMAKE_CXX_COMPILER_TARGET ${triple}) + +set(CMAKE_LINKER lld-link) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=lld-link") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) \ No newline at end of file diff --git a/CMake/Triplets/arm64-linux-neon.cmake b/CMake/Triplets/arm64-linux-clang.cmake similarity index 69% rename from CMake/Triplets/arm64-linux-neon.cmake rename to CMake/Triplets/arm64-linux-clang.cmake index ce29ac3..cd203ca 100644 --- a/CMake/Triplets/arm64-linux-neon.cmake +++ b/CMake/Triplets/arm64-linux-clang.cmake @@ -3,5 +3,7 @@ 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-arm64.cmake") + set(VCPKG_C_FLAGS "-march=armv8-a+simd") set(VCPKG_CXX_FLAGS "-march=armv8-a+simd") diff --git a/CMakePresets.json b/CMakePresets.json index 10b1346..8a6e8a4 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -14,8 +14,6 @@ "CMAKE_C_COMPILER": "clang", "CMAKE_CXX_COMPILER": "clang++", "CMAKE_EXPORT_COMPILE_COMMANDS": "ON", - "WITH_AVX2": "ON", - "WITH_NEON": "ON", "VCPKG_OVERLAY_TRIPLETS": "${sourceDir}/CMake/Triplets", "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" } @@ -25,65 +23,37 @@ "displayName": "Linux x64 (AVX2)", "inherits": "base-common", "cacheVariables": { - "CMAKE_SYSTEM_NAME": "Linux", - "CMAKE_SYSTEM_PROCESSOR": "x86_64", - "CMAKE_C_FLAGS": "-mavx2 -mfma", - "CMAKE_CXX_FLAGS": "-mavx2 -mfma", - "VCPKG_TARGET_TRIPLET": "x64-linux" + "VCPKG_TARGET_TRIPLET": "x64-linux-avx2" } }, { "name": "linux-arm64", - "displayName": "Linux ARM64 (NEON)", + "displayName": "Linux ARM64 (Clang/Sysroot)", "inherits": "base-common", "cacheVariables": { - "CMAKE_SYSTEM_NAME": "Linux", - "CMAKE_SYSTEM_PROCESSOR": "aarch64", - "CMAKE_C_COMPILER_TARGET": "aarch64-linux-gnu", - "CMAKE_CXX_COMPILER_TARGET": "aarch64-linux-gnu", - "CMAKE_CXX_FLAGS": "-march=armv8-a+simd", - "CMAKE_SYSROOT": "/usr/aarch64-linux-gnu", - "VCPKG_TARGET_TRIPLET": "arm64-linux" + "VCPKG_TARGET_TRIPLET": "arm64-linux-clang" } }, { "name": "windows-x64", "displayName": "Windows x64 (AVX2)", - "inherits": "base-common", - "cacheVariables": { - "CMAKE_SYSTEM_NAME": "Windows", - "CMAKE_SYSTEM_PROCESSOR": "x86_64", - "CMAKE_C_COMPILER": "clang-cl", - "CMAKE_CXX_COMPILER": "clang-cl", - "CMAKE_CXX_FLAGS": "/arch:AVX2", - "VCPKG_TARGET_TRIPLET": "x64-windows" - } + "inherits": "base-common" }, { "name": "windows-arm64", - "displayName": "Windows ARM64 (NEON)", + "displayName": "Windows ARM64 (Cross-Compile)", "inherits": "base-common", "cacheVariables": { - "CMAKE_SYSTEM_NAME": "Windows", - "CMAKE_SYSTEM_PROCESSOR": "aarch64", - "CMAKE_C_COMPILER": "clang", - "CMAKE_CXX_COMPILER": "clang++", - "CMAKE_CXX_FLAGS": "--target=arm64-pc-windows-msvc -fuse-ld=lld-link", - "VCPKG_TARGET_TRIPLET": "arm64-windows" + "VCPKG_TARGET_TRIPLET": "arm64-windows-cross", + "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/CMake/Toolchains/windows-arm64.cmake" } }, { "name": "wasm", - "displayName": "WebAssembly (SIMD)", + "displayName": "WebAssembly (SIMD/Pthreads)", "inherits": "base-common", "cacheVariables": { - "CMAKE_SYSTEM_NAME": "Emscripten", - "CMAKE_SYSTEM_PROCESSOR": "wasm32", - "CMAKE_C_COMPILER": "emcc", - "CMAKE_CXX_COMPILER": "em++", - "VCPKG_TARGET_TRIPLET": "wasm32-emscripten-simd", - "VCPKG_HOST_TRIPLET": "x64-linux", - "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "$env{EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake" + "VCPKG_TARGET_TRIPLET": "wasm32-emscripten-simd" } } ]