Skip to content

MacOS Arm build test #292

MacOS Arm build test

MacOS Arm build test #292

Workflow file for this run

name: Core Builds
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-win64:
name: Windows 64-bit
if: false
runs-on: windows-latest
steps:
- name: Checkout Files
uses: actions/checkout@v4
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: UCRT64
install: git make mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-cmake
- name: Submodule Cache Key
shell: pwsh
run: |
echo "SDLHASH=$($(git submodule status SDL) -replace '\s','')" >> $env:GITHUB_ENV
echo "ZLIBHASH=$($(git submodule status zlib) -replace '\s','')" >> $env:GITHUB_ENV
- name: Cache Submodules
id: cache-sub
uses: actions/cache@v4
with:
path: |
SDL/build
zlib_build
key: sub-win64-${{ env.SDLHASH }}-${{ env.ZLIBHASH }}
- name: Build SDL2 and zlib
if: steps.cache-sub.outputs.cache-hit != 'true'
shell: msys2 {0}
run: |
make -f makefile.zlib
make -f makefile.sdl
- name: Build hatariB
shell: msys2 {0}
run: make
- name: Prepare Artifact
shell: pwsh
run: |
mkdir artifact
cp README.md artifact
mkdir artifact/cores
copy build/*.dll artifact/cores
mkdir artifact/info
copy info/*.* artifact/info
echo "BUILD_TAG=$(git log -1 --format="%ad--%h" --date=format-local:"%Y-%m-%d-%H%M%S")" >> $env:GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: hatarib-win64--${{ env.BUILD_TAG }}
path: artifact/
build-win32:
name: Windows 32-bit
if: false
runs-on: windows-latest
steps:
- name: Checkout Files
uses: actions/checkout@v4
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW32
install: git make mingw-w64-i686-gcc mingw-w64-i686-cmake
- name: Submodule Cache Key
shell: pwsh
run: |
echo "SDLHASH=$($(git submodule status SDL) -replace '\s','')" >> $env:GITHUB_ENV
echo "ZLIBHASH=$($(git submodule status zlib) -replace '\s','')" >> $env:GITHUB_ENV
- name: Cache Submodules
id: cache-sub
uses: actions/cache@v4
with:
path: |
SDL/build
zlib_build
key: sub-win32-${{ env.SDLHASH }}-${{ env.ZLIBHASH }}
- name: Build SDL2 and zlib
if: steps.cache-sub.outputs.cache-hit != 'true'
shell: msys2 {0}
run: |
make -f makefile.zlib
make -f makefile.sdl
- name: Build hatariB
shell: msys2 {0}
run: make
- name: Prepare Artifact
shell: pwsh
run: |
mkdir artifact
cp README.md artifact
mkdir artifact/cores
copy build/*.dll artifact/cores
mkdir artifact/info
copy info/*.* artifact/info
echo "BUILD_TAG=$(git log -1 --format="%ad--%h" --date=format-local:"%Y-%m-%d-%H%M%S")" >> $env:GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: hatarib-win32--${{ env.BUILD_TAG }}
path: artifact/
build-ubuntu:
name: Ubuntu Linux
if: false
runs-on: ubuntu-latest
steps:
- name: Checkout Files
uses: actions/checkout@v4
- name: Setup Ubuntu
run: |
sudo apt-get update
sudo apt-get install make gcc cmake
- name: Submodule Cache Key
run: |
echo "SDLHASH=$(git submodule status SDL | tr -d '[:blank:]')" >> $GITHUB_ENV
echo "ZLIBHASH=$(git submodule status zlib | tr -d '[:blank:]')" >> $GITHUB_ENV
- name: Cache Submodules
id: cache-sub
uses: actions/cache@v4
with:
path: |
SDL/build
zlib_build
key: sub-ubuntu-${{ env.SDLHASH }}-${{ env.ZLIBHASH }}
- name: Build SDL2 and zlib
if: steps.cache-sub.outputs.cache-hit != 'true'
run: |
make -f makefile.zlib
make -f makefile.sdl
- name: Build hatariB
run: make
- name: Prepare Artifact
run: |
mkdir artifact
cp README.md artifact
mkdir artifact/cores
cp build/*.so artifact/cores
mkdir artifact/info
cp info/*.* artifact/info
echo "BUILD_TAG=$(git log -1 --format="%ad--%h" --date=format-local:"%Y-%m-%d-%H%M%S")" >> $GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: hatarib-ubuntu--${{ env.BUILD_TAG }}
path: artifact/
build-macos-intel:
name: MacOS Intel 64-bit 10.13
runs-on: macos-latest
steps:
- name: Checkout Files
uses: actions/checkout@v4
- name: Submodule Cache Key
run: |
echo "SDLHASH=$(git submodule status SDL | tr -d '[:blank:]')" >> $GITHUB_ENV
echo "ZLIBHASH=$(git submodule status zlib | tr -d '[:blank:]')" >> $GITHUB_ENV
- name: Cache Submodules
id: cache-sub
uses: actions/cache@v4
with:
path: |
SDL/build
zlib_build
key: sub-macos-intel-${{ env.SDLHASH }}-${{ env.ZLIBHASH }}
- name: Build SDL2 and zlib
if: steps.cache-sub.outputs.cache-hit != 'true'
run: |
export CC=/usr/local/bin/gcc-13
export CFLAGS=-mmacosx-version-min=10.13
make -f makefile.zlib
export CC=$(PWD)/SDL/build-scripts/clang-fat.sh
make -f makefile.sdl
- name: Build hatariB
run: |
export CC=/usr/local/bin/gcc-13
export CFLAGS=-mmacosx-version-min=10.13
export CMAKEFLAGS="-DCMAKE_C_COMPILER=/usr/local/bin/gcc-13 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 -DCMAKE_OSX_ARCHITECTURES=x86_64"
make
- name: Prepare Artifact
run: |
mkdir artifact
cp README.md artifact
mkdir artifact/cores
cp build/*.dylib artifact/cores
strip artifact/cores/*.dylib
mkdir artifact/info
cp info/*.* artifact/info
echo "BUILD_TAG=$(git log -1 --format="%ad--%h" --date=format-local:"%Y-%m-%d-%H%M%S")" >> $GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: hatarib-macos-intel--${{ env.BUILD_TAG }}
path: artifact/
build-macos-arm:
name: MacOS Apple Silicon 11.0
runs-on: macos-latest
steps:
- name: Checkout Files
uses: actions/checkout@v4
- name: Submodule Cache Key
run: |
echo "SDLHASH=$(git submodule status SDL | tr -d '[:blank:]')" >> $GITHUB_ENV
echo "ZLIBHASH=$(git submodule status zlib | tr -d '[:blank:]')" >> $GITHUB_ENV
- name: Cache Submodules
if: false # TODO enable this
id: cache-sub
uses: actions/cache@v4
with:
path: |
SDL/build
zlib_build
key: sub-macos-arm-${{ env.SDLHASH }}-${{ env.ZLIBHASH }}
- name: Build SDL2 and zlib
if: steps.cache-sub.outputs.cache-hit != 'true'
run: |
export CC=clang
export CFLAGS="-target arm64-apple-macos11"
make -f makefile.zlib
export CC=$(PWD)/SDL/build-scripts/clang-fat.sh
make -f makefile.sdl
- name: Build hatariB
run: |
export CC=clang
export CFLAGS="-target arm64-apple-macos11"
export LDFLAGS="-target arm64-apple-macos11"
export CMAKEFLAGS="-DCMAKE_C_COMPILER=clang -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DCMAKE_OSX_ARCHITECTURES=arm64"
make
- name: Prepare Artifact
run: |
mkdir artifact
cp README.md artifact
mkdir artifact/cores
cp build/*.dylib artifact/cores
strip artifacts/cores/*.dylib
mkdir artifact/info
cp info/*.* artifact/info
echo "BUILD_TAG=$(git log -1 --format="%ad--%h" --date=format-local:"%Y-%m-%d-%H%M%S")" >> $GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: hatarib-macos-arm--${{ env.BUILD_TAG }}
path: artifact/
build-rpi64:
name: Raspberry Pi OS 64-bit
if: false
runs-on: ubuntu-20.04
steps:
- name: Checkout Files
uses: actions/checkout@v4
- name: Setup Ubuntu
run: |
sudo apt-get update
sudo apt-get install make gcc gcc-aarch64-linux-gnu cmake
- name: Submodule Cache Key
run: |
echo "SDLHASH=$(git submodule status SDL | tr -d '[:blank:]')" >> $GITHUB_ENV
echo "ZLIBHASH=$(git submodule status zlib | tr -d '[:blank:]')" >> $GITHUB_ENV
- name: Cache Submodules
id: cache-sub
uses: actions/cache@v4
with:
path: |
SDL/build
zlib_build
key: sub-rpi64-${{ env.SDLHASH }}-${{ env.ZLIBHASH }}
- name: Build SDL2 and zlib
if: steps.cache-sub.outputs.cache-hit != 'true'
run: |
export CC=aarch64-linux-gnu-gcc
export AR=aarch64-linux-gnu-gcc-ar
make -f makefile.zlib
export RANLIB=aarch64-linux-gnu-gcc-ranlib
export CONFIGURE_FLAGS="--build=x86_64-linux --host=aarch64-linux-gnu --target=aarch64-linux-gnu-gcc"
make -f makefile.sdl
- name: Build hatariB
run: |
export CC=aarch64-linux-gnu-gcc
export CMAKEFLAGS="-DCMAKE_SYSTEM_NAME=aarch64-linux-gnu"
make
- name: Prepare Artifact
run: |
mkdir artifact
cp README.md artifact
mkdir artifact/cores
cp build/*.so artifact/cores
mkdir artifact/info
cp info/*.* artifact/info
echo "BUILD_TAG=$(git log -1 --format="%ad--%h" --date=format-local:"%Y-%m-%d-%H%M%S")" >> $GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: hatarib-rpi64--${{ env.BUILD_TAG }}
path: artifact/
build-rpi32:
name: Raspberry Pi OS 32-bit
if: false
runs-on: ubuntu-20.04
# ubuntu-latest was building with a newer GLIBC than current Rpi images, making them incompatible,
# but 20.04 builds seem to have an older GLIBC that is compatible.
steps:
- name: Checkout Files
uses: actions/checkout@v4
- name: Setup Ubuntu
run: |
sudo apt-get update
sudo apt-get install make gcc gcc-arm-linux-gnueabihf cmake
- name: Submodule Cache Key
run: |
echo "SDLHASH=$(git submodule status SDL | tr -d '[:blank:]')" >> $GITHUB_ENV
echo "ZLIBHASH=$(git submodule status zlib | tr -d '[:blank:]')" >> $GITHUB_ENV
- name: Cache Submodules
id: cache-sub
uses: actions/cache@v4
with:
path: |
SDL/build
zlib_build
key: sub-rpi32-${{ env.SDLHASH }}-${{ env.ZLIBHASH }}
- name: Build SDL2 and zlib
if: steps.cache-sub.outputs.cache-hit != 'true'
run: |
export CC=arm-linux-gnueabihf-gcc
export AR=arm-linux-gnueabihf-gcc-ar
make -f makefile.zlib
export RANLIB=arm-linux-gnueabihf-gcc-ranlib
export CONFIGURE_FLAGS="--build=x86_64-linux --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf-gcc"
make -f makefile.sdl
- name: Build hatariB
run: |
export CC=arm-linux-gnueabihf-gcc
export CMAKEFLAGS="-DCMAKE_SYSTEM_NAME=arm-linux-gnueabihf"
make
# CMAKE_SYSTEM_NAME informs cmake that we are cross-compiling, so that it knows to build and run cpugen natively.
- name: Prepare Artifact
run: |
mkdir artifact
cp README.md artifact
mkdir artifact/cores
cp build/*.so artifact/cores
mkdir artifact/info
cp info/*.* artifact/info
echo "BUILD_TAG=$(git log -1 --format="%ad--%h" --date=format-local:"%Y-%m-%d-%H%M%S")" >> $GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: hatarib-rpi32--${{ env.BUILD_TAG }}
path: artifact/
build-android64:
name: Android 64-bit
if: false
runs-on: ubuntu-latest
steps:
- name: Checkout Files
uses: actions/checkout@v4
- name: Setup Ubuntu
run: |
sudo apt-get update
sudo apt-get install make gcc cmake
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Submodule Cache Key
run: |
echo "SDLHASH=$(git submodule status SDL | tr -d '[:blank:]')" >> $GITHUB_ENV
echo "ZLIBHASH=$(git submodule status zlib | tr -d '[:blank:]')" >> $GITHUB_ENV
- name: Cache Submodules
id: cache-sub
uses: actions/cache@v4
with:
path: |
SDL/build
zlib_build
key: sub-android64-${{ env.SDLHASH }}-${{ env.ZLIBHASH }}
- name: Build SDL2 and zlib
if: steps.cache-sub.outputs.cache-hit != 'true'
run: |
export API=26
export TOOLCHAIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin
export CC="$TOOLCHAIN/aarch64-linux-android$API-clang"
export AR="$TOOLCHAIN/llvm-ar"
make -f makefile.zlib
export RANLIB="$TOOLCHAIN/llvm-ranlib"
export CONFIGURE_FLAGS="--build=x86_64-linux --host=aarch64-linux-android --target=$CC"
export SDL_JOYSTICK_DISABLE=
export SDL_HAPTIC_DISABLE=
make -f makefile.sdl
- name: Build hatariB
run: |
export API=26
export TOOLCHAIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin
export CC="$TOOLCHAIN/aarch64-linux-android$API-clang"
export CMAKEFLAGS="-DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a -DCMAKE_ANDROID_NDK=$ANDROID_NDK_ROOT -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_VERSION=$API"
make
- name: Prepare Artifact
run: |
mkdir artifact
cp README.md artifact
mkdir artifact/cores
cp build/*.so artifact/cores
mkdir artifact/info
cp info/*.* artifact/info
echo "BUILD_TAG=$(git log -1 --format="%ad--%h" --date=format-local:"%Y-%m-%d-%H%M%S")" >> $GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: hatarib-android64--${{ env.BUILD_TAG }}
path: artifact/
build-android32:
name: Android 32-bit
if: false
runs-on: ubuntu-latest
steps:
- name: Checkout Files
uses: actions/checkout@v4
- name: Setup Ubuntu
run: |
sudo apt-get update
sudo apt-get install make gcc cmake
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Submodule Cache Key
run: |
echo "SDLHASH=$(git submodule status SDL | tr -d '[:blank:]')" >> $GITHUB_ENV
echo "ZLIBHASH=$(git submodule status zlib | tr -d '[:blank:]')" >> $GITHUB_ENV
- name: Cache Submodules
id: cache-sub
uses: actions/cache@v4
with:
path: |
SDL/build
zlib_build
key: sub-android32-${{ env.SDLHASH }}-${{ env.ZLIBHASH }}
- name: Build SDL2 and zlib
if: steps.cache-sub.outputs.cache-hit != 'true'
run: |
export API=26
export TOOLCHAIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin
export CC="$TOOLCHAIN/armv7a-linux-androideabi$API-clang"
export AR="$TOOLCHAIN/llvm-ar"
make -f makefile.zlib
export RANLIB="$TOOLCHAIN/llvm-ranlib"
export CONFIGURE_FLAGS="--build=x86_64-linux --host=armv7a-linux-androideabi --target=$CC"
export SDL_JOYSTICK_DISABLE=
export SDL_HAPTIC_DISABLE=
make -f makefile.sdl
- name: Build hatariB
run: |
export API=26
export TOOLCHAIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin
export CC="$TOOLCHAIN/armv7a-linux-androideabi$API-clang"
export CMAKEFLAGS="-DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DCMAKE_ANDROID_NDK=$ANDROID_NDK_ROOT -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_VERSION=$API"
make
- name: Prepare Artifact
run: |
mkdir artifact
cp README.md artifact
mkdir artifact/cores
cp build/*.so artifact/cores
mkdir artifact/info
cp info/*.* artifact/info
echo "BUILD_TAG=$(git log -1 --format="%ad--%h" --date=format-local:"%Y-%m-%d-%H%M%S")" >> $GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: hatarib-android32--${{ env.BUILD_TAG }}
path: artifact/