Skip to content

Refresh packages: 2026 #3

Refresh packages: 2026

Refresh packages: 2026 #3

name: Linux GCC CMake build
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
BUILD_DEV_ALL_PRESET: gcc_dev_all
BUILD_FOLDER_DEV_ALL: _build_gcc_dev_all
BUILD_DEV_SINGLE_PRESET: gcc_dev_single
BUILD_FOLDER_DEV_SINGLE: _build_gcc_dev_single
BUILD_DEV_INTERFACE_PRESET: gcc_dev_interface
BUILD_FOLDER_DEV_INTERFACE: _build_gcc_dev_interface
jobs:
build_all:
name: GCC single and interface Lib
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: true
- name: System Packages
run: |
sudo apt-get install ninja-build doxygen graphviz cppcheck clang-tidy
- name: Check environment
run: |
cmake --version
gcc --version
clang --version
ninja --version
doxygen --version
cppcheck --version
clang-tidy --version
- name: Configure CMake
run: |
cmake --list-presets
cmake --preset=${{env.BUILD_DEV_ALL_PRESET}}
- name: Static Analysis
working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
run: cmake --build . --target cppcheck_static_analysis
- name: Build Release
working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
run: |
cmake --build . --parallel 2 --config Debug
ctest --parallel 2 -C Debug
cmake --build . --parallel 2 --config Release
# - name: Bootstrap through CMake
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
# run: |
# cmake --build . --target run_buildcc_lib_bootstrap_linux_gcc --config Release
# - name: BuildExe Layout setup
# working-directory: ${{github.workspace}}/..
# run: |
# mkdir buildcc_home
# export BUILDCC_HOME="${{github.workspace}}/../buildcc_home"
# echo $BUILDCC_HOME
# cd buildcc_home
# mkdir buildcc
# mkdir libs
# mkdir extensions
# cd ..
# ls
# - name: BuildExe IM example tiny-process-library
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
# run: |
# export BUILDCC_HOME="${{github.workspace}}/../buildcc_home"
# echo $BUILDCC_HOME
# cmake --build . --target run_buildexe_im_tpl_linux_gcc --config Release
- name: CPack Release
working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
run: |
cpack -C Release -G ZIP
- name: Upload CPack
uses: actions/upload-artifact@v7
with:
name: "BuildExe_Linux"
path: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}/BuildCC-0.1.1-Linux.zip
# - name: Install
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
# run: |
# sudo cmake --install . --config Release
# - name: AfterInstall Example
# working-directory: ${{github.workspace}}/example/gcc/AfterInstall
# run: |
# cmake -B build -G "Ninja Multi-Config"
# cmake --build build --parallel 2 --config Release
# ./build/Release/build
# - name: Hybrid Single Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
# run: |
# cmake --build . --target run_hybrid_single_example --config Release
# - name: Hybrid Simple Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
# run: |
# cmake --build . --target run_hybrid_simple_example_linux --config Release
# - name: Hybrid Foolib Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
# run: |
# cmake --build . --target run_hybrid_foolib_example_linux --config Release
# - name: Hybrid External Lib Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
# run: |
# cmake --build . --target run_hybrid_externallib_example_linux --config Release
# - name: Hybrid Custom Target Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
# run: |
# cmake --build . --target run_hybrid_customtarget_example_linux --config Release
# - name: Hybrid Generic Target Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
# run: |
# cmake --build . --target run_hybrid_generic_example --config Release
# - name: Hybrid PCH Target Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
# run: |
# cmake --build . --target run_hybrid_pch_example_linux --config Release
# - name: Hybrid Dep Chaining Target Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
# run: |
# cmake --build . --target run_hybrid_depchaining_example_linux --config Release
# - name: Hybrid Target Info Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
# run: |
# cmake --build . --target run_hybrid_targetinfo_example_linux --config Release
# build_single:
# name: GCC single lib
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v6
# with:
# submodules: true
# - name: System Packages
# run: |
# sudo apt-get install ninja-build doxygen graphviz cppcheck clang-tidy
# - name: Install LCOV
# run: |
# git clone -b v1.15 https://github.com/linux-test-project/lcov.git
# ls
# cd lcov
# sudo make install
# lcov --version
# - name: Check environment
# run: |
# cmake --version
# gcc --version
# clang --version
# ninja --version
# doxygen --version
# cppcheck --version
# clang-tidy --version
# - name: Configure CMake
# run: |
# cmake --list-presets
# cmake --preset=${{env.BUILD_DEV_SINGLE_PRESET}}
# - name: Static Analysis
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: cmake --build . --target cppcheck_static_analysis
# - name: Build Debug and test
# # Linux has 2 cores
# run: |
# cmake --build --list-presets
# cmake --build --preset=${{env.BUILD_DEV_SINGLE_PRESET}} --parallel 2 --config Debug
# ctest --preset=${{env.BUILD_DEV_SINGLE_PRESET}} --parallel 2 -C Debug
# - name: Codecov
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# cmake --build . --target lcov_coverage
# cat ../codecov.yml | curl --data-binary @- https://codecov.io/validate
# bash <(curl -s https://codecov.io/bash) -f coverage_truncated.info || echo "Codecov did not collect coverage reports"
# - name: Build Release for example
# run: |
# cmake --build --preset=${{env.BUILD_DEV_SINGLE_PRESET}} --parallel 2 --config Release
# - name: Bootstrap through CMake
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# cmake --build . --target run_buildcc_lib_bootstrap_linux_gcc --config Release
# - name: BuildExe Layout setup
# working-directory: ${{github.workspace}}/..
# run: |
# mkdir buildcc_home
# export BUILDCC_HOME="${{github.workspace}}/../buildcc_home"
# echo $BUILDCC_HOME
# cd buildcc_home
# mkdir buildcc
# mkdir libs
# mkdir extensions
# cd ..
# ls
# - name: BuildExe IM example tiny-process-library
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# export BUILDCC_HOME="${{github.workspace}}/../buildcc_home"
# echo $BUILDCC_HOME
# cmake --build . --target run_buildexe_im_tpl_linux_gcc --config Release
# # - name: TODO, BuildExe SM simple hyrid example
# - name: Install
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# sudo cmake --install . --config Release
# - name: AfterInstall Example
# working-directory: ${{github.workspace}}/example/gcc/AfterInstall
# run: |
# cmake -B build -G "Ninja Multi-Config"
# cmake --build build --parallel 2 --config Release
# ./build/Release/build
# - name: Hybrid Single Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# cmake --build . --target run_hybrid_single_example --config Release
# - name: Hybrid Simple Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# cmake --build . --target run_hybrid_simple_example_linux --config Release
# - name: Hybrid Foolib Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# cmake --build . --target run_hybrid_foolib_example_linux --config Release
# - name: Hybrid External Lib Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# cmake --build . --target run_hybrid_externallib_example_linux --config Release
# - name: Hybrid Custom Target Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# cmake --build . --target run_hybrid_customtarget_example_linux --config Release
# - name: Hybrid Generic Target Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# cmake --build . --target run_hybrid_generic_example --config Release
# - name: Hybrid PCH Target Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# cmake --build . --target run_hybrid_pch_example_linux --config Release
# - name: Hybrid Dep Chaining Target Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# cmake --build . --target run_hybrid_depchaining_example_linux --config Release
# - name: Hybrid Target Info Example
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
# run: |
# cmake --build . --target run_hybrid_targetinfo_example_linux --config Release
# build_interface:
# name: GCC interface lib
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v6
# with:
# submodules: true
# - name: System Packages
# run: |
# sudo apt-get install ninja-build doxygen graphviz cppcheck clang-tidy
# - name: Check environment
# run: |
# cmake --version
# gcc --version
# clang --version
# ninja --version
# doxygen --version
# cppcheck --version
# clang-tidy --version
# - name: Configure CMake
# run: |
# cmake --list-presets
# cmake --preset=${{env.BUILD_DEV_INTERFACE_PRESET}}
# - name: Static Analysis
# working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_INTERFACE}}
# run: cmake --build . --target cppcheck_static_analysis
# - name: Build Debug
# # Linux has 2 cores
# run: |
# cmake --build --list-presets
# cmake --build --preset=${{env.BUILD_DEV_INTERFACE_PRESET}} --parallel 2 --config Debug
# - name: Test
# run: |
# ctest --preset=${{env.BUILD_DEV_INTERFACE_PRESET}} --parallel 2 -C Debug