mknative-gcc revision 1.72
11.1Smrg#!/bin/sh 21.72Sskrll# $NetBSD: mknative-gcc,v 1.72 2013/10/20 14:14:18 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.71Smrg_SRC=$4 131.71Smrg_PLATFORM=$5 141.71Smrg_DESTDIR=$6 151.71Smrg_ABI=$7 161.15Smrg_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'` 171.9Smrg_GNU_DIST=`cd ${_VPATH}; pwd` 181.9Smrg 191.61Smrgif [ -z "$_DESTDIR" ]; then 201.61Smrg echo "\$_DESTDIR is empty" 2>&1 211.61Smrg exit 1 221.61Smrgfi 231.61Smrg 241.9Smrg. $_TOP/tools/gcc/mknative.common 251.1Smrg 261.46Smrg# default to GCC 4.1 for now 271.46Smrg_OUTDIR="$_TOP/gnu" 281.46Smrg_OUTDIRBASE="gnu" 291.46Smrg 301.70Sskrllsanitise_includes () { 311.70Sskrll sed \ 321.70Sskrll -e "s,-I$_DESTDIR/usr/include,,g" \ 331.71Smrg -e "s,-I$_SRC/external/lgpl3/mpfr/dist,,g" \ 341.71Smrg -e "s,-I$_SRC/external/lgpl2/mpc/dist/src,,g" \ 351.71Smrg -e "s,-I$_SRC/external/lgpl3/gmp/lib/libgmp/arch/$MACHINE_ARCH,,g" \ 361.71Smrg -e "s,-I/usr/include/[^ ]*,," 371.70Sskrll} 381.70Sskrll 391.14Sthorpej##### gnu/lib/crtstuff ##### 401.14Sthorpej 411.14Sthorpejget_crtstuff () { 421.16Smrg _subdir="$1" 431.46Smrg mkdir -p $_OUTDIR/lib/$_subdir/arch 441.14Sthorpej 451.14Sthorpej getvars gcc/Makefile \ 461.67Sskrll INCLUDES CRTSTUFF_CFLAGS CRTSTUFF_T_CFLAGS CRTSTUFF_T_CFLAGS_S \ 471.14Sthorpej tm_defines xm_file xm_defines \ 481.70Sskrll | sanitise_includes \ 491.46Smrg | write_mk $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH.mk 501.14Sthorpej} 511.14Sthorpej 521.1Smrg##### gnu/lib/libg2c ##### 531.1Smrg 541.1Smrgget_libg2c () { 551.46Smrg mkdir -p $_OUTDIR/lib/libg2c3/arch/$MACHINE_ARCH 561.1Smrg 571.46Smrg write_c $_OUTDIRBASE/lib/libg2c3/arch/$MACHINE_ARCH/config.h <$_TMPDIR/$_PLATFORM/libf2c/libU77/config.h 581.46Smrg write_c $_OUTDIRBASE/lib/libg2c3/arch/$MACHINE_ARCH/g2c.h <$_TMPDIR/$_PLATFORM/libf2c/g2c.h 591.1Smrg 601.1Smrg { 611.1Smrg getvars $_PLATFORM/libf2c/Makefile \ 621.1Smrg F2CEXT 631.1Smrg getvars $_PLATFORM/libf2c/libF77/Makefile \ 641.1Smrg ALL_CFLAGS OBJS 651.1Smrg getvars $_PLATFORM/libf2c/libI77/Makefile \ 661.1Smrg ALL_CFLAGS OBJS | sed 's,=,+=,' 671.1Smrg getvars $_PLATFORM/libf2c/libU77/Makefile \ 681.1Smrg ALL_CFLAGS OBJS | sed 's,=,+=,' 691.46Smrg } | write_mk $_OUTDIRBASE/lib/libg2c3/arch/$MACHINE_ARCH/defs.mk 701.1Smrg} 711.1Smrg 721.1Smrg##### gnu/lib/libgcc ##### 731.1Smrg 741.28Suebayasiget_libgcc_list_funcs_asm () { 751.42Suebayasi { 761.42Suebayasi getvars gcc/Makefile LIB1ASMFUNCS | { 771.42Suebayasi # print newline separated list 781.42Suebayasi sed -e ' 791.42Suebayasi s,^.*=,, 801.42Suebayasi s, *$,, 811.42Suebayasi s, *, ,g 821.42Suebayasi s, ,\ 831.28Suebayasi,g' 841.42Suebayasi } 851.42Suebayasi getvars gcc/Makefile LIB2FUNCS_EXTRA | { 861.42Suebayasi # print newline separated list 871.42Suebayasi sed -e ' 881.42Suebayasi s,^.*=,, 891.42Suebayasi s, *$,, 901.42Suebayasi s, *, ,g 911.42Suebayasi s, ,\ 921.42Suebayasi,g' | \ 931.42Suebayasi sed -ne ' 941.42Suebayasi /\.S$/ { s,^.*/,,; s,\.S$,,; p; } 951.42Suebayasi /\.asm$/ { s,^.*/,,; s,\.asm$,,; p; } 961.42Suebayasi ' 971.42Suebayasi } 981.28Suebayasi } | { 991.28Suebayasi # print foo and foo_s 1001.28Suebayasi sed -ne ' 1011.28Suebayasi /./ { 1021.28Suebayasi p 1031.28Suebayasi s,$,_s, 1041.28Suebayasi p 1051.28Suebayasi } 1061.28Suebayasi ' 1071.28Suebayasi } | sort 1081.28Suebayasi} 1091.28Suebayasi 1101.29Suebayasiget_libgcc_list_funcs_lib () { 1111.29Suebayasi local _lib=$1 1121.29Suebayasi local _lib_prefix=${_lib%.*} 1131.29Suebayasi local _lib_suffix=${_lib#*.} 1141.44Suebayasi local _abi=${2:-'\.'} 1151.29Suebayasi 1161.43Suebayasi cat build/gcc/libgcc.mk | \ 1171.44Suebayasi grep '/'${_abi}'/' | \ 1181.29Suebayasi sed -ne ' 1191.45Suebayasi /^'${_abi}'\/'${_lib_prefix}'\.'${_lib_suffix}': .*\.o$/ { 1201.29Suebayasi s,^.*/,, 1211.29Suebayasi s,\.o$,, 1221.29Suebayasi p 1231.29Suebayasi } 1241.43Suebayasi ' | sort 1251.29Suebayasi} 1261.29Suebayasi 1271.30Suebayasiget_libgcc_list_objs_libs () { 1281.44Suebayasi local _abi=${1:-'\.'} 1291.44Suebayasi 1301.30Suebayasi cat build/gcc/libgcc.mk | \ 1311.44Suebayasi grep '/'${_abi}'/' | \ 1321.45Suebayasi egrep '^'${_abi}'\/(libgcc_s\.so|libgcc\.a|libgcc_eh\.a|libgcov\.a): (libgcc_s|libgcc|libgcc_eh|libgcov)\/.*\.o$' | \ 1331.30Suebayasi sed -e ' 1341.44Suebayasi s,^'${_abi}'\/,, 1351.30Suebayasi s,: .*/, , 1361.30Suebayasi s,^\(.*\) \(.*\)$,\2 \1, 1371.30Suebayasi ' | sort 1381.30Suebayasi} 1391.30Suebayasi 1401.30Suebayasiget_libgcc_list_objs_srcs () { 1411.44Suebayasi local _abi=${1:-'\.'} # XXX not used 1421.44Suebayasi 1431.41Suebayasi if [ -e $_TOP/${libgcc_db_funcs}.S ]; then 1441.30Suebayasi cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ 1451.30Suebayasi comm -23 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \ 1461.30Suebayasi sed -e 's,\(.*\),\1.o \1.c,' 1471.30Suebayasi 1481.30Suebayasi cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ 1491.30Suebayasi comm -12 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \ 1501.30Suebayasi sed -e 's,\(.*\),\1.o \1.S,' 1511.41Suebayasi else 1521.41Suebayasi cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ 1531.41Suebayasi sed -e 's,\(.*\),\1.o \1.c,' 1541.41Suebayasi fi | sort 1551.30Suebayasi} 1561.30Suebayasi 1571.40Suebayasiget_libgcc_list_objs_tmplsrcs () { 1581.44Suebayasi local _abi=${1:-'\.'} 1591.44Suebayasi 1601.32Suebayasi grep 'GCC_FOR_TARGET.*\.o$' build/gcc/libgcc.mk | \ 1611.44Suebayasi grep '/'${_abi}'/' | \ 1621.32Suebayasi sed -ne ' 1631.32Suebayasi s,^.* -c \([^ ]*\).* -o .*/\([^ ]*\.o\)$,\2 \1, 1641.32Suebayasi # basename 1651.32Suebayasi /\$/ { s,\$.*/,,; } 1661.32Suebayasi /\// { s,\/.*/,,; } 1671.32Suebayasi p 1681.43Suebayasi ' | sort -u 1691.32Suebayasi} 1701.32Suebayasi 1711.31Suebayasiget_libgcc_list_objs_xflags () { 1721.31Suebayasi local _flags=$1 1731.44Suebayasi local _abi=${2:-'\.'} 1741.31Suebayasi 1751.31Suebayasi grep 'GCC_FOR_TARGET.*\.o$' build/gcc/libgcc.mk | \ 1761.44Suebayasi grep '/'${_abi}'/' | \ 1771.31Suebayasi sed -n ' 1781.31Suebayasi x 1791.31Suebayasi :loop 1801.31Suebayasi g 1811.31Suebayasi s/^\(.*\) \(-['${_flags}'][^ ][^ ]*\) \(.*\) \(-o .*\)\/\(.*\.o\)$/\5 \2/p 1821.31Suebayasi g 1831.31Suebayasi s/^\(.*\) \(-['${_flags}'][^ ][^ ]*\) \(.*\) \(-o .*\)\/\(.*\.o\)$/\1 \3 \4\/\5/ 1841.31Suebayasi h 1851.31Suebayasi t loop 1861.31Suebayasi ' | sort 1871.31Suebayasi} 1881.31Suebayasi 1891.31Suebayasiget_libgcc_list_objs_cppflags () { 1901.44Suebayasi get_libgcc_list_objs_xflags D $1 1911.31Suebayasi} 1921.31Suebayasi 1931.31Suebayasiget_libgcc_list_objs_copts () { 1941.44Suebayasi get_libgcc_list_objs_xflags fmx $1 1951.31Suebayasi} 1961.31Suebayasi 1971.40Suebayasiget_libgcc_list_tmplsrcs () { 1981.33Suebayasi local _lib=$1 1991.44Suebayasi local _abi=$2 # XXX not used 2001.40Suebayasi local _tmplallsrcs=$( mktemp /tmp/mknative-gcc._tmplallsrcs.XXXXXX ) 2011.33Suebayasi 2021.40Suebayasi touch $_TOP/${libgcc_db_tmplsrcs}.tmplsrcs.${_lib%.*} 2031.40Suebayasi touch $_TOP/${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*} 2041.40Suebayasi touch $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} 2051.33Suebayasi 2061.33Suebayasi # all files 2071.33Suebayasi local _lib_prefix=${_lib%.*} 2081.33Suebayasi local _lib_suffix=${_lib#*.} 2091.40Suebayasi join $_TOP/$libgcc_db_objs_libs $_TOP/$libgcc_db_objs_tmplsrcs | \ 2101.33Suebayasi grep ${_lib_prefix}'\.'${_lib_suffix} | cut -d' ' -f 3 | sort -u > \ 2111.40Suebayasi $_tmplallsrcs 2121.33Suebayasi 2131.40Suebayasi # TMPLFPSRCS = [fdp]p-bit.c 2141.40Suebayasi grep '[fdt]p-bit\.c' <$_tmplallsrcs | sort -u | \ 2151.40Suebayasi writefile ${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*} 2161.40Suebayasi 2171.40Suebayasi # TMPLASMSRCS = $(LIB1ASMSRC) 2181.40Suebayasi grep '\$(LIB1ASMSRC)' <$_tmplallsrcs | sort -u | \ 2191.40Suebayasi writefile ${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} 2201.40Suebayasi 2211.40Suebayasi # TMPLSRCS is anything else; exclude TMPLFPSRCS and TMPLASMSRCS 2221.40Suebayasi cat $_tmplallsrcs | \ 2231.40Suebayasi comm -23 /dev/stdin $_TOP/${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*} | \ 2241.40Suebayasi comm -23 /dev/stdin $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} | \ 2251.40Suebayasi writefile ${libgcc_db_tmplsrcs}.tmplsrcs.${_lib%.*} 2261.33Suebayasi 2271.40Suebayasi rm -f $_tmplallsrcs 2281.33Suebayasi} 2291.33Suebayasi 2301.35Suebayasiget_libgcc_new_analyze () { 2311.44Suebayasi local _abi=$1 2321.44Suebayasi 2331.35Suebayasi mkdir -p $_TOP/${_machine_arch_subdir} 2341.35Suebayasi 2351.41Suebayasi touch $_TOP/${libgcc_db_funcs}.S 2361.35Suebayasi get_libgcc_list_funcs_asm | \ 2371.35Suebayasi writefile ${libgcc_db_funcs}.S 2381.35Suebayasi 2391.35Suebayasi for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do 2401.41Suebayasi touch $_TOP/${libgcc_db_funcs}.${_lib%.*} 2411.44Suebayasi get_libgcc_list_funcs_lib $_lib $_abi | \ 2421.35Suebayasi writefile ${libgcc_db_funcs}.${_lib%.*} 2431.35Suebayasi done 2441.35Suebayasi 2451.44Suebayasi get_libgcc_list_objs_libs $_abi | writefile ${libgcc_db_objs_libs} 2461.44Suebayasi get_libgcc_list_objs_srcs $_abi | writefile ${libgcc_db_objs_srcs} 2471.44Suebayasi get_libgcc_list_objs_tmplsrcs $_abi | writefile ${libgcc_db_objs_tmplsrcs} 2481.44Suebayasi get_libgcc_list_objs_cppflags $_abi | writefile ${libgcc_db_objs_cppflags} 2491.44Suebayasi get_libgcc_list_objs_copts $_abi | writefile ${libgcc_db_objs_copts} 2501.35Suebayasi 2511.35Suebayasi for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do 2521.44Suebayasi get_libgcc_list_tmplsrcs $_lib $_abi 2531.35Suebayasi done 2541.35Suebayasi} 2551.35Suebayasi 2561.35Suebayasi##### 2571.35Suebayasi 2581.40Suebayasiget_libgcc_gen_tmplsrcs_tmplsrcs () { 2591.37Suebayasi local _lib=$1 2601.37Suebayasi 2611.37Suebayasi printf '\n' 2621.40Suebayasi printf 'TMPLSRCS.%s = \\\n' $_lib 2631.40Suebayasi sed -e 's,^, ,; s,$, \\,' $_TOP/${libgcc_db_tmplsrcs}.tmplsrcs.${_lib%.*} 2641.37Suebayasi} 2651.37Suebayasi 2661.40Suebayasiget_libgcc_gen_tmplsrcs_tmplfpsrcs () { 2671.37Suebayasi local _lib=$1 2681.37Suebayasi 2691.37Suebayasi printf '\n' 2701.40Suebayasi printf 'TMPLFPSRCS.%s = \\\n' $_lib 2711.40Suebayasi sed -e 's,^, ,; s,$, \\,' $_TOP/${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*} 2721.37Suebayasi} 2731.37Suebayasi 2741.40Suebayasiget_libgcc_gen_tmplsrcs_tmplasmsrcs () { 2751.37Suebayasi local _lib=$1 2761.37Suebayasi 2771.37Suebayasi printf '\n' 2781.40Suebayasi printf 'TMPLASMSRCS.%s = \\\n' $_lib 2791.40Suebayasi sed -e 's,^, ,; s,$, \\,' $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} | \ 2801.37Suebayasi sed -e 's,LIB1ASMSRC,G_&,' 2811.37Suebayasi} 2821.37Suebayasi 2831.36Suebayasiget_libgcc_gen_srcs () { 2841.36Suebayasi local _lib=$1 2851.36Suebayasi 2861.36Suebayasi printf '\n' 2871.36Suebayasi printf 'SRCS.%s = \\\n' $_lib 2881.41Suebayasi if [ -e $_TOP/${libgcc_db_funcs}.S ]; then 2891.36Suebayasi comm -23 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \ 2901.36Suebayasi sed -e 's,$,.c,; s,^,tmp_,' 2911.36Suebayasi comm -12 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \ 2921.36Suebayasi sed -e 's,$,.S,; s,^,tmp_,' 2931.41Suebayasi else 2941.41Suebayasi cat $_TOP/${libgcc_db_funcs}.${_lib%.*} | \ 2951.41Suebayasi sed -e 's,$,.c,; s,^,tmp_,' 2961.41Suebayasi fi | sort | \ 2971.36Suebayasi sed -e 's,^, ,; s,$, \\,' 2981.36Suebayasi} 2991.36Suebayasi 3001.38Suebayasi_lookup_objs () { 3011.38Suebayasi local _obj=$1; local _key=$2 3021.38Suebayasi 3031.38Suebayasi eval grep \^$_obj\\\ \$_TOP/\${libgcc_db_objs_${_key}} | cut -f2 3041.38Suebayasi} 3051.38Suebayasi 3061.40Suebayasiget_libgcc_gen_srcs_tmplsrcs () { 3071.38Suebayasi cut -f1 $_TOP/${libgcc_db_objs_libs} | \ 3081.38Suebayasi while read _obj; do 3091.38Suebayasi printf 'SRCS.tmp_%s=%s\n' \ 3101.38Suebayasi "$( _lookup_objs $_obj srcs )" \ 3111.40Suebayasi "$( _lookup_objs $_obj tmplsrcs )" 3121.38Suebayasi done | \ 3131.38Suebayasi sed -e 's,\$(\(.*\)),${G_\1},' 3141.38Suebayasi} 3151.38Suebayasi 3161.38Suebayasiget_libgcc_gen_srcs_cppflags () { 3171.38Suebayasi cut -f1 $_TOP/${libgcc_db_objs_libs} | \ 3181.38Suebayasi while read _obj; do 3191.38Suebayasi printf '_CPPFLAGS.tmp_%s=%s\n' \ 3201.38Suebayasi "$( _lookup_objs $_obj srcs )" \ 3211.38Suebayasi "$( _lookup_objs $_obj cppflags | xargs )" 3221.38Suebayasi done 3231.38Suebayasi} 3241.38Suebayasi 3251.38Suebayasiget_libgcc_gen_srcs_copts () { 3261.38Suebayasi cut -f1 $_TOP/${libgcc_db_objs_libs} | \ 3271.38Suebayasi while read _obj; do 3281.38Suebayasi printf 'COPTS.tmp_%s=%s\n' \ 3291.38Suebayasi "$( _lookup_objs $_obj srcs )" \ 3301.38Suebayasi "$( _lookup_objs $_obj copts | xargs )" 3311.38Suebayasi done 3321.38Suebayasi} 3331.38Suebayasi 3341.35Suebayasiget_libgcc_new_generate () { 3351.44Suebayasi local _abi=$1 3361.44Suebayasi 3371.36Suebayasi for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do 3381.40Suebayasi for _tmpl in tmplsrcs tmplfpsrcs tmplasmsrcs; do 3391.40Suebayasi eval get_libgcc_gen_tmplsrcs_${_tmpl} $_lib | \ 3401.40Suebayasi write_mk ${libgcc_libs_mk}.${_lib%.*}.tmplsrcs.${_tmpl}.mk 3411.37Suebayasi done 3421.37Suebayasi 3431.36Suebayasi get_libgcc_gen_srcs $_lib | \ 3441.39Suebayasi write_mk ${libgcc_libs_mk}.${_lib%.*}.srcs.mk 3451.36Suebayasi done 3461.38Suebayasi 3471.40Suebayasi for _arg in tmplsrcs cppflags copts; do 3481.38Suebayasi eval get_libgcc_gen_srcs_${_arg} | \ 3491.38Suebayasi eval writefile \$libgcc_srcs_mk_${_arg} 3501.38Suebayasi done 3511.35Suebayasi} 3521.35Suebayasi 3531.33Suebayasi##### 3541.33Suebayasi 3551.28Suebayasiget_libgcc_new () { 3561.28Suebayasi _subdir="$1" 3571.44Suebayasi _abi="$2" 3581.27Suebayasi 3591.29Suebayasi # List of generated files. 3601.29Suebayasi 3611.46Smrg _machine_arch_subdir=$_OUTDIRBASE/lib/lib$_subdir/arch${_archsubdir}/$MACHINE_ARCH/$_abi 3621.27Suebayasi 3631.28Suebayasi libgcc_db_funcs=${_machine_arch_subdir}/funcs 3641.40Suebayasi libgcc_db_tmplsrcs=${_machine_arch_subdir}/tmplsrcs 3651.28Suebayasi libgcc_db_objs_libs=${_machine_arch_subdir}/objs.libs 3661.28Suebayasi libgcc_db_objs_srcs=${_machine_arch_subdir}/objs.srcs 3671.40Suebayasi libgcc_db_objs_tmplsrcs=${_machine_arch_subdir}/objs.tmplsrcs 3681.28Suebayasi libgcc_db_objs_cppflags=${_machine_arch_subdir}/objs.cppflags 3691.28Suebayasi libgcc_db_objs_copts=${_machine_arch_subdir}/objs.copts 3701.28Suebayasi 3711.44Suebayasi get_libgcc_new_analyze $_abi 3721.36Suebayasi 3731.39Suebayasi libgcc_libs_mk=${_machine_arch_subdir}/libs 3741.28Suebayasi libgcc_srcs_mk=${_machine_arch_subdir}/srcs.mk 3751.40Suebayasi libgcc_srcs_mk_tmplsrcs=${_machine_arch_subdir}/srcs.tmplsrcs.mk 3761.28Suebayasi libgcc_srcs_mk_cppflags=${_machine_arch_subdir}/srcs.cppflags.mk 3771.28Suebayasi libgcc_srcs_mk_copts=${_machine_arch_subdir}/srcs.copts.mk 3781.28Suebayasi 3791.44Suebayasi get_libgcc_new_generate $_abi 3801.26Suebayasi} 3811.26Suebayasi 3821.1Smrgget_libgcc () { 3831.16Smrg _subdir="$1" 3841.46Smrg mkdir -p $_OUTDIR/lib/lib$_subdir/arch 3851.16Smrg 3861.16Smrg case "$_subdir" in 3871.46Smrg gcc4|gcc) 3881.16Smrg _extravars="COLLECT2 UNWIND_H xm_include_list" 3891.16Smrg _archsubdir="" 3901.16Smrg ;; 3911.16Smrg esac 3921.1Smrg 3931.1Smrg # DPBIT, FPBIT only used on mn10[23]00, we don't need them. 3941.4Smrg # XXX we should probably grab everything Just In Case for 3951.4Smrg # the future. 3961.16Smrg { 3971.16Smrg getvars gcc/Makefile \ 3981.58Smrg INCLUDES LIB2ADD LIB2ADDEH LIB2ADD_ST \ 3991.16Smrg LIB1ASMFUNCS LIB1ASMSRC \ 4001.16Smrg LIB2_DIVMOD_FUNCS LIB2FUNCS_ST \ 4011.42Suebayasi LIB2FUNCS_EXTRA \ 4021.16Smrg LIBGCC2_CFLAGS \ 4031.16Smrg SHLIB_MKMAP SHLIB_MKMAP_OPTS \ 4041.16Smrg SHLIB_MAPFILES SHLIB_NM_FLAGS \ 4051.16Smrg EXTRA_HEADERS xm_defines \ 4061.16Smrg tm_defines ${_extravars} 4071.70Sskrll } | sanitise_includes \ 4081.69Sskrll | write_mk $_OUTDIRBASE/lib/lib$_subdir/arch${_archsubdir}/$MACHINE_ARCH.mk 4091.26Suebayasi 4101.26Suebayasi # Generate new style files. 4111.27Suebayasi if [ -n "${MKNATIVE_LIBGCC_NEW}" ]; then 4121.44Suebayasi get_libgcc_new $_subdir $_ABI 4131.26Suebayasi fi 4141.1Smrg} 4151.1Smrg 4161.24Sskrll##### gnu/lib/libgcov ##### 4171.24Sskrll 4181.24Sskrllget_libgcov () { 4191.24Sskrll _subdir="$1" 4201.24Sskrll 4211.46Smrg mkdir -p $_OUTDIR/lib/lib$_subdir/libgcov/arch/$MACHINE_ARCH 4221.24Sskrll 4231.24Sskrll { 4241.24Sskrll getvars gcc/Makefile \ 4251.24Sskrll LIBGCOV 4261.46Smrg } | write_mk $_OUTDIRBASE/lib/lib$_subdir/libgcov/arch/$MACHINE_ARCH/defs.mk 4271.24Sskrll 4281.46Smrg write_c $_OUTDIRBASE/lib/lib$_subdir/libgcov/arch/$MACHINE_ARCH/gcov-iov.h \ 4291.24Sskrll <$_TMPDIR/gcc/gcov-iov.h 4301.24Sskrll 4311.24Sskrll} 4321.24Sskrll 4331.16Smrg##### gnu/usr.bin/gcc[34]/libiberty ##### 4341.1Smrg 4351.16Smrgget_gcc_libiberty () { 4361.16Smrg _subdir="$1" 4371.46Smrg case "$_subdir" in 4381.46Smrg gcc4) 4391.46Smrg _libibertydir="usr.bin/$_subdir/libiberty" 4401.46Smrg ;; 4411.46Smrg gcc) 4421.48Smrg _libibertydir="lib/libiberty" 4431.46Smrg ;; 4441.46Smrg esac 4451.46Smrg mkdir -p $_OUTDIR/$_libibertydir/arch/$MACHINE_ARCH 4461.1Smrg 4471.1Smrg getvars libiberty/Makefile \ 4481.1Smrg ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \ 4491.46Smrg | write_mk $_OUTDIRBASE/$_libibertydir/defs.mk 4501.1Smrg 4511.46Smrg write_c $_OUTDIRBASE/$_libibertydir/arch/$MACHINE_ARCH/config.h \ 4521.1Smrg <$_TMPDIR/libiberty/config.h 4531.1Smrg} 4541.1Smrg 4551.51Smrg##### lib/libdecnumber ##### 4561.51Smrg 4571.51Smrgget_libdecnumber () { 4581.51Smrg _subdir="$1" 4591.51Smrg 4601.52Smrg mkdir -p $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH 4611.52Smrg write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/config.h \ 4621.51Smrg <$_TMPDIR/libdecnumber/config.h 4631.51Smrg} 4641.51Smrg 4651.63Smrg##### lib/libgomp ##### 4661.63Smrg 4671.63Smrgget_libgomp () { 4681.63Smrg _subdir="$1" 4691.63Smrg 4701.63Smrg mkdir -p $_OUTDIR/lib/$_subdir/arch/$MACHINE_ARCH 4711.63Smrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/config.h \ 4721.63Smrg <$_TMPDIR/$_PLATFORM/libgomp/config.h 4731.63Smrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/libgomp_f.h \ 4741.63Smrg <$_TMPDIR/$_PLATFORM/libgomp/libgomp_f.h 4751.63Smrg write_mk $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/libgomp.spec \ 4761.63Smrg <$_TMPDIR/$_PLATFORM/libgomp/libgomp.spec 4771.64Smrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/omp.h \ 4781.64Smrg <$_TMPDIR/$_PLATFORM/libgomp/omp.h 4791.63Smrg} 4801.63Smrg 4811.1Smrg##### gnu/lib/libobjc ##### 4821.1Smrg 4831.1Smrgget_libobjc () { 4841.46Smrg _subdir="$1/arch/$MACHINE_ARCH" 4851.46Smrg _options="ALL_OPT_FILES" 4861.46Smrg _unwind="UNWIND_H" 4871.18Smrg 4881.46Smrg mkdir -p $_OUTDIR/lib/$_subdir 4891.1Smrg 4901.16Smrg { 4911.18Smrg if [ -n "$_options" ]; then 4921.18Smrg getvars gcc/Makefile $_options 4931.18Smrg fi 4941.16Smrg getvars $_PLATFORM/libobjc/Makefile \ 4951.16Smrg ALL_CFLAGS INCLUDES OBJS OBJC_H \ 4961.16Smrg | sed "s,$_GNU_DIST,\${GNUHOSTDIST},g" 4971.20Sskrll if [ -n "$_unwind" ]; then 4981.20Sskrll getvars gcc/Makefile $_unwind 4991.20Sskrll fi 5001.46Smrg } | write_mk $_OUTDIRBASE/lib/$_subdir/defs.mk 5011.23Sskrll 5021.46Smrg write_c $_OUTDIRBASE/lib/$_subdir/config.h \ 5031.23Sskrll <$_TMPDIR/$_PLATFORM/libobjc/config.h 5041.1Smrg} 5051.1Smrg 5061.1Smrg##### gnu/lib/libstdc++-v3 ##### 5071.1Smrg 5081.1Smrgget_libstdcxx_v3 () { 5091.16Smrg _subdir="$1" 5101.46Smrg mkdir -p $_OUTDIR/lib/$_subdir/arch/$MACHINE_ARCH 5111.1Smrg 5121.16Smrg case ${_subdir} in 5131.46Smrg *) 5141.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" 5151.55Smrg _headers1="host_headers debug_headers tr1_headers c_compatibility_headers_extra tr1_impl_headers parallel_headers decimal_headers" 5161.55Smrg _headers2="thread_host_headers host_headers_extra" 5171.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" 5181.20Sskrll _unwind="UNWIND_H" 5191.16Smrg ;; 5201.16Smrg esac 5211.16Smrg 5221.19Smrg # build files 5231.19Smrg for h in $_build_headers; do 5241.46Smrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/$h \ 5251.19Smrg <$_TMPDIR/$_PLATFORM/libstdc++-v3/include/$_PLATFORM/bits/$h 5261.19Smrg done 5271.19Smrg 5281.46Smrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/config.h \ 5291.6Smrg <$_TMPDIR/$_PLATFORM/libstdc++-v3/config.h 5301.49Smrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/gstdint.h \ 5311.49Smrg <$_TMPDIR/$_PLATFORM/libstdc++-v3/include/gstdint.h 5321.6Smrg 5331.1Smrg { 5341.1Smrg # libsupc++ 5351.1Smrg getvars $_PLATFORM/libstdc++-v3/libsupc++/Makefile \ 5361.1Smrg sources | sed 's/^G_sources=/G_LIBSUPCXX_SOURCES=/' 5371.1Smrg getvars $_PLATFORM/libstdc++-v3/libsupc++/Makefile \ 5381.1Smrg c_sources | sed 's/^G_c_sources=/G_LIBSUPCXX_C_SOURCES=/' 5391.1Smrg 5401.1Smrg # src 5411.1Smrg getvars $_PLATFORM/libstdc++-v3/src/Makefile \ 5421.16Smrg sources $_src_CC_files SECTION_FLAGS | sed 's/^G_sources=/G_SRC_SOURCES=/' 5431.1Smrg 5441.1Smrg # include 5451.1Smrg getvars $_PLATFORM/libstdc++-v3/include/Makefile \ 5461.49Smrg c_base_headers std_headers | sed -e 's#/[^ ][^ ]*/##g' -e 's/\${GNUHOSTDIST}//g' 5471.1Smrg getvars $_PLATFORM/libstdc++-v3/include/Makefile \ 5481.1Smrg bits_headers backward_headers ext_headers c_base_headers_extra \ 5491.17Smrg $_headers1 | sed -e 's#/[^ ][^ ]*/##g' -e 's/\${GNUHOSTDIST}//g' 5501.1Smrg getvars $_PLATFORM/libstdc++-v3/include/Makefile \ 5511.17Smrg $_headers2 | sed -e 's#\./[^ ][^ ]*/##g' -e 's/\${GNUHOSTDIST}//g' 5521.16Smrg 5531.20Sskrll if [ -n "$_unwind" ]; then 5541.20Sskrll getvars gcc/Makefile $_unwind 5551.20Sskrll fi 5561.46Smrg } | write_mk $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/defs.mk 5571.1Smrg} 5581.1Smrg 5591.72Sskrll##### gnu/usr.bin/gcc* ##### 5601.1Smrg 5611.68Sskrllget_gcc_bootstrap () { 5621.68Sskrll _subdir="$1" 5631.68Sskrll mkdir -p $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH 5641.68Sskrll for f in auto-host tm config gthr-default; do 5651.68Sskrll write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gcc/$f.h 5661.68Sskrll done 5671.68Sskrll} 5681.68Sskrll 5691.1Smrgget_gcc () { 5701.16Smrg _subdir="$1" 5711.46Smrg mkdir -p $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH 5721.57Smrg mkdir -p $_OUTDIR/usr.bin/libcpp/arch/$MACHINE_ARCH 5731.19Smrg case ${_subdir} in 5741.19Smrg gcc4) 5751.19Smrg _buildname="BUILD_" 5761.19Smrg _libcppsubdir="" 5771.20Sskrll _extravars="TM_H ALL_OPT_FILES" 5781.20Sskrll _hconfig_h="" 5791.20Sskrll _extravars2="tm_file_list build_xm_include_list" 5801.20Sskrll _extravars3="tm_p_include_list" 5811.47Smrg ;; 5821.70Sskrll 5831.47Smrg gcc) 5841.47Smrg _buildname="BUILD_" 5851.47Smrg _libcppsubdir="" 5861.47Smrg _extravars="TM_H ALL_OPT_FILES" 5871.47Smrg _hconfig_h="" 5881.47Smrg _extravars2="tm_file_list build_xm_include_list" 5891.47Smrg _extravars3="tm_p_include_list" 5901.19Smrg ;; 5911.19Smrg esac 5921.1Smrg 5931.1Smrg { 5941.1Smrg getvars gcc/Makefile \ 5951.19Smrg ${_buildname}EARLY_SUPPORT ${_buildname}ERRORS ${_buildname}PRINT \ 5961.19Smrg ${_buildname}RTL ${_buildname}SUPPORT ${_buildname}VARRAY | \ 5971.16Smrg sed -e 's#build/errors.o#build-errors.o#g' \ 5981.16Smrg -e 's#build/print-rtl.o#build-print-rtl.o#g' \ 5991.16Smrg -e 's#build/rtl.o#build-rtl.o#g' \ 6001.16Smrg -e 's#build/varray.o#build-varray.o#g' \ 6011.22Smrg -e 's#build/ggc-none.o#build-ggc-none.o#g' \ 6021.16Smrg -e 's#build/##g' 6031.16Smrg getvars gcc/Makefile \ 6041.1Smrg ALL_CFLAGS ALL_CPPFLAGS C_AND_OBJC_OBJS C_OBJS CCCP_OBJS \ 6051.20Sskrll GCOV_OBJS PROTO_OBJS ${_extravars1} \ 6061.1Smrg INCLUDES md_file OBJC_OBJS OBJS out_file version \ 6071.20Sskrll BUILD_PREFIX RTL_H TREE_H ${_hconfig_h} BASIC_BLOCK_H GCC_H \ 6081.1Smrg GTFILES_SRCDIR GTFILES_FILES_FILES GTFILES_FILES_LANGS \ 6091.1Smrg GTFILES GTFILES_LANG_DIR_NAMES \ 6101.1Smrg tm_defines host_xm_file host_xm_defines tm_p_file \ 6111.21Smrg target_cpu_default ${_extravars} ${_extravars2} \ 6121.60Smrg lang_specs_files ${_extravars3} \ 6131.70Sskrll | sanitise_includes 6141.1Smrg getvars gcc/Makefile \ 6151.1Smrg LIB2ADDEHDEP | sed 's/unwind.inc//' 6161.1Smrg getvars gcc/Makefile \ 6171.1Smrg CXX_OBJS CXX_C_OBJS | sed 's/cp\///g' 6181.1Smrg getvars gcc/Makefile \ 6191.1Smrg F77_OBJS | sed 's/f\///g' 6201.19Smrg case ${_subdir} in 6211.51Smrg gcc4 | gcc) 6221.19Smrg getvars libcpp/Makefile \ 6231.19Smrg libcpp_a_OBJS 6241.19Smrg ;; 6251.12Sskrll getvars gcc/Makefile \ 6261.16Smrg ENABLE_SHARED 6271.20Sskrll case ${_subdir} in 6281.46Smrg gcc4 | gcc) 6291.20Sskrll echo G_SHLIB_LINK="$CC -shared" 6301.20Sskrll echo G_SHLIB_MULTILIB=. 6311.20Sskrll ;; 6321.20Sskrll esac 6331.46Smrg } | write_mk $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/defs.mk 6341.16Smrg 6351.16Smrg case "$_subdir" in 6361.46Smrg gcc4) 6371.46Smrg write_c $_OUTDIRBASE/usr.bin/$_subdir/libcpp/arch/$MACHINE_ARCH/config.h <$_TMPDIR/libcpp/config.h 6381.46Smrg hfiles='auto-host gencheck configargs gthr-default tm bconfig config multilib' 6391.16Smrg ;; 6401.46Smrg gcc) 6411.51Smrg write_c $_OUTDIRBASE/usr.bin/libcpp/arch/$MACHINE_ARCH/config.h <$_TMPDIR/libcpp/config.h 6421.51Smrg hfiles='auto-host configargs gthr-default tm bconfig config multilib bversion plugin-version' 6431.16Smrg ;; 6441.16Smrg esac 6451.16Smrg for f in $hfiles; do 6461.46Smrg write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gcc/$f.h 6471.62Smatt if [ "${MACHINE_ARCH}" = "powerpc" -a "${f}" = "configargs" ] 6481.62Smatt then 6491.62Smatt ex <<__EOF__ $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f.h 6501.62Smatt/configuration_arguments/ s/$// 6511.62Smattya 6521.62Smatti 6531.65Smatt#ifdef _SOFT_FLOAT 6541.62Smatt. 6551.62Smattpu 6561.62Smatts/";$/ -with-float=soft";/ 6571.62Smatta 6581.62Smatt#else 6591.62Smatt#endif 6601.62Smatt. 6611.62Smatt. m +1 6621.62Smatt/configure_default_options/ s/{ NULL.*$// 6631.62Smatta 6641.65Smatt#ifdef _SOFT_FLOAT 6651.62Smatt { "float", "soft" }, 6661.62Smatt#endif 6671.62Smatt { NULL, NULL } 6681.62Smatt}; 6691.62Smatt. 6701.62Smattwq 6711.62Smatt__EOF__ 6721.62Smatt fi 6731.1Smrg done 6741.50Smrg 6751.56Smrg # keep identical 6761.56Smrg for f in all-tree.def; do 6771.53Smrg cp $_TMPDIR/gcc/$f $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f 6781.51Smrg done 6791.56Smrg 6801.56Smrg # special transforms 6811.56Smrg for f in gtyp-input.list; do 6821.56Smrg sed -e 's/^.*external\/gpl3\/gcc\/dist/SRCDIR/' < $_TMPDIR/gcc/$f > $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f 6831.56Smrg done 6841.59Smrg 6851.59Smrg # special platforms 6861.59Smrg if [ "${MACHINE_ARCH}" = "sh3el" -o "${MACHINE_ARCH}" = "sh3eb" ]; then 6871.59Smrg write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/sysroot-suffix.h <$_TMPDIR/gcc/sysroot-suffix.h 6881.59Smrg fi 6891.1Smrg} 6901.1Smrg 6911.1Smrg##### main ##### 6921.1Smrg 6931.16Smrgcase "$1" in 6941.16Smrg# .mk and .h files for libgcc bootstrap (from host build) 6951.16Smrg 6961.16Smrglibgcc4) 6971.16Smrg get_libgcc gcc4 6981.16Smrg get_crtstuff crtstuff4 6991.16Smrg exit 0 7001.16Smrg ;; 7011.16Smrg 7021.66Sskrlllibgcc45) 7031.66Sskrll _OUTDIR="$_TOP/external/gpl3/gcc" 7041.66Sskrll _OUTDIRBASE="external/gpl3/gcc" 7051.66Sskrll get_libgcc gcc 7061.66Sskrll get_crtstuff crtstuff 7071.66Sskrll get_libgcov gcc 7081.68Sskrll get_gcc_bootstrap gcc 7091.66Sskrll exit 0 7101.66Sskrll ;; 7111.66Sskrll 7121.16Smrg# gcc files 7131.16Smrggcc4) 7141.16Smrg get_gcc gcc4 7151.16Smrg get_libgcc gcc4 7161.24Sskrll get_libgcov gcc4 7171.16Smrg get_crtstuff crtstuff4 7181.16Smrg get_gcc_libiberty gcc4 7191.16Smrg get_libobjc libobjc4 7201.16Smrg get_libstdcxx_v3 libstdc++-v3_4 7211.1Smrg exit 0 7221.1Smrg ;; 7231.1Smrg 7241.46Smrggcc45) 7251.46Smrg _OUTDIR="$_TOP/external/gpl3/gcc" 7261.46Smrg _OUTDIRBASE="external/gpl3/gcc" 7271.46Smrg get_gcc gcc 7281.46Smrg get_libgcc gcc 7291.46Smrg get_libgcov gcc 7301.46Smrg get_crtstuff crtstuff 7311.46Smrg get_gcc_libiberty gcc 7321.46Smrg get_libobjc libobjc 7331.16Smrg get_libstdcxx_v3 libstdc++-v3 7341.51Smrg get_libdecnumber libdecnumber 7351.63Smrg get_libgomp libgomp 7361.1Smrg exit 0 7371.1Smrg ;; 7381.1Smrg 7391.46Smrg 7401.1Smrg*) echo invalid arguments; exit 1;; 7411.1Smrgesac 742