fix build of C++ toolchain
[rofl0r-mmix-cross.git] / build.sh
blob45cff29d8afff3b3d06c55f11d85ddd6ce9d6a9f
1 #!/bin/sh
2 # Build a cross-compiler
3 #
4 # Copyright (C) 2012 Gregor Richards
5 #
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.
9 #
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" ]
19 then
20 MUSL_CC_BASE=`dirname "$0"`
23 # Fail on any command failing, show commands:
24 set -ex
26 BINUTILS_CONFFLAGS=
27 GCC_BOOTSTRAP_CONFFLAGS=
28 NEWLIB_CONFFLAGS=
29 GCC_CONFFLAGS=
30 WITH_SYSROOT=no
31 . "$MUSL_CC_BASE"/defs.sh
33 # Switch to the CC prefix for all of this
34 PREFIX="$CC_PREFIX"
36 # make the sysroot usr directory
37 if [ ! -e "$PREFIX"/"$TRIPLE"/usr ]
38 then
39 mkdir -p "$PREFIX"/"$TRIPLE"
40 ln -sf . "$PREFIX"/"$TRIPLE"/usr
42 if [ "$WITH_SYSROOT" = "yes" ]
43 then
44 SYSROOT_FLAGS="--with-sysroot=""$PREFIX"/"$TRIPLE"
47 # binutils
48 fetchextract binutils "$BINUTILS_URL"
49 BINUTILS_DIR=$(stripfileext $(basename $BINUTILS_URL))
50 if printf "%s" "$BINUTILS_URL" | grep "2\.[2-9][0-9]" >/dev/null 2>&1 ; then
51 BINUTILS_CONFFLAGS="$BINUTILS_CONFFLAGS --enable-deterministic-archives"
54 sed -i -e 's,MAKEINFO="$MISSING makeinfo",MAKEINFO=true,g' \
55 $BINUTILS_DIR/configure
56 buildinstall 1 $BINUTILS_DIR --target=$TRIPLE --disable-werror $SYSROOT_FLAGS \
57 $BINUTILS_CONFFLAGS
59 # gcc 1
60 if [ -z $GCC_URL ];
61 then
62 gcc_ext=bz2
63 if test $(printf "%s\n" "$GCC_VERSION" | sed 's/\.//g') -gt 540 ; then
64 gcc_ext=xz
66 fetchextract gcc http://ftp.gnu.org/gnu/gcc/gcc-$GCC_VERSION/ gcc-$GCC_VERSION .tar.${gcc_ext}
67 else
68 fetchextract gcc "$GCC_URL"
69 if [ -e $GCC_EXTRACT_DIR ]; then
70 mv $GCC_EXTRACT_DIR gcc-$GCC_VERSION
74 [ "$GCC_BUILTIN_PREREQS" = "yes" ] && gccprereqs
76 # If GCC_STAGE1_NOOPT is set, we build gcc without optimization and debug info,
77 # which reduces overall build time considerably.
78 SAVE_CFLAGS="$CFLAGS"
79 SAVE_CXXFLAGS="$CXXFLAGS"
80 if [ -z "$GCC_STAGE1_NOOPT" ]; then GCC_STAGE1_NOOPT=0; fi
81 if [ "$GCC_STAGE1_NOOPT" -ne 0 ]
82 then
83 export CFLAGS="-O0 -g0"
84 export CXXFLAGS="-O0 -g0"
87 buildinstall 1 gcc-$GCC_VERSION --target=$TRIPLE $SYSROOT_FLAGS \
88 --enable-languages=c --with-newlib --disable-libssp --disable-nls \
89 --disable-libquadmath --disable-threads --disable-decimal-float \
90 --disable-shared --disable-libmudflap --disable-libgomp --disable-libatomic \
91 $GCC_MULTILIB_CONFFLAGS \
92 $GCC_BOOTSTRAP_CONFFLAGS
94 export CFLAGS="$SAVE_CFLAGS"
95 export CXXFLAGS="$SAVE_CXXFLAGS"
97 if [ "$NEWLIB_VERSION" != "no" ]
98 then
99 PREFIX="$CC_PREFIX"
100 newlibfetchextract
101 NEWLIB_DIR=newlib-$NEWLIB_VERSION
102 sed -i -e 's,MAKEINFO="$MISSING makeinfo",MAKEINFO=true,g' \
103 $NEWLIB_DIR/configure
105 # We set both CROSS_COMPILE and CC because CC in the environment overrides
106 # and CROSS_COMPILE setting
107 buildinstall '' newlib-$NEWLIB_VERSION \
108 --target=$TRIPLE CROSS_COMPILE=${TRIPLE}- CC_FOR_TARGET=$TRIPLE-gcc $NEWLIB_CONFFLAGS
110 # if it didn't build libc.so, disable dynamic linking
111 if [ ! -e "$CC_PREFIX/$TRIPLE/lib/libc.so" ]
112 then
113 GCC_CONFFLAGS="--disable-shared $GCC_CONFFLAGS"
116 # gcc 2
117 buildinstall 2 gcc-$GCC_VERSION --target=$TRIPLE $SYSROOT_FLAGS \
118 --enable-languages=$LANGUAGES --disable-libmudflap \
119 --disable-libsanitizer --disable-nls \
120 --disable-libssp \
121 --with-newlib \
122 $GCC_MULTILIB_CONFFLAGS \
123 $GCC_CONFFLAGS
126 echo "looks as if it worked o.0"
128 test -z "$ENABLE_POST_BUILD_HOOK" || post_build_hook
129 exit 0