Changeset 8546c13


Ignore:
Timestamp:
Mar 7, 2006, 3:30:04 AM (18 years ago)
Author:
Jim Gifford <clfs@…>
Branches:
clfs-1.2, clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
Children:
7efeff4
Parents:
c7ec163
Message:

r2474@server (orig r1231): ryan | 2006-03-06 23:56:36 -0800

r1233@rei: lfs | 2006-03-07 18:48:37 +1100
Update for gcc-4.1.0 release


File:
1 edited

Legend:

Unmodified
Added
Removed
  • scripts/scripts/target-scripts/target-gcc.sh

    rc7ec163 r8546c13  
    101101           apply_patch gcc-4.0.0-clean_exec_and_lib_search_paths_when_cross-1
    102102   ;;
     103   4.0.* ) apply_patch gcc-4.0.0-clean_exec_and_lib_search_paths_when_cross-1 ;;
     104   4.1.* ) apply_patch gcc-4.0.0-clean_exec_and_lib_search_paths_when_cross-1 ;;
    103105esac
    104106
     
    148150# We get around this by substituting our cross-compiler here for xgcc,
    149151# by rights it should have the same specs and produce the expected results
    150 cd ${SRC}/${PKGDIR}/gcc
    151 test -f mklibgcc.in-ORIG ||
    152    mv mklibgcc.in mklibgcc.in-ORIG
    153 
    154 sed "s@\./xgcc@${HST_TOOLS}/bin/${TARGET}-gcc@g" \
    155    mklibgcc.in-ORIG > mklibgcc.in
    156 
    157 # A similar problem exists when setting MULTILIBS on the environment
    158 # for the mklibgcc script for generation of libgcc.mk .
    159 # Here we will force it to use our cross-compiler to produce the results
    160 # of gcc --print-multi-lib
    161 sed -i "/MULTILIBS/s@\$(GCC_FOR_TARGET)@${HST_TOOLS}/bin/${TARGET}-gcc@g" \
    162    Makefile.in
     152#
     153# NOTE: with gcc-4.1 onwards we can just set GCC_FOR_TARGET to our cross-compiler
     154#       and be done with the shenannigans
     155
     156extra_makeopts=""
     157case ${target_gcc_ver} in
     158   4.[1-9].* )
     159      extra_makeopts="${extra_makeopts} GCC_FOR_TARGET=${HST_TOOLS}/bin/${TARGET}-gcc"
     160   ;;
     161   * )
     162      cd ${SRC}/${PKGDIR}/gcc
     163      test -f mklibgcc.in-ORIG ||
     164         mv mklibgcc.in mklibgcc.in-ORIG
     165
     166      sed "s@\./xgcc@${HST_TOOLS}/bin/${TARGET}-gcc@g" \
     167         mklibgcc.in-ORIG > mklibgcc.in
     168
     169      # A similar problem exists when setting MULTILIBS on the environment
     170      # for the mklibgcc script for generation of libgcc.mk .
     171      # Here we will force it to use our cross-compiler to produce the results
     172      # of gcc --print-multi-lib
     173      sed -i "/MULTILIBS/s@\$(GCC_FOR_TARGET)@${HST_TOOLS}/bin/${TARGET}-gcc@g" \
     174         Makefile.in
     175   ;;
     176esac
    163177
    164178# When cross-building a target native compiler we run into big issues
     
    198212      # Testing only... set AS_FOR_TARGET and LD_FOR_TARGET so these are used
    199213      # for feature checks... will have to check for unintended side effects
    200       extra_makeopts="AS_FOR_TARGET=${HST_TOOLS}/bin/${TARGET}-as"
     214      extra_makeopts="${extra_makeopts} AS_FOR_TARGET=${HST_TOOLS}/bin/${TARGET}-as"
    201215      extra_makeopts="${extra_makeopts} LD_FOR_TARGET=${HST_TOOLS}/bin/${TARGET}-ld"
    202216   ;;
     
    258272test -L ${INSTALL_PREFIX}/bin/cc || ln -s gcc ${INSTALL_PREFIX}/bin/cc
    259273
     274esac
     275
     276# if we are using gcc-3.4x, set libexecdir to */${libdirname}
     277case ${target_gcc_ver} in
     278   3.4* | 4.* )
     279      extra_conf="${extra_conf} --libexecdir=${BUILD_PREFIX}/${libdirname}"
     280   ;;
     281esac
     282
     283# HACK: should at least check if any of these are set first
     284ARCH_CFLAGS="${TGT_CFLAGS} ${ARCH_CFLAGS}"
     285
     286# if target is same as build host, adjust build slightly to avoid running
     287# configure checks which we cannot run
     288if [ "${TARGET}" = "${BUILD}" ]; then
     289   BUILD=`echo ${BUILD} | sed 's@\([_a-zA-Z0-9]*\)\(-[_a-zA-Z0-9]*\)\(.*\)@\1\2x\3@'`
     290fi
     291
     292if [ ! "${USE_SYSROOT}" = "Y" ]; then
     293   # LFS style build
     294   #----------------
     295
     296   # source functions for required gcc modifications
     297   . ${SCRIPTS}/funcs/cross_gcc-funcs.sh
     298
     299   # Alter the generated specs file to
     300   #  o set dynamic linker to be under ${TGT_TOOLS}/lib{,32,64}
     301   #  o set startfile_prefix_spec so we search for startfiles
     302   #    under ${TGT_TOOLS}/lib/lib{,32,64}
     303   gcc_specs_mod
     304
     305   # We need to stop cpp using /usr/include as the standard include directory.
     306   # This is defined in gcc/cppdefault.c using STANDARD_INCLUDE_DIR
     307   cpp_undef_standard_include_dir
     308
     309   # We need to override SYSTEM_HEADER_DIR so fixincludes only fixes
     310   # headers under ${TGT_TOOLS}
     311   fixincludes_set_native_system_header_dir
     312fi
     313
     314# HACKS
     315#-------
     316
     317# This here is a hack. mklibgcc runs the created xgcc for determining
     318# the multilib dirs and multilib os dirs. Only problem here is we are
     319# cross building a native compiler so we cannot actually run xgcc.
     320# We get around this by substituting our cross-compiler here for xgcc,
     321# by rights it should have the same specs and produce the expected results
     322#
     323# NOTE: with gcc-4.1 onwards we can just set GCC_FOR_TARGET to our cross-compiler
     324#       and be done with the shenannigans
     325
     326extra_makeopts=""
     327case ${target_gcc_ver} in
     328   4.[1-9].* )
     329      extra_makeopts="${extra_makeopts} GCC_FOR_TARGET=${HST_TOOLS}/bin/${TARGET}-gcc"
     330   ;;
     331   * )
     332      cd ${SRC}/${PKGDIR}/gcc
     333      test -f mklibgcc.in-ORIG ||
     334         mv mklibgcc.in mklibgcc.in-ORIG
     335
     336      sed "s@\./xgcc@${HST_TOOLS}/bin/${TARGET}-gcc@g" \
     337         mklibgcc.in-ORIG > mklibgcc.in
     338
     339      # A similar problem exists when setting MULTILIBS on the environment
     340      # for the mklibgcc script for generation of libgcc.mk .
     341      # Here we will force it to use our cross-compiler to produce the results
     342      # of gcc --print-multi-lib
     343      sed -i "/MULTILIBS/s@\$(GCC_FOR_TARGET)@${HST_TOOLS}/bin/${TARGET}-gcc@g" \
     344         Makefile.in
     345   ;;
     346esac
     347
     348# When cross-building a target native compiler we run into big issues
     349# when determining assembler and linker features required for tls support,
     350# ( not to mention which nm, objdump et al to use ) during the configures
     351# triggered by make.
     352#
     353# Gcc's configury does not take into account the fact that when cross
     354# building the target native compiler we are _still_ actually cross-compiling.
     355# As far as it is concerned during the final configure fragment host = target,
     356# it doesn't check whether host = build.
     357#
     358# It then performs its checks for binutils components as if this was a standard
     359# host native build.
     360#
     361# If a target native binutils was installed before attempting to build gcc
     362# it will try to use the created ld, as etc under ${TGT_TOOLS}
     363# This obviously will not work, they will not run on the host.
     364#
     365# If the target native binutils hasn't been built yet it will use the
     366# as ld et al from the _build_ host.
     367# This quite frankly sucks rocks.
     368#
     369# The following patch fixes this behaviour, enforcing usage of our
     370# cross-tools for configure checks if host = target and host != build
     371#
     372# NOTE: 20050507 This doesn't appear to be necessary for gcc 4.x :-)
     373#       This of course will have to be checked thoroughly...
     374
     375# TODO: Add patches for gcc-3.3 series as well
     376cd ${SRC}/${PKGDIR}
     377case ${target_gcc_ver} in
     378   3.4* )
     379      apply_patch gcc-3.4.1-fix_configure_for_target_native
     380   ;;
     381   4.* )
     382      # set AS_FOR_TARGET and LD_FOR_TARGET so these are used for feature checks...
     383      extra_makeopts="${extra_makeopts} AS_FOR_TARGET=${HST_TOOLS}/bin/${TARGET}-as"
     384      extra_makeopts="${extra_makeopts} LD_FOR_TARGET=${HST_TOOLS}/bin/${TARGET}-ld"
     385   ;;
     386esac
     387# End HACKS
     388
     389test -d ${SRC}/gcc-${GCC_VER}-target &&
     390   rm -rf ${SRC}/gcc-${GCC_VER}-target
     391
     392mkdir -p ${SRC}/gcc-${GCC_VER}-target &&
     393cd ${SRC}/gcc-${GCC_VER}-target &&
     394
     395max_log_init Gcc ${GCC_VER} cross-pt2 ${CONFLOGS} ${LOG}
     396#CONFIG_SHELL=/bin/bash \
     397CFLAGS="-O2 -pipe" \
     398CXXFLAGS="-O2 -pipe" \
     399CC="${TARGET}-gcc ${ARCH_CFLAGS}" \
     400../${PKGDIR}/configure --prefix=${BUILD_PREFIX} \
     401   --build=${BUILD} --host=${TARGET} --target=${TARGET} \
     402   --enable-languages=c,c++ --enable-__cxa_atexit \
     403   --enable-c99 --enable-long-long --enable-threads=posix \
     404   --disable-nls --enable-shared ${extra_conf} \
     405   >> ${LOGFILE} 2>&1 &&
     406echo " o Configure OK" || barf
     407#   --enable-languages=c,c++,f77,objc,ada,java,pascal,treelang --enable-__cxa_atexit \
     408#   --enable-version-specific-runtime-libs \
     409
     410min_log_init ${BUILDLOGS} &&
     411make ${PMFLAGS} BOOT_LDFLAGS="-s" BOOT_CFLAGS="-O2 ${HOST_CFLAGS} -pipe" \
     412   STAGE1_CFLAGS="-O2 ${HOST_CFLAGS} -pipe" ${extra_makeopts} all \
     413   >> ${LOGFILE} 2>&1 &&
     414echo " o Build OK" || barf
     415
     416min_log_init ${INSTLOGS} &&
     417make ${INSTALL_OPTIONS} install \
     418   >> ${LOGFILE} 2>&1 &&
     419echo " o Install OK" || barf
     420
     421if [ ! "${USE_SYSROOT}" = "Y" ]; then
     422   # Prep new root for target native glibc build
     423   libdirs="${libdirname}"
     424   if [ "Y" = "${MULTIARCH}" ]; then libdirs="lib lib32 lib64" ; fi
     425   for dir in ${libdirs} ; do
     426      if [ -d ${TGT_TOOLS}/${dir} ]; then
     427         test -d ${LFS}/usr/${dir} || mkdir -p ${LFS}/usr/${dir}
     428         ln -sf ../..${TGT_TOOLS}/${dir}/libgcc_s.so.1 \
     429            ${LFS}/usr/${dir}/libgcc_s.so.1
     430         test -f ${TGT_TOOLS}/${dir}/libgcc_s.so &&
     431            ln -sf libgcc_s.so.1 ${LFS}/usr/${dir}/libgcc_s.so
     432         test -f ${TGT_TOOLS}/${dir}/libgcc_s_32.so &&
     433            ln -sf libgcc_s.so.1 ${LFS}/usr/${dir}/libgcc_s_32.so
     434         test -f ${TGT_TOOLS}/${dir}/libgcc_s_64.so &&
     435            ln -sf libgcc_s.so.1 ${LFS}/usr/${dir}/libgcc_s_64.so
     436      fi
     437   done
     438fi
     439
     440test -L ${INSTALL_PREFIX}/bin/cc || ln -s gcc ${INSTALL_PREFIX}/bin/cc
     441
Note: See TracChangeset for help on using the changeset viewer.