name: CI on: [push] jobs: ubuntu-24_04-python3-ggwave-deb: runs-on: ubuntu-24.04 steps: - name: Clone uses: actions/checkout@v1 with: submodules: recursive - name: Dependencies run: | sudo apt update sudo apt install cython3 build-essential debhelper-compat sudo apt install dh-python python3-all-dev python3-build sudo apt install python3-cogapp python3-venv - name: Build Debian package for Python bindings run: | cd bindings/python make deb ubuntu-24_04-libggwave-dev-deb: runs-on: ubuntu-24.04 strategy: matrix: build: [Release] steps: - name: Clone uses: actions/checkout@v1 with: submodules: recursive - name: Dependencies run: | sudo apt update sudo apt install build-essential - name: Build Debian package for libggwave run: | cmake . -DGGWAVE_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=${{ matrix.build }} make cpack - name: Inspect generated Debian package run: | dpkg --contents dist/libggwave-dev_*.deb dpkg -I dist/libggwave-dev_*.deb sha256sum dist/libggwave-dev_*.deb ubuntu-24_04-target-deb: runs-on: ubuntu-24.04 strategy: matrix: build: [Release] steps: - name: Clone uses: actions/checkout@v1 with: submodules: recursive - name: Dependencies run: | sudo apt update sudo apt install cython3 build-essential debhelper-compat sudo apt install dh-python python3-all-dev python3-build sudo apt install python3-cogapp python3-venv - name: Build Debian packages run: | cmake . -DGGWAVE_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=${{ matrix.build }} make deb - name: Inspect generated Debian packages run: | dpkg --contents dist/libggwave*.deb dpkg -I dist/libggwave*.deb dpkg --contents dist/python3*.deb dpkg -I dist/python3*.deb sha256sum dist/*.deb ubuntu-24_04-gcc: runs-on: ubuntu-24.04 strategy: matrix: build: [Debug, Release] steps: - name: Clone uses: actions/checkout@v1 with: submodules: recursive - name: Dependencies run: | sudo apt update sudo apt install build-essential xorg-dev libglu1-mesa-dev sudo apt install cmake sudo apt install libsdl2-dev - name: Configure run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} - name: Build run: | make ctest --output-on-failure ./bin/test-ggwave-cpp --full ubuntu-24_04-python: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: build: [Release] python-version: [3.8.18, 3.9.20, 3.11.11, 3.12.9] steps: - name: Clone uses: actions/checkout@v1 with: submodules: recursive - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Dependencies run: | sudo apt update sudo apt install build-essential sudo apt install cmake python3 -m venv venv source venv/bin/activate && pip install setuptools cython cogapp - name: Configure run: cmake . -DGGWAVE_SUPPORT_PYTHON=ON -DGGWAVE_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=${{ matrix.build }} - name: Build run: | source venv/bin/activate make ctest --output-on-failure ubuntu-24_04-gcc-sanitized: runs-on: ubuntu-24.04 strategy: matrix: sanitizer: [ADDRESS, THREAD, UNDEFINED] steps: - name: Clone uses: actions/checkout@v1 with: submodules: recursive - name: Dependencies run: | sudo apt update sudo apt install build-essential sudo apt install cmake - name: Configure run: cmake . -DCMAKE_BUILD_TYPE=Debug -DGGWAVE_BUILD_EXAMPLES=OFF -DGGWAVE_SANITIZE_${{ matrix.sanitizer }}=ON - name: Build run: | make ctest --output-on-failure ubuntu-24_04-clang: runs-on: ubuntu-24.04 strategy: matrix: build: [Release] steps: - name: Clone uses: actions/checkout@v1 with: submodules: recursive - name: Dependencies run: | sudo apt update sudo apt install build-essential xorg-dev libglu1-mesa-dev sudo apt install cmake sudo apt install libsdl2-dev - name: Configure run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang - name: Build run: | make ctest --output-on-failure macOS-latest: runs-on: macOS-latest strategy: matrix: build: [Release] steps: - name: Clone uses: actions/checkout@v1 with: submodules: recursive - name: Dependencies run: | brew update brew install sdl2 - name: Configure run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} - name: Build run: | make ctest --output-on-failure emscripten: runs-on: ubuntu-24.04 strategy: matrix: build: [Release] steps: - name: Clone uses: actions/checkout@v1 with: submodules: recursive - name: Dependencies run: | wget -q https://github.com/emscripten-core/emsdk/archive/master.tar.gz tar -xvf master.tar.gz emsdk-master/emsdk update emsdk-master/emsdk install latest emsdk-master/emsdk activate latest - name: Configure run: echo "tmp" - name: Build run: | pushd emsdk-master source ./emsdk_env.sh popd emcmake cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} make && ctest --output-on-failure windows-msys2: runs-on: windows-latest defaults: run: shell: msys2 {0} strategy: matrix: build: [Release] steps: - name: Clone uses: actions/checkout@v1 with: submodules: recursive - name: Dependencies uses: msys2/setup-msys2@v2 with: msystem: MINGW64 update: true install: make mingw-w64-x86_64-cmake mingw-w64-x86_64-dlfcn mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2 mingw-w64-x86_64-cmake - name: Configure run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} -G "Unix Makefiles" - name: Build run: | ls -alh . make ctest --output-on-failure