Ticket #2982: build_system_new_gcc-4.3.2.2.patch

File build_system_new_gcc-4.3.2.2.patch, 6.7 KB (added by aljen, 15 years ago)

oops, wrong gcc source dir in build tools patch, fixed version

  • build/scripts/build_cross_tools_gcc4

     
    44
    55# get and check the parameters
    66if [ $# -lt 3 ]; then
    7     echo Usage: $0 '<machine> <haiku sourcedir> <buildtools dir> [ <haiku output dir> ]' >&2
     7    echo "\033[1m\E[37;33mUsage: \033[0m$0 '<machine> <haiku sourcedir> <buildtools dir> [ <haiku output dir> ]'" >&2
    88    exit 1
    99fi
    1010
     
    2929fi
    3030
    3131if [ ! -d $haikuSourceDir ]; then
    32     echo "No such directory: \"$haikuSourceDir\"" >&2
     32    echo "\033[1m\E[37;31mERROR: \033[0mNo such directory: \"$haikuSourceDir\"" >&2
    3333    exit 1
    3434fi
    3535
    3636if [ ! -d $buildToolsDir ]; then
    37     echo "No such directory: \"$buildToolsDir\"" >&2
     37    echo "\033[1m\E[37;31mERROR: \033[0mNo such directory: \"$buildToolsDir\"" >&2
    3838    exit 1
    3939fi
    4040
     
    5757cd $haikuOutputDir
    5858haikuOutputDir=$(pwd)
    5959
    60 binutilsSourceDir=$buildToolsDir/binutils
    61 gccSourceDir=$buildToolsDir/gcc
     60#binutilsSourceDir=$buildToolsDir/binutils
     61binutilsSourceDir=$buildToolsDir/binutils-2.18
     62gmpSourceDir=$buildToolsDir/gmp-4.2.4
     63mpfrSourceDir=$buildToolsDir/mpfr-2.3.2
     64#gccSourceDir=$buildToolsDir/gcc
     65gccSourceDir=$buildToolsDir/gcc-4.3.2
    6266
    6367
    6468# get gcc version
    6569gccVersion=$(cat $gccSourceDir/gcc/BASE-VER)
    6670
    6771if [ -z "$gccVersion" ]; then
    68     echo "Failed to find out gcc version." >&2
     72    echo "\033[1m\E[37;31mERROR: \033[0mFailed to find out gcc version." >&2
    6973    exit 1
    7074fi
    7175
     
    7377# create the object and installation directories for the cross compilation tools
    7478installDir=$haikuOutputDir/cross-tools
    7579objDir=$haikuOutputDir/cross-tools-build
     80gmpObjDir=$objDir/gmp
     81mpfrObjDir=$objDir/mpfr
    7682binutilsObjDir=$objDir/binutils
    7783gccObjDir=$objDir/gcc
    7884tmpIncludeDir=$objDir/sysincludes
     
    8086
    8187rm -rf $installDir $objDir
    8288
    83 mkdir -p $installDir $objDir $binutilsObjDir $gccObjDir $tmpIncludeDir \
    84     $tmpLibDir || exit 1
     89mkdir -p $installDir $objDir $gmpObjDir $mpfrObjDir $binutilsObjDir $gccObjDir \
     90    $tmpIncludeDir $tmpLibDir $installDir/bin || exit 1
    8591mkdir -p $installDir/lib/gcc/$haikuMachine/$gccVersion
    8692
     93export PATH=$PATH:$installDir/bin
    8794
     95# build gmp
     96cd $gmpObjDir
     97echo "\033[1m\E[37;32mBuilding GMP...\033[0m"
     98CFLAGS="-O2" CXXFLAGS="-O2" $gmpSourceDir/configure \
     99    --prefix=$installDir || exit 1
     100$MAKE || exit 1
     101$MAKE install || exit 1
     102
     103# build mpfr
     104cd $mpfrObjDir
     105echo "\033[1m\E[37;32mBuilding MPFR...\033[0m"
     106CFLAGS="-O2" CXXFLAGS="-O2" $mpfrSourceDir/configure \
     107    --prefix=$installDir --with-gmp=$installDir || exit 1
     108$MAKE || exit 1
     109$MAKE install || exit 1
     110
    88111# build binutils
    89112cd $binutilsObjDir
     113echo "\033[1m\E[37;32mBuilding binutils for target $haikuMachine\033[0m"
    90114CFLAGS="-O2" CXXFLAGS="-O2" $binutilsSourceDir/configure \
    91115    --prefix=$installDir --target=$haikuMachine --disable-nls \
     116    --with-mpfr=$installDir --with-gmp=$installDir \
    92117    --disable-shared || exit 1
    93118$MAKE || exit 1
    94119$MAKE install || exit 1
    95120
    96 export PATH=$PATH:$installDir/bin
    97 
    98 
    99121# build gcc
    100122
    101123# prepare the include files
     
    118140
    119141# configure gcc
    120142cd $gccObjDir
     143echo "\033[1m\E[37;32mBuilding gcc for target $haikuMachine\033[0m"
    121144CFLAGS="-O2" CXXFLAGS="-O2" $gccSourceDir/configure --prefix=$installDir \
    122145    --target=$haikuMachine --disable-nls --disable-shared \
    123146    --enable-languages=c,c++ --with-headers=$tmpIncludeDir \
    124     --with-libs=$tmpLibDir || exit 1
     147    --with-libs=$tmpLibDir --with-gmp=$installDir \
     148    --with-mpfr=$installDir --with-dwarf2 || exit 1
    125149
    126 # make gcc
     150make gcc
    127151$MAKE || {
    128     echo "ERROR: Building gcc failed." >&2
     152    echo "\033[1m\E[37;31mERROR: \033[0mBuilding gcc failed." >&2
    129153    exit 1
    130154}
    131155
    132 # install gcc
     156 install gcc
    133157$MAKE install || {
    134     echo "ERROR: Installing the cross compiler failed." >&2
     158    echo "\033[1m\E[37;31mERROR: \033[0mInstalling the cross compiler failed." >&2
    135159    exit 1
    136160}
    137161
     
    142166sysIncludeDir=$installDir/$haikuMachine/sys-include
    143167rm -rf $sysIncludeDir/be $sysIncludeDir/posix
    144168
     169echo "\033[1m\E[37;32mApplying gcc 4.3.2 fixes...\033[0m"
     170# gcc-4.3 fix:
     171# restore {sys}limits.h from gcc new include-fixed dir
     172# into old include
     173
     174tmpGccIncludeDir=$installDir/lib/gcc/$haikuMachine/$gccVersion
     175cp $tmpGccIncludeDir/include-fixed/*.h $tmpGccIncludeDir/include
     176
     177# gcc-4.3 fix:
     178# this version has a bug with #include_next, simply it includes c++ headers before c headers
     179# so this makes error when including c++ c* headers (cstddef for example), it tryies
     180# to #include_next <stddef}.h> which can't be found due to includes order issue
     181# TODO: remove this ugly hack, when it will be fixed
     182
     183fix_include()
     184{
     185    headerToFix=$1
     186    headerToFixTmp="${headerToFix}.tmp"
     187    mv $headerToFix $headerToFixTmp
     188    sed s/include_next/include/g < $headerToFixTmp > $headerToFix
     189    rm $headerToFixTmp
     190}
     191
     192tmpGccIncludeDir=$installDir/$haikuMachine/include/c++/$gccVersion
     193fix_include "$tmpGccIncludeDir/cassert"
     194fix_include "$tmpGccIncludeDir/cctype"
     195fix_include "$tmpGccIncludeDir/cerrno"
     196fix_include "$tmpGccIncludeDir/cfloat"
     197fix_include "$tmpGccIncludeDir/climits"
     198fix_include "$tmpGccIncludeDir/clocale"
     199fix_include "$tmpGccIncludeDir/cmath"
     200fix_include "$tmpGccIncludeDir/csetjmp"
     201fix_include "$tmpGccIncludeDir/csignal"
     202fix_include "$tmpGccIncludeDir/cstdbool"
     203fix_include "$tmpGccIncludeDir/cstdio"
     204fix_include "$tmpGccIncludeDir/cstdlib"
     205fix_include "$tmpGccIncludeDir/cstring"
     206fix_include "$tmpGccIncludeDir/ctime"
     207fix_include "$tmpGccIncludeDir/cwchar"
     208fix_include "$tmpGccIncludeDir/cwctype"
     209
    145210# remove the objects dir
    146211rm -rf $objDir
    147212
    148 
    149 echo "binutils and gcc for cross compilation have been built successfully!"
     213echo "\033[1m\E[37;32mGMP, MPFR, Binutils and GCC for cross compilation have been built successfully!\033[0m"
  • configure

     
    132132            haikuSharedLibStdCxx=`$HAIKU_CC -print-file-name=libstdc++.so`
    133133            haikuStaticLibSupCxx=`$HAIKU_CC -print-file-name=libsupc++.a`
    134134            haikuSharedLibSupCxx=`$HAIKU_CC -print-file-name=libsupc++.so`
    135             local headers=$gccdir/../../../../include/c++/$haikuGCCVersion
     135            # local headers=$gccdir/../../../../include/c++/$haikuGCCVersion
     136            local headers=$outputDir/cross-tools/$haikuGCCMachine/include/c++/$haikuGCCVersion
    136137            haikuCxxHeadersDir=$headers
    137138            for d in $haikuGCCMachine backward ext; do
    138139                # Note: We need the line break, otherwise the line might become
     
    267268            buildCrossTools=$3
    268269            buildCrossToolsScript="${buildCrossToolsScript}_gcc4"
    269270            case "$2" in
     271                arm)    haikuGCCMachine=arm-unknow-haiku;;
    270272                x86)    haikuGCCMachine=i586-pc-haiku;;
    271273                ppc)    haikuGCCMachine=powerpc-apple-haiku;;
    272274                m68k)   haikuGCCMachine=m68k-unknown-haiku;;