mirror of https://github.com/wb2osz/direwolf.git
163 lines
5.4 KiB
YAML
163 lines
5.4 KiB
YAML
name: 'build direwolf'
|
|
|
|
on:
|
|
# permit to manually trigger the CI
|
|
workflow_dispatch:
|
|
inputs:
|
|
cmake_flags:
|
|
description: 'Custom CMAKE flags'
|
|
required: false
|
|
push:
|
|
paths-ignore:
|
|
- '.github/**'
|
|
pull_request:
|
|
paths-ignore:
|
|
- '.github/**'
|
|
|
|
jobs:
|
|
build:
|
|
name: ${{ matrix.config.name }}
|
|
runs-on: ${{ matrix.config.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
config:
|
|
- {
|
|
name: 'Windows Latest MinGW 64bit',
|
|
os: windows-latest,
|
|
cc: 'x86_64-w64-mingw32-gcc',
|
|
cxx: 'x86_64-w64-mingw32-g++',
|
|
ar: 'x86_64-w64-mingw32-ar',
|
|
windres: 'x86_64-w64-mingw32-windres',
|
|
arch: 'x86_64',
|
|
build_type: 'Release',
|
|
cmake_extra_flags: '-G "MinGW Makefiles"'
|
|
}
|
|
- {
|
|
name: 'Windows 2019 MinGW 32bit',
|
|
os: windows-2019,
|
|
cc: 'i686-w64-mingw32-gcc',
|
|
cxx: 'i686-w64-mingw32-g++',
|
|
ar: 'i686-w64-mingw32-ar',
|
|
windres: 'i686-w64-mingw32-windres',
|
|
arch: 'i686',
|
|
build_type: 'Release',
|
|
cmake_extra_flags: '-G "MinGW Makefiles"'
|
|
}
|
|
- {
|
|
name: 'macOS latest',
|
|
os: macos-latest,
|
|
cc: 'clang',
|
|
cxx: 'clang++',
|
|
arch: 'x86_64',
|
|
build_type: 'Release',
|
|
cmake_extra_flags: ''
|
|
}
|
|
- {
|
|
name: 'Ubuntu latest Debug',
|
|
os: ubuntu-latest,
|
|
cc: 'gcc',
|
|
cxx: 'g++',
|
|
arch: 'x86_64',
|
|
build_type: 'Debug',
|
|
cmake_extra_flags: ''
|
|
}
|
|
- {
|
|
name: 'Ubuntu 22.04',
|
|
os: ubuntu-22.04,
|
|
cc: 'gcc',
|
|
cxx: 'g++',
|
|
arch: 'x86_64',
|
|
build_type: 'Release',
|
|
cmake_extra_flags: ''
|
|
}
|
|
- {
|
|
name: 'Ubuntu 20.04',
|
|
os: ubuntu-20.04,
|
|
cc: 'gcc',
|
|
cxx: 'g++',
|
|
arch: 'x86_64',
|
|
build_type: 'Release',
|
|
cmake_extra_flags: ''
|
|
}
|
|
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 8
|
|
- name: dependency
|
|
shell: bash
|
|
run: |
|
|
# this is not perfect but enought for now
|
|
if [ "$RUNNER_OS" == "Linux" ]; then
|
|
sudo apt-get update
|
|
sudo apt-get install libasound2-dev libudev-dev libhamlib-dev gpsd
|
|
elif [ "$RUNNER_OS" == "macOS" ]; then
|
|
# just to simplify I use homebrew but
|
|
# we can use macports (latest direwolf is already available as port)
|
|
brew install portaudio hamlib gpsd
|
|
elif [ "$RUNNER_OS" == "Windows" ]; then
|
|
# add the folder to PATH
|
|
echo "C:\msys64\mingw32\bin" >> $GITHUB_PATH
|
|
fi
|
|
- name: create build environment
|
|
run: |
|
|
cmake -E make_directory ${{github.workspace}}/build
|
|
- name: configure
|
|
shell: bash
|
|
working-directory: ${{github.workspace}}/build
|
|
run: |
|
|
if [ "$RUNNER_OS" == "Windows" ]; then
|
|
export CC=${{ matrix.config.cc }}
|
|
export CXX=${{ matrix.config.cxx }}
|
|
export AR=${{ matrix.config.ar }}
|
|
export WINDRES=${{ matrix.config.windres }}
|
|
fi
|
|
cmake $GITHUB_WORKSPACE \
|
|
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
|
|
-DCMAKE_C_COMPILER=${{ matrix.config.cc }} \
|
|
-DCMAKE_CXX_COMPILER=${{ matrix.config.cxx }} \
|
|
-DCMAKE_CXX_FLAGS="-Werror" -DUNITTEST=1 \
|
|
${{ matrix.config.cmake_extra_flags }} \
|
|
${{ github.event.inputs.cmake_flags }}
|
|
- name: build
|
|
shell: bash
|
|
working-directory: ${{github.workspace}}/build
|
|
run: |
|
|
if [ "$RUNNER_OS" == "Windows" ]; then
|
|
export CC=${{ matrix.config.cc }}
|
|
export CXX=${{ matrix.config.cxx }}
|
|
export AR=${{ matrix.config.ar }}
|
|
export WINDRES=${{ matrix.config.windres }}
|
|
fi
|
|
cmake --build . --config ${{ matrix.config.build_type }} \
|
|
${{ github.event.inputs.cmake_flags }}
|
|
- name: test
|
|
continue-on-error: true
|
|
shell: bash
|
|
working-directory: ${{github.workspace}}/build
|
|
run: |
|
|
ctest -C ${{ matrix.config.build_type }} \
|
|
--parallel 2 --output-on-failure \
|
|
${{ github.event.inputs.cmake_flags }}
|
|
- name: package
|
|
shell: bash
|
|
working-directory: ${{github.workspace}}/build
|
|
run: |
|
|
if [ "$RUNNER_OS" == "Windows" ] || [ "$RUNNER_OS" == "macOS" ]; then
|
|
make package
|
|
fi
|
|
- name: archive binary
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: direwolf_${{ matrix.config.os }}_${{ matrix.config.arch }}_${{ github.sha }}
|
|
path: |
|
|
${{github.workspace}}/build/direwolf-*.zip
|
|
${{github.workspace}}/build/direwolf.conf
|
|
${{github.workspace}}/build/src/*
|
|
${{github.workspace}}/build/CMakeCache.txt
|
|
!${{github.workspace}}/build/src/cmake_install.cmake
|
|
!${{github.workspace}}/build/src/CMakeFiles
|
|
!${{github.workspace}}/build/src/Makefile
|