merge incomplete resolve #98
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- os: ubuntu-20.04 | |
mode: "gcc-x64" | |
- os: ubuntu-20.04 | |
mode: "gcc-x86" | |
- os: ubuntu-20.04 | |
mode: "clang" | |
- os: ubuntu-20.04 | |
mode: "android-aarch64" | |
- os: ubuntu-20.04 | |
mode: "win64" | |
- os: ubuntu-20.04 | |
mode: "win32" | |
- os: macos-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Checkout submodule | |
run: | | |
git submodule init | |
git submodule update | |
- name: Set up UASM (Linux) | |
if: ${{ matrix.os == 'ubuntu-20.04' }} | |
run: | | |
curl -L https://github.com/Terraspace/UASM/archive/refs/tags/v2.55.tar.gz | tar xz | |
make -C UASM-2.55 -f gccLinux64.mak | |
sudo cp UASM-2.55/GccUnixR/uasm /usr/local/bin/ | |
- name: Set up UASM (macOS) | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: | | |
curl -L https://github.com/Terraspace/UASM/archive/refs/tags/v2.55.tar.gz | tar xz | |
# Apple clang 12+ requires "-Wno-error=implicit-function-declaration" cf https://forum.mmm.ucar.edu/phpBB3/viewtopic.php?t=11087&p=24226 | |
sed -i -e 's/-ansi/-Wno-error=implicit-function-declaration/' UASM-2.55/ClangOSX64.mak | |
make -C UASM-2.55 -f ClangOSX64.mak CC=clang | |
sudo cp UASM-2.55/GccUnixR/uasm /usr/local/bin/ | |
# - name: Set up UASM (Win) | |
# if: ${{ matrix.os == 'windows-latest' }} | |
# shell: bash | |
# run: | | |
# curl -L https://github.com/Terraspace/UASM/archive/refs/tags/v2.55.tar.gz | tar xz | |
# make -C UASM-2.55 -f GccWin64.mak | |
# cp UASM-2.55/MinGW-w64R/hjwasm.exe C:/windows/system32/uasm.exe | |
- name: Build (Linux/GCC-x64) | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.mode == 'gcc-x64' }} | |
run: | | |
export CMPL=cmpl_gcc_x64 | |
export OUTDIR=g_x64 | |
export FLAGS="" | |
export CFLAGS_ADDITIONAL="" | |
./build_linux.sh | |
- name: Build (Linux/GCC-x86) | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.mode == 'gcc-x86' }} | |
run: | | |
sudo apt update | |
sudo apt install g++-multilib -y | |
echo 'gcc -m32 "$@"' | sudo tee /usr/local/bin/i686-linux-gnu-gcc | |
echo 'g++ -m32 "$@"' | sudo tee /usr/local/bin/i686-linux-gnu-g++ | |
sudo chmod 755 /usr/local/bin/i686-linux-gnu-gcc /usr/local/bin/i686-linux-gnu-g++ | |
export CMPL=cmpl_gcc_x86 | |
export OUTDIR=g_x86 | |
export FLAGS="CROSS_COMPILE=i686-linux-gnu-" | |
export CFLAGS_ADDITIONAL="" | |
./build_linux.sh | |
- name: Build (Linux/Clang) | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.mode == 'clang' }} | |
run: | | |
export CMPL=cmpl_clang_x64 | |
export OUTDIR=c_x64 | |
export FLAGS="" | |
export CFLAGS_ADDITIONAL="" | |
./build_linux.sh | |
- name: Build (Linux/android-aarch64) | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.mode == 'android-aarch64' }} | |
run: | | |
sed -i -e 's/\&\& LZHAM_PLATFORM_PC/\&\& LZHAM_PLATFORM_PC \&\& !defined(__aarch64__)/' Codecs/lzham_codec_devel/lzhamdecomp/lzham_platform.h | |
export TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64 | |
export TARGET=aarch64-linux-android | |
export API=21 | |
export PATH=$PATH:$TOOLCHAIN/bin | |
# it seems (on clang) -march=armv8-a+crypto must be specified on command line or __ARM_FEATURE_CRYPTO will not be enabled. | |
export CMPL=cmpl_clang_arm64 | |
export OUTDIR=c_arm64 | |
export FLAGS="CROSS_COMPILE=${TARGET}${API}-" | |
export CFLAGS_ADDITIONAL="-march=armv8-a+crypto -Wno-error" | |
./build_linux.sh | |
- name: Build (macOS) | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: | | |
echo 'clang -arch arm64 -fno-stack-check "$@"' | sudo tee /usr/local/bin/arm64-apple-darwin-clang | |
echo 'clang++ -arch arm64 -fno-stack-check "$@"' | sudo tee /usr/local/bin/arm64-apple-darwin-clang++ | |
sudo chmod 755 /usr/local/bin/arm64-apple-darwin-clang /usr/local/bin/arm64-apple-darwin-clang++ | |
sed -i -e 's/\&\& LZHAM_PLATFORM_PC/\&\& LZHAM_PLATFORM_PC \&\& !defined(__aarch64__)/' Codecs/lzham_codec_devel/lzhamdecomp/lzham_platform.h | |
./build_macos.sh | |
- name: Build (Win64) | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.mode == 'win64' }} | |
shell: bash | |
run: | | |
sudo apt update | |
sudo apt install mingw-w64 -y | |
export CMPL=cmpl_gcc_x64 | |
export OUTDIR=g_x64 | |
export FLAGS="MSYSTEM=1 SystemDrive=1 RC=x86_64-w64-mingw32-windres CROSS_COMPILE=x86_64-w64-mingw32-" | |
export CFLAGS_ADDITIONAL="" | |
./build_win.sh | |
- name: Build (Win32) | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.mode == 'win32' }} | |
shell: bash | |
run: | | |
sudo apt update | |
sudo apt install mingw-w64 -y | |
export CMPL=cmpl_gcc_x86 | |
export OUTDIR=g_x86 | |
export FLAGS="MSYSTEM=1 SystemDrive=1 RC=i686-w64-mingw32-windres CROSS_COMPILE=i686-w64-mingw32-" | |
export CFLAGS_ADDITIONAL="" | |
./build_win.sh | |
- name: Upload (Linux/GCC-x64) | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.mode == 'gcc-x64' }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: linux-x64 | |
path: bin | |
- name: Upload (Linux/GCC-x86) | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.mode == 'gcc-x86' }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: linux-x86 | |
path: bin | |
- name: Upload (Linux/Clang) | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.mode == 'clang' }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: linux-clang | |
path: bin | |
- name: Upload (Linux/android-aarch64) | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.mode == 'android-aarch64' }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: android-aarch64 | |
path: bin | |
- name: Upload (macOS) | |
if: ${{ matrix.os == 'macos-latest' }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: macos | |
path: bin | |
- name: Upload (Win64) | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.mode == 'win64' }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: win64 | |
path: bin | |
- name: Upload (Win32) | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.mode == 'win32' }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: win32 | |
path: bin |