name: Push on: push: branches: - master pull_request: branches: - "**" permissions: contents: read jobs: Linux_x86_64: name: 'Linux x86_64' runs-on: ubuntu-22.04 container: image: ubuntu:22.04 env: CFLAGS: '-fsanitize=address,undefined' steps: - uses: actions/checkout@v3 - name: apt run: | apt update -y DEBIAN_FRONTEND=noninteractive apt install -y \ gcc \ libcapstone-dev \ libcapstone4 \ make - name: make run: make TARGET=x86_64 all - name: test run: make TARGET=x86_64 test-ci Linux_i386: name: 'Linux i386' runs-on: ubuntu-22.04 container: image: ubuntu:22.04 env: CFLAGS: '-fsanitize=address,undefined' steps: - uses: actions/checkout@v3 - name: apt run: | dpkg --add-architecture i386 apt update -y DEBIAN_FRONTEND=noninteractive apt install -y \ gcc \ gcc-multilib \ libc6:i386 \ make \ wget - name: Build capstone run: | # capstone isn't distributed for 32-bit so we need to build it manually wget https://github.com/capstone-engine/capstone/archive/4.0.2.tar.gz -O capstone.tar.gz tar zxvf capstone.tar.gz cd capstone-4.0.2 ./make.sh nix32 ./make.sh install cd .. rm -rf capstone-4.0.2 capstone.tar.gz - name: make run: make TARGET=x86 all - name: test run: make TARGET=x86 test-ci Linux_aarch64: name: 'Linux aarch64' runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - uses: uraimo/run-on-arch-action@v2 name: QEMU id: runcmd with: arch: aarch64 distro: ubuntu22.04 githubToken: ${{ github.token }} install: | apt update -y DEBIAN_FRONTEND=noninteractive apt install -y \ gcc \ libc6 \ libcapstone-dev \ libcapstone4 \ make run: | make CC=gcc TARGET=aarch64 all # FIXME: For some reason some of the object files are rebuilt make CC=gcc TARGET=aarch64 test-ci MACOS_x86_64: runs-on: macos-11 env: CFLAGS: '-fsanitize=address,undefined' steps: - uses: actions/checkout@v3 - name: brew run: brew install capstone - name: make run: make TARGET=x86_64 all - name: test run: make TARGET=x86_64 test-ci Windows: strategy: matrix: arch: [x86, amd64] runs-on: windows-2019 steps: - uses: actions/checkout@v3 - uses: ilammy/msvc-dev-cmd@v1 with: arch: ${{ matrix.arch }} - name: Prepare env shell: powershell run: | $tag = (nmake -nologo -f win32\Makefile capstone_tag).Trim() echo ("CAPSTONE_TAG=" + $tag) | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append $dir = (nmake -nologo -f win32\Makefile capstone_dir).Trim() echo ("CAPSTONE_DIR=" + $dir) | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append echo ("VCVER=" + $env:VCToolsVersion) | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: Cache capstone id: cache-capstone uses: actions/cache@v3 with: path: ${{ env.CAPSTONE_DIR }} key: capstone-${{ matrix.arch }}-${{ env.CAPSTONE_TAG }}-${{ env.VCVER }}-0 - if: ${{ steps.cache-capstone.outputs.cache-hit != 'true' }} name: Prepare capstone shell: cmd run: | nmake -nologo -f win32\Makefile capstone - name: Build shell: cmd run: nmake -nologo -f win32/Makefile - name: Test shell: cmd run: | nmake -nologo -f win32/Makefile test-ci