mirror of
https://github.com/mkxp-z/mkxp-z.git
synced 2025-04-21 21:52:04 +02:00
Add s390x as cross-compile target
Includes an OpenSSL build fix that should also help for riscv64. Doesn't fully build yet because src/util/serial-util.h errors on big-endian targets.
This commit is contained in:
parent
ae04a71b9f
commit
5bf39ffdf0
12 changed files with 63 additions and 9 deletions
7
.github/workflows/autobuild.yml
vendored
7
.github/workflows/autobuild.yml
vendored
|
@ -174,11 +174,16 @@ jobs:
|
|||
arch_debian: ppc64el
|
||||
arch_gcc: powerpc64le-linux-gnu
|
||||
experimental: false
|
||||
- arch_mkxpz: s390x
|
||||
arch_debian: s390x
|
||||
arch_gcc: s390x-linux-gnu
|
||||
# src/util/serial-util.h errors on big-endian targets.
|
||||
experimental: true
|
||||
- arch_mkxpz: riscv64
|
||||
arch_debian: riscv64
|
||||
arch_gcc: riscv64-linux-gnu
|
||||
# libjxl/highway compatibility issue, TODO check if fixed in later SDL_image.
|
||||
# Also probably an OpenSSL arch name issue.
|
||||
# Also probably an OpenSSL arch name issue, which might be fixed by now.
|
||||
experimental: true
|
||||
steps:
|
||||
- uses: benjlevesque/short-sha@v2.2
|
||||
|
|
|
@ -7,7 +7,7 @@ SDL_FLAGS := ${SDL_FLAGS}
|
|||
SDL2_IMAGE_FLAGS := ${SDL2_IMAGE_FLAGS}
|
||||
SDL2_TTF_FLAGS := ${SDL2_TTF_FLAGS}
|
||||
OPENAL_FLAGS := -DALSOFT_CPUEXT_NEON=no ${OPENAL_FLAGS}
|
||||
OPENSSL_FLAGS := linux-$(ARCH_OPENSSL) ${OPENSSL_FLAGS}
|
||||
OPENSSL_FLAGS := $(ARCH_OPENSSL) ${OPENSSL_FLAGS}
|
||||
RUBY_FLAGS := ${RUBY_FLAGS}
|
||||
|
||||
BUILD_PREFIX := ${PWD}/build-$(ARCH)
|
||||
|
|
13
linux/meson-s390x.txt
Normal file
13
linux/meson-s390x.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
[binaries]
|
||||
c = 's390x-linux-gnu-gcc'
|
||||
cpp = 's390x-linux-gnu-g++'
|
||||
ar = 's390x-linux-gnu-ar'
|
||||
strip = 's390x-linux-gnu-strip'
|
||||
pkgconfig = 'pkg-config'
|
||||
cmake = 'cmake'
|
||||
|
||||
[host_machine]
|
||||
system = 'linux'
|
||||
cpu_family = 's390x'
|
||||
cpu = 'z196'
|
||||
endian = 'big'
|
|
@ -20,7 +20,7 @@
|
|||
# cp "/usr/lib/$ARCH_CONFIGURE/$("$ARCH_CONFIGURE-objdump" -p local/lib64/libruby.so* | grep -i NEEDED | grep -Eo 'libcrypt.so.[0-9\.]+')" local/lib64/
|
||||
|
||||
export ARCH=arm64
|
||||
export ARCH_OPENSSL=aarch64
|
||||
export ARCH_OPENSSL=linux-aarch64
|
||||
export ARCH_CFLAGS=""
|
||||
export ARCH_CONFIGURE=aarch64-linux-gnu
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
# cp "/usr/lib/$ARCH_CONFIGURE/$("$ARCH_CONFIGURE-objdump" -p local/lib64/libruby.so* | grep -i NEEDED | grep -Eo 'libcrypt.so.[0-9\.]+')" local/lib64/
|
||||
|
||||
export ARCH=armv6
|
||||
export ARCH_OPENSSL=armv4
|
||||
export ARCH_OPENSSL=linux-armv4
|
||||
# -march flags from:
|
||||
# https://raspberrypi.stackexchange.com/questions/2046/which-cpu-flags-are-suitable-for-gcc-on-raspberry-pi
|
||||
# https://stackoverflow.com/questions/35132319/build-for-armv6-with-gnueabihf
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
# cp "/usr/lib/$ARCH_CONFIGURE/$("$ARCH_CONFIGURE-objdump" -p local/lib64/libruby.so* | grep -i NEEDED | grep -Eo 'libcrypt.so.[0-9\.]+')" local/lib64/
|
||||
|
||||
export ARCH=armv7-neon
|
||||
export ARCH_OPENSSL=armv4
|
||||
export ARCH_OPENSSL=linux-armv4
|
||||
export ARCH_CFLAGS="-mcpu=generic-armv7-a+neon -mtune=generic-armv7-a+neon"
|
||||
export ARCH_CONFIGURE=arm-linux-gnueabihf
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
# cp "/usr/lib/$ARCH_CONFIGURE/$("$ARCH_CONFIGURE-objdump" -p local/lib64/libruby.so* | grep -i NEEDED | grep -Eo 'libcrypt.so.[0-9\.]+')" local/lib64/
|
||||
|
||||
export ARCH=armv7
|
||||
export ARCH_OPENSSL=armv4
|
||||
export ARCH_OPENSSL=linux-armv4
|
||||
export ARCH_CFLAGS="-mcpu=generic-armv7-a+vfpv3-d16 -mtune=generic-armv7-a+vfpv3-d16"
|
||||
export ARCH_CONFIGURE=arm-linux-gnueabihf
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
# cp "/usr/lib/$ARCH_CONFIGURE/$("$ARCH_CONFIGURE-objdump" -p local/lib64/libruby.so* | grep -i NEEDED | grep -Eo 'libcrypt.so.[0-9\.]+')" local/lib64/
|
||||
|
||||
export ARCH=power8le
|
||||
export ARCH_OPENSSL=ppc64le
|
||||
export ARCH_OPENSSL=linux-ppc64le
|
||||
export ARCH_CFLAGS="-mcpu=power8 -mtune=power8"
|
||||
export ARCH_CONFIGURE=powerpc64le-linux-gnu
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
# cp "/usr/lib/$ARCH_CONFIGURE/$("$ARCH_CONFIGURE-objdump" -p local/lib64/libruby.so* | grep -i NEEDED | grep -Eo 'libcrypt.so.[0-9\.]+')" local/lib64/
|
||||
|
||||
export ARCH=power9le
|
||||
export ARCH_OPENSSL=ppc64le
|
||||
export ARCH_OPENSSL=linux-ppc64le
|
||||
export ARCH_CFLAGS="-mcpu=power9 -mtune=power9"
|
||||
export ARCH_CONFIGURE=powerpc64le-linux-gnu
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
# cp "/usr/lib/$ARCH_CONFIGURE/$("$ARCH_CONFIGURE-objdump" -p local/lib64/libruby.so* | grep -i NEEDED | grep -Eo 'libcrypt.so.[0-9\.]+')" local/lib64/
|
||||
|
||||
export ARCH=riscv64
|
||||
export ARCH_OPENSSL=riscv64
|
||||
export ARCH_OPENSSL=linux64-riscv64
|
||||
export ARCH_CFLAGS=""
|
||||
export ARCH_CONFIGURE=riscv64-linux-gnu
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
|
|
28
linux/target-s390x.sh
Executable file
28
linux/target-s390x.sh
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Deps instructions:
|
||||
# sudo dpkg --add-architecture s390x
|
||||
# (Target versions of xorg-dev; removes native versions of: libxfont-dev xorg-dev xserver-xorg-dev) sudo apt install libdmx-dev:s390x libfontenc-dev:s390x libfs-dev:s390x libice-dev:s390x libsm-dev:s390x libx11-dev:s390x libxau-dev:s390x libxaw7-dev:s390x libxcomposite-dev:s390x libxcursor-dev:s390x libxdamage-dev:s390x libxdmcp-dev:s390x libxext-dev:s390x libxfixes-dev:s390x libxfont-dev:s390x libxft-dev:s390x libxi-dev:s390x libxinerama-dev:s390x libxkbfile-dev:s390x libxmu-dev:s390x libxmuu-dev:s390x libxpm-dev:s390x libxrandr-dev:s390x libxrender-dev:s390x libxres-dev:s390x libxss-dev:s390x libxt-dev:s390x libxtst-dev:s390x libxv-dev:s390x libxvmc-dev:s390x libxxf86dga-dev:s390x libxxf86vm-dev:s390x x11proto-dev:s390x xserver-xorg-dev:s390x xtrans-dev:s390x
|
||||
# sudo apt install gcc-s390x-linux-gnu g++-s390x-linux-gnu zlib1g-dev:s390x libbz2-dev:s390x libgl1-mesa-dev:s390x libasound2-dev:s390x libpulse-dev:s390x
|
||||
|
||||
# Build instructions
|
||||
# cd linux
|
||||
# source target-whatever.sh
|
||||
# make
|
||||
# source vars.sh
|
||||
# cd ../
|
||||
# meson setup --cross-file ./linux/$ARCH_MESON_TOOLCHAIN build
|
||||
# cd build
|
||||
# ninja
|
||||
# meson configure --bindir=. --prefix=$PWD/local
|
||||
# ninja install
|
||||
# cp "$MKXPZ_PREFIX/lib/$("$ARCH_CONFIGURE-objdump" -p local/mkxp-z* | grep -i NEEDED | grep -Eo 'libruby.so.[0-9\.]+')" local/lib64/
|
||||
# cp "/usr/lib/$ARCH_CONFIGURE/$("$ARCH_CONFIGURE-objdump" -p local/lib64/libruby.so* | grep -i NEEDED | grep -Eo 'libcrypt.so.[0-9\.]+')" local/lib64/
|
||||
|
||||
export ARCH=s390x
|
||||
export ARCH_OPENSSL=linux64-s390x
|
||||
export ARCH_CFLAGS=""
|
||||
export ARCH_CONFIGURE=s390x-linux-gnu
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
export ARCH_CMAKE_TOOLCHAIN=toolchain-s390x.cmake
|
||||
export ARCH_MESON_TOOLCHAIN=meson-s390x.txt
|
8
linux/toolchain-s390x.cmake
Normal file
8
linux/toolchain-s390x.cmake
Normal file
|
@ -0,0 +1,8 @@
|
|||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR s390x)
|
||||
set(CMAKE_C_COMPILER ${tools}/bin/s390x-linux-gnu-gcc)
|
||||
set(CMAKE_CXX_COMPILER ${tools}/bin/s390x-linux-gnu-g++)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
Loading…
Add table
Reference in a new issue