mknative-gcc revision 1.70
11.1Smrg#!/bin/sh 21.70Sskrll# $NetBSD: mknative-gcc,v 1.70 2013/05/05 07:11:34 skrll Exp $ 31.1Smrg# 41.1Smrg# Shell script for generating all the constants needed for a native 51.68Sskrll# platform build of gcc. 61.1Smrg# 71.1Smrg 81.9Smrg# initialise 91.9Smrg 101.9Smrg_TMPDIR=$2 111.9Smrg_TOP=$3 121.9Smrg_PLATFORM=$4 131.61Smrg_DESTDIR=$5 141.61Smrg_ABI=$6 151.15Smrg_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'` 161.9Smrg_GNU_DIST=`cd ${_VPATH}; pwd` 171.9Smrg 181.61Smrgif [ -z "$_DESTDIR" ]; then 191.61Smrg echo "\$_DESTDIR is empty" 2>&1 201.61Smrg exit 1 211.61Smrgfi 221.61Smrg 231.9Smrg. $_TOP/tools/gcc/mknative.common 241.1Smrg 251.46Smrg# default to GCC 4.1 for now 261.46Smrg_OUTDIR="$_TOP/gnu" 271.46Smrg_OUTDIRBASE="gnu" 281.46Smrg 291.70Sskrllsanitise_includes () { 301.70Sskrll sed \ 311.70Sskrll -e "s,-I$_DESTDIR/usr/include,,g" \ 321.70Sskrll -e "s,-I$_TOP/external/lgpl3/mpfr/dist,,g" \ 331.70Sskrll -e "s,-I$_TOP/external/lgpl2/mpc/dist/src,,g" \ 341.70Sskrll -e "s,-I$_TOP/external/lgpl3/gmp/lib/libgmp/arch/$MACHINE_ARCH,,g" 351.70Sskrll} 361.70Sskrll 371.14Sthorpej##### gnu/lib/crtstuff ##### 381.14Sthorpej 391.14Sthorpejget_crtstuff () { 401.16Smrg _subdir="$1" 411.46Smrg mkdir -p $_OUTDIR/lib/$_subdir/arch 421.14Sthorpej 431.14Sthorpej getvars gcc/Makefile \ 441.67Sskrll INCLUDES CRTSTUFF_CFLAGS CRTSTUFF_T_CFLAGS CRTSTUFF_T_CFLAGS_S \ 451.14Sthorpej tm_defines xm_file xm_defines \ 461.70Sskrll | sanitise_includes \ 471.46Smrg | write_mk $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH.mk 481.14Sthorpej} 491.14Sthorpej 501.1Smrg##### gnu/lib/libg2c ##### 511.1Smrg 521.1Smrgget_libg2c () { 531.46Smrg mkdir -p $_OUTDIR/lib/libg2c3/arch/$MACHINE_ARCH 541.1Smrg 551.46Smrg write_c $_OUTDIRBASE/lib/libg2c3/arch/$MACHINE_ARCH/config.h <$_TMPDIR/$_PLATFORM/libf2c/libU77/config.h 561.46Smrg write_c $_OUTDIRBASE/lib/libg2c3/arch/$MACHINE_ARCH/g2c.h <$_TMPDIR/$_PLATFORM/libf2c/g2c.h 571.1Smrg 581.1Smrg { 591.1Smrg getvars $_PLATFORM/libf2c/Makefile \ 601.1Smrg F2CEXT 611.1Smrg getvars $_PLATFORM/libf2c/libF77/Makefile \ 621.1Smrg ALL_CFLAGS OBJS 631.1Smrg getvars $_PLATFORM/libf2c/libI77/Makefile \ 641.1Smrg ALL_CFLAGS OBJS | sed 's,=,+=,' 651.1Smrg getvars $_PLATFORM/libf2c/libU77/Makefile \ 661.1Smrg ALL_CFLAGS OBJS | sed 's,=,+=,' 671.46Smrg } | write_mk $_OUTDIRBASE/lib/libg2c3/arch/$MACHINE_ARCH/defs.mk 681.1Smrg} 691.1Smrg 701.1Smrg##### gnu/lib/libgcc ##### 711.1Smrg 721.28Suebayasiget_libgcc_list_funcs_asm () { 731.42Suebayasi { 741.42Suebayasi getvars gcc/Makefile LIB1ASMFUNCS | { 751.42Suebayasi # print newline separated list 761.42Suebayasi sed -e ' 771.42Suebayasi s,^.*=,, 781.42Suebayasi s, *$,, 791.42Suebayasi s, *, ,g 801.42Suebayasi s, ,\ 811.28Suebayasi,g' 821.42Suebayasi } 831.42Suebayasi getvars gcc/Makefile LIB2FUNCS_EXTRA | { 841.42Suebayasi # print newline separated list 851.42Suebayasi sed -e ' 861.42Suebayasi s,^.*=,, 871.42Suebayasi s, *$,, 881.42Suebayasi s, *, ,g 891.42Suebayasi s, ,\ 901.42Suebayasi,g' | \ 911.42Suebayasi sed -ne ' 921.42Suebayasi /\.S$/ { s,^.*/,,; s,\.S$,,; p; } 931.42Suebayasi /\.asm$/ { s,^.*/,,; s,\.asm$,,; p; } 941.42Suebayasi ' 951.42Suebayasi } 961.28Suebayasi } | { 971.28Suebayasi # print foo and foo_s 981.28Suebayasi sed -ne ' 991.28Suebayasi /./ { 1001.28Suebayasi p 1011.28Suebayasi s,$,_s, 1021.28Suebayasi p 1031.28Suebayasi } 1041.28Suebayasi ' 1051.28Suebayasi } | sort 1061.28Suebayasi} 1071.28Suebayasi 1081.29Suebayasiget_libgcc_list_funcs_lib () { 1091.29Suebayasi local _lib=$1 1101.29Suebayasi local _lib_prefix=${_lib%.*} 1111.29Suebayasi local _lib_suffix=${_lib#*.} 1121.44Suebayasi local _abi=${2:-'\.'} 1131.29Suebayasi 1141.43Suebayasi cat build/gcc/libgcc.mk | \ 1151.44Suebayasi grep '/'${_abi}'/' | \ 1161.29Suebayasi sed -ne ' 1171.45Suebayasi /^'${_abi}'\/'${_lib_prefix}'\.'${_lib_suffix}': .*\.o$/ { 1181.29Suebayasi s,^.*/,, 1191.29Suebayasi s,\.o$,, 1201.29Suebayasi p 1211.29Suebayasi } 1221.43Suebayasi ' | sort 1231.29Suebayasi} 1241.29Suebayasi 1251.30Suebayasiget_libgcc_list_objs_libs () { 1261.44Suebayasi local _abi=${1:-'\.'} 1271.44Suebayasi 1281.30Suebayasi cat build/gcc/libgcc.mk | \ 1291.44Suebayasi grep '/'${_abi}'/' | \ 1301.45Suebayasi egrep '^'${_abi}'\/(libgcc_s\.so|libgcc\.a|libgcc_eh\.a|libgcov\.a): (libgcc_s|libgcc|libgcc_eh|libgcov)\/.*\.o$' | \ 1311.30Suebayasi sed -e ' 1321.44Suebayasi s,^'${_abi}'\/,, 1331.30Suebayasi s,: .*/, , 1341.30Suebayasi s,^\(.*\) \(.*\)$,\2 \1, 1351.30Suebayasi ' | sort 1361.30Suebayasi} 1371.30Suebayasi 1381.30Suebayasiget_libgcc_list_objs_srcs () { 1391.44Suebayasi local _abi=${1:-'\.'} # XXX not used 1401.44Suebayasi 1411.41Suebayasi if [ -e $_TOP/${libgcc_db_funcs}.S ]; then 1421.30Suebayasi cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ 1431.30Suebayasi comm -23 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \ 1441.30Suebayasi sed -e 's,\(.*\),\1.o \1.c,' 1451.30Suebayasi 1461.30Suebayasi cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ 1471.30Suebayasi comm -12 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \ 1481.30Suebayasi sed -e 's,\(.*\),\1.o \1.S,' 1491.41Suebayasi else 1501.41Suebayasi cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ 1511.41Suebayasi sed -e 's,\(.*\),\1.o \1.c,' 1521.41Suebayasi fi | sort 1531.30Suebayasi} 1541.30Suebayasi 1551.40Suebayasiget_libgcc_list_objs_tmplsrcs () { 1561.44Suebayasi local _abi=${1:-'\.'} 1571.44Suebayasi 1581.32Suebayasi grep 'GCC_FOR_TARGET.*\.o$' build/gcc/libgcc.mk | \ 1591.44Suebayasi grep '/'${_abi}'/' | \ 1601.32Suebayasi sed -ne ' 1611.32Suebayasi s,^.* -c \([^ ]*\).* -o .*/\([^ ]*\.o\)$,\2 \1, 1621.32Suebayasi # basename 1631.32Suebayasi /\$/ { s,\$.*/,,; } 1641.32Suebayasi /\// { s,\/.*/,,; } 1651.32Suebayasi p 1661.43Suebayasi ' | sort -u 1671.32Suebayasi} 1681.32Suebayasi 1691.31Suebayasiget_libgcc_list_objs_xflags () { 1701.31Suebayasi local _flags=$1 1711.44Suebayasi local _abi=${2:-'\.'} 1721.31Suebayasi 1731.31Suebayasi grep 'GCC_FOR_TARGET.*\.o$' build/gcc/libgcc.mk | \ 1741.44Suebayasi grep '/'${_abi}'/' | \ 1751.31Suebayasi sed -n ' 1761.31Suebayasi x 1771.31Suebayasi :loop 1781.31Suebayasi g 1791.31Suebayasi s/^\(.*\) \(-['${_flags}'][^ ][^ ]*\) \(.*\) \(-o .*\)\/\(.*\.o\)$/\5 \2/p 1801.31Suebayasi g 1811.31Suebayasi s/^\(.*\) \(-['${_flags}'][^ ][^ ]*\) \(.*\) \(-o .*\)\/\(.*\.o\)$/\1 \3 \4\/\5/ 1821.31Suebayasi h 1831.31Suebayasi t loop 1841.31Suebayasi ' | sort 1851.31Suebayasi} 1861.31Suebayasi 1871.31Suebayasiget_libgcc_list_objs_cppflags () { 1881.44Suebayasi get_libgcc_list_objs_xflags D $1 1891.31Suebayasi} 1901.31Suebayasi 1911.31Suebayasiget_libgcc_list_objs_copts () { 1921.44Suebayasi get_libgcc_list_objs_xflags fmx $1 1931.31Suebayasi} 1941.31Suebayasi 1951.40Suebayasiget_libgcc_list_tmplsrcs () { 1961.33Suebayasi local _lib=$1 1971.44Suebayasi local _abi=$2 # XXX not used 1981.40Suebayasi local _tmplallsrcs=$( mktemp /tmp/mknative-gcc._tmplallsrcs.XXXXXX ) 1991.33Suebayasi 2001.40Suebayasi touch $_TOP/${libgcc_db_tmplsrcs}.tmplsrcs.${_lib%.*} 2011.40Suebayasi touch $_TOP/${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*} 2021.40Suebayasi touch $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} 2031.33Suebayasi 2041.33Suebayasi # all files 2051.33Suebayasi local _lib_prefix=${_lib%.*} 2061.33Suebayasi local _lib_suffix=${_lib#*.} 2071.40Suebayasi join $_TOP/$libgcc_db_objs_libs $_TOP/$libgcc_db_objs_tmplsrcs | \ 2081.33Suebayasi grep ${_lib_prefix}'\.'${_lib_suffix} | cut -d' ' -f 3 | sort -u > \ 2091.40Suebayasi $_tmplallsrcs 2101.33Suebayasi 2111.40Suebayasi # TMPLFPSRCS = [fdp]p-bit.c 2121.40Suebayasi grep '[fdt]p-bit\.c' <$_tmplallsrcs | sort -u | \ 2131.40Suebayasi writefile ${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*} 2141.40Suebayasi 2151.40Suebayasi # TMPLASMSRCS = $(LIB1ASMSRC) 2161.40Suebayasi grep '\$(LIB1ASMSRC)' <$_tmplallsrcs | sort -u | \ 2171.40Suebayasi writefile ${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} 2181.40Suebayasi 2191.40Suebayasi # TMPLSRCS is anything else; exclude TMPLFPSRCS and TMPLASMSRCS 2201.40Suebayasi cat $_tmplallsrcs | \ 2211.40Suebayasi comm -23 /dev/stdin $_TOP/${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*} | \ 2221.40Suebayasi comm -23 /dev/stdin $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} | \ 2231.40Suebayasi writefile ${libgcc_db_tmplsrcs}.tmplsrcs.${_lib%.*} 2241.33Suebayasi 2251.40Suebayasi rm -f $_tmplallsrcs 2261.33Suebayasi} 2271.33Suebayasi 2281.35Suebayasiget_libgcc_new_analyze () { 2291.44Suebayasi local _abi=$1 2301.44Suebayasi 2311.35Suebayasi mkdir -p $_TOP/${_machine_arch_subdir} 2321.35Suebayasi 2331.41Suebayasi touch $_TOP/${libgcc_db_funcs}.S 2341.35Suebayasi get_libgcc_list_funcs_asm | \ 2351.35Suebayasi writefile ${libgcc_db_funcs}.S 2361.35Suebayasi 2371.35Suebayasi for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do 2381.41Suebayasi touch $_TOP/${libgcc_db_funcs}.${_lib%.*} 2391.44Suebayasi get_libgcc_list_funcs_lib $_lib $_abi | \ 2401.35Suebayasi writefile ${libgcc_db_funcs}.${_lib%.*} 2411.35Suebayasi done 2421.35Suebayasi 2431.44Suebayasi get_libgcc_list_objs_libs $_abi | writefile ${libgcc_db_objs_libs} 2441.44Suebayasi get_libgcc_list_objs_srcs $_abi | writefile ${libgcc_db_objs_srcs} 2451.44Suebayasi get_libgcc_list_objs_tmplsrcs $_abi | writefile ${libgcc_db_objs_tmplsrcs} 2461.44Suebayasi get_libgcc_list_objs_cppflags $_abi | writefile ${libgcc_db_objs_cppflags} 2471.44Suebayasi get_libgcc_list_objs_copts $_abi | writefile ${libgcc_db_objs_copts} 2481.35Suebayasi 2491.35Suebayasi for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do 2501.44Suebayasi get_libgcc_list_tmplsrcs $_lib $_abi 2511.35Suebayasi done 2521.35Suebayasi} 2531.35Suebayasi 2541.35Suebayasi##### 2551.35Suebayasi 2561.40Suebayasiget_libgcc_gen_tmplsrcs_tmplsrcs () { 2571.37Suebayasi local _lib=$1 2581.37Suebayasi 2591.37Suebayasi printf '\n' 2601.40Suebayasi printf 'TMPLSRCS.%s = \\\n' $_lib 2611.40Suebayasi sed -e 's,^, ,; s,$, \\,' $_TOP/${libgcc_db_tmplsrcs}.tmplsrcs.${_lib%.*} 2621.37Suebayasi} 2631.37Suebayasi 2641.40Suebayasiget_libgcc_gen_tmplsrcs_tmplfpsrcs () { 2651.37Suebayasi local _lib=$1 2661.37Suebayasi 2671.37Suebayasi printf '\n' 2681.40Suebayasi printf 'TMPLFPSRCS.%s = \\\n' $_lib 2691.40Suebayasi sed -e 's,^, ,; s,$, \\,' $_TOP/${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*} 2701.37Suebayasi} 2711.37Suebayasi 2721.40Suebayasiget_libgcc_gen_tmplsrcs_tmplasmsrcs () { 2731.37Suebayasi local _lib=$1 2741.37Suebayasi 2751.37Suebayasi printf '\n' 2761.40Suebayasi printf 'TMPLASMSRCS.%s = \\\n' $_lib 2771.40Suebayasi sed -e 's,^, ,; s,$, \\,' $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} | \ 2781.37Suebayasi sed -e 's,LIB1ASMSRC,G_&,' 2791.37Suebayasi} 2801.37Suebayasi 2811.36Suebayasiget_libgcc_gen_srcs () { 2821.36Suebayasi local _lib=$1 2831.36Suebayasi 2841.36Suebayasi printf '\n' 2851.36Suebayasi printf 'SRCS.%s = \\\n' $_lib 2861.41Suebayasi if [ -e $_TOP/${libgcc_db_funcs}.S ]; then 2871.36Suebayasi comm -23 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \ 2881.36Suebayasi sed -e 's,$,.c,; s,^,tmp_,' 2891.36Suebayasi comm -12 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \ 2901.36Suebayasi sed -e 's,$,.S,; s,^,tmp_,' 2911.41Suebayasi else 2921.41Suebayasi cat $_TOP/${libgcc_db_funcs}.${_lib%.*} | \ 2931.41Suebayasi sed -e 's,$,.c,; s,^,tmp_,' 2941.41Suebayasi fi | sort | \ 2951.36Suebayasi sed -e 's,^, ,; s,$, \\,' 2961.36Suebayasi} 2971.36Suebayasi 2981.38Suebayasi_lookup_objs () { 2991.38Suebayasi local _obj=$1; local _key=$2 3001.38Suebayasi 3011.38Suebayasi eval grep \^$_obj\\\ \$_TOP/\${libgcc_db_objs_${_key}} | cut -f2 3021.38Suebayasi} 3031.38Suebayasi 3041.40Suebayasiget_libgcc_gen_srcs_tmplsrcs () { 3051.38Suebayasi cut -f1 $_TOP/${libgcc_db_objs_libs} | \ 3061.38Suebayasi while read _obj; do 3071.38Suebayasi printf 'SRCS.tmp_%s=%s\n' \ 3081.38Suebayasi "$( _lookup_objs $_obj srcs )" \ 3091.40Suebayasi "$( _lookup_objs $_obj tmplsrcs )" 3101.38Suebayasi done | \ 3111.38Suebayasi sed -e 's,\$(\(.*\)),${G_\1},' 3121.38Suebayasi} 3131.38Suebayasi 3141.38Suebayasiget_libgcc_gen_srcs_cppflags () { 3151.38Suebayasi cut -f1 $_TOP/${libgcc_db_objs_libs} | \ 3161.38Suebayasi while read _obj; do 3171.38Suebayasi printf '_CPPFLAGS.tmp_%s=%s\n' \ 3181.38Suebayasi "$( _lookup_objs $_obj srcs )" \ 3191.38Suebayasi "$( _lookup_objs $_obj cppflags | xargs )" 3201.38Suebayasi done 3211.38Suebayasi} 3221.38Suebayasi 3231.38Suebayasiget_libgcc_gen_srcs_copts () { 3241.38Suebayasi cut -f1 $_TOP/${libgcc_db_objs_libs} | \ 3251.38Suebayasi while read _obj; do 3261.38Suebayasi printf 'COPTS.tmp_%s=%s\n' \ 3271.38Suebayasi "$( _lookup_objs $_obj srcs )" \ 3281.38Suebayasi "$( _lookup_objs $_obj copts | xargs )" 3291.38Suebayasi done 3301.38Suebayasi} 3311.38Suebayasi 3321.35Suebayasiget_libgcc_new_generate () { 3331.44Suebayasi local _abi=$1 3341.44Suebayasi 3351.36Suebayasi for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do 3361.40Suebayasi for _tmpl in tmplsrcs tmplfpsrcs tmplasmsrcs; do 3371.40Suebayasi eval get_libgcc_gen_tmplsrcs_${_tmpl} $_lib | \ 3381.40Suebayasi write_mk ${libgcc_libs_mk}.${_lib%.*}.tmplsrcs.${_tmpl}.mk 3391.37Suebayasi done 3401.37Suebayasi 3411.36Suebayasi get_libgcc_gen_srcs $_lib | \ 3421.39Suebayasi write_mk ${libgcc_libs_mk}.${_lib%.*}.srcs.mk 3431.36Suebayasi done 3441.38Suebayasi 3451.40Suebayasi for _arg in tmplsrcs cppflags copts; do 3461.38Suebayasi eval get_libgcc_gen_srcs_${_arg} | \ 3471.38Suebayasi eval writefile \$libgcc_srcs_mk_${_arg} 3481.38Suebayasi done 3491.35Suebayasi} 3501.35Suebayasi 3511.33Suebayasi##### 3521.33Suebayasi 3531.28Suebayasiget_libgcc_new () { 3541.28Suebayasi _subdir="$1" 3551.44Suebayasi _abi="$2" 3561.27Suebayasi 3571.29Suebayasi # List of generated files. 3581.29Suebayasi 3591.46Smrg _machine_arch_subdir=$_OUTDIRBASE/lib/lib$_subdir/arch${_archsubdir}/$MACHINE_ARCH/$_abi 3601.27Suebayasi 3611.28Suebayasi libgcc_db_funcs=${_machine_arch_subdir}/funcs 3621.40Suebayasi libgcc_db_tmplsrcs=${_machine_arch_subdir}/tmplsrcs 3631.28Suebayasi libgcc_db_objs_libs=${_machine_arch_subdir}/objs.libs 3641.28Suebayasi libgcc_db_objs_srcs=${_machine_arch_subdir}/objs.srcs 3651.40Suebayasi libgcc_db_objs_tmplsrcs=${_machine_arch_subdir}/objs.tmplsrcs 3661.28Suebayasi libgcc_db_objs_cppflags=${_machine_arch_subdir}/objs.cppflags 3671.28Suebayasi libgcc_db_objs_copts=${_machine_arch_subdir}/objs.copts 3681.28Suebayasi 3691.44Suebayasi get_libgcc_new_analyze $_abi 3701.36Suebayasi 3711.39Suebayasi libgcc_libs_mk=${_machine_arch_subdir}/libs 3721.28Suebayasi libgcc_srcs_mk=${_machine_arch_subdir}/srcs.mk 3731.40Suebayasi libgcc_srcs_mk_tmplsrcs=${_machine_arch_subdir}/srcs.tmplsrcs.mk 3741.28Suebayasi libgcc_srcs_mk_cppflags=${_machine_arch_subdir}/srcs.cppflags.mk 3751.28Suebayasi libgcc_srcs_mk_copts=${_machine_arch_subdir}/srcs.copts.mk 3761.28Suebayasi 3771.44Suebayasi get_libgcc_new_generate $_abi 3781.26Suebayasi} 3791.26Suebayasi 3801.1Smrgget_libgcc () { 3811.16Smrg _subdir="$1" 3821.46Smrg mkdir -p $_OUTDIR/lib/lib$_subdir/arch 3831.16Smrg 3841.16Smrg case "$_subdir" in 3851.46Smrg gcc4|gcc) 3861.16Smrg _extravars="COLLECT2 UNWIND_H xm_include_list" 3871.16Smrg _archsubdir="" 3881.16Smrg ;; 3891.16Smrg esac 3901.1Smrg 3911.1Smrg # DPBIT, FPBIT only used on mn10[23]00, we don't need them. 3921.4Smrg # XXX we should probably grab everything Just In Case for 3931.4Smrg # the future. 3941.16Smrg { 3951.16Smrg getvars gcc/Makefile \ 3961.58Smrg INCLUDES LIB2ADD LIB2ADDEH LIB2ADD_ST \ 3971.16Smrg LIB1ASMFUNCS LIB1ASMSRC \ 3981.16Smrg LIB2_DIVMOD_FUNCS LIB2FUNCS_ST \ 3991.42Suebayasi LIB2FUNCS_EXTRA \ 4001.16Smrg LIBGCC2_CFLAGS \ 4011.16Smrg SHLIB_MKMAP SHLIB_MKMAP_OPTS \ 4021.16Smrg SHLIB_MAPFILES SHLIB_NM_FLAGS \ 4031.16Smrg EXTRA_HEADERS xm_defines \ 4041.16Smrg tm_defines ${_extravars} 4051.70Sskrll } | sanitise_includes \ 4061.69Sskrll | write_mk $_OUTDIRBASE/lib/lib$_subdir/arch${_archsubdir}/$MACHINE_ARCH.mk 4071.26Suebayasi 4081.26Suebayasi # Generate new style files. 4091.27Suebayasi if [ -n "${MKNATIVE_LIBGCC_NEW}" ]; then 4101.44Suebayasi get_libgcc_new $_subdir $_ABI 4111.26Suebayasi fi 4121.1Smrg} 4131.1Smrg 4141.24Sskrll##### gnu/lib/libgcov ##### 4151.24Sskrll 4161.24Sskrllget_libgcov () { 4171.24Sskrll _subdir="$1" 4181.24Sskrll 4191.46Smrg mkdir -p $_OUTDIR/lib/lib$_subdir/libgcov/arch/$MACHINE_ARCH 4201.24Sskrll 4211.24Sskrll { 4221.24Sskrll getvars gcc/Makefile \ 4231.24Sskrll LIBGCOV 4241.46Smrg } | write_mk $_OUTDIRBASE/lib/lib$_subdir/libgcov/arch/$MACHINE_ARCH/defs.mk 4251.24Sskrll 4261.46Smrg write_c $_OUTDIRBASE/lib/lib$_subdir/libgcov/arch/$MACHINE_ARCH/gcov-iov.h \ 4271.24Sskrll <$_TMPDIR/gcc/gcov-iov.h 4281.24Sskrll 4291.24Sskrll} 4301.24Sskrll 4311.16Smrg##### gnu/usr.bin/gcc[34]/libiberty ##### 4321.1Smrg 4331.16Smrgget_gcc_libiberty () { 4341.16Smrg _subdir="$1" 4351.46Smrg case "$_subdir" in 4361.46Smrg gcc4) 4371.46Smrg _libibertydir="usr.bin/$_subdir/libiberty" 4381.46Smrg ;; 4391.46Smrg gcc) 4401.48Smrg _libibertydir="lib/libiberty" 4411.46Smrg ;; 4421.46Smrg esac 4431.46Smrg mkdir -p $_OUTDIR/$_libibertydir/arch/$MACHINE_ARCH 4441.1Smrg 4451.1Smrg getvars libiberty/Makefile \ 4461.1Smrg ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \ 4471.46Smrg | write_mk $_OUTDIRBASE/$_libibertydir/defs.mk 4481.1Smrg 4491.46Smrg write_c $_OUTDIRBASE/$_libibertydir/arch/$MACHINE_ARCH/config.h \ 4501.1Smrg <$_TMPDIR/libiberty/config.h 4511.1Smrg} 4521.1Smrg 4531.51Smrg##### lib/libdecnumber ##### 4541.51Smrg 4551.51Smrgget_libdecnumber () { 4561.51Smrg _subdir="$1" 4571.51Smrg 4581.52Smrg mkdir -p $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH 4591.52Smrg write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/config.h \ 4601.51Smrg <$_TMPDIR/libdecnumber/config.h 4611.51Smrg} 4621.51Smrg 4631.63Smrg##### lib/libgomp ##### 4641.63Smrg 4651.63Smrgget_libgomp () { 4661.63Smrg _subdir="$1" 4671.63Smrg 4681.63Smrg mkdir -p $_OUTDIR/lib/$_subdir/arch/$MACHINE_ARCH 4691.63Smrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/config.h \ 4701.63Smrg <$_TMPDIR/$_PLATFORM/libgomp/config.h 4711.63Smrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/libgomp_f.h \ 4721.63Smrg <$_TMPDIR/$_PLATFORM/libgomp/libgomp_f.h 4731.63Smrg write_mk $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/libgomp.spec \ 4741.63Smrg <$_TMPDIR/$_PLATFORM/libgomp/libgomp.spec 4751.64Smrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/omp.h \ 4761.64Smrg <$_TMPDIR/$_PLATFORM/libgomp/omp.h 4771.63Smrg} 4781.63Smrg 4791.1Smrg##### gnu/lib/libobjc ##### 4801.1Smrg 4811.1Smrgget_libobjc () { 4821.46Smrg _subdir="$1/arch/$MACHINE_ARCH" 4831.46Smrg _options="ALL_OPT_FILES" 4841.46Smrg _unwind="UNWIND_H" 4851.18Smrg 4861.46Smrg mkdir -p $_OUTDIR/lib/$_subdir 4871.1Smrg 4881.16Smrg { 4891.18Smrg if [ -n "$_options" ]; then 4901.18Smrg getvars gcc/Makefile $_options 4911.18Smrg fi 4921.16Smrg getvars $_PLATFORM/libobjc/Makefile \ 4931.16Smrg ALL_CFLAGS INCLUDES OBJS OBJC_H \ 4941.16Smrg | sed "s,$_GNU_DIST,\${GNUHOSTDIST},g" 4951.20Sskrll if [ -n "$_unwind" ]; then 4961.20Sskrll getvars gcc/Makefile $_unwind 4971.20Sskrll fi 4981.46Smrg } | write_mk $_OUTDIRBASE/lib/$_subdir/defs.mk 4991.23Sskrll 5001.46Smrg write_c $_OUTDIRBASE/lib/$_subdir/config.h \ 5011.23Sskrll <$_TMPDIR/$_PLATFORM/libobjc/config.h 5021.1Smrg} 5031.1Smrg 5041.1Smrg##### gnu/lib/libstdc++-v3 ##### 5051.1Smrg 5061.1Smrgget_libstdcxx_v3 () { 5071.16Smrg _subdir="$1" 5081.46Smrg mkdir -p $_OUTDIR/lib/$_subdir/arch/$MACHINE_ARCH 5091.1Smrg 5101.16Smrg case ${_subdir} in 5111.46Smrg *) 5121.16Smrg _src_CC_files="atomicity_file CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_CC CLOCALE_CC BASIC_FILE_CC" 5131.55Smrg _headers1="host_headers debug_headers tr1_headers c_compatibility_headers_extra tr1_impl_headers parallel_headers decimal_headers" 5141.55Smrg _headers2="thread_host_headers host_headers_extra" 5151.19Smrg _build_headers="c++allocator.h c++config.h cxxabi_tweaks.h gthr-default.h gthr-posix.h gthr-single.h gthr-tpf.h gthr.h" 5161.20Sskrll _unwind="UNWIND_H" 5171.16Smrg ;; 5181.16Smrg esac 5191.16Smrg 5201.19Smrg # build files 5211.19Smrg for h in $_build_headers; do 5221.46Smrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/$h \ 5231.19Smrg <$_TMPDIR/$_PLATFORM/libstdc++-v3/include/$_PLATFORM/bits/$h 5241.19Smrg done 5251.19Smrg 5261.46Smrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/config.h \ 5271.6Smrg <$_TMPDIR/$_PLATFORM/libstdc++-v3/config.h 5281.49Smrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/gstdint.h \ 5291.49Smrg <$_TMPDIR/$_PLATFORM/libstdc++-v3/include/gstdint.h 5301.6Smrg 5311.1Smrg { 5321.1Smrg # libsupc++ 5331.1Smrg getvars $_PLATFORM/libstdc++-v3/libsupc++/Makefile \ 5341.1Smrg sources | sed 's/^G_sources=/G_LIBSUPCXX_SOURCES=/' 5351.1Smrg getvars $_PLATFORM/libstdc++-v3/libsupc++/Makefile \ 5361.1Smrg c_sources | sed 's/^G_c_sources=/G_LIBSUPCXX_C_SOURCES=/' 5371.1Smrg 5381.1Smrg # src 5391.1Smrg getvars $_PLATFORM/libstdc++-v3/src/Makefile \ 5401.16Smrg sources $_src_CC_files SECTION_FLAGS | sed 's/^G_sources=/G_SRC_SOURCES=/' 5411.1Smrg 5421.1Smrg # include 5431.1Smrg getvars $_PLATFORM/libstdc++-v3/include/Makefile \ 5441.49Smrg c_base_headers std_headers | sed -e 's#/[^ ][^ ]*/##g' -e 's/\${GNUHOSTDIST}//g' 5451.1Smrg getvars $_PLATFORM/libstdc++-v3/include/Makefile \ 5461.1Smrg bits_headers backward_headers ext_headers c_base_headers_extra \ 5471.17Smrg $_headers1 | sed -e 's#/[^ ][^ ]*/##g' -e 's/\${GNUHOSTDIST}//g' 5481.1Smrg getvars $_PLATFORM/libstdc++-v3/include/Makefile \ 5491.17Smrg $_headers2 | sed -e 's#\./[^ ][^ ]*/##g' -e 's/\${GNUHOSTDIST}//g' 5501.16Smrg 5511.20Sskrll if [ -n "$_unwind" ]; then 5521.20Sskrll getvars gcc/Makefile $_unwind 5531.20Sskrll fi 5541.46Smrg } | write_mk $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/defs.mk 5551.1Smrg} 5561.1Smrg 5571.1Smrg##### gnu/usr.bin/gcc3 ##### 5581.1Smrg 5591.68Sskrllget_gcc_bootstrap () { 5601.68Sskrll _subdir="$1" 5611.68Sskrll mkdir -p $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH 5621.68Sskrll for f in auto-host tm config gthr-default; do 5631.68Sskrll write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gcc/$f.h 5641.68Sskrll done 5651.68Sskrll} 5661.68Sskrll 5671.1Smrgget_gcc () { 5681.16Smrg _subdir="$1" 5691.46Smrg mkdir -p $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH 5701.57Smrg mkdir -p $_OUTDIR/usr.bin/libcpp/arch/$MACHINE_ARCH 5711.19Smrg case ${_subdir} in 5721.19Smrg gcc4) 5731.19Smrg _buildname="BUILD_" 5741.19Smrg _libcppsubdir="" 5751.20Sskrll _extravars="TM_H ALL_OPT_FILES" 5761.20Sskrll _hconfig_h="" 5771.20Sskrll _extravars2="tm_file_list build_xm_include_list" 5781.20Sskrll _extravars3="tm_p_include_list" 5791.47Smrg ;; 5801.70Sskrll 5811.47Smrg gcc) 5821.47Smrg _buildname="BUILD_" 5831.47Smrg _libcppsubdir="" 5841.47Smrg _extravars="TM_H ALL_OPT_FILES" 5851.47Smrg _hconfig_h="" 5861.47Smrg _extravars2="tm_file_list build_xm_include_list" 5871.47Smrg _extravars3="tm_p_include_list" 5881.19Smrg ;; 5891.19Smrg esac 5901.1Smrg 5911.1Smrg { 5921.1Smrg getvars gcc/Makefile \ 5931.19Smrg ${_buildname}EARLY_SUPPORT ${_buildname}ERRORS ${_buildname}PRINT \ 5941.19Smrg ${_buildname}RTL ${_buildname}SUPPORT ${_buildname}VARRAY | \ 5951.16Smrg sed -e 's#build/errors.o#build-errors.o#g' \ 5961.16Smrg -e 's#build/print-rtl.o#build-print-rtl.o#g' \ 5971.16Smrg -e 's#build/rtl.o#build-rtl.o#g' \ 5981.16Smrg -e 's#build/varray.o#build-varray.o#g' \ 5991.22Smrg -e 's#build/ggc-none.o#build-ggc-none.o#g' \ 6001.16Smrg -e 's#build/##g' 6011.16Smrg getvars gcc/Makefile \ 6021.1Smrg ALL_CFLAGS ALL_CPPFLAGS C_AND_OBJC_OBJS C_OBJS CCCP_OBJS \ 6031.20Sskrll GCOV_OBJS PROTO_OBJS ${_extravars1} \ 6041.1Smrg INCLUDES md_file OBJC_OBJS OBJS out_file version \ 6051.20Sskrll BUILD_PREFIX RTL_H TREE_H ${_hconfig_h} BASIC_BLOCK_H GCC_H \ 6061.1Smrg GTFILES_SRCDIR GTFILES_FILES_FILES GTFILES_FILES_LANGS \ 6071.1Smrg GTFILES GTFILES_LANG_DIR_NAMES \ 6081.1Smrg tm_defines host_xm_file host_xm_defines tm_p_file \ 6091.21Smrg target_cpu_default ${_extravars} ${_extravars2} \ 6101.60Smrg lang_specs_files ${_extravars3} \ 6111.70Sskrll | sanitise_includes 6121.1Smrg getvars gcc/Makefile \ 6131.1Smrg LIB2ADDEHDEP | sed 's/unwind.inc//' 6141.1Smrg getvars gcc/Makefile \ 6151.1Smrg CXX_OBJS CXX_C_OBJS | sed 's/cp\///g' 6161.1Smrg getvars gcc/Makefile \ 6171.1Smrg F77_OBJS | sed 's/f\///g' 6181.19Smrg case ${_subdir} in 6191.51Smrg gcc4 | gcc) 6201.19Smrg getvars libcpp/Makefile \ 6211.19Smrg libcpp_a_OBJS 6221.19Smrg ;; 6231.19Smrg gcc3) 6241.19Smrg getvars gcc/Makefile \ 6251.19Smrg LIBCPP_OBJS LIBCPP_H 6261.19Smrg ;; 6271.19Smrg esac 6281.12Sskrll getvars gcc/Makefile \ 6291.16Smrg ENABLE_SHARED 6301.20Sskrll case ${_subdir} in 6311.46Smrg gcc4 | gcc) 6321.20Sskrll echo G_SHLIB_LINK="$CC -shared" 6331.20Sskrll echo G_SHLIB_MULTILIB=. 6341.20Sskrll ;; 6351.20Sskrll esac 6361.46Smrg } | write_mk $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/defs.mk 6371.16Smrg 6381.16Smrg case "$_subdir" in 6391.46Smrg gcc4) 6401.46Smrg write_c $_OUTDIRBASE/usr.bin/$_subdir/libcpp/arch/$MACHINE_ARCH/config.h <$_TMPDIR/libcpp/config.h 6411.46Smrg hfiles='auto-host gencheck configargs gthr-default tm bconfig config multilib' 6421.16Smrg ;; 6431.46Smrg gcc) 6441.51Smrg write_c $_OUTDIRBASE/usr.bin/libcpp/arch/$MACHINE_ARCH/config.h <$_TMPDIR/libcpp/config.h 6451.51Smrg hfiles='auto-host configargs gthr-default tm bconfig config multilib bversion plugin-version' 6461.16Smrg ;; 6471.16Smrg esac 6481.16Smrg for f in $hfiles; do 6491.46Smrg write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gcc/$f.h 6501.62Smatt if [ "${MACHINE_ARCH}" = "powerpc" -a "${f}" = "configargs" ] 6511.62Smatt then 6521.62Smatt ex <<__EOF__ $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f.h 6531.62Smatt/configuration_arguments/ s/$// 6541.62Smattya 6551.62Smatti 6561.65Smatt#ifdef _SOFT_FLOAT 6571.62Smatt. 6581.62Smattpu 6591.62Smatts/";$/ -with-float=soft";/ 6601.62Smatta 6611.62Smatt#else 6621.62Smatt#endif 6631.62Smatt. 6641.62Smatt. m +1 6651.62Smatt/configure_default_options/ s/{ NULL.*$// 6661.62Smatta 6671.65Smatt#ifdef _SOFT_FLOAT 6681.62Smatt { "float", "soft" }, 6691.62Smatt#endif 6701.62Smatt { NULL, NULL } 6711.62Smatt}; 6721.62Smatt. 6731.62Smattwq 6741.62Smatt__EOF__ 6751.62Smatt fi 6761.1Smrg done 6771.50Smrg 6781.56Smrg # keep identical 6791.56Smrg for f in all-tree.def; do 6801.53Smrg cp $_TMPDIR/gcc/$f $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f 6811.51Smrg done 6821.56Smrg 6831.56Smrg # special transforms 6841.56Smrg for f in gtyp-input.list; do 6851.56Smrg sed -e 's/^.*external\/gpl3\/gcc\/dist/SRCDIR/' < $_TMPDIR/gcc/$f > $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f 6861.56Smrg done 6871.59Smrg 6881.59Smrg # special platforms 6891.59Smrg if [ "${MACHINE_ARCH}" = "sh3el" -o "${MACHINE_ARCH}" = "sh3eb" ]; then 6901.59Smrg write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/sysroot-suffix.h <$_TMPDIR/gcc/sysroot-suffix.h 6911.59Smrg fi 6921.1Smrg} 6931.1Smrg 6941.1Smrg##### main ##### 6951.1Smrg 6961.16Smrgcase "$1" in 6971.16Smrg# .mk and .h files for libgcc bootstrap (from host build) 6981.16Smrglibgcc) 6991.16Smrg get_libgcc gcc3 7001.16Smrg get_crtstuff crtstuff3 7011.16Smrg exit 0 7021.16Smrg ;; 7031.16Smrg 7041.16Smrglibgcc4) 7051.16Smrg get_libgcc gcc4 7061.16Smrg get_crtstuff crtstuff4 7071.16Smrg exit 0 7081.16Smrg ;; 7091.16Smrg 7101.66Sskrlllibgcc45) 7111.66Sskrll _OUTDIR="$_TOP/external/gpl3/gcc" 7121.66Sskrll _OUTDIRBASE="external/gpl3/gcc" 7131.66Sskrll get_libgcc gcc 7141.66Sskrll get_crtstuff crtstuff 7151.66Sskrll get_libgcov gcc 7161.68Sskrll get_gcc_bootstrap gcc 7171.66Sskrll exit 0 7181.66Sskrll ;; 7191.66Sskrll 7201.16Smrg# gcc files 7211.16Smrggcc4) 7221.16Smrg get_gcc gcc4 7231.16Smrg get_libgcc gcc4 7241.24Sskrll get_libgcov gcc4 7251.16Smrg get_crtstuff crtstuff4 7261.16Smrg get_gcc_libiberty gcc4 7271.16Smrg get_libobjc libobjc4 7281.16Smrg get_libstdcxx_v3 libstdc++-v3_4 7291.1Smrg exit 0 7301.1Smrg ;; 7311.1Smrg 7321.46Smrggcc45) 7331.46Smrg _OUTDIR="$_TOP/external/gpl3/gcc" 7341.46Smrg _OUTDIRBASE="external/gpl3/gcc" 7351.46Smrg get_gcc gcc 7361.46Smrg get_libgcc gcc 7371.46Smrg get_libgcov gcc 7381.46Smrg get_crtstuff crtstuff 7391.46Smrg get_gcc_libiberty gcc 7401.46Smrg get_libobjc libobjc 7411.16Smrg get_libstdcxx_v3 libstdc++-v3 7421.51Smrg get_libdecnumber libdecnumber 7431.63Smrg get_libgomp libgomp 7441.1Smrg exit 0 7451.1Smrg ;; 7461.1Smrg 7471.46Smrg 7481.1Smrg*) echo invalid arguments; exit 1;; 7491.1Smrgesac 750