Add cmake + native windows support for asymptote, with fully working make support #365
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 | |
on: | |
workflow_dispatch: | |
pull_request: | |
branches: | |
- "master" | |
- "a/*" | |
push: | |
branches: | |
- msvc-* | |
jobs: | |
configure-linux-release-x64: | |
runs-on: "ubuntu-22.04" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- uses: ./.github/actions/initialize-linux-env | |
- run: cmake --preset linux/release-ccache | |
- name: tar+gz cmake configuration | |
run: tar -czf cmake-linux-cfg-artifact.tar.gz --exclude='vcpkg_installed' cmake-build-linux/release | |
- name: Upload configuration artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cmake-linux-x64-release-cfg-tgz | |
path: cmake-linux-cfg-artifact.tar.gz | |
build-linux-release-x64: | |
needs: configure-linux-release-x64 | |
runs-on: "ubuntu-22.04" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- uses: ./.github/actions/initialize-linux-env | |
- name: Download configuration artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: cmake-linux-x64-release-cfg-tgz | |
- name: Untar configuration artifact | |
run: tar -xzf cmake-linux-cfg-artifact.tar.gz | |
# Why we are defining version here and not in configuration stage is because cmake gets | |
# re-run here | |
- name: Generate version suffix | |
run: | | |
echo set\(ASY_VERSION_SUFFIX \"/github-ci/ref=${{ github.sha }}\"\) > asy-pkg-version-suffix.cmake | |
- run: cmake --build --preset linux/release --target asy-with-basefiles -j | |
- name: Archive build files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: asy-buildfiles | |
path: | | |
cmake-build-linux/release/asy | |
cmake-build-linux/release/base | |
- name: Build Asymptote google test files | |
run: cmake --build --preset linux/release --target asyCxxTests -j | |
- name: Archive Asymptote gtest files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: asy-gtest-files | |
path: | | |
cmake-build-linux/release/cxxtests/asyCxxTests | |
cmake-build-linux/release/cxxtests/*.cmake | |
- name: Archive Asymptote test files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: asy-testfiles | |
path: cmake-build-linux/release/CTest*.cmake | |
test-x64-cxxtests: | |
needs: build-linux-release-x64 | |
runs-on: "ubuntu-22.04" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- uses: ./.github/actions/initialize-linux-env | |
- name: Download test artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: asy-testfiles | |
path: cmake-build-linux/release/ | |
- name: Download artifacts for gtest | |
uses: actions/download-artifact@v4 | |
with: | |
name: asy-gtest-files | |
path: cmake-build-linux/release/cxxtests | |
- run: chmod +x cmake-build-linux/release/cxxtests/asyCxxTests | |
- name: google test | |
run: ctest --test-dir cmake-build-linux/release -R "^cxxtests." | |
test-x64-asy-tests: | |
needs: build-linux-release-x64 | |
runs-on: "ubuntu-22.04" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- uses: ./.github/actions/initialize-linux-env | |
- name: Download build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: asy-buildfiles | |
path: cmake-build-linux/release/ | |
- name: Download test artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: asy-testfiles | |
path: cmake-build-linux/release/ | |
- run: chmod +x cmake-build-linux/release/asy | |
- name: asy test | |
run: ctest --test-dir cmake-build-linux/release -R "^asy.*" -E "asy.(gc.*|pic.trans)" | |
linux-asy-docgen: | |
runs-on: "ubuntu-22.04" | |
needs: build-linux-release-x64 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- uses: ./.github/actions/initialize-linux-env | |
- name: install dependencies | |
run: sudo apt-get install texlive texlive-latex-extra texinfo ghostscript | |
- name: Download build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: asy-buildfiles | |
path: cmake-build-linux/release/ | |
- name: delete cache file | |
run: rm -f cmake-build-linux/release/CMakeCache.txt | |
- name: reconfigure with documentation | |
run: cmake --preset linux/release-ccache | |
- name: touch asymptote binary (to avoid need for rebuilding) | |
run: touch cmake-build-linux/release/asy | |
- name: build documentation | |
run: cmake --build --preset linux/release-ccache --target docgen -j | |
- name: Archive asymptote.pdf | |
uses: actions/upload-artifact@v4 | |
with: | |
name: asy-pdf-file | |
path: cmake-build-linux/release/docbuild/asymptote.pdf | |
- name: Archive remaining asymptote documentation | |
uses: actions/upload-artifact@v4 | |
with: | |
name: asy-misc-docs | |
path: | | |
cmake-build-linux/release/docbuild/asy-latex.pdf | |
cmake-build-linux/release/docbuild/asymptote.sty | |
cmake-build-linux/release/docbuild/CAD.pdf | |
cmake-build-linux/release/docbuild/asyRefCard.pdf | |
cmake-build-linux/release/docbuild/TeXShopAndAsymptote.pdf | |
cmake-build-linux/release/docbuild/latexusage.pdf | |
package-asymptote-artifacts: | |
needs: [test-x64-cxxtests, test-x64-asy-tests, linux-asy-docgen] | |
runs-on: "ubuntu-22.04" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: Download build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: asy-buildfiles | |
path: tar-stage | |
- name: Download asymptote.pdf | |
uses: actions/download-artifact@v4 | |
with: | |
name: asy-pdf-file | |
path: tar-stage/doc/ | |
- name: Download remaining documentation files | |
uses: actions/download-artifact@v4 | |
with: | |
name: asy-misc-docs | |
path: tar-stage/doc/ | |
- name: Link examples directory to tar-stage | |
run: ln -sf ${{ github.workspace }}/examples ${{ github.workspace }}/tar-stage/examples | |
- name: Set asy's +x flag | |
run: chmod +x tar-stage/asy | |
- name: tar package | |
run: tar -C tar-stage -cvhf asymptote-build-linux.tar asy base examples doc | |
- name: Archive Asymptote test files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: asymptote-build-linux | |
path: asymptote-build-linux.tar |