diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 03f85442..a89cc740 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,7 +30,7 @@ jobs: matrix: os: [windows-2019, windows-2022] - build_type: [x64-Debug, x64-Release, x64-Debug-Clang, x64-Release-Clang] + build_type: [x64-Debug, x64-Release] arch: [amd64] include: - os: windows-2019 @@ -39,18 +39,18 @@ jobs: - os: windows-2019 build_type: x86-Release arch: amd64_x86 - - os: windows-2019 - build_type: x86-Debug-Clang - arch: amd64_x86 - - os: windows-2019 - build_type: x86-Release-Clang - arch: amd64_x86 - os: windows-2022 build_type: x86-Debug arch: amd64_x86 - os: windows-2022 build_type: x86-Release arch: amd64_x86 + - os: windows-2022 + build_type: x64-Debug-Clang + arch: amd64 + - os: windows-2022 + build_type: x64-Release-Clang + arch: amd64 - os: windows-2022 build_type: x86-Debug-Clang arch: amd64_x86 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index be2b6a5c..fb559d28 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,7 +31,7 @@ jobs: matrix: os: [windows-2019, windows-2022] - build_type: [x64-Debug, x64-Release, x64-Debug-Clang, x64-Release-Clang] + build_type: [x64-Debug, x64-Release] arch: [amd64] include: - os: windows-2019 @@ -40,18 +40,18 @@ jobs: - os: windows-2019 build_type: x86-Release arch: amd64_x86 - - os: windows-2019 - build_type: x86-Debug-Clang - arch: amd64_x86 - - os: windows-2019 - build_type: x86-Release-Clang - arch: amd64_x86 - os: windows-2022 build_type: x86-Debug arch: amd64_x86 - os: windows-2022 build_type: x86-Release arch: amd64_x86 + - os: windows-2022 + build_type: x64-Debug-Clang + arch: amd64 + - os: windows-2022 + build_type: x64-Release-Clang + arch: amd64 - os: windows-2022 build_type: x86-Debug-Clang arch: amd64_x86 diff --git a/.github/workflows/vcpkg.yml b/.github/workflows/vcpkg.yml new file mode 100644 index 00000000..025e65fc --- /dev/null +++ b/.github/workflows/vcpkg.yml @@ -0,0 +1,92 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# +# https://go.microsoft.com/fwlink/?LinkID=324981 + +name: 'CMake (Windows using VCPKG)' + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + paths-ignore: + - '*.md' + - LICENSE + - build/* + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + + matrix: + os: [windows-2019, windows-2022] + build_type: [x64-Debug-VCPKG] + arch: [amd64] + include: + - os: windows-2022 + build_type: x64-Debug-Clang-VCPKG + arch: amd64 + - os: windows-2022 + build_type: x86-Debug-VCPKG + arch: amd64_x86 + - os: windows-2022 + build_type: arm64-Debug-VCPKG + arch: amd64_arm64 + + steps: + - uses: actions/checkout@v4 + + - name: 'Install Ninja' + run: choco install ninja + + - uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.arch }} + + - name: 'Set triplet' + shell: pwsh + run: | + if ("${{ matrix.arch }}" -eq "amd64") + { + echo "VCPKG_DEFAULT_TRIPLET=x64-windows" >> $env:GITHUB_ENV + } + elseif ("${{ matrix.arch }}" -eq "amd64_x86") + { + echo "VCPKG_DEFAULT_TRIPLET=x86-windows" >> $env:GITHUB_ENV + } + elseif ("${{ matrix.arch }}" -eq "amd64_arm64") + { + if ("${{ matrix.build_type }}" -match "^arm64ec") + { + echo "VCPKG_DEFAULT_TRIPLET=arm64ec-windows" >> $env:GITHUB_ENV + } + else + { + echo "VCPKG_DEFAULT_TRIPLET=arm64-windows" >> $env:GITHUB_ENV + } + } + else + { + echo "::error Unknown architecture/build-type triplet mapping" + } + + - uses: lukka/run-vcpkg@v11 + with: + runVcpkgInstall: true + vcpkgJsonGlob: '**/build/vcpkg.json' + vcpkgGitCommitId: '7516a02de04e8f8ff4e4beb8f5bac0565f9bf9da' + + - name: 'Configure CMake' + working-directory: ${{ github.workspace }} + run: > + cmake --preset=${{ matrix.build_type }} -DBUILD_TESTING=OFF -DBUILD_XAUDIO_WIN10=OFF -DBUILD_XAUDIO_WIN8=OFF -DBUILD_XAUDIO_WIN7=ON + -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_MANIFEST_DIR="${{ github.workspace }}/build" + -DVCPKG_TARGET_TRIPLET="${env:VCPKG_DEFAULT_TRIPLET}" + + - name: 'Build' + working-directory: ${{ github.workspace }} + run: cmake --build out\build\${{ matrix.build_type }} diff --git a/.gitignore b/.gitignore index cfa05090..f9995f0e 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ packages /wiki /out /CMakeUserPresets.json +/build/vcpkg_installed diff --git a/CMakeLists.txt b/CMakeLists.txt index 5cc7322f..9e87bb07 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -173,8 +173,12 @@ set(SHADER_SOURCES ${SHADER_SOURCES} Src/Shaders/Utilities.fxh) if(MINGW) - set(BUILD_XAUDIO_WIN10 OFF) - set(BUILD_XAUDIO_WIN8 OFF) + set(BUILD_XAUDIO_WIN10 OFF) + set(BUILD_XAUDIO_WIN8 OFF) +endif() + +if(${DIRECTX_ARCH} MATCHES "^arm") + set(BUILD_XAUDIO_WIN7 OFF) endif() if(WINDOWS_STORE diff --git a/CMakePresets.json b/CMakePresets.json index 2f4c9fb1..5cc2aa9d 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -240,15 +240,15 @@ { "name": "x64-Debug-Durango" , "description": "MSVC for x64 (Debug) for legacy Xbox One XDK", "inherits": [ "base", "x64", "Debug", "MSVC", "Durango" ] }, { "name": "x64-Release-Durango" , "description": "MSVC for x64 (Release) for legacy Xbox One XDK", "inherits": [ "base", "x64", "Release", "MSVC", "Durango" ] }, - { "name": "x64-Debug-VCPKG" , "description": "MSVC for x64 (Debug)", "inherits": [ "base", "x64", "Debug", "MSVC", "VCPKG" ] }, - { "name": "x64-Release-VCPKG" , "description": "MSVC for x64 (Release)", "inherits": [ "base", "x64", "Release", "MSVC", "VCPKG" ] }, - { "name": "x86-Debug-VCPKG" , "description": "MSVC for x86 (Debug)", "inherits": [ "base", "x86", "Debug", "MSVC", "VCPKG" ] }, - { "name": "x86-Release-VCPKG" , "description": "MSVC for x86 (Release)", "inherits": [ "base", "x86", "Release", "MSVC", "VCPKG" ] }, + { "name": "x64-Debug-VCPKG" , "description": "MSVC for x64 (Debug) using VCPKG", "inherits": [ "base", "x64", "Debug", "MSVC", "VCPKG" ] }, + { "name": "x64-Release-VCPKG" , "description": "MSVC for x64 (Release) using VCPKG", "inherits": [ "base", "x64", "Release", "MSVC", "VCPKG" ] }, + { "name": "x86-Debug-VCPKG" , "description": "MSVC for x86 (Debug) using VCPKG", "inherits": [ "base", "x86", "Debug", "MSVC", "VCPKG" ] }, + { "name": "x86-Release-VCPKG" , "description": "MSVC for x86 (Release) using VCPKG", "inherits": [ "base", "x86", "Release", "MSVC", "VCPKG" ] }, - { "name": "arm64-Debug-VCPKG" , "description": "MSVC for ARM64 (Debug)", "inherits": [ "base", "ARM64", "Debug", "MSVC", "VCPKG", "Win10" ] }, - { "name": "arm64-Release-VCPKG" , "description": "MSVC for ARM64 (Release)", "inherits": [ "base", "ARM64", "Release", "MSVC", "VCPKG", "Win10" ] }, - { "name": "arm64ec-Debug-VCPKG" , "description": "MSVC for ARM64EC (Debug)", "inherits": [ "base", "ARM64EC", "Debug", "MSVC", "VCPKG", "Win10" ], "environment": { "CXXFLAGS": "/arm64EC" }, "cacheVariables": { "VCPKG_TARGET_TRIPLET": "arm64ec-windows" } }, - { "name": "arm64ec-Release-VCPKG", "description": "MSVC for ARM64EC (Release)", "inherits": [ "base", "ARM64EC", "Release", "MSVC", "VCPKG", "Win10" ], "environment": { "CXXFLAGS": "/arm64EC" }, "cacheVariables": { "VCPKG_TARGET_TRIPLET": "arm64ec-windows" } }, + { "name": "arm64-Debug-VCPKG" , "description": "MSVC for ARM64 (Debug) using VCPKG", "inherits": [ "base", "ARM64", "Debug", "MSVC", "VCPKG", "Win10" ] }, + { "name": "arm64-Release-VCPKG" , "description": "MSVC for ARM64 (Release) using VCPKG", "inherits": [ "base", "ARM64", "Release", "MSVC", "VCPKG", "Win10" ] }, + { "name": "arm64ec-Debug-VCPKG" , "description": "MSVC for ARM64EC (Debug) using VCPKG", "inherits": [ "base", "ARM64EC", "Debug", "MSVC", "VCPKG", "Win10" ], "environment": { "CXXFLAGS": "/arm64EC" }, "cacheVariables": { "VCPKG_TARGET_TRIPLET": "arm64ec-windows" } }, + { "name": "arm64ec-Release-VCPKG", "description": "MSVC for ARM64EC (Release) using VCPKG", "inherits": [ "base", "ARM64EC", "Release", "MSVC", "VCPKG", "Win10" ], "environment": { "CXXFLAGS": "/arm64EC" }, "cacheVariables": { "VCPKG_TARGET_TRIPLET": "arm64ec-windows" } }, { "name": "x64-Debug-Clang" , "description": "Clang/LLVM for x64 (Debug) for Windows 8", "inherits": [ "base", "x64", "Debug", "Clang" ] }, { "name": "x64-Release-Clang" , "description": "Clang/LLVM for x64 (Release) for Windows 8", "inherits": [ "base", "x64", "Release", "Clang" ] }, @@ -275,6 +275,11 @@ { "name": "x86-Debug-Win7-Clang" , "description": "Clang/LLVM for x86 (Debug) for Windows 7 w/ XAudio2Redist", "inherits": [ "base", "x86", "Debug", "Clang", "Win7", "VCPKG" ], "environment": { "CXXFLAGS": "-m32" } }, { "name": "x86-Release-Win7-Clang", "description": "Clang/LLVM for x86 (Release) for Windows 7 w/ XAudio2Redist", "inherits": [ "base", "x86", "Release", "Clang", "Win7", "VCPKG" ], "environment": { "CXXFLAGS": "-m32" } }, + { "name": "x64-Debug-Clang-VCPKG" , "description": "Clang/LLVM for x64 (Debug) using VCPKG", "inherits": [ "base", "x64", "Debug", "Clang", "VCPKG" ] }, + { "name": "x64-Release-Clang-VCPKG" , "description": "Clang/LLVM for x64 (Release) using VCPKG", "inherits": [ "base", "x64", "Release", "Clang", "VCPKG" ] }, + { "name": "x86-Debug-Clang-VCPKG" , "description": "Clang/LLVM for x86 (Debug) using VCPKG", "inherits": [ "base", "x86", "Debug", "Clang", "VCPKG" ], "environment": { "CXXFLAGS": "-m32" } }, + { "name": "x86-Release-Clang-VCPKG" , "description": "Clang/LLVM for x86 (Release) using VCPKG", "inherits": [ "base", "x86", "Release", "Clang", "VCPKG" ], "environment": { "CXXFLAGS": "-m32" } }, + { "name": "x64-Debug-GDK-Clang" , "description": "Clang/LLVM for x64 (Debug) with Microsoft GDK", "inherits": [ "base", "x64", "Debug", "Clang", "GDK" ] }, { "name": "x64-Release-GDK-Clang" , "description": "Clang/LLVM for x64 (Release) with Microsoft GDK", "inherits": [ "base", "x64", "Release", "Clang", "GDK" ] }, diff --git a/build/CompilerAndLinker.cmake b/build/CompilerAndLinker.cmake index 8950d5ca..1826feb8 100644 --- a/build/CompilerAndLinker.cmake +++ b/build/CompilerAndLinker.cmake @@ -136,7 +136,8 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") list(APPEND COMPILER_SWITCHES /Zc:lambda) endif() - if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.29) + if((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.29) + AND (NOT VCPKG_TOOLCHAIN)) list(APPEND COMPILER_SWITCHES /external:W4) endif() diff --git a/build/vcpkg.json b/build/vcpkg.json new file mode 100644 index 00000000..da386650 --- /dev/null +++ b/build/vcpkg.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", + "dependencies": [ + "directxmath", + { + "name": "directx-dxc", + "host": true + }, + { + "name": "xaudio2redist", + "platform": "windows & !arm" + } + ] + } \ No newline at end of file