Refactor build script.

This commit is contained in:
2025-10-11 03:35:57 +01:00
parent b0500f7c43
commit 1d76c44f64

179
build.sh
View File

@@ -1,138 +1,51 @@
#!/bin/bash
## Linux (ARMv7-A)
# Detected system processor: arm
rm -f CMakeCache.txt
mkdir -p runtimes/linux-arm/native
docker run --rm dockcross/linux-armv7a-lts >docker/dockcross-linux-arm
chmod +x docker/dockcross-linux-arm
docker/dockcross-linux-arm cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
docker/dockcross-linux-arm make
mv libaaruformat.so runtimes/linux-arm/native/
set -e
## Linux (ARM64)
# Detected system processor: aarch64
rm -f CMakeCache.txt
mkdir -p runtimes/linux-arm64/native
docker run --rm dockcross/linux-arm64-lts >docker/dockcross-linux-arm64
chmod +x docker/dockcross-linux-arm64
docker/dockcross-linux-arm64 cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
docker/dockcross-linux-arm64 make
mv libaaruformat.so runtimes/linux-arm64/native/
## Linux (MIPS64)
# Detected system processor: mips
rm -f CMakeCache.txt
mkdir -p runtimes/linux-mips64/native
docker run --rm dockcross/linux-mips >docker/dockcross-linux-mips64
chmod +x docker/dockcross-linux-mips64
docker/dockcross-linux-mips64 cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
docker/dockcross-linux-mips64 make
mv libaaruformat.so runtimes/linux-mips64/native/
## Linux (ARM64), musl
# Detected system processor: aarch64
rm -f CMakeCache.txt
mkdir -p runtimes/linux-musl-arm64/native
docker run --rm dockcross/linux-arm64-musl >docker/dockcross-linux-musl-arm64
chmod +x docker/dockcross-linux-musl-arm64
docker/dockcross-linux-musl-arm64 cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
docker/dockcross-linux-musl-arm64 make
mv libaaruformat.so runtimes/linux-musl-arm64/native/
## Linux (s390x)
# Detected system processor: s390x
rm -f CMakeCache.txt
mkdir -p runtimes/linux-s390x/native
docker run --rm dockcross/linux-s390x >docker/dockcross-linux-s390x
chmod +x docker/dockcross-linux-s390x
docker/dockcross-linux-s390x cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
docker/dockcross-linux-s390x make
mv libaaruformat.so runtimes/linux-s390x/native/
## Linux (amd64)
# Detected system processor: x86_64
rm -f CMakeCache.txt
mkdir -p runtimes/linux-x64/native
docker run --rm dockcross/linux-x64 >docker/dockcross-linux-x64
chmod +x docker/dockcross-linux-x64
docker/dockcross-linux-x64 cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
docker/dockcross-linux-x64 make
mv libaaruformat.so runtimes/linux-x64/native/
## Linux (x86)
# Detected system processor: i686
rm -f CMakeCache.txt
mkdir -p runtimes/linux-x86/native
docker run --rm dockcross/linux-x86 > docker/dockcross-linux-x86
chmod +x docker/dockcross-linux-x86
docker/dockcross-linux-x86 cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
docker/dockcross-linux-x86 make
mv libaaruformat.so runtimes/linux-x86/native/
## Linux (ppc64le)
# Detected system processor: ppc64le
rm -f CMakeCache.txt
mkdir -p runtimes/linux-ppc64le/native
docker run --rm dockcross/linux-ppc64le > docker/dockcross-linux-ppc64le
chmod +x docker/dockcross-linux-ppc64le
docker/dockcross-linux-ppc64le cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
docker/dockcross-linux-ppc64le make
mv libaaruformat.so runtimes/linux-ppc64le/native/
## Windows (ARM)
# Detected system processor: arm
rm -f CMakeCache.txt
mkdir -p runtimes/win-arm/native
docker run --rm dockcross/windows-armv7 > docker/dockcross-win-arm
chmod +x docker/dockcross-win-arm
docker/dockcross-win-arm cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
docker/dockcross-win-arm make
mv libaaruformat.dll runtimes/win-arm/native/
## Windows (ARM64)
# Detected system processor: aarch64
rm -f CMakeCache.txt
mkdir -p runtimes/win-arm64/native
docker run --rm dockcross/windows-arm64 > docker/dockcross-win-arm64
chmod +x docker/dockcross-win-arm64
docker/dockcross-win-arm64 cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
docker/dockcross-win-arm64 make
mv libaaruformat.dll runtimes/win-arm64/native/
## Windows (AMD64)
# Detected system processor: x86_64
# TODO: Requires MSVCRT.DLL
rm -f CMakeCache.txt
mkdir -p runtimes/win-x64/native
docker run --rm dockcross/windows-shared-x64 >docker/dockcross-win-x64
chmod +x docker/dockcross-win-x64
docker/dockcross-win-x64 cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
docker/dockcross-win-x64 make
mv libaaruformat.dll runtimes/win-x64/native/
## Windows (x86)
# Detected system processor: i686
# TODO: Requires MSVCRT.DLL
rm -f CMakeCache.txt
mkdir -p runtimes/win-x86/native
docker run --rm dockcross/windows-shared-x86 > docker/dockcross-win-x86
chmod +x docker/dockcross-win-x86
docker/dockcross-win-x86 cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
docker/dockcross-win-x86 make
mv libaaruformat.dll runtimes/win-x86/native/
## Mac OS X (arm64 and x64)
if [[ ${OS_NAME} == Darwin ]]; then
# Function to build for a target using dockcross
build_with_dockcross() {
local docker_image="$1"
local script_name="$2"
local output_ext="$3"
local runtime_dir="$4"
echo "\n==== Building for $runtime_dir ===="
rm -f CMakeCache.txt
cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 -DAARU_MACOS_TARGET_ARCH=x86_64 .
make
mkdir -p runtimes/osx-x64/native
mv libaaruformat.dylib runtimes/osx-x64/native
mkdir -p "$runtime_dir"
docker run --rm "$docker_image" > "docker/$script_name"
chmod +x "docker/$script_name"
"docker/$script_name" cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 .
"docker/$script_name" make
mv "libaaruformat.$output_ext" "$runtime_dir/"
rm -f "docker/$script_name"
}
rm -f CMakeCache.txt
cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 -DAARU_MACOS_TARGET_ARCH=arm64 .
make
mkdir -p runtimes/osx-arm64/native
mv libaaruformat.dylib runtimes/osx-arm64/native
# Linux targets
build_with_dockcross dockcross/linux-armv7a-lts dockcross-linux-arm so runtimes/linux-arm/native
build_with_dockcross dockcross/linux-arm64-lts dockcross-linux-arm64 so runtimes/linux-arm64/native
build_with_dockcross dockcross/linux-mips dockcross-linux-mips64 so runtimes/linux-mips64/native
build_with_dockcross dockcross/linux-arm64-musl dockcross-linux-musl-arm64 so runtimes/linux-musl-arm64/native
build_with_dockcross dockcross/linux-s390x dockcross-linux-s390x so runtimes/linux-s390x/native
build_with_dockcross dockcross/linux-x64 dockcross-linux-x64 so runtimes/linux-x64/native
build_with_dockcross dockcross/linux-x86 dockcross-linux-x86 so runtimes/linux-x86/native
build_with_dockcross dockcross/linux-ppc64le dockcross-linux-ppc64le so runtimes/linux-ppc64le/native
# Windows targets
build_with_dockcross dockcross/windows-armv7 dockcross-win-arm dll runtimes/win-arm/native
build_with_dockcross dockcross/windows-arm64 dockcross-win-arm64 dll runtimes/win-arm64/native
build_with_dockcross dockcross/windows-shared-x64 dockcross-win-x64 dll runtimes/win-x64/native
build_with_dockcross dockcross/windows-shared-x86 dockcross-win-x86 dll runtimes/win-x86/native
# Mac OS X targets
if [[ $(uname) == Darwin ]]; then
build_macos() {
local arch="$1"
local runtime_dir="$2"
echo "\n==== Building for $runtime_dir ===="
rm -f CMakeCache.txt
cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 -DAARU_MACOS_TARGET_ARCH="$arch" .
make
mkdir -p "$runtime_dir"
mv libaaruformat.dylib "$runtime_dir/"
}
build_macos x86_64 runtimes/osx-x64/native
build_macos arm64 runtimes/osx-arm64/native
fi