2 # Build a cross-compiler
4 # Copyright (C) 2012 Gregor Richards
6 # Permission to use, copy, modify, and/or distribute this software for any
7 # purpose with or without fee is hereby granted, provided that the above
8 # copyright notice and this permission notice appear in all copies.
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
11 # REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
12 # AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
13 # INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
14 # LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
15 # OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16 # PERFORMANCE OF THIS SOFTWARE.
18 if [ ! "$MUSL_CC_BASE" ]
20 MUSL_CC_BASE
=`dirname "$0"`
23 # Fail on any command failing, show commands:
27 GCC_BOOTSTRAP_CONFFLAGS
=
30 .
"$MUSL_CC_BASE"/defs.sh
32 # Switch to the CC prefix for all of this
35 # make the sysroot usr directory
36 if [ ! -e "$PREFIX"/"$TRIPLE"/usr
]
38 mkdir
-p "$PREFIX"/"$TRIPLE"
39 ln -sf .
"$PREFIX"/"$TRIPLE"/usr
43 if [ "$BINUTILS_VERSION" = "2.17" ]
45 # The version of the latest GPLv2 binutils on gnu.org is a lie...
46 fetchextract http
://landley.net
/aboriginal
/mirror
/ binutils-
$BINUTILS_VERSION .
tar.bz2
48 fetchextract http
://ftp.gnu.org
/gnu
/binutils
/ binutils-
$BINUTILS_VERSION .
tar.bz2
51 sed -i 's,MAKEINFO="$MISSING makeinfo",MAKEINFO=true,g' \
52 binutils-
$BINUTILS_VERSION/configure
53 buildinstall
1 binutils-
$BINUTILS_VERSION --target=$TRIPLE --disable-werror \
54 --with-sysroot="$PREFIX"/"$TRIPLE" \
58 fetchextract http
://ftp.gnu.org
/gnu
/gcc
/gcc-
$GCC_VERSION/ gcc-
$GCC_VERSION .
tar.bz2
59 [ "$GCC_BUILTIN_PREREQS" = "yes" ] && gccprereqs
60 buildinstall
1 gcc-
$GCC_VERSION --target=$TRIPLE \
61 --with-sysroot="$PREFIX"/"$TRIPLE" \
62 --enable-languages=c
--with-newlib --disable-multilib --disable-libssp \
63 --disable-libquadmath --disable-threads --disable-decimal-float \
64 --disable-shared --disable-libmudflap --disable-libgomp --disable-libatomic \
65 $GCC_BOOTSTRAP_CONFFLAGS
68 fetchextract http
://www.kernel.org
/pub
/linux
/kernel
/v3.0
/ linux-
$LINUX_HEADERS_VERSION .
tar.bz2
69 if [ ! -e linux-
$LINUX_HEADERS_VERSION/configured
]
72 cd linux-
$LINUX_HEADERS_VERSION
73 make $LINUX_DEFCONFIG ARCH
=$LINUX_ARCH
77 if [ ! -e linux-
$LINUX_HEADERS_VERSION/installedheaders
]
80 cd linux-
$LINUX_HEADERS_VERSION
81 make headers_install ARCH
=$LINUX_ARCH INSTALL_HDR_PATH
="$CC_PREFIX/$TRIPLE"
82 touch installedheaders
86 if [ "$MUSL_VERSION" != "no" ]
89 PREFIX
="$CC_PREFIX/$TRIPLE"
91 buildinstall
'' musl-
$MUSL_VERSION \
92 --enable-debug CC
="$TRIPLE-gcc" $MUSL_CONFFLAGS
96 # if it didn't build libc.so, disable dynamic linking
97 if [ ! -e "$CC_PREFIX/$TRIPLE/lib/libc.so" ]
99 GCC_CONFFLAGS
="--disable-shared $GCC_CONFFLAGS"
103 buildinstall
2 gcc-
$GCC_VERSION --target=$TRIPLE \
104 --with-sysroot="$PREFIX"/"$TRIPLE" \
105 --enable-languages=$LANGUAGES --disable-multilib --disable-libmudflap \
106 --disable-libsanitizer \
111 rm -rf "$CC_PREFIX/lib/gcc/$TRIPLE"/*/include-fixed
/ "$CC_PREFIX/lib/gcc/$TRIPLE"/*/include
/stddef.h
113 # make backwards-named compilers for easier cross-compiling
116 for tool
in $TRIPLE-*
118 btool
=`echo "$tool" | sed 's/-linux-musl/-musl-linux/'`
119 [ "$tool" != "$btool" -a ! -e "$btool" ] && ln -s $tool $btool