diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1fde6baa..0f0bb582 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,6 +16,10 @@ on: description: Vulkan SDK Version required: false default: latest + arch: + description: Windows only, Target architecture (x64 or Win32) + required: false + default: Win32 jobs: setup-all-matrix: if: ${{ github.event.inputs.extra_tests == 'true' || github.event.inputs.extra_tests == 'matrix' }} @@ -81,7 +85,7 @@ jobs: with: vulkan-config-file: tests/vulkan_sdk_specs/linux.json vulkan-components: Vulkan-Headers, Vulkan-Loader - vulkan-use-cache: true+ + vulkan-use-cache: true - name: Test Vulkan SDK Install run: | echo "Vulkan SDK Version=='$VULKAN_SDK_VERSION'" @@ -137,7 +141,7 @@ jobs: # cmake --build tests/build --config release # PATH=$PATH:$VULKAN_SDK/bin ./tests/build/test_vulkan # - setup-windows-with-version-powershell: + setup-windows-with-arch: if: ${{ contains(github.event.inputs.extra_tests, 'default') }} runs-on: windows-latest steps: @@ -146,19 +150,34 @@ jobs: with: vulkan-query-version: 1.3.204.0 vulkan-components: Vulkan-Headers, Vulkan-Loader - vulkan-use-cache: true + vulkan-use-cache: false + arch: ${{ github.event.inputs.arch }} + - name: resolve arch Win32 --> x86 if needed + shell: bash + run: | + if [[ ${{ inputs.arch }} == 'Win32' ]] ; then + echo "resolvedArch=x86" >> $GITHUB_ENV + else + echo "resolvedArch=x64" >> $GITHUB_ENV + fi + - uses: seanmiddleditch/gha-setup-vsdevenv@v4 + with: + arch: ${{ env.resolvedArch }} + - name: Test Vulkan SDK Install - shell: powershell + shell: bash run: | - echo "Vulkan SDK Version=='$env:VULKAN_SDK_VERSION'" - if (!$env:VULKAN_SDK_VERSION) { throw "vulkan sdk install error" } + echo "Vulkan SDK Version==$VULKAN_SDK_VERSION" + if [[ -z "$VULKAN_SDK_VERSION" ]] ; then + echo "vulkan sdk install error" + exit 1 + fi cd tests - cmake -G "Visual Studio 16 2019" -B build -S . -DCMAKE_BUILD_TYPE=Release -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=. + cmake -A ${{ inputs.arch }} -G "Visual Studio 17 2022" -B build -S . -DCMAKE_BUILD_TYPE=Release -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=. cmake --build build --config release - $ENV:PATH="$ENV:PATH;$ENV:VULKAN_SDK/bin" - tail -100 build/CMakeFiles/*.log + PATH="$PATH:$VULKAN_SDK/bin" ./build/test_vulkan # setup-macos-with-latest: @@ -170,7 +189,7 @@ jobs: with: vulkan-query-version: 1.3.204.0 vulkan-components: Vulkan-Headers, Vulkan-Loader, Glslang - vulkan-use-cache: true+ + vulkan-use-cache: true - name: Test Vulkan SDK Install run: | echo "Vulkan SDK Version=='$VULKAN_SDK_VERSION'" diff --git a/action.yml b/action.yml index cb979c70..18061d45 100644 --- a/action.yml +++ b/action.yml @@ -20,8 +20,13 @@ inputs: description: 'specify whether to cache VULKAN_SDK/ results between runs (using github actions/cache)' default: false required: false + arch: + description: 'Build architecture, Windows only (x64 or Win32)' + default: x64 + required: false runs: using: "composite" + steps: - uses: humbletim/vsdevenv-shell@e87fcf2359929606ba32db358baef5ede4737aed @@ -88,27 +93,47 @@ runs: cat $VULKAN_SDK_BUILD_DIR/env echo "--------------------------------------------------------------" + - name: resolve arch + shell: bash + run: | + # resolve arch to x86 for vsdenv when cmake arch target is Win32 (WINDOWS ONLY); x64 for everything else + + if [[ $RUNNER_OS == 'Windows' ]] ; then + echo "Is Windows: true" + if [[ ${{ inputs.arch }} == 'Win32' ]] ; then + echo "resolvedArch=x86" >> $GITHUB_ENV + else + echo "resolvedArch=x64" >> $GITHUB_ENV + fi + else + echo "resolvedArch=x64" >> $GITHUB_ENV + fi + - name: Configure Vulkan SDK Components if: steps.vulkan-cached-sdk.outputs.cache-hit != 'true' - shell: vsdevenv x64 bash {0} + shell: vsdevenv ${{ env.resolvedArch }} bash {0} run: | # cmake configure set -a . $PWD/_vulkan_build/env + + archParam="" if [[ $RUNNER_OS == 'Windows' ]] ; then CC=cl.exe CXX=cl.exe + archParam="-A ${{ inputs.arch }}" fi - cmake -S $GITHUB_ACTION_PATH -B ${VULKAN_SDK_BUILD_DIR} \ - -DCMAKE_BUILD_TYPE=Release \ - -DVULKAN_SDK=${VULKAN_SDK} \ - -DVULKAN_SDK_CONFIG="${VULKAN_SDK_CONFIG_FILE}" \ - -DVULKAN_SDK_COMPONENTS="${VULKAN_SDK_COMPONENTS}" \ + + cmake ${archParam} -S $GITHUB_ACTION_PATH -B ${VULKAN_SDK_BUILD_DIR} \ + -DCMAKE_BUILD_TYPE=Release \ + -DVULKAN_SDK=${VULKAN_SDK} \ + -DVULKAN_SDK_CONFIG="${VULKAN_SDK_CONFIG_FILE}" \ + -DVULKAN_SDK_COMPONENTS="${VULKAN_SDK_COMPONENTS}" \ || { cat _vulkan_build/CMakeFiles/*.log ; exit 4 ; } - name: Build Vulkan SDK Components if: steps.vulkan-cached-sdk.outputs.cache-hit != 'true' - shell: vsdevenv x64 bash {0} + shell: vsdevenv ${{ env.resolvedArch }} bash {0} run: | # cmake build set -a