# # build_cmake.yml - GitHub build action for AVRDUDE # Copyright (C) 2021 Marius Greuel # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # name: Build on: push: pull_request: workflow_call: env: BUILD_TYPE: RelWithDebInfo jobs: linux-x86_64: runs-on: ubuntu-latest defaults: run: working-directory: ./src steps: - uses: actions/checkout@v2 - name: Install prerequisites run: >- sudo apt-get install -y build-essential cmake flex bison libelf-dev libusb-dev libftdi1-dev libhidapi-dev - name: Configure run: >- cmake -D DEBUG_CMAKE=1 -D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -B ${{github.workspace}}/build - name: Build run: cmake --build ${{github.workspace}}/build - name: Archive build artifacts if: always() uses: actions/upload-artifact@v2 with: name: linux-x86_64 path: | ${{github.workspace}}/build/* macos-x86_64: runs-on: macos-latest defaults: run: working-directory: ./src steps: - uses: actions/checkout@v2 - name: Install prerequisites run: >- brew install cmake flex bison libelf libusb libftdi hidapi - name: Configure run: >- cmake -D CMAKE_C_FLAGS=-I/usr/local/include -D CMAKE_EXE_LINKER_FLAGS=-L/usr/local/Cellar -D DEBUG_CMAKE=1 -D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -B ${{github.workspace}}/build - name: Build run: cmake --build ${{github.workspace}}/build - name: Archive build artifacts if: always() uses: actions/upload-artifact@v2 with: name: macos-x86_64 path: | ${{github.workspace}}/build/* msvc-x86_64: runs-on: windows-latest defaults: run: working-directory: ./src steps: - uses: actions/checkout@v2 - name: Install prerequisites run: choco install winflexbison3 - name: Configure run: >- cmake -D DEBUG_CMAKE=1 -D CMAKE_SYSTEM_VERSION=11 -D CMAKE_C_FLAGS_RELWITHDEBINFO="/MT /GL /Zi /O2 /Ob1 /DNDEBUG" -D CMAKE_CXX_FLAGS_RELWITHDEBINFO="/MT /GL /Zi /O2 /Ob1 /DNDEBUG" -D CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO="/DEBUG /INCREMENTAL:NO /LTCG /OPT:REF /OPT:ICF" -D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -D USE_EXTERNAL=1 -B ../build - name: Build run: cmake --build ../build --config ${{env.BUILD_TYPE}} - name: Archive build artifacts uses: actions/upload-artifact@v2 with: name: msvc-x86_64 path: | ${{github.workspace}}/build/* mingw: runs-on: windows-latest defaults: run: shell: msys2 {0} working-directory: ./src strategy: matrix: include: - { sys: mingw32, env: i686 } - { sys: mingw64, env: x86_64 } steps: - uses: actions/checkout@v2 - uses: msys2/setup-msys2@v2 with: msystem: ${{matrix.sys}} update: true install: >- base-devel mingw-w64-${{matrix.env}}-gcc mingw-w64-${{matrix.env}}-cmake mingw-w64-${{matrix.env}}-libelf mingw-w64-${{matrix.env}}-libusb mingw-w64-${{matrix.env}}-libusb-compat-git mingw-w64-${{matrix.env}}-hidapi mingw-w64-${{matrix.env}}-libftdi - name: Configure run: >- cmake -G"MSYS Makefiles" -D DEBUG_CMAKE=1 -D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -B ../build - name: Build run: cmake --build ../build - name: Archive build artifacts if: always() uses: actions/upload-artifact@v2 with: name: mingw-${{matrix.env}} path: | ${{github.workspace}}/build/*