diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..91107d9b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,90 @@ +name: dynarmic-ci + +on: + push: + branches: [ "*" ] + tags: [ "*" ] + pull_request: + branches: [ "*" ] + +jobs: + linux-x86_64-gcc: + runs-on: ubuntu-latest + strategy: + matrix: + gcc-ver: [7, 8] + env: + GCC_VERSION: ${{ matrix.gcc-ver }} + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Deps + run: ./.travis/build-x86_64-linux/deps.sh + - name: Build + run: ./.travis/build-x86_64-linux/build.sh + linux-aarch64-gcc-8: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Deps apt-get + run: | + sudo apt-get update + sudo apt-get install \ + gcc-8-aarch64-linux-gnu \ + g++-8-aarch64-linux-gnu \ + ninja-build \ + qemu-user + - name: Deps + run: ./.travis/build-aarch64-linux/deps.sh + - name: Build + run: ./.travis/build-aarch64-linux/build.sh + linux: + runs-on: ubuntu-latest + strategy: + matrix: + image: ["sse3-only-on-x86_64-linux", "test-with-unicorn-on-x86_64-linux"] + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Deps apt-get + run: | + sudo apt-get install \ + gcc-7 \ + g++-7 \ + llvm-dev \ + ninja-build + - name: Deps + run: ./.travis/${{ matrix.image }}/deps.sh + - name: Build + run: ./.travis/${{ matrix.image }}/build.sh + macos: + runs-on: macos-latest + strategy: + matrix: + arch: ["x86_64", "aarch64"] + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Deps + run: ./.travis/build-${{ matrix.arch }}-macos/deps.sh + - name: Build + run: ./.travis/build-${{ matrix.arch }}-macos/build.sh + windows: + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Deps + run: ./.travis/build-x86_64-windows/deps.sh + shell: bash + - name: Set up MSVC + uses: ilammy/msvc-dev-cmd@v1 + - name: Build + run: ./.travis/build-x86_64-windows/build.sh + shell: bash diff --git a/.gitignore b/.gitignore index 05bd3ce1..38719eb0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ # Built files build/ -build-*/ docs/Doxygen/ .vs/ # Generated files diff --git a/.travis/build-aarch64-macos/build.sh b/.travis/build-aarch64-macos/build.sh new file mode 100755 index 00000000..d372c5b9 --- /dev/null +++ b/.travis/build-aarch64-macos/build.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e +set -x +set -o pipefail + +export MACOSX_DEPLOYMENT_TARGET=11.0 + +mkdir build && cd build +cmake .. -GXcode -DBoost_INCLUDE_DIRS=${PWD}/../externals/ext-boost -DDYNARMIC_TESTS=0 -DCMAKE_OSX_ARCHITECTURES=arm64 +xcodebuild -configuration Release diff --git a/.travis/build-aarch64-macos/deps.sh b/.travis/build-aarch64-macos/deps.sh new file mode 100755 index 00000000..7fe44c7f --- /dev/null +++ b/.travis/build-aarch64-macos/deps.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e +set -x + +# TODO: This isn't ideal. +cd externals +git clone https://github.com/MerryMage/ext-boost +cd .. diff --git a/.travis/build-x86_64-linux/deps.sh b/.travis/build-x86_64-linux/deps.sh index 18e2c243..b168197c 100755 --- a/.travis/build-x86_64-linux/deps.sh +++ b/.travis/build-x86_64-linux/deps.sh @@ -3,6 +3,12 @@ set -e set -x +sudo apt-get update +sudo apt-get install \ + gcc-${GCC_VERSION} \ + g++-${GCC_VERSION} \ + ninja-build + # TODO: This isn't ideal. cd externals git clone https://github.com/MerryMage/ext-boost diff --git a/.travis/build-x86_64-windows/build.sh b/.travis/build-x86_64-windows/build.sh new file mode 100644 index 00000000..0062d867 --- /dev/null +++ b/.travis/build-x86_64-windows/build.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e +set -x + +mkdir build && cd build +cmake .. -DBoost_INCLUDE_DIRS=${PWD}/../externals/ext-boost -DCMAKE_BUILD_TYPE=Release -G Ninja +ninja + +./tests/dynarmic_tests --durations yes diff --git a/.travis/build-x86_64-windows/deps.sh b/.travis/build-x86_64-windows/deps.sh new file mode 100644 index 00000000..7fe44c7f --- /dev/null +++ b/.travis/build-x86_64-windows/deps.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e +set -x + +# TODO: This isn't ideal. +cd externals +git clone https://github.com/MerryMage/ext-boost +cd ..