update cross compile tooling

This commit is contained in:
Corentin Le Molgat
2024-07-12 15:50:25 +02:00
parent d5359da8d3
commit d38fcfbee0
2 changed files with 64 additions and 48 deletions

View File

@@ -104,12 +104,15 @@ help:
@echo -e "\t${BOLD}clean_toolchains${RESET}: Remove ALL cache and docker image."
@echo
@echo -e "\tWith ${BOLD}<toolchain>${RESET}:"
@echo -e "\t\t${BOLD}aarch64${RESET} (bootlin toolchain)"
@echo -e "\t\t${BOLD}aarch64be${RESET} (bootlin toolchain)"
@echo -e "\t\t${BOLD}mips64${RESET} (codespace toolchain)"
@echo -e "\t\t${BOLD}mips64el${RESET} (codespace toolchain)"
@echo -e "\t\t${BOLD}ppc64${RESET} (bootlin toolchain)"
@echo -e "\t\t${BOLD}ppc64le${RESET} (bootlin toolchain)"
@echo -e "\t\t${BOLD}aarch64${RESET} (alias: arm64) (bootlin toolchain)"
@echo -e "\t\t${BOLD}aarch64be${RESET} (alias: arm64be) (bootlin toolchain)"
@echo -e "\t\t${BOLD}mips64-r6${RESET} (alias: mips64) (codespace toolchain)"
@echo -e "\t\t${BOLD}mips64el-r6${RESET} (alias: mips64el) (codespace toolchain)"
@echo -e "\t\t${BOLD}mips64-r2${RESET} (codespace toolchain)"
@echo -e "\t\t${BOLD}mips64el-r2${RESET} (codespace toolchain)"
@echo -e "\t\t${BOLD}ppc64-power8${RESET} (alias: ppc64) (bootlin toolchain)"
@echo -e "\t\t${BOLD}ppc64le-power8${RESET} (alias: ppc64le) (bootlin toolchain)"
@echo -e "\t\t${BOLD}riscv64${RESET} (bootlin toolchain)"
@echo
@echo -e "\tWith ${BOLD}<toolchain_stage>${RESET}:"
@echo -e "\t\t${BOLD}env${RESET}"
@@ -117,7 +120,7 @@ help:
@echo -e "\t\t${BOLD}build${RESET}"
@echo -e "\t\t${BOLD}test${RESET}"
@echo -e "\te.g. 'make toolchain_mips64_build'"
@echo -e "\te.g. 'make toolchain_aarch64_test'"
@echo -e "\te.g. 'make toolchain_arm64_test'"
@echo
@echo -e "\tBuild for web using emscripten."
@echo -e "\t${BOLD}web_<web_stage>${RESET}: build the emscripten <web_stage>."
@@ -615,10 +618,14 @@ clean_platforms: $(addprefix clean_, $(PLATFORMS))
## TOOLCHAIN ##
###############
TOOLCHAIN_TARGETS := \
aarch64 aarch64be \
mips64 mips64el \
ppc64 ppc64le
TOOLCHAIN_STAGES := env devel build test
arm64 aarch64 \
arm64be aarch64be \
mips64 mips64-r6 mips64-r2 \
mips64el mips64el-r6 mips64el-r2 \
ppc64 ppc64-power8 \
ppc64le ppc64le-power8 \
riscv64
TOOLCHAIN_STAGES := env devel toolchain build test
define toolchain-stage-target =
#$$(info STAGE: $1)

View File

@@ -46,7 +46,7 @@ function install_qemu() {
>&2 echo 'QEMU is disabled !'
return 0
fi
local -r QEMU_VERSION=${QEMU_VERSION:=8.0.0}
local -r QEMU_VERSION=${QEMU_VERSION:=9.0.1}
local -r QEMU_TARGET=${QEMU_ARCH}-linux-user
if echo "${QEMU_VERSION} ${QEMU_TARGET}" | cmp --silent "${QEMU_INSTALL}/.build" -; then
@@ -106,37 +106,42 @@ function clean_build() {
function expand_bootlin_config() {
# ref: https://toolchains.bootlin.com/
local -r GCC_DIR=${ARCHIVE_DIR}/${GCC_RELATIVE_DIR}
case "${TARGET}" in
"aarch64")
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--glibc--stable-2021.11-1.tar.bz2"
"arm64" | "aarch64")
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--glibc--stable-2024.02-1.tar.bz2"
local -r GCC_PREFIX="aarch64"
local -r GCC_SUFFIX=""
;;
"aarch64be")
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--glibc--stable-2021.11-1.tar.bz2"
"arm64be" | "aarch64be")
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--glibc--stable-2024.02-1.tar.bz2"
local -r GCC_PREFIX="aarch64_be"
;;
"ppc64le" | "ppc64le-power8")
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--glibc--stable-2021.11-1.tar.bz2"
local -r GCC_PREFIX="powerpc64le"
;;
"ppc64" | "ppc64-power8")
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--glibc--stable-2021.11-1.tar.bz2"
local -r GCC_PREFIX="powerpc64"
;;
"ppc-e500mc")
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--glibc--stable-2021.11-1.tar.bz2"
local -r GCC_PREFIX="powerpc"
QEMU_ARGS+=( -cpu "e500mc" )
local -r GCC_SUFFIX=""
;;
"ppc" | "ppc-440fp")
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--glibc--stable-2021.11-1.tar.bz2"
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--glibc--stable-2024.02-1.tar.bz2"
local -r GCC_PREFIX="powerpc"
local -r GCC_SUFFIX=""
;;
"ppc-e500mc")
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--glibc--stable-2024.02-1.tar.bz2"
local -r GCC_PREFIX="powerpc"
local -r GCC_SUFFIX=""
QEMU_ARGS+=( -cpu "e500mc" )
;;
"ppc64" | "ppc64-power8")
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--glibc--stable-2024.02-1.tar.bz2"
local -r GCC_PREFIX="powerpc64"
local -r GCC_SUFFIX=""
;;
"ppc64le" | "ppc64le-power8")
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--glibc--stable-2024.02-1.tar.bz2"
local -r GCC_PREFIX="powerpc64le"
local -r GCC_SUFFIX=""
;;
"riscv64")
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--glibc--stable-2022.08-1.tar.bz2"
local -r TOOLCHAIN_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--glibc--stable-2024.02-1.tar.bz2"
local -r GCC_PREFIX="riscv64"
local -r GCC_SUFFIX=""
;;
*)
>&2 echo 'unknown power platform'
@@ -152,7 +157,7 @@ function expand_bootlin_config() {
mv "${EXTRACT_DIR}" "${TOOLCHAIN_DIR}"
fi
local -r SYSROOT_DIR="${TOOLCHAIN_DIR}/${GCC_PREFIX}-buildroot-linux-gnu/sysroot"
local -r SYSROOT_DIR="${TOOLCHAIN_DIR}/${GCC_PREFIX}-buildroot-linux-gnu${GCC_SUFFIX}/sysroot"
#local -r STAGING_DIR=${SYSROOT_DIR}-stage
# Write a Toolchain file
@@ -353,9 +358,9 @@ DESCRIPTION
\t* PROJECT: glop or-tools
\t* TARGET:
\t\tx86_64
\t\taarch64 aarch64be (bootlin)
\t\tmips64 mips64el (codespace)
\t\tppc (bootlin)
\t\taarch64(arm64) aarch64be(arm64be) (bootlin)
\t\tmips64-r6(mips64) mips64el-r6(mips64el) mips64-r2 mips64el-r2 (codespace)
\t\tppc-440fp(ppc) ppc-e500mc (bootlin)
\t\tppc64 ppc64le (bootlin)
\t\triscv64 (bootlin)
@@ -417,27 +422,31 @@ function main() {
case ${TARGET} in
x86_64)
declare -r QEMU_ARCH=x86_64 ;;
aarch64)
arm64 | aarch64)
expand_bootlin_config
declare -r QEMU_ARCH=aarch64 ;;
aarch64be)
arm64be | aarch64be)
expand_bootlin_config
declare -r QEMU_ARCH=aarch64_be ;;
mips64)
mips64 | mips64-r6 | mips64-r2)
expand_codescape_config
declare -r QEMU_ARCH=mips64 ;;
mips64el)
mips64el | mips64el-r6 | mips64el-r2)
expand_codescape_config
declare -r QEMU_ARCH=mips64el ;;
ppc64le)
expand_bootlin_config
declare -r QEMU_ARCH=ppc64le ;;
ppc64)
expand_bootlin_config
declare -r QEMU_ARCH=ppc64 ;;
ppc)
ppc | ppc-440fp | ppc-e500mc )
expand_bootlin_config
declare -r QEMU_ARCH=ppc ;;
ppc64 | ppc64-power8)
expand_bootlin_config
declare -r QEMU_ARCH=ppc64 ;;
ppc64le | ppc64le-power8)
expand_bootlin_config
declare -r QEMU_ARCH=ppc64le ;;
riscv64)
expand_bootlin_config
declare -r QEMU_ARCH=riscv64 ;;