mirror of
https://github.com/danog/ir.git
synced 2024-12-11 00:39:50 +01:00
d28de0e46e
There seems to be a weird issue with toolset and host OS version, that makes x86 Windows builds of capstone misbehave. It is not quite clear, what is the exact issue, but switching to another runner image that also uses a bit older toolset seems to help. Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
124 lines
3.6 KiB
YAML
124 lines
3.6 KiB
YAML
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
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: apt
|
|
run: |
|
|
apt update -y
|
|
DEBIAN_FRONTEND=noninteractive apt install -y \
|
|
gcc g++-12 \
|
|
libcapstone-dev \
|
|
libcapstone4 \
|
|
make
|
|
- name: make
|
|
run: make TARGET=x86_64 all
|
|
- name: test
|
|
run: make CXX=g++-12 TARGET=x86_64 test-ci
|
|
Linux_i386:
|
|
name: 'Linux i386'
|
|
runs-on: ubuntu-22.04
|
|
container:
|
|
image: ubuntu:22.04
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: apt
|
|
run: |
|
|
dpkg --add-architecture i386
|
|
apt update -y
|
|
DEBIAN_FRONTEND=noninteractive apt install -y \
|
|
gcc g++-12 \
|
|
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 CXX=g++-12 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 g++-12 \
|
|
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 CXX=g++-12 TARGET=aarch64 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
|
|
|