mirror of
https://gitlab.alpinelinux.org/alpine/abuild.git
synced 2025-01-11 09:19:40 +00:00
abuild: improve cross compiling support
This commit is contained in:
parent
9f8ef6b870
commit
26ec31c6c2
@ -2184,6 +2184,10 @@ Commands:
|
||||
up2date Compare target and sources dates
|
||||
verify Verify checksums
|
||||
|
||||
To activate cross compilation specify in environment:
|
||||
CHOST Arch or hostspec of machine to generate packages for
|
||||
CTARGET Arch or hostspec of machine to generate compiler for
|
||||
|
||||
EOF
|
||||
exit 0
|
||||
}
|
||||
|
@ -3,6 +3,17 @@
|
||||
sysconfdir=@sysconfdir@
|
||||
program=${0##*/}
|
||||
|
||||
arch_to_hostspec() {
|
||||
case "$1" in
|
||||
aarch64) echo "aarch64-alpine-linux-musl" ;;
|
||||
armhf) echo "armhf-alpine-linux-muslgnueabihf" ;;
|
||||
armv7) echo "armv7-alpine-linux-musleabihf" ;;
|
||||
x86) echo "i586-alpine-linux-musl" ;;
|
||||
x86_64) echo "x86_64-alpine-linux-musl" ;;
|
||||
*) echo "unknown" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
hostspec_to_arch() {
|
||||
case "$1" in
|
||||
aarch64*-*-*-*) echo "aarch64" ;;
|
||||
@ -89,11 +100,39 @@ readconfig() {
|
||||
[ -z "$CBUILD" ] && CBUILD="$(gcc -dumpmachine)"
|
||||
[ -z "$CHOST" ] && CHOST="$CBUILD"
|
||||
[ -z "$CTARGET" ] && CTARGET="$CHOST"
|
||||
[ "$(arch_to_hostspec $CBUILD)" != "unknown" ] && CBUILD="$(arch_to_hostspec $CBUILD)"
|
||||
[ "$(arch_to_hostspec $CHOST)" != "unknown" ] && CHOST="$(arch_to_hostspec $CHOST)"
|
||||
[ "$(arch_to_hostspec $CTARGET)" != "unknown" ] && CTARGET="$(arch_to_hostspec $CTARGET)"
|
||||
|
||||
[ -z "$CARCH" ] && CARCH="$(hostspec_to_arch $CHOST)"
|
||||
[ -z "$CLIBC" ] && CLIBC="$(hostspec_to_libc $CHOST)"
|
||||
[ -z "$CTARGET_ARCH" ] && CTARGET_ARCH="$(hostspec_to_arch $CTARGET)"
|
||||
[ -z "$CTARGET_LIBC" ] && CTARGET_LIBC="$(hostspec_to_libc $CTARGET)"
|
||||
|
||||
if [ "$CHOST" != "$CTARGET" ]; then
|
||||
# setup environment for creating cross compiler
|
||||
[ -z "$CBUILDROOT" ] && export CBUILDROOT="$HOME/sysroot-$CTARGET_ARCH/"
|
||||
elif [ "$CBUILD" != "$CHOST" ]; then
|
||||
# setup build root
|
||||
[ -z "$CBUILDROOT" ] && export CBUILDROOT="$HOME/sysroot-$CTARGET_ARCH/"
|
||||
# prepare pkg-config for cross building
|
||||
[ -z "$PKG_CONFIG_PATH" ] && export PKG_CONFIG_PATH="${CBUILDROOT}/usr/lib/pkgconfig/"
|
||||
[ -z "$PKG_CONFIG_SYSROOT_DIR" ] && export PKG_CONFIG_SYSROOT_DIR="${CBUILDROOT}"
|
||||
# libtool bug workaround for extra rpaths
|
||||
[ -z "$lt_cv_sys_lib_dlsearch_path_spec" ] && \
|
||||
export lt_cv_sys_lib_dlsearch_path_spec="${CBUILDROOT}/lib ${CBUILDROOT}/usr/lib /usr/lib /lib /usr/local/lib"
|
||||
# setup cross-compiler
|
||||
if [ -z "$CROSS_COMPILE" ]; then
|
||||
export CROSS_COMPILE="${CHOST}-"
|
||||
export CC=${CROSS_COMPILE}gcc
|
||||
export CXX=${CROSS_COMPILE}g++
|
||||
export LD=${CROSS_COMPILE}ld
|
||||
export CPPFLAGS="--sysroot=${CBUILDROOT} $CPPFLAGS"
|
||||
export CXXFLAGS="--sysroot=${CBUILDROOT} $CXXFLAGS"
|
||||
export CFLAGS="--sysroot=${CBUILDROOT} $CFLAGS"
|
||||
export LDFLAGS="--sysroot=${CBUILDROOT} $LDFLAGS"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
readconfig
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user