diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ad3f7d3..43a2c01 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -7,7 +7,7 @@ on: branches: [ "main" ] jobs: - build-all: + build-linux-wasm: runs-on: ubuntu-latest permissions: contents: read @@ -17,7 +17,7 @@ jobs: strategy: fail-fast: false matrix: - target: [linux-x64, linux-arm64, windows-x64, windows-arm64, wasm] + target: [linux-x64, linux-arm64, wasm] steps: - uses: actions/checkout@v4 @@ -27,3 +27,33 @@ jobs: - name: Build run: cmake --build --preset ${{ matrix.target }} --config Release + build-windows: + runs-on: windows-2022 + strategy: + fail-fast: false + matrix: + target: [windows-x64, windows-arm64] + steps: + - uses: actions/checkout@v4 + + - name: Setup VCPKG + run: | + git clone https://github.com/microsoft/vcpkg.git C:/vcpkg + C:/vcpkg/bootstrap-vcpkg.bat + echo "VCPKG_ROOT=C:/vcpkg" >> $env:GITHUB_ENV + + - uses: ilammy/setup-nasm@v1 + + - name: Cache vcpkg + uses: actions/cache@v4 + with: + path: out/build/${{ matrix.target }}/vcpkg_installed + key: vcpkg-${{ runner.os }}-${{ matrix.target }}-${{ hashFiles('vcpkg.json') }} + + - name: Build + shell: cmd + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + cmake --preset ${{ matrix.target }} + cmake --build --preset ${{ matrix.target }} --config Debug + diff --git a/CMake/FindDeps.cmake b/CMake/FindDeps.cmake index 4a9ba5e..6ce362d 100644 --- a/CMake/FindDeps.cmake +++ b/CMake/FindDeps.cmake @@ -81,7 +81,7 @@ set(MI_BUILD_SHARED OFF CACHE BOOL "" FORCE) set(EXPECTED_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(HTTPLIB_REQUIRE_OPENSSL ON CACHE BOOL "" FORCE) -set(HTTPLIB_REQUIRE_ZLIB ON CACHE BOOL "" FORCE) +set(HTTPLIB_REQUIRE_ZLIB OFF CACHE BOOL "" FORCE) set(HTTPLIB_NO_EXCEPTIONS ON CACHE BOOL "" FORCE) set(HTTPLIB_COMPILE OFF CACHE BOOL "" FORCE) set(HTTPLIB_TEST OFF CACHE BOOL "" FORCE) diff --git a/CMake/Toolchains/linux-arm64.cmake b/CMake/Toolchains/linux-arm64.cmake index 404322f..6bc5b9f 100644 --- a/CMake/Toolchains/linux-arm64.cmake +++ b/CMake/Toolchains/linux-arm64.cmake @@ -10,8 +10,8 @@ set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) set(CMAKE_SYSROOT /usr/aarch64-linux-gnu/sys-root) set(CMAKE_LIBRARY_ARCHITECTURE aarch64-linux-gnu) -string(APPEND CMAKE_C_FLAGS " --gcc-toolchain=/usr -march=armv8-a+simd") -string(APPEND CMAKE_CXX_FLAGS " --gcc-toolchain=/usr -march=armv8-a+simd") +string(APPEND CMAKE_C_FLAGS " -march=armv8-a+simd") +string(APPEND CMAKE_CXX_FLAGS " -march=armv8-a+simd") set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) diff --git a/CMake/Toolchains/windows-arm64.cmake b/CMake/Toolchains/windows-arm64.cmake index 86d6828..898bc2e 100644 --- a/CMake/Toolchains/windows-arm64.cmake +++ b/CMake/Toolchains/windows-arm64.cmake @@ -2,6 +2,7 @@ set(CMAKE_SYSTEM_NAME Windows) set(CMAKE_SYSTEM_PROCESSOR aarch64) set(CMAKE_C_COMPILER clang-cl) set(CMAKE_CXX_COMPILER clang-cl) +set(CMAKE_RC_COMPILER llvm-rc) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) @@ -15,5 +16,5 @@ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -string(APPEND CMAKE_C_FLAGS " --target=arm64-pc-windows-msvc -fuse-ld=lld-link") -string(APPEND CMAKE_CXX_FLAGS " --target=arm64-pc-windows-msvc -fuse-ld=lld-link") +string(APPEND CMAKE_C_FLAGS " /clang:--target=arm64-pc-windows-msvc") +string(APPEND CMAKE_CXX_FLAGS " /clang:--target=arm64-pc-windows-msvc") diff --git a/CMake/Toolchains/windows-x64.cmake b/CMake/Toolchains/windows-x64.cmake index 3de220f..1f46898 100644 --- a/CMake/Toolchains/windows-x64.cmake +++ b/CMake/Toolchains/windows-x64.cmake @@ -2,10 +2,15 @@ set(CMAKE_SYSTEM_NAME Windows) set(CMAKE_SYSTEM_PROCESSOR AMD64) set(CMAKE_C_COMPILER clang-cl) set(CMAKE_CXX_COMPILER clang-cl) +set(CMAKE_RC_COMPILER llvm-rc) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) +set(triple x86_64-pc-windows-msvc) +set(CMAKE_C_COMPILER_TARGET ${triple}) +set(CMAKE_CXX_COMPILER_TARGET ${triple}) + set(CMAKE_LINKER lld-link) -string(APPEND CMAKE_C_FLAGS " /arch:AVX2 -fuse-ld=lld-link") -string(APPEND CMAKE_CXX_FLAGS " /arch:AVX2 -fuse-ld=lld-link") +string(APPEND CMAKE_C_FLAGS " /arch:AVX2 /clang:-mfma") +string(APPEND CMAKE_CXX_FLAGS " /arch:AVX2 /clang:-mfma") diff --git a/CMake/Triplets/windows-x64-clang.cmake b/CMake/Triplets/windows-x64-clang.cmake index 8cc3355..7db4462 100644 --- a/CMake/Triplets/windows-x64-clang.cmake +++ b/CMake/Triplets/windows-x64-clang.cmake @@ -3,7 +3,7 @@ set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_LIBRARY_LINKAGE static) set(VCPKG_CMAKE_SYSTEM_NAME Windows) -set(VCPKG_C_FLAGS "/arch:AVX2") -set(VCPKG_CXX_FLAGS "/arch:AVX2") +set(VCPKG_C_FLAGS "/arch:AVX2 /clang:-mfma") +set(VCPKG_CXX_FLAGS "/arch:AVX2 /clang:-mfma") set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${CMAKE_CURRENT_LIST_DIR}/../Toolchains/windows-x64.cmake")