mirror of
https://github.com/mkxp-z/mkxp-z.git
synced 2025-03-28 14:56:22 +01:00
Add cross-compile support for Linux/ARM and Linux/POWER targets
This commit is contained in:
parent
8d139e2a08
commit
b13c4fe136
22 changed files with 458 additions and 14 deletions
113
.github/workflows/autobuild.yml
vendored
113
.github/workflows/autobuild.yml
vendored
|
@ -83,8 +83,8 @@ jobs:
|
|||
build/artifact/scripts/
|
||||
build/artifact/stdlib/
|
||||
|
||||
build-linux:
|
||||
name: Ubuntu 22.04
|
||||
build-linux-native:
|
||||
name: Ubuntu 22.04 x86_64
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: benjlevesque/short-sha@v2.2
|
||||
|
@ -100,7 +100,7 @@ jobs:
|
|||
path: |
|
||||
linux/build-x86_64
|
||||
linux/downloads
|
||||
key: lin-${{ hashFiles('linux/Makefile') }}
|
||||
key: lin-x86_64-${{ hashFiles('linux/Makefile') }}
|
||||
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
|
@ -133,7 +133,112 @@ jobs:
|
|||
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: mkxp-z.linux.${{github.event_name == 'pull_request' && format('PR{0}', github.event.number) || github.ref_name}}-${{steps.short-sha.outputs.sha}}
|
||||
name: mkxp-z.linux.x86_64.${{github.event_name == 'pull_request' && format('PR{0}', github.event.number) || github.ref_name}}-${{steps.short-sha.outputs.sha}}
|
||||
path: build/local.zip
|
||||
|
||||
build-linux-cross:
|
||||
name: Ubuntu 22.04 ${{matrix.arch_mkxpz}}
|
||||
runs-on: ubuntu-22.04
|
||||
continue-on-error: ${{ matrix.experimental }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- arch_mkxpz: armv6
|
||||
arch_debian: armhf
|
||||
arch_gcc: arm-linux-gnueabihf
|
||||
# GCC doesn't like the -mcpu flags, TODO investigate.
|
||||
experimental: true
|
||||
- arch_mkxpz: armv7
|
||||
arch_debian: armhf
|
||||
arch_gcc: arm-linux-gnueabihf
|
||||
# GCC doesn't like the -mcpu flags, TODO investigate.
|
||||
experimental: true
|
||||
- arch_mkxpz: armv7-neon
|
||||
arch_debian: armhf
|
||||
arch_gcc: arm-linux-gnueabihf
|
||||
experimental: false
|
||||
- arch_mkxpz: arm64
|
||||
arch_debian: arm64
|
||||
arch_gcc: aarch64-linux-gnu
|
||||
experimental: false
|
||||
- arch_mkxpz: power8le
|
||||
arch_debian: ppc64el
|
||||
arch_gcc: powerpc64le-linux-gnu
|
||||
experimental: false
|
||||
- arch_mkxpz: power9le
|
||||
arch_debian: ppc64el
|
||||
arch_gcc: powerpc64le-linux-gnu
|
||||
experimental: false
|
||||
- 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.
|
||||
experimental: true
|
||||
steps:
|
||||
- uses: benjlevesque/short-sha@v2.2
|
||||
id: short-sha
|
||||
with:
|
||||
length: 7
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
linux/build-${{matrix.arch_mkxpz}}
|
||||
linux/downloads
|
||||
key: lin-${{matrix.arch_mkxpz}}-${{ hashFiles('linux/Makefile', 'linux/target*', 'linux/toolchain*') }}
|
||||
|
||||
- name: Install apt dependencies
|
||||
run: |
|
||||
sudo sed -i "s/deb /deb [arch=amd64] /g" /etc/apt/sources.list
|
||||
sudo dpkg --add-architecture ${{matrix.arch_debian}}
|
||||
echo "deb [arch=${{matrix.arch_debian}}] http://ports.ubuntu.com/ jammy main restricted" | sudo tee -a /etc/apt/sources.list
|
||||
echo "deb [arch=${{matrix.arch_debian}}] http://ports.ubuntu.com/ jammy-updates main restricted" | sudo tee -a /etc/apt/sources.list
|
||||
echo "deb [arch=${{matrix.arch_debian}}] http://ports.ubuntu.com/ jammy universe" | sudo tee -a /etc/apt/sources.list
|
||||
echo "deb [arch=${{matrix.arch_debian}}] http://ports.ubuntu.com/ jammy-updates universe" | sudo tee -a /etc/apt/sources.list
|
||||
echo "deb [arch=${{matrix.arch_debian}}] http://ports.ubuntu.com/ jammy multiverse" | sudo tee -a /etc/apt/sources.list
|
||||
echo "deb [arch=${{matrix.arch_debian}}] http://ports.ubuntu.com/ jammy-updates multiverse" | sudo tee -a /etc/apt/sources.list
|
||||
echo "deb [arch=${{matrix.arch_debian}}] http://ports.ubuntu.com/ jammy-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list
|
||||
sudo apt update
|
||||
sudo apt install git build-essential cmake meson autoconf automake libtool pkg-config ruby bison -y
|
||||
sudo apt install libdmx-dev:${{matrix.arch_debian}} libfontenc-dev:${{matrix.arch_debian}} libfs-dev:${{matrix.arch_debian}} libice-dev:${{matrix.arch_debian}} libsm-dev:${{matrix.arch_debian}} libx11-dev:${{matrix.arch_debian}} libxau-dev:${{matrix.arch_debian}} libxaw7-dev:${{matrix.arch_debian}} libxcomposite-dev:${{matrix.arch_debian}} libxcursor-dev:${{matrix.arch_debian}} libxdamage-dev:${{matrix.arch_debian}} libxdmcp-dev:${{matrix.arch_debian}} libxext-dev:${{matrix.arch_debian}} libxfixes-dev:${{matrix.arch_debian}} libxfont-dev:${{matrix.arch_debian}} libxft-dev:${{matrix.arch_debian}} libxi-dev:${{matrix.arch_debian}} libxinerama-dev:${{matrix.arch_debian}} libxkbfile-dev:${{matrix.arch_debian}} libxmu-dev:${{matrix.arch_debian}} libxmuu-dev:${{matrix.arch_debian}} libxpm-dev:${{matrix.arch_debian}} libxrandr-dev:${{matrix.arch_debian}} libxrender-dev:${{matrix.arch_debian}} libxres-dev:${{matrix.arch_debian}} libxss-dev:${{matrix.arch_debian}} libxt-dev:${{matrix.arch_debian}} libxtst-dev:${{matrix.arch_debian}} libxv-dev:${{matrix.arch_debian}} libxvmc-dev:${{matrix.arch_debian}} libxxf86dga-dev:${{matrix.arch_debian}} libxxf86vm-dev:${{matrix.arch_debian}} x11proto-dev:${{matrix.arch_debian}} xserver-xorg-dev:${{matrix.arch_debian}} xtrans-dev:${{matrix.arch_debian}} -y
|
||||
sudo apt install gcc-${{matrix.arch_gcc}} g++-${{matrix.arch_gcc}} zlib1g-dev:${{matrix.arch_debian}} libbz2-dev:${{matrix.arch_debian}} libgl1-mesa-dev:${{matrix.arch_debian}} libasound2-dev:${{matrix.arch_debian}} libpulse-dev:${{matrix.arch_debian}} -y
|
||||
|
||||
- name: Build everything else
|
||||
run: |
|
||||
cd linux
|
||||
source target-${{matrix.arch_mkxpz}}.sh
|
||||
make
|
||||
|
||||
- name: Build executable
|
||||
run: |
|
||||
source linux/target-${{matrix.arch_mkxpz}}.sh
|
||||
source linux/vars.sh
|
||||
meson setup --cross-file linux/$ARCH_MESON_TOOLCHAIN build --bindir=. --prefix=$GITHUB_WORKSPACE/build/local
|
||||
cd build
|
||||
ninja
|
||||
ninja install
|
||||
cp "$MKXPZ_PREFIX/lib/$("$ARCH_CONFIGURE-objdump" -p local/mkxp-z* | grep -i NEEDED | grep -Eo 'libruby.so.[0-9\.]+')" local/lib*/
|
||||
cp "/usr/lib/$ARCH_CONFIGURE/$("$ARCH_CONFIGURE-objdump" -p local/lib*/libruby.so* | grep -i NEEDED | grep -Eo 'libcrypt.so.[0-9\.]+')" local/lib*/
|
||||
|
||||
- name: Prepare archive
|
||||
run: |
|
||||
cd build/local
|
||||
cp -r ../../linux/build-${{matrix.arch_mkxpz}}/lib/ruby/3.1.0 .
|
||||
mv ./3.1.0 ./stdlib
|
||||
cp ../../mkxp.json .
|
||||
cp -r ../../scripts .
|
||||
cp ../../assets/LICENSE.mkxp-z-with-https.txt .
|
||||
cd ..
|
||||
zip -r local.zip local
|
||||
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: mkxp-z.linux.${{matrix.arch_mkxpz}}.${{github.event_name == 'pull_request' && format('PR{0}', github.event.number) || github.ref_name}}-${{steps.short-sha.outputs.sha}}
|
||||
path: build/local.zip
|
||||
|
||||
build-macos:
|
||||
|
|
|
@ -23,7 +23,7 @@ This is a fork of mkxp intended to be a little more than just a barebones recrea
|
|||
|
||||
Despite the fact that it was made with Essentials games in mind, there is nothing connected to it contained in this repository, and it should still be compatible with anything that runs in the upstream version of MKXP. You can think of it as MKXP but a bit supercharged -- it should be able to run all but the most demanding of RGSS projects, given a bit of porting work.
|
||||
|
||||
It supports Windows, Linux and both Intel and Apple Silicon versions of macOS.
|
||||
It supports Windows, Linux (x86, ARM, and POWER), and both Intel and Apple Silicon versions of macOS.
|
||||
|
||||
mkxp-z is licensed under the GNU General Public License v2+. However, if you build mkxp-z with the `enable-https` option turned on (which is the default), you will also need to comply with OpenSSL's Apache v2 license, which in practice means that the resulting binaries are licensed under GPLv3.
|
||||
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
ARCH := $(shell uname -m)
|
||||
ARCH ?= $(shell uname -m)
|
||||
ARCH_OPENSSL ?= $(ARCH)
|
||||
ARCH_CFLAGS ?=
|
||||
ARCH_CONFIGURE ?= $(shell gcc -dumpmachine)
|
||||
|
||||
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_FLAGS}
|
||||
OPENSSL_FLAGS := linux-$(ARCH_OPENSSL) ${OPENSSL_FLAGS}
|
||||
RUBY_FLAGS := ${RUBY_FLAGS}
|
||||
|
||||
BUILD_PREFIX := ${PWD}/build-$(ARCH)
|
||||
|
@ -12,9 +15,9 @@ LIBDIR := $(BUILD_PREFIX)/lib
|
|||
INCLUDEDIR := $(BUILD_PREFIX)/include
|
||||
DOWNLOADS := ${PWD}/downloads/$(ARCH)
|
||||
NPROC := $(shell nproc)
|
||||
CFLAGS := -I$(INCLUDEDIR) -flax-vector-conversions -O3
|
||||
CFLAGS := -I$(INCLUDEDIR) -flax-vector-conversions -O3 $(ARCH_CFLAGS)
|
||||
LDFLAGS := -L$(LIBDIR)
|
||||
CC := gcc
|
||||
CC ?= gcc
|
||||
PKG_CONFIG_LIBDIR := $(BUILD_PREFIX)/lib/pkgconfig
|
||||
GIT := git
|
||||
CLONE := $(GIT) clone -q
|
||||
|
@ -24,14 +27,19 @@ CONFIGURE_ENV := \
|
|||
PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR) \
|
||||
CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
|
||||
CONFIGURE_ARGS := --prefix="$(BUILD_PREFIX)"
|
||||
CONFIGURE_ARGS := --prefix="$(BUILD_PREFIX)" --host="$(ARCH_CONFIGURE)"
|
||||
|
||||
ifdef ARCH_CMAKE_TOOLCHAIN
|
||||
ARCH_CMAKE_ARGS := -DCMAKE_TOOLCHAIN_FILE="${PWD}/$(ARCH_CMAKE_TOOLCHAIN)"
|
||||
endif
|
||||
CMAKE_ARGS := \
|
||||
-DCMAKE_INSTALL_PREFIX="$(BUILD_PREFIX)" \
|
||||
-DCMAKE_PREFIX_PATH="$(BUILD_PREFIX)" \
|
||||
-DCMAKE_C_FLAGS="$(CFLAGS)" \
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
$(ARCH_CMAKE_ARGS)
|
||||
|
||||
# TODO: Check if we can disable rubygems, remove prefixes.
|
||||
RUBY_CONFIGURE_ARGS := \
|
||||
--enable-install-static-library \
|
||||
--enable-shared \
|
||||
|
@ -316,7 +324,7 @@ ruby: init_dirs openssl $(LIBDIR)/libruby.so.3.1
|
|||
|
||||
$(LIBDIR)/libruby.so.3.1: $(DOWNLOADS)/ruby/Makefile
|
||||
cd $(DOWNLOADS)/ruby; \
|
||||
make -j$(NPROC); make install
|
||||
make -j$(NPROC); make install DESTDIR="$(BUILD_PREFIX)"
|
||||
|
||||
$(DOWNLOADS)/ruby/Makefile: $(DOWNLOADS)/ruby/configure
|
||||
cd $(DOWNLOADS)/ruby; \
|
||||
|
|
13
linux/meson-arm64.txt
Normal file
13
linux/meson-arm64.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
[binaries]
|
||||
c = 'aarch64-linux-gnu-gcc'
|
||||
cpp = 'aarch64-linux-gnu-g++'
|
||||
ar = 'aarch64-linux-gnu-ar'
|
||||
strip = 'aarch64-linux-gnu-strip'
|
||||
pkgconfig = 'pkg-config'
|
||||
cmake = 'cmake'
|
||||
|
||||
[host_machine]
|
||||
system = 'linux'
|
||||
cpu_family = 'aarch64'
|
||||
cpu = 'generic-armv8-a'
|
||||
endian = 'little'
|
13
linux/meson-armv6.txt
Normal file
13
linux/meson-armv6.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
[binaries]
|
||||
c = 'arm-linux-gnueabihf-gcc'
|
||||
cpp = 'arm-linux-gnueabihf-g++'
|
||||
ar = 'arm-linux-gnueabihf-ar'
|
||||
strip = 'arm-linux-gnueabihf-strip'
|
||||
pkgconfig = 'pkg-config'
|
||||
cmake = 'cmake'
|
||||
|
||||
[host_machine]
|
||||
system = 'linux'
|
||||
cpu_family = 'arm'
|
||||
cpu = 'generic-armv6+fp'
|
||||
endian = 'little'
|
13
linux/meson-armv7-neon.txt
Normal file
13
linux/meson-armv7-neon.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
[binaries]
|
||||
c = 'arm-linux-gnueabihf-gcc'
|
||||
cpp = 'arm-linux-gnueabihf-g++'
|
||||
ar = 'arm-linux-gnueabihf-ar'
|
||||
strip = 'arm-linux-gnueabihf-strip'
|
||||
pkgconfig = 'pkg-config'
|
||||
cmake = 'cmake'
|
||||
|
||||
[host_machine]
|
||||
system = 'linux'
|
||||
cpu_family = 'arm'
|
||||
cpu = 'generic-armv7-a+neon'
|
||||
endian = 'little'
|
13
linux/meson-armv7.txt
Normal file
13
linux/meson-armv7.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
[binaries]
|
||||
c = 'arm-linux-gnueabihf-gcc'
|
||||
cpp = 'arm-linux-gnueabihf-g++'
|
||||
ar = 'arm-linux-gnueabihf-ar'
|
||||
strip = 'arm-linux-gnueabihf-strip'
|
||||
pkgconfig = 'pkg-config'
|
||||
cmake = 'cmake'
|
||||
|
||||
[host_machine]
|
||||
system = 'linux'
|
||||
cpu_family = 'arm'
|
||||
cpu = 'generic-armv7-a+fp'
|
||||
endian = 'little'
|
13
linux/meson-power8le.txt
Normal file
13
linux/meson-power8le.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
[binaries]
|
||||
c = 'powerpc64le-linux-gnu-gcc'
|
||||
cpp = 'powerpc64le-linux-gnu-g++'
|
||||
ar = 'powerpc64le-linux-gnu-ar'
|
||||
strip = 'powerpc64le-linux-gnu-strip'
|
||||
pkgconfig = 'pkg-config'
|
||||
cmake = 'cmake'
|
||||
|
||||
[host_machine]
|
||||
system = 'linux'
|
||||
cpu_family = 'ppc64'
|
||||
cpu = 'power8'
|
||||
endian = 'little'
|
13
linux/meson-power9le.txt
Normal file
13
linux/meson-power9le.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
[binaries]
|
||||
c = 'powerpc64le-linux-gnu-gcc'
|
||||
cpp = 'powerpc64le-linux-gnu-g++'
|
||||
ar = 'powerpc64le-linux-gnu-ar'
|
||||
strip = 'powerpc64le-linux-gnu-strip'
|
||||
pkgconfig = 'pkg-config'
|
||||
cmake = 'cmake'
|
||||
|
||||
[host_machine]
|
||||
system = 'linux'
|
||||
cpu_family = 'ppc64'
|
||||
cpu = 'power9'
|
||||
endian = 'little'
|
13
linux/meson-riscv64.txt
Normal file
13
linux/meson-riscv64.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
[binaries]
|
||||
c = 'riscv64-linux-gnu-gcc'
|
||||
cpp = 'riscv64-linux-gnu-g++'
|
||||
ar = 'riscv64-linux-gnu-ar'
|
||||
strip = 'riscv64-linux-gnu-strip'
|
||||
pkgconfig = 'pkg-config'
|
||||
cmake = 'cmake'
|
||||
|
||||
[host_machine]
|
||||
system = 'linux'
|
||||
cpu_family = 'riscv64'
|
||||
cpu = 'rv64gc'
|
||||
endian = 'little'
|
28
linux/target-arm64.sh
Executable file
28
linux/target-arm64.sh
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Deps instructions:
|
||||
# sudo dpkg --add-architecture arm64
|
||||
# (Target versions of xorg-dev; removes native versions of: libxfont-dev xorg-dev xserver-xorg-dev) sudo apt install libdmx-dev:arm64 libfontenc-dev:arm64 libfs-dev:arm64 libice-dev:arm64 libsm-dev:arm64 libx11-dev:arm64 libxau-dev:arm64 libxaw7-dev:arm64 libxcomposite-dev:arm64 libxcursor-dev:arm64 libxdamage-dev:arm64 libxdmcp-dev:arm64 libxext-dev:arm64 libxfixes-dev:arm64 libxfont-dev:arm64 libxft-dev:arm64 libxi-dev:arm64 libxinerama-dev:arm64 libxkbfile-dev:arm64 libxmu-dev:arm64 libxmuu-dev:arm64 libxpm-dev:arm64 libxrandr-dev:arm64 libxrender-dev:arm64 libxres-dev:arm64 libxss-dev:arm64 libxt-dev:arm64 libxtst-dev:arm64 libxv-dev:arm64 libxvmc-dev:arm64 libxxf86dga-dev:arm64 libxxf86vm-dev:arm64 x11proto-dev:arm64 xserver-xorg-dev:arm64 xtrans-dev:arm64
|
||||
# sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu zlib1g-dev:arm64 libbz2-dev:arm64 libgl1-mesa-dev:arm64 libasound2-dev:arm64 libpulse-dev:arm64
|
||||
|
||||
# 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=arm64
|
||||
export ARCH_OPENSSL=aarch64
|
||||
export ARCH_CFLAGS=""
|
||||
export ARCH_CONFIGURE=aarch64-linux-gnu
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
export ARCH_CMAKE_TOOLCHAIN=toolchain-arm64.cmake
|
||||
export ARCH_MESON_TOOLCHAIN=meson-arm64.txt
|
28
linux/target-armv6.sh
Executable file
28
linux/target-armv6.sh
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Deps instructions:
|
||||
# sudo dpkg --add-architecture armhf
|
||||
# (Target versions of xorg-dev; removes native versions of: libxfont-dev xorg-dev xserver-xorg-dev) sudo apt install libdmx-dev:armhf libfontenc-dev:armhf libfs-dev:armhf libice-dev:armhf libsm-dev:armhf libx11-dev:armhf libxau-dev:armhf libxaw7-dev:armhf libxcomposite-dev:armhf libxcursor-dev:armhf libxdamage-dev:armhf libxdmcp-dev:armhf libxext-dev:armhf libxfixes-dev:armhf libxfont-dev:armhf libxft-dev:armhf libxi-dev:armhf libxinerama-dev:armhf libxkbfile-dev:armhf libxmu-dev:armhf libxmuu-dev:armhf libxpm-dev:armhf libxrandr-dev:armhf libxrender-dev:armhf libxres-dev:armhf libxss-dev:armhf libxt-dev:armhf libxtst-dev:armhf libxv-dev:armhf libxvmc-dev:armhf libxxf86dga-dev:armhf libxxf86vm-dev:armhf x11proto-dev:armhf xserver-xorg-dev:armhf xtrans-dev:armhf
|
||||
# sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf zlib1g-dev:armhf libbz2-dev:armhf libgl1-mesa-dev:armhf libasound2-dev:armhf libpulse-dev:armhf
|
||||
|
||||
# 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=armv6
|
||||
export ARCH_OPENSSL=armv4
|
||||
export ARCH_CFLAGS="-mcpu=generic-armv6+fp -mtune=generic-armv6+fp"
|
||||
export ARCH_CONFIGURE=arm-linux-gnueabihf
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
export ARCH_CMAKE_TOOLCHAIN=toolchain-arm32.cmake
|
||||
export ARCH_MESON_TOOLCHAIN=meson-armv6.txt
|
28
linux/target-armv7-neon.sh
Executable file
28
linux/target-armv7-neon.sh
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Deps instructions:
|
||||
# sudo dpkg --add-architecture armhf
|
||||
# (Target versions of xorg-dev; removes native versions of: libxfont-dev xorg-dev xserver-xorg-dev) sudo apt install libdmx-dev:armhf libfontenc-dev:armhf libfs-dev:armhf libice-dev:armhf libsm-dev:armhf libx11-dev:armhf libxau-dev:armhf libxaw7-dev:armhf libxcomposite-dev:armhf libxcursor-dev:armhf libxdamage-dev:armhf libxdmcp-dev:armhf libxext-dev:armhf libxfixes-dev:armhf libxfont-dev:armhf libxft-dev:armhf libxi-dev:armhf libxinerama-dev:armhf libxkbfile-dev:armhf libxmu-dev:armhf libxmuu-dev:armhf libxpm-dev:armhf libxrandr-dev:armhf libxrender-dev:armhf libxres-dev:armhf libxss-dev:armhf libxt-dev:armhf libxtst-dev:armhf libxv-dev:armhf libxvmc-dev:armhf libxxf86dga-dev:armhf libxxf86vm-dev:armhf x11proto-dev:armhf xserver-xorg-dev:armhf xtrans-dev:armhf
|
||||
# sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf zlib1g-dev:armhf libbz2-dev:armhf libgl1-mesa-dev:armhf libasound2-dev:armhf libpulse-dev:armhf
|
||||
|
||||
# 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=armv7-neon
|
||||
export ARCH_OPENSSL=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"
|
||||
export ARCH_CMAKE_TOOLCHAIN=toolchain-arm32.cmake
|
||||
export ARCH_MESON_TOOLCHAIN=meson-armv7-neon.txt
|
28
linux/target-armv7.sh
Executable file
28
linux/target-armv7.sh
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Deps instructions:
|
||||
# sudo dpkg --add-architecture armhf
|
||||
# (Target versions of xorg-dev; removes native versions of: libxfont-dev xorg-dev xserver-xorg-dev) sudo apt install libdmx-dev:armhf libfontenc-dev:armhf libfs-dev:armhf libice-dev:armhf libsm-dev:armhf libx11-dev:armhf libxau-dev:armhf libxaw7-dev:armhf libxcomposite-dev:armhf libxcursor-dev:armhf libxdamage-dev:armhf libxdmcp-dev:armhf libxext-dev:armhf libxfixes-dev:armhf libxfont-dev:armhf libxft-dev:armhf libxi-dev:armhf libxinerama-dev:armhf libxkbfile-dev:armhf libxmu-dev:armhf libxmuu-dev:armhf libxpm-dev:armhf libxrandr-dev:armhf libxrender-dev:armhf libxres-dev:armhf libxss-dev:armhf libxt-dev:armhf libxtst-dev:armhf libxv-dev:armhf libxvmc-dev:armhf libxxf86dga-dev:armhf libxxf86vm-dev:armhf x11proto-dev:armhf xserver-xorg-dev:armhf xtrans-dev:armhf
|
||||
# sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf zlib1g-dev:armhf libbz2-dev:armhf libgl1-mesa-dev:armhf libasound2-dev:armhf libpulse-dev:armhf
|
||||
|
||||
# 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=armv7
|
||||
export ARCH_OPENSSL=armv4
|
||||
export ARCH_CFLAGS="-mcpu=generic-armv7-a+fp -mtune=generic-armv7-a+fp"
|
||||
export ARCH_CONFIGURE=arm-linux-gnueabihf
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
export ARCH_CMAKE_TOOLCHAIN=toolchain-arm32.cmake
|
||||
export ARCH_MESON_TOOLCHAIN=meson-armv7.txt
|
28
linux/target-power8le.sh
Executable file
28
linux/target-power8le.sh
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Deps instructions:
|
||||
# sudo dpkg --add-architecture ppc64el
|
||||
# (Target versions of xorg-dev; removes native versions of: libxfont-dev xorg-dev xserver-xorg-dev) sudo apt install libdmx-dev:ppc64el libfontenc-dev:ppc64el libfs-dev:ppc64el libice-dev:ppc64el libsm-dev:ppc64el libx11-dev:ppc64el libxau-dev:ppc64el libxaw7-dev:ppc64el libxcomposite-dev:ppc64el libxcursor-dev:ppc64el libxdamage-dev:ppc64el libxdmcp-dev:ppc64el libxext-dev:ppc64el libxfixes-dev:ppc64el libxfont-dev:ppc64el libxft-dev:ppc64el libxi-dev:ppc64el libxinerama-dev:ppc64el libxkbfile-dev:ppc64el libxmu-dev:ppc64el libxmuu-dev:ppc64el libxpm-dev:ppc64el libxrandr-dev:ppc64el libxrender-dev:ppc64el libxres-dev:ppc64el libxss-dev:ppc64el libxt-dev:ppc64el libxtst-dev:ppc64el libxv-dev:ppc64el libxvmc-dev:ppc64el libxxf86dga-dev:ppc64el libxxf86vm-dev:ppc64el x11proto-dev:ppc64el xserver-xorg-dev:ppc64el xtrans-dev:ppc64el
|
||||
# sudo apt install gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu zlib1g-dev:ppc64el libbz2-dev:ppc64el libgl1-mesa-dev:ppc64el libasound2-dev:ppc64el libpulse-dev:ppc64el
|
||||
|
||||
# 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=power8le
|
||||
export ARCH_OPENSSL=ppc64le
|
||||
export ARCH_CFLAGS="-mcpu=power8 -mtune=power8"
|
||||
export ARCH_CONFIGURE=powerpc64le-linux-gnu
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
export ARCH_CMAKE_TOOLCHAIN=toolchain-ppc64le.cmake
|
||||
export ARCH_MESON_TOOLCHAIN=meson-power8le.txt
|
28
linux/target-power9le.sh
Executable file
28
linux/target-power9le.sh
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Deps instructions:
|
||||
# sudo dpkg --add-architecture ppc64el
|
||||
# (Target versions of xorg-dev; removes native versions of: libxfont-dev xorg-dev xserver-xorg-dev) sudo apt install libdmx-dev:ppc64el libfontenc-dev:ppc64el libfs-dev:ppc64el libice-dev:ppc64el libsm-dev:ppc64el libx11-dev:ppc64el libxau-dev:ppc64el libxaw7-dev:ppc64el libxcomposite-dev:ppc64el libxcursor-dev:ppc64el libxdamage-dev:ppc64el libxdmcp-dev:ppc64el libxext-dev:ppc64el libxfixes-dev:ppc64el libxfont-dev:ppc64el libxft-dev:ppc64el libxi-dev:ppc64el libxinerama-dev:ppc64el libxkbfile-dev:ppc64el libxmu-dev:ppc64el libxmuu-dev:ppc64el libxpm-dev:ppc64el libxrandr-dev:ppc64el libxrender-dev:ppc64el libxres-dev:ppc64el libxss-dev:ppc64el libxt-dev:ppc64el libxtst-dev:ppc64el libxv-dev:ppc64el libxvmc-dev:ppc64el libxxf86dga-dev:ppc64el libxxf86vm-dev:ppc64el x11proto-dev:ppc64el xserver-xorg-dev:ppc64el xtrans-dev:ppc64el
|
||||
# sudo apt install gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu zlib1g-dev:ppc64el libbz2-dev:ppc64el libgl1-mesa-dev:ppc64el libasound2-dev:ppc64el libpulse-dev:ppc64el
|
||||
|
||||
# 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=power9le
|
||||
export ARCH_OPENSSL=ppc64le
|
||||
export ARCH_CFLAGS="-mcpu=power9 -mtune=power9"
|
||||
export ARCH_CONFIGURE=powerpc64le-linux-gnu
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
export ARCH_CMAKE_TOOLCHAIN=toolchain-ppc64le.cmake
|
||||
export ARCH_MESON_TOOLCHAIN=meson-power9le.txt
|
28
linux/target-riscv64.sh
Executable file
28
linux/target-riscv64.sh
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Deps instructions:
|
||||
# sudo dpkg --add-architecture riscv64
|
||||
# (Target versions of xorg-dev; removes native versions of: libxfont-dev xorg-dev xserver-xorg-dev) sudo apt install libdmx-dev:riscv64 libfontenc-dev:riscv64 libfs-dev:riscv64 libice-dev:riscv64 libsm-dev:riscv64 libx11-dev:riscv64 libxau-dev:riscv64 libxaw7-dev:riscv64 libxcomposite-dev:riscv64 libxcursor-dev:riscv64 libxdamage-dev:riscv64 libxdmcp-dev:riscv64 libxext-dev:riscv64 libxfixes-dev:riscv64 libxfont-dev:riscv64 libxft-dev:riscv64 libxi-dev:riscv64 libxinerama-dev:riscv64 libxkbfile-dev:riscv64 libxmu-dev:riscv64 libxmuu-dev:riscv64 libxpm-dev:riscv64 libxrandr-dev:riscv64 libxrender-dev:riscv64 libxres-dev:riscv64 libxss-dev:riscv64 libxt-dev:riscv64 libxtst-dev:riscv64 libxv-dev:riscv64 libxvmc-dev:riscv64 libxxf86dga-dev:riscv64 libxxf86vm-dev:riscv64 x11proto-dev:riscv64 xserver-xorg-dev:riscv64 xtrans-dev:riscv64
|
||||
# sudo apt install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu zlib1g-dev:riscv64 libbz2-dev:riscv64 libgl1-mesa-dev:riscv64 libasound2-dev:riscv64 libpulse-dev:riscv64
|
||||
|
||||
# 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=riscv64
|
||||
export ARCH_OPENSSL=riscv64
|
||||
export ARCH_CFLAGS=""
|
||||
export ARCH_CONFIGURE=riscv64-linux-gnu
|
||||
export CC="$ARCH_CONFIGURE-gcc"
|
||||
export ARCH_CMAKE_TOOLCHAIN=toolchain-riscv64.cmake
|
||||
export ARCH_MESON_TOOLCHAIN=meson-riscv64.txt
|
8
linux/toolchain-arm32.cmake
Normal file
8
linux/toolchain-arm32.cmake
Normal file
|
@ -0,0 +1,8 @@
|
|||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
set(CMAKE_C_COMPILER ${tools}/bin/arm-linux-gnueabihf-gcc)
|
||||
set(CMAKE_CXX_COMPILER ${tools}/bin/arm-linux-gnueabihf-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)
|
8
linux/toolchain-arm64.cmake
Normal file
8
linux/toolchain-arm64.cmake
Normal file
|
@ -0,0 +1,8 @@
|
|||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
set(CMAKE_C_COMPILER ${tools}/bin/aarch64-linux-gnu-gcc)
|
||||
set(CMAKE_CXX_COMPILER ${tools}/bin/aarch64-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)
|
8
linux/toolchain-ppc64le.cmake
Normal file
8
linux/toolchain-ppc64le.cmake
Normal file
|
@ -0,0 +1,8 @@
|
|||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR ppc64le)
|
||||
set(CMAKE_C_COMPILER ${tools}/bin/powerpc64le-linux-gnu-gcc)
|
||||
set(CMAKE_CXX_COMPILER ${tools}/bin/powerpc64le-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)
|
8
linux/toolchain-riscv64.cmake
Normal file
8
linux/toolchain-riscv64.cmake
Normal file
|
@ -0,0 +1,8 @@
|
|||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR riscv64)
|
||||
set(CMAKE_C_COMPILER ${tools}/bin/riscv64-linux-gnu-gcc)
|
||||
set(CMAKE_CXX_COMPILER ${tools}/bin/riscv64-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)
|
|
@ -1,12 +1,24 @@
|
|||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
|
||||
MKXPZ_PREFIX=$(uname -m)
|
||||
MKXPZ_PREFIX="$ARCH"
|
||||
if [ "$MKXPZ_PREFIX" = "" ]
|
||||
then
|
||||
MKXPZ_PREFIX=$(uname -m)
|
||||
fi
|
||||
export LDFLAGS="-L$DIR/build-${MKXPZ_PREFIX}/lib"
|
||||
export CFLAGS="-I$DIR/build-${MKXPZ_PREFIX}/include"
|
||||
MKXPZ_OLD_PC=$(pkg-config --variable pc_path pkg-config)
|
||||
if [ "$ARCH_CONFIGURE" != "" ]
|
||||
then
|
||||
MKXPZ_OLD_PC="/usr/lib/$ARCH_CONFIGURE/pkgconfig"
|
||||
fi
|
||||
|
||||
# Try to load the stuff we built first
|
||||
export PKG_CONFIG_LIBDIR="$DIR/build-${MKXPZ_PREFIX}/lib/pkgconfig:$DIR/build-${MKXPZ_PREFIX}/lib64/pkgconfig:${MKXPZ_OLD_PC}"
|
||||
export PATH="$DIR/build-${MKXPZ_PREFIX}/bin:$PATH"
|
||||
export LD_LIBRARY_PATH="$DIR/build-${MKXPZ_PREFIX}/lib:${LD_LIBRARY_PATH}"
|
||||
export MKXPZ_PREFIX="$DIR/build-${MKXPZ_PREFIX}"
|
||||
export MKXPZ_PREFIX="$DIR/build-${MKXPZ_PREFIX}"
|
||||
|
||||
# Horrifying Ruby cross-compile bug workaround
|
||||
MKXPZ_RUBY_PREFIX="$MKXPZ_PREFIX/$MKXPZ_PREFIX"
|
||||
cp -a "$MKXPZ_RUBY_PREFIX"/* "$MKXPZ_PREFIX/"
|
||||
|
|
Loading…
Add table
Reference in a new issue