Browse Source
cross compile instructions; ignore toolchain files
cross compile instructions; ignore toolchain files
Signed-off-by: lizzie <lizzie@eden-emu.dev>dynarmic-ppc64
No known key found for this signature in database
GPG Key ID: 287378CADCAB13
6 changed files with 98 additions and 26 deletions
-
1.gitignore
-
32docs/CrossCompile.md
-
1externals/powah/powah_emit.hpp
-
3src/dynarmic/src/dynarmic/backend/ppc64/code_block.h
-
1tools/README.md
-
86tools/setup-cross-sysroot.sh
@ -0,0 +1,86 @@ |
|||
#!/bin/sh -e |
|||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
die() { |
|||
echo "$@" >&2 |
|||
exit 1 |
|||
} |
|||
help() { |
|||
cat << EOF |
|||
--arch <name> Specify the target architecture (default: ppc64) |
|||
--os <name> Specify the OS sysroot to use (default: freebsd) |
|||
--sysroot <path> Specify sysroot to use |
|||
EOF |
|||
} |
|||
|
|||
TARGET_ARCH="ppc64" |
|||
TARGET_OS="freebsd" |
|||
TARGET_CMAKE="$TARGET_ARCH-pc-$TARGET_OS" |
|||
BASE_DIR="$PWD" |
|||
|
|||
while true; do |
|||
case "$1" in |
|||
--arch) shift; TARGET_ARCH=$1; [ -z "$TARGET_ARCH" ] && die "Expected argument";; |
|||
--os) shift; TARGET_OS=$1; [ -z "$TARGET_OS" ] && die "Expected argument";; |
|||
--sysroot) shift; SYSROOT=$1; [ -z "$SYSROOT" ] && die "Expected argument";; |
|||
--help) help "$@";; |
|||
--*) die "Invalid option $1" ;; |
|||
"$0" | "") break;; |
|||
esac |
|||
shift |
|||
done |
|||
|
|||
[ -z "$SYSROOT" ] && SYSROOT="$HOME/opt/$TARGET_ARCH-$TARGET_OS/sysroot" |
|||
mkdir -p "$SYSROOT" && cd "$SYSROOT" |
|||
case "$TARGET_OS" in |
|||
freebsd*) |
|||
case "$TARGET_ARCH" in |
|||
ppc64pe) URL="https://download.freebsd.org/ftp/releases/powerpc/powerpc64pe/14.3-RELEASE/base.txz" break;; |
|||
ppc64le) URL="https://download.freebsd.org/ftp/releases/powerpc/powerpc64le/14.3-RELEASE/base.txz" break;; |
|||
ppc64) URL="https://download.freebsd.org/ftp/releases/powerpc/powerpc64/14.3-RELEASE/base.txz" break;; |
|||
ppc) URL="https://download.freebsd.org/ftp/releases/powerpc/powerpc/14.3-RELEASE/base.txz" break;; |
|||
amd64 | x86_64) URL="https://download.freebsd.org/ftp/releases/amd64/14.3-RELEASE/base.txz" break;; |
|||
arm64*) URL="https://download.freebsd.org/ftp/releases/arm64/$TARGET_ARCH/14.3-RELEASE/base.txz" break;; |
|||
arm*) URL="https://download.freebsd.org/ftp/releases/arm/$TARGET_ARCH/14.3-RELEASE/base.txz" break;; |
|||
*) die "Unknown arch $TARGET_ARCH" break;; |
|||
esac |
|||
[ -z "$TARGET_CMAKE" ] && TARGET_CMAKE="$TARGET_ARCH-pc-$TARGET_OS" |
|||
[ -f "base.txz" ] || fetch "$URL" || die "Can't download" |
|||
tar -xvzf base.txz |
|||
break;; |
|||
*) die "Unknown OS $TARGET_OS" break;; |
|||
esac |
|||
|
|||
[ -z "$CC" ] && CC=$(which clang) |
|||
[ -z "$CXX" ] && CXX=$(which clang++) |
|||
|
|||
TOOLCHAIN_FILE="$BASE_DIR/$TARGET_CMAKE-toolchain.cmake" |
|||
cat << EOF >"$TOOLCHAIN_FILE" |
|||
# Script to generate .cmake toolchain files :) |
|||
# See https://man.freebsd.org/cgi/man.cgi?query=cmake-toolchains&sektion=7&manpath=FreeBSD+13.2-RELEASE+and+Ports |
|||
|
|||
set(CMAKE_SYSROOT "$SYSROOT") |
|||
set(CMAKE_STAGING_PREFIX "$SYSROOT") |
|||
|
|||
set(CMAKE_C_COMPILER $CC) |
|||
set(CMAKE_CXX_COMPILER $CXX) |
|||
set(CMAKE_C_FLAGS "--target=$TARGET_CMAKE") |
|||
set(CMAKE_CXX_FLAGS "--target=$TARGET_CMAKE") |
|||
|
|||
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) |
|||
EOF |
|||
|
|||
# cmake \ |
|||
# -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN_FILE" \ |
|||
# -DCMAKE_BUILD_TYPE=Release \ |
|||
# -B "build-$TARGET_CMAKE" \ |
|||
# -DDYNARMIC_TESTS=ON \ |
|||
# -DENABLE_QT=OFF \ |
|||
# -DENABLE_SDL2=OFF \ |
|||
# -DYUZU_USE_CPM=ON \ |
|||
# -DYUZU_USE_EXTERNAL_FFMPEG=ON |
|||
#cmake --build "build-$TARGET_CMAKE" dynarmic_tests -- -j8 |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue