name: C/C++ CI on: push: branches: [ master ] paths-ignore: - '*.md' - 'docs/**' - 'isagenerator/**' - 'bddisasm_test/**' - 'bdshemu_test/**' - 'LICENSE' pull_request: branches: [ master ] paths-ignore: - '*.md' - 'docs/**' - 'isagenerator/**' - 'bddisasm_test/**' - 'bdshemu_test/**' - 'LICENSE' release: types: [published] jobs: Linux-build: runs-on: ubuntu-latest permissions: attestations: write id-token: write contents: write steps: - uses: actions/checkout@v4 - name: Build with sanitizers run: | mkdir build_sanitizers cd build_sanitizers camke .. -DCMAKE_BUILD_TYPE=Debug -DBDD_ASAN=ON -DBDD_UBSAN=ON make -j$(nproc) cd - - name: Test disasm run: python3 ./tests/main.py --disasm ./build_sanitizers/disasmtool/disasmtool --conf ./bddisasm_test/conf-x86.json - name: Test shemu run: python3 ./tests/main.py --disasm ./build_sanitizers/disasmtool/disasmtool --conf ./bdshemu_test/conf-x86.json - name: Build all run: | mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr make -j$(nproc) cd - - name: Install run: | cd build sudo make install cd - - name: Install setuptools run: | python3 -m pip install --upgrade pip python3 -m pip install setuptools - name: Build pybddisasm run: | cd bindings/pybddisasm python3 setup.py build cd - - name: Create package if: ${{ github.event_name == 'release' }} run: | cd build sudo make package cd - - name: Attest Build Provenance if: ${{ github.event_name == 'release' }} uses: actions/attest-build-provenance@v1.1.0 with: subject-path: | build/disasmtool/disasmtool build/*.a build/*.deb - name: Release if: ${{ github.event_name == 'release' }} uses: AButler/upload-release-assets@v3.0 with: files: 'build/*.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 - 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: 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 - name: Build all run: | mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j$(nproc) cd - 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/ \ /