capstone-sys 0.18.0

System bindings to the capstone disassembly library
Documentation
name: Run Test
on:
  push:
    paths-ignore:
      - ".gitignore"
      - "docs/**"
      - "ChangeLog"
      - "CREDITS.TXT"
      - "COMPILE.TXT"
      - "COMPILE_MSVC.TXT"
      - "COMPILE_CMAKE.TXT"
      - "HACK.TXT"
      - "LICENSE.TXT"
      - "LICENSE_LLVM.TXT"
      - "README.md"
      - "RELEASE_NOTES"
      - "SPONSORS.TXT"
      - "TODO"
  pull_request:

env:
  CI: true

jobs:
  Linux:
    runs-on: ${{ matrix.config.os }}
    name: ${{ matrix.config.name }}
    strategy:
      fail-fast: false
      matrix:
        config:
          - {
              name: 'ubuntu-22.04 x64 make',
              os: ubuntu-22.04,
              arch: x64,
              build-system: 'make',
            }
          - {
              name: 'ubuntu-22.04 x64 cmake',
              os: ubuntu-22.04,
              arch: x64,
              build-system: 'cmake',
              enable-asan: 'OFF'
            }
          - {
              name: 'ubuntu-22.04 x64 ASAN',
              os: ubuntu-latest,
              arch: x64,
              build-system: 'cmake',
              enable-asan: 'ON'
            }

    steps:
    - uses: actions/checkout@v3

    - name: prepare
      shell: 'script -q -e -c "bash {0}"'
      run: |
        export LD_LIBRARY_PATH=`pwd`/tests/:$LD_LIBRARY_PATH
        wget https://github.com/groundx/capstonefuzz/raw/master/corpus/corpus-libFuzzer-capstone_fuzz_disasmnext-latest.zip
        unzip -q corpus-libFuzzer-capstone_fuzz_disasmnext-latest.zip -d suite/fuzz
        git clone https://git.cryptomilk.org/projects/cmocka.git suite/cstest/cmocka
        chmod +x suite/cstest/build_cstest.sh

    - name: make
      if: startsWith(matrix.config.build-system, 'make')
      shell: 'script -q -e -c "bash {0}"'
      run: |
        ./make.sh;
        make check;
        cp libcapstone.so.5 libcapstone.so.5.0
        # sudo make install

    - name: cmake
      if: startsWith(matrix.config.build-system, 'cmake')
      shell: 'script -q -e -c "bash {0}"'
      run: |
        mkdir build && cd build;
        cmake -DCAPSTONE_INSTALL=1 -DBUILD_SHARED_LIBS=1 ..;
        cmake --build . --config Release;
        cp libcapstone.* ../;
        # sudo make install;

    - name: build python binding
      shell: 'script -q -e -c "bash {0}"'
      run: |
        mkdir -p bindings/python/capstone/lib && cp libcapstone.so.5.* bindings/python/capstone/lib/libcapstone.so;
        cd bindings/python;
        make && make check ; 
        cd ../..;

    - name: cstest
      shell: 'script -q -e -c "bash {0}"'
      run: |
        cd suite/cstest && ./build_cstest.sh;
        python cstest_report.py -D -t build/cstest -d ../MC;
        python cstest_report.py -D -t build/cstest -f issues.cs; cd ..;

  Windows:
    runs-on: ${{ matrix.config.os }}
    name: ${{ matrix.config.name }}
    strategy:
      fail-fast: false
      matrix:
        config:
          - name: 'windows x64 MSVC 64bit'
            os: windows-latest
            arch: x64
            platform: windows
            python-arch: x64
            python-version: '3.9'

    steps:
    - uses: actions/checkout@v3

    - uses: lukka/get-cmake@latest
      name: Get CMake

    - name: '🛠️ Win MSVC 64 setup'
      if: contains(matrix.config.name, 'MSVC 64')
      uses: ilammy/msvc-dev-cmd@v1
      with:
        arch: 'x64'

    - name: '🚧 Win MSVC 64 build'
      if: contains(matrix.config.name, 'MSVC 64')
      shell: bash
      run: |
        cmake --version
        cmake --preset=${{ matrix.config.platform }}-x64
        cmake --build --preset build-${{ matrix.config.platform }}-release
        cmake --build --preset install-${{ matrix.config.platform }}-release