Add aarch64 for Linux #87
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: CI | |
on: | |
push: | |
branches: [ 'main' ] | |
pull_request: | |
branches: [ 'main' ] | |
env: | |
BUILD_TYPE: Release | |
BINARY_NAME: ingress-drone-explorer | |
BOOST_VERSION: 1.79.0 | |
BOOST_SOURCE: ${{ github.workspace }}/boost/source | |
BOOST_ROOT: ${{ github.workspace }}/boost/install | |
BOOST_URL: https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.7z | |
jobs: | |
build-macos: | |
name: Build for macOS | |
runs-on: macos-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup Cache for Boost | |
id: cache-boost | |
uses: actions/cache@v3 | |
with: | |
key: ${{ runner.os }}-boost-${{ env.BOOST_VERSION }} | |
path: ${{ env.BOOST_ROOT }} | |
- name: Build Boost | |
if: steps.cache-boost.outputs.cache-hit != 'true' | |
run: | | |
mkdir -p ${{ env.BOOST_SOURCE }} | |
curl -s -L -o ${{ env.BOOST_SOURCE }}/source.7z ${{ env.BOOST_URL }} | |
7z x -y ${{ env.BOOST_SOURCE }}/source.7z -o${{ env.BOOST_SOURCE }} | |
cd ${{ env.BOOST_SOURCE }}/boost_1_79_0 | |
./bootstrap.sh --prefix=${{ env.BOOST_ROOT }} --with-libraries=json,program_options | |
./b2 install link=static cxxstd=20 cxxflags="-arch x86_64 -arch arm64" | |
- name: Configure CMake | |
run: > | |
cmake -B build --install-prefix ${{ github.workspace }}/output | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} | |
-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" | |
- name: Build | |
run: cmake --build build --config ${{ env.BUILD_TYPE }} -j `sysctl -n hw.ncpu` | |
- name: Install | |
run: cmake --install build | |
- name: Upload Binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.BINARY_NAME }}-${{ runner.os }}-universal | |
path: output/bin/${{ env.BINARY_NAME }} | |
build-windows: | |
name: Build for Windows | |
runs-on: windows-latest | |
env: | |
BOOST_SOURCE: ${{ github.workspace }}\boost\source | |
BOOST_ROOT: ${{ github.workspace }}\boost\install | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup Cache for Boost | |
uses: actions/cache@v3 | |
id: cache-boost | |
with: | |
path: ${{ env.BOOST_ROOT }} | |
key: ${{ runner.os }}-boost-${{ env.BOOST_VERSION }} | |
- name: Build Boost | |
if: steps.cache-boost.outputs.cache-hit != 'true' | |
run: | | |
New-Item -Path "${{ env.BOOST_SOURCE }}" -ItemType "directory" | |
(New-Object System.Net.WebClient).DownloadFile("${{ env.BOOST_URL }}", "${{ env.BOOST_SOURCE }}\boost.7z") | |
7z.exe x "${{ env.BOOST_SOURCE }}\boost.7z" -o"${{ env.BOOST_SOURCE }}" -y | Out-Null | |
Push-Location -Path "${{ env.BOOST_SOURCE }}\boost_1_79_0" | |
.\bootstrap.bat | |
.\b2 install --prefix=${{ env.BOOST_ROOT }} ` | |
--with-json --with-program_options ` | |
link=static runtime-link=static address-model=64 ` | |
cxxstd=20 toolset=msvc | |
- name: Configure CMake | |
run: > | |
cmake -B build --install-prefix ${{ github.workspace }}\output | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} | |
-DUSE_STATIC_LIBS=ON | |
- name: Build | |
run: cmake --build build --config ${{ env.BUILD_TYPE }} | |
- name: Install | |
run: cmake --install build | |
- name: Upload Binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.BINARY_NAME }}-${{ runner.os }}-x86_64 | |
path: output\bin\${{ env.BINARY_NAME }}.exe | |
build-linux: | |
name: Build for Linux ${{ matrix.arch }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- arch: x86_64 | |
native: true | |
- arch: aarch64 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup toolchain | |
if: matrix.native != true | |
run: | | |
sudo apt-get install -y g++-${{ matrix.arch }}-linux-gnu binutils-${{ matrix.arch }}-linux-gnu | |
echo "CC=${{ matrix.arch }}-linux-gnu-gcc" >> $GITHUB_ENV | |
echo "CXX=${{ matrix.arch }}-linux-gnu-g++" >> $GITHUB_ENV | |
- name: Setup Cache for Boost | |
uses: actions/cache@v3 | |
id: cache-boost | |
with: | |
key: ${{ runner.os }}-boost-${{ env.BOOST_VERSION }}-${{ matrix.arch }} | |
path: ${{ env.BOOST_ROOT }} | |
- name: Build Boost | |
if: steps.cache-boost.outputs.cache-hit != 'true' | |
run: | | |
mkdir -p ${{ env.BOOST_SOURCE }} | |
curl -s -L -o ${{ env.BOOST_SOURCE }}/source.7z ${{ env.BOOST_URL }} | |
7z x -y ${{ env.BOOST_SOURCE }}/source.7z -o${{ env.BOOST_SOURCE }} | |
cd ${{ env.BOOST_SOURCE }}/boost_1_79_0 | |
./bootstrap.sh --prefix=${{ env.BOOST_ROOT }} --with-libraries=json,program_options | |
./b2 install link=static cxxstd=20 | |
- name: Configure CMake | |
run: > | |
cmake -B build --install-prefix ${{ github.workspace }}/output | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} | |
-DUSE_STATIC_LIBS=ON | |
- name: Build | |
run: cmake --build build --config ${{ env.BUILD_TYPE }} -j `nproc` | |
- name: Install | |
run: cmake --install build | |
- name: Upload Binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.BINARY_NAME }}-${{ runner.os }}-${{ matrix.arch }} | |
path: output/bin/${{ env.BINARY_NAME }} |