[Release] Feature/0.5.0 (#206) #562
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CMake | |
on: | |
push: | |
branches: [ "master" ] | |
pull_request: | |
branches: [ "master" ] | |
workflow_dispatch: | |
env: | |
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | |
BUILD_TYPE: Release | |
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 | |
DOTNET_NOLOGO: true | |
NuGetDirectory: ${{ github.workspace }}/nuget | |
jobs: | |
build_linux: | |
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. | |
# You can convert this to a matrix build if you need cross-platform coverage. | |
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Prepare Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: latest | |
vulkan-components: Vulkan-Headers, Vulkan-Loader | |
vulkan-use-cache: true | |
- name: Install KDUtils requirements | |
run: sudo apt install libxkbcommon-dev libxcb-xkb-dev libx11-xcb-dev libxkbcommon-x11-dev wayland-scanner++ wayland-protocols ninja-build | |
- name: Configure CMake | |
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. | |
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type | |
run: cmake -B ${{github.workspace}}/build_dx -GNinja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER:STRING="gcc-12" -DCMAKE_CXX_COMPILER:STRING="g++-12" -DWISDOM_BUILD_TYPE="headers" | |
- name: Build WisdomKD | |
# Build your program with the given configuration | |
run: cmake --build ${{github.workspace}}/build_dx --config ${{env.BUILD_TYPE}} | |
build_dx: | |
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. | |
# You can convert this to a matrix build if you need cross-platform coverage. | |
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Visual Studio shell | |
uses: egor-tensin/vs-shell@v2 | |
- name: Configure CMake for DirectX 12 | |
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. | |
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type | |
run: cmake -B ${{github.workspace}}/build_dx -GNinja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER:STRING="cl.exe" -DCMAKE_CXX_COMPILER:STRING="cl.exe" -DWISDOM_BUILD_TYPE="static" | |
- name: Build WisdomDX12 | |
# Build your program with the given configuration | |
run: cmake --build ${{github.workspace}}/build_dx --config ${{env.BUILD_TYPE}} | |
build_vk: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Visual Studio shell | |
uses: egor-tensin/vs-shell@v2 | |
- name: Prepare Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: latest | |
vulkan-components: Vulkan-Headers, Vulkan-Loader | |
vulkan-use-cache: true | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@v2 | |
with: | |
cmake-version: '3.30.x' | |
- name: Configure CMake for Vulkan | |
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. | |
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type | |
run: cmake -B ${{github.workspace}}/build_vk -GNinja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWISDOM_FORCE_VULKAN=ON -DCMAKE_C_COMPILER:STRING="cl.exe" -DCMAKE_CXX_COMPILER:STRING="cl.exe" -DWISDOM_BUILD_TYPE="static" | |
- name: Build WisdomVK | |
# Build your program with the given configuration | |
run: cmake --build ${{github.workspace}}/build_vk --config ${{env.BUILD_TYPE}} | |
#- name: Test | |
# working-directory: ${{github.workspace}}/build_dx | |
# # Execute tests defined by the CMake configuration. | |
# # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail | |
# run: ctest -C ${{env.BUILD_TYPE}} | |
publish: | |
if: ${{ (github.event_name == 'push' && contains(github.event.head_commit.message, '[release]')) || github.event_name == 'workflow_dispatch' }} | |
needs: [build_vk, build_dx, build_linux] | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Visual Studio shell | |
uses: egor-tensin/vs-shell@v2 | |
- name: Prepare Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: latest | |
vulkan-components: Vulkan-Headers, Vulkan-Loader | |
vulkan-use-cache: true | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@v2 | |
with: | |
cmake-version: '3.30.x' | |
- name: Build packages | |
run: cd ${{github.workspace}} && .\nuget.bat | |
- name: Upload NuGet package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wisdom.nupkg | |
path: ${{github.workspace}}/build/*.nupkg | |
- name: Upload ZIP package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wisdom.zip | |
path: ${{github.workspace}}/build/*.zip | |
- name: Upload Version | |
uses: actions/upload-artifact@v4 | |
with: | |
name: version.txt | |
path: ${{github.workspace}}/build/release/version.txt | |
release: | |
runs-on: windows-latest | |
needs: publish | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download Nuget | |
uses: actions/download-artifact@v4 | |
id: nuget_download | |
with: | |
name: wisdom.nupkg | |
- name: Download Zip | |
uses: actions/download-artifact@v4 | |
with: | |
name: wisdom.zip | |
- name: Download Version | |
uses: actions/download-artifact@v4 | |
with: | |
name: version.txt | |
- name: Read version | |
id: version | |
uses: juliangruber/read-file-action@v1 | |
with: | |
path: ./version.txt | |
- name: Publish NuGet package | |
run: | | |
dotnet nuget push wisdom.*.nupkg --api-key "${{ secrets.NUGET_APIKEY }}" --source https://api.nuget.org/v3/index.json --skip-duplicate | |
- name: Tag and Release Versioned | |
id : tag_release_versioned | |
uses : softprops/action-gh-release@v1 | |
with : | |
body: Release ${{ steps.version.outputs.content }} | |
tag_name : ${{ steps.version.outputs.content }} | |
files : | | |
**/*.zip | |
**/*.nupkg | |
- name: Delete tag | |
run: gh release delete Latest --cleanup-tag | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Tag and Release Latest | |
id : tag_release_latest | |
uses : softprops/action-gh-release@v1 | |
with : | |
body: Release ${{ steps.version.outputs.content }} | |
tag_name : Latest | |
files : | | |
**/*.zip | |
**/*.nupkg | |