Changeset 3a26e5e


Ignore:
Timestamp:
Mar 7, 2006, 3:30:20 AM (19 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:
2fae446
Parents:
7efeff4
Message:

r2476@server (orig r1233): ryan | 2006-03-07 00:40:28 -0800

r1290@rei: lfs | 2006-03-07 19:37:33 +1100
Take 3 with merge cleanup


File:
1 edited

Legend:

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

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