Add cmake + native windows support for asymptote, with fully working make support #283
Workflow file for this run
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: build-asy-cxx-windows | |
on: | |
workflow_dispatch: | |
pull_request: | |
branches: | |
- "master" | |
- "a/*" | |
push: | |
branches: | |
- msvc-* | |
env: | |
pwsh_initialize_devenv: | | |
$VsInfo = Get-CimInstance MSFT_VSInstance -Namespace root/cimv2/vs | |
& "$($VsInfo.InstallLocation)\\Common7\\Tools\\Launch-VsDevShell.ps1" ` | |
-Arch amd64 -HostArch amd64 -SkipAutomaticLocation | |
$env:VCPKG_ROOT = "$env:VCPKG_INSTALLATION_ROOT" | |
jobs: | |
configure-windows-msvc-x64: | |
runs-on: "windows-2022" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 1 | |
- uses: ./.github/actions/initialize-windows-env | |
- name: Configure MSVC-Release | |
shell: pwsh | |
run: | | |
${{ env.pwsh_initialize_devenv }} | |
cmake --preset msvc/release | |
- name: zip cmake configuration | |
shell: pwsh | |
# Compress-Archive cmdlet does not support hidden files | |
# remove vcpkg_installed to make config zip smaller | |
run: | | |
$loc = Get-Location | |
Remove-Item -Recurse -Force cmake-build-msvc\release\vcpkg_installed | |
[System.IO.Compression.ZipFile]::CreateFromDirectory(` | |
"$($loc.Path)\cmake-build-msvc",` | |
"$($loc.Path)\cmake-msvc-x64-release-cfg.zip",` | |
[System.IO.Compression.CompressionLevel]::NoCompression,` | |
$true` | |
) | |
- name: Upload configuration artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: cmake-msvc-x64-release-cfg-zip | |
path: cmake-msvc-x64-release-cfg.zip | |
build-windows-msvc-x64: | |
needs: configure-windows-msvc-x64 | |
runs-on: "windows-2022" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 1 | |
- uses: ./.github/actions/initialize-windows-env | |
- name: Download configuration artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: cmake-msvc-x64-release-cfg-zip | |
- name: Unzip configuration artifact | |
run: | | |
Expand-Archive ` | |
-Path cmake-msvc-x64-release-cfg.zip ` | |
-DestinationPath . | |
- name: Generate version suffix for github runner | |
run: | | |
"set(ASY_VERSION_SUFFIX `"/github-ci/ref=${{ github.sha }}`")" | Out-File -Path asy-pkg-version-suffix.cmake | |
- name: Build asymptote on windows | |
run: | | |
${{ env.pwsh_initialize_devenv }} | |
cmake --build --preset msvc/release --target asy-with-basefiles -j | |
- name: Archive Asymptote build | |
uses: actions/upload-artifact@v3 | |
with: | |
name: asy-win-x64-buildfiles | |
path: | | |
cmake-build-msvc/release/asy.exe | |
cmake-build-msvc/release/base | |
cmake-build-msvc/release/*.dll | |
- name: Build Asymptote google test | |
run: | | |
${{ env.pwsh_initialize_devenv }} | |
cmake --build --preset msvc/release --target asyCxxTests -j | |
- name: Archive Asymptote gtest files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: asy-win-x64-gtest-files | |
path: | | |
cmake-build-msvc/release/cxxtests/asyCxxTests.exe | |
cmake-build-msvc/release/cxxtests/*.cmake | |
cmake-build-msvc/release/cxxtests/*.dll | |
- name: Archive Asymptote test files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: asy-win-x64-testfiles | |
path: | | |
cmake-build-msvc/release/CTest*.cmake | |
test-windows-msvc-x64-cxxtests: | |
needs: build-windows-msvc-x64 | |
runs-on: "windows-2022" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 1 | |
- uses: ./.github/actions/initialize-windows-env | |
- name: Download test artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: asy-win-x64-testfiles | |
path: cmake-build-msvc/release/ | |
- name: Download artifacts for gtest | |
uses: actions/download-artifact@v3 | |
with: | |
name: asy-win-x64-gtest-files | |
path: cmake-build-msvc/release/cxxtests | |
- name: google test | |
run: ctest --test-dir cmake-build-msvc/release -R "^cxxtests." | |
test-windows-msvc-x64-asy-tests: | |
needs: build-windows-msvc-x64 | |
runs-on: "windows-2022" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 1 | |
- uses: ./.github/actions/initialize-windows-env | |
- name: Download build artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: asy-win-x64-buildfiles | |
path: cmake-build-msvc/release/ | |
- name: Download test artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: asy-win-x64-testfiles | |
path: cmake-build-msvc/release/ | |
- name: asy test | |
run: ctest --test-dir cmake-build-msvc/release -R "^asy.*" -E "asy.(gc.*|pic.trans)" | |
package-asymptote-artifacts-win: | |
needs: [ test-windows-msvc-x64-cxxtests, test-windows-msvc-x64-asy-tests ] | |
runs-on: "windows-2022" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 1 | |
- name: Download build artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: asy-win-x64-buildfiles | |
path: zip-stage | |
- name: Copy examples to zip-stage | |
run: Copy-Item -Recurse -Path examples -Destination zip-stage/examples | |
- name: Archive Asymptote test files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: asymptote-build-windows | |
path: | | |
zip-stage/* |