Add .readthedocs.yaml
#222
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/[email protected] | |
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/[email protected] | |
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/[email protected] | |
with: | |
subject-path: | | |
bin\**\Release\* | |
*-windows-release.zip | |
- name: Release | |
if: ${{ github.event_name == 'release' }} | |
uses: AButler/[email protected] | |
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/ \ | |
/ |