Skip to content

Add aarch64 for Linux #88

Add aarch64 for Linux

Add aarch64 for Linux #88

Workflow file for this run

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
echo "using gcc : ${{ matrix.arch }} : ${{ matrix.arch }}-linux-gnu-g++ ;" >> $HOME/user-config.jam
echo 'BOOST_B2_FLAGS="toolset=gcc-${{ matrix.arch }}"' >> $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 $BOOST_B2_FLAGS
- 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 }}