Update URL to patched URL #218
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 & run tests | |
on: | |
- push | |
- pull_request | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 120 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-18.04 | |
- ubuntu-20.04 | |
- macos-10.15 # catalina | |
- macos-11.0 # big sur | |
- windows-2016 | |
- windows-2019 | |
config: | |
- Release | |
# If you add Debug, be careful about the LLVM build. | |
# LLVM Debug builds take a really long time, and consume a lot of disk space. | |
include: | |
- os: windows-2016 | |
cmake-generator: -G "Visual Studio 15 2017" -A x64 | |
- os: windows-2019 | |
cmake-generator: -G "Visual Studio 16 2019" -A x64 | |
steps: | |
- if: contains(matrix.os, 'ubuntu') | |
name: deps | |
run: | | |
sudo apt update | |
sudo apt-get install libasound2-dev xorg-dev libglu1-mesa-dev | |
- name: cache llvm | |
id: llvm-cache | |
uses: actions/cache@v2 | |
with: | |
path: | | |
./llvm-3.8.0.install | |
key: ${{ matrix.os }}-${{ matrix.config }}-llvm.3.8.0-0 # bump this number if you want to trigger an LLVM build | |
- name: download and unpack llvm (macos/linux) | |
if: steps.llvm-cache.outputs.cache-hit != 'true' && !contains(matrix.os, 'windows') | |
run: | | |
wget "http://extempore.moso.com.au/extras/llvm-3.8.0.src-patched-for-extempore.tar.xz" | |
cmake -E tar xJf llvm-3.8.0.src-patched-for-extempore.tar.xz | |
- name: download and unpack llvm (windows) | |
if: contains(matrix.os, 'windows') && steps.llvm-cache.outputs.cache-hit != 'true' | |
run: | | |
Invoke-webrequest -Uri "http://extempore.moso.com.au/extras/llvm-3.8.0.src-patched-for-extempore.tar.xz" -OutFile "llvm-3.8.0.src-patched-for-extempore.tar.xz" | |
cmake -E tar xJf llvm-3.8.0.src-patched-for-extempore.tar.xz | |
- name: configure llvm | |
if: steps.llvm-cache.outputs.cache-hit != 'true' | |
run: | | |
mkdir llvm-3.8.0.build | |
mkdir llvm-3.8.0.install | |
cd llvm-3.8.0.build | |
cmake -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_ENABLE_ZLIB=OFF -DLLVM_INCLUDE_UTILS=OFF -DLLVM_BUILD_RUNTIME=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_GO_TESTS=OFF -DLLVM_INCLUDE_DOCS=OFF -DCMAKE_C_FLAGS="" -DCMAKE_CXX_FLAGS="" -DCMAKE_INSTALL_PREFIX=../llvm-3.8.0.install ${{ matrix.cmake-generator }} ../llvm-3.8.0.src/ | |
- name: build llvm | |
if: steps.llvm-cache.outputs.cache-hit != 'true' | |
run: | | |
cd llvm-3.8.0.build | |
# if you're doing this by hand you might need `-- -j2` instead of `-j2` | |
cmake --build . --config ${{ matrix.config }} -j2 | |
cmake --build . --config ${{ matrix.config }} -j2 --target llvm-as | |
- name: install llvm (macos/linux) | |
if: steps.llvm-cache.outputs.cache-hit != 'true' && !contains(matrix.os, 'windows') | |
run: | | |
cd llvm-3.8.0.build | |
cmake --install . | |
cp bin/llvm-as $GITHUB_WORKSPACE/llvm-3.8.0.install/bin/ | |
- name: install llvm (windows) | |
if: contains(matrix.os, 'windows') && steps.llvm-cache.outputs.cache-hit != 'true' | |
run: | | |
cd llvm-3.8.0.build | |
cmake --install . --prefix ../llvm-3.8.0.install | |
cp .\${{ matrix.config }}\bin\llvm-as.exe ../llvm-3.8.0.install/bin/ | |
- uses: actions/checkout@v2 | |
with: | |
path: extempore | |
# I have no idea why `env:` seems to work for building, but not configuring :( | |
- name: configure extempore (macos/linux) | |
if: ${{ !contains(matrix.os, 'windows') }} | |
run: | | |
cd extempore | |
mkdir build | |
cd build | |
env EXT_LLVM_DIR=$GITHUB_WORKSPACE/llvm-3.8.0.install cmake -DASSETS=ON ${{ matrix.cmake-generator }} .. | |
- name: configure extempore (windows) | |
if: contains(matrix.os, 'windows') | |
run: | | |
$Env:EXT_LLVM_DIR="$Env:GITHUB_WORKSPACE/llvm-3.8.0.install" | |
cd extempore | |
mkdir build | |
cd build | |
cmake -DASSETS=ON ${{ matrix.cmake-generator }} .. | |
- name: build extempore (macos/linux) | |
if: ${{ !contains(matrix.os, 'windows') }} | |
env: | |
EXT_LLVM_DIR: "${{ env.GITHUB_WORKSPACE }}/llvm-3.8.0.install" | |
run: | | |
cd extempore/build | |
cmake --build . -j2 --config ${{ matrix.config }} --target extempore | |
- name: build extempore (windows) | |
if: contains(matrix.os, 'windows') | |
env: | |
EXT_LLVM_DIR: "${{ env.GITHUB_WORKSPACE }}/llvm-3.8.0.install/${{ matrix.config }}" | |
run: | | |
cd extempore/build | |
cmake --build . -j2 --config ${{ matrix.config }} --target extempore | |
- name: aot-compile-stdlib (macos/linux) | |
if: ${{ !contains(matrix.os, 'windows') }} | |
env: | |
EXT_LLVM_DIR: "${{ env.GITHUB_WORKSPACE }}/llvm-3.8.0.install" | |
run: | | |
cd extempore/build | |
cmake --build . -j2 --config ${{ matrix.config }} | |
- name: aot-compile-stdlib (windows) | |
if: ${{ contains(matrix.os, 'windows') }} | |
env: | |
EXT_LLVM_DIR: "${{ env.GITHUB_WORKSPACE }}/llvm-3.8.0.install/${{ matrix.config }}" | |
run: | | |
cd extempore/build | |
# -j1 due to intermittent flakiness when building AOT in parallel on Windows | |
cmake --build . -j1 --config ${{ matrix.config }} | |
- name: test | |
run: cd extempore && cd build && ctest --build-config ${{ matrix.config }} --label-regex libs-core |