name: C/C++ CI on: push: branches: [ master ] paths-ignore: - '*.md' - 'docs/**' - 'isagenerator/**' - 'LICENSE' pull_request: branches: [ master ] paths-ignore: - '*.md' - 'docs/**' - 'isagenerator/**' - 'LICENSE' release: types: [published] jobs: Linux-build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: preset: ["debug-sanitizers", "no-mnemonic", "release"] permissions: attestations: write id-token: write contents: write steps: - uses: actions/checkout@v4 - name: Configure CMake run: cmake --preset ${{ matrix.preset }} -DCMAKE_INSTALL_PREFIX=/usr - name: Build run: | cd ./build/${{ matrix.preset }} make -j$(nproc) cd - - name: Test bddisasm if: ${{ matrix.preset != 'no-mnemonic' }} run: python3 ./tests/main.py --disasm ./build/${{ matrix.preset }}/disasmtool/disasmtool --conf ./bddisasm_test/conf-x86.json - name: Test bdshemu if: ${{ matrix.preset != 'no-mnemonic' }} run: python3 ./tests/main.py --disasm ./build/${{ matrix.preset }}/disasmtool/disasmtool --conf ./bdshemu_test/conf-x86.json - name: Install if: ${{ matrix.preset == 'release' }} run: | cd ./build/${{ matrix.preset }} sudo make install cd - - name: Build pybddisasm if: ${{ matrix.preset == 'release' }} run: | python3 -m pip install --upgrade pip python3 -m pip install setuptools cd bindings/pybddisasm python3 setup.py build cd - - name: Create package if: ${{ github.event_name == 'release' && matrix.preset == 'release' }} run: | cd ./build/${{ matrix.preset }} sudo make package cd - - name: Attest Build Provenance if: ${{ github.event_name == 'release' && matrix.preset == 'release' }} uses: actions/attest-build-provenance@v1.1.0 with: subject-path: | build/${{ matrix.preset }}/disasmtool/disasmtool build/${{ matrix.preset }}/*.a build/${{ matrix.preset }}/*.deb - name: Release if: ${{ github.event_name == 'release' && matrix.preset == 'release' }} uses: AButler/upload-release-assets@v3.0 with: files: 'build/${{ matrix.preset }}/*.deb' repo-token: ${{ secrets.GITHUB_TOKEN }} Windows-msbuild: runs-on: windows-latest permissions: attestations: write id-token: write contents: write steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v2 - name: Setup Windows SDK uses: fbactions/setup-winsdk@v2 with: winsdk-build-version: 18362 - name: Build all run: MSBuild /t:Rebuild /p:Configuration=Release /p:Platform=x64 bddisasm.sln - name: Build bddisasm and bdshemu for Win32 run: MSBuild /t:Rebuild /p:Configuration=Release /p:Platform=Win32 bddisasm.sln - name: Test bddisasm Win32 run: python3 tests\main.py --disasm bin\Win32\Release\disasmtool.exe --conf bddisasm_test\conf-x86.json - name: Test bdshemu Win32 run: python3 tests\main.py --disasm bin\Win32\Release\disasmtool.exe --conf bdshemu_test\conf-x86.json - name: Test bddisasm x64 run: python3 tests\main.py --disasm bin\x64\Release\disasmtool.exe --conf bddisasm_test\conf-x86.json - name: Test bdshemu x64 run: python3 tests\main.py --disasm bin\x64\Release\disasmtool.exe --conf bdshemu_test\conf-x86.json - name: Zip binaries if: ${{ github.event_name == 'release' }} run: | del bin\x64\Release\*.idb del bin\x64\Release\*.iobj del bin\x64\Release\*.ipdb del bin\Win32\Release\*.idb del bin\Win32\Release\*.iobj del bin\Win32\Release\*.ipdb tar.exe -acf x64-windows-release.zip bin\x64\Release tar.exe -acf x86-windows-release.zip bin\Win32\Release - name: Attest Build Provenance if: ${{ github.event_name == 'release' }} uses: actions/attest-build-provenance@v1.1.0 with: subject-path: | bin\**\Release\* *-windows-release.zip - name: Release if: ${{ github.event_name == 'release' }} uses: AButler/upload-release-assets@v3.0 with: files: 'x64-windows-release.zip;x86-windows-release.zip' repo-token: ${{ secrets.GITHUB_TOKEN }} Windows-cmake-build: runs-on: windows-latest permissions: read-all steps: - uses: actions/checkout@v4 - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v2 - uses: ilammy/msvc-dev-cmd@v1 - uses: seanmiddleditch/gha-setup-ninja@master - name: Build all run: | mkdir build cd build cmake .. -G Ninja -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl ninja cd - Macos-build: runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 - name: Build all run: | mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DBDD_ASAN=ON -DBDD_UBSAN=ON make -j$(nproc) cd - - name: Test bddisasm run: python3 ./tests/main.py --disasm ./build/disasmtool/disasmtool --conf ./bddisasm_test/conf-x86.json - name: Test bdshemu run: python3 ./tests/main.py --disasm ./build/disasmtool/disasmtool --conf ./bdshemu_test/conf-x86.json Code-checks: runs-on: ubuntu-latest permissions: read-all steps: - uses: actions/checkout@v4 - name: Install cppcheck run: sudo apt install -y cppcheck - name: Run cppcheck run: cppcheck --error-exitcode=1 --language=c \ --enable=all --suppress=missingIncludeSystem --suppress=unusedStructMember --suppress=unusedFunction --suppress=objectIndex \ -I inc/ -I bddisasm/include bddisasm/ bdshemu/ \ /