1require gcc-multilib-config.inc 2require gcc-shared-source.inc 3# 4# Build the list of lanaguages to build. 5# 6# These can be overridden by the version specific .inc file. 7 8# gcc 3.x expects 'f77', 4.0 expects 'f95', 4.1 and 4.2 expect 'fortran' 9FORTRAN ?= ",f77" 10LANGUAGES ?= "c,c++${FORTRAN}" 11 12EXTRA_OECONF_BASE ?= "" 13EXTRA_OECONF_PATHS ?= "" 14 15GCCMULTILIB ?= "--disable-multilib" 16GCCTHREADS ?= "posix" 17 18GCCPIE ??= "" 19 20SYMVERS_CONF ?= "--enable-symvers=gnu" 21 22EXTRA_OECONF = "\ 23 ${@['--enable-clocale=generic', ''][d.getVar('USE_NLS') != 'no']} \ 24 --with-gnu-ld \ 25 --enable-shared \ 26 --enable-languages=${LANGUAGES} \ 27 --enable-threads=${GCCTHREADS} \ 28 ${GCCMULTILIB} \ 29 ${GCCPIE} \ 30 --enable-c99 \ 31 --enable-long-long \ 32 ${SYMVERS_CONF} \ 33 --enable-libstdcxx-pch \ 34 --program-prefix=${TARGET_PREFIX} \ 35 --without-local-prefix \ 36 --disable-install-libiberty \ 37 ${EXTRA_OECONF_BASE} \ 38 ${EXTRA_OECONF_GCC_FLOAT} \ 39 ${EXTRA_OECONF_PATHS} \ 40 ${@get_gcc_mips_plt_setting(bb, d)} \ 41 ${@get_gcc_ppc_plt_settings(bb, d)} \ 42 ${@get_gcc_multiarch_setting(bb, d)} \ 43 --enable-standard-branch-protection \ 44" 45 46# glibc version is a minimum controlling whether features are enabled. 47# Doesn't need to track glibc exactly 48EXTRA_OECONF:append:libc-glibc = " --with-glibc-version=2.28 " 49 50# Set this here since GCC configure won't auto-detect and enable 51# initfini-arry when cross compiling. 52EXTRA_OECONF:append = " --enable-initfini-array" 53 54export gcc_cv_collect2_libs = 'none required' 55# We need to set gcc_cv_collect2_libs else there is cross-compilation badness 56# in the config.log files (which might not get generated until do_compile 57# hence being missed by the insane do_configure check). 58 59EXTRA_OECONF:append:linux = " --enable-__cxa_atexit" 60 61EXTRA_OECONF:append:mips64 = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64" 62EXTRA_OECONF:append:mips64el = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64" 63EXTRA_OECONF:append:mips64n32 = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64" 64EXTRA_OECONF:append:mips64eln32 = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64" 65EXTRA_OECONF:append:mipsisa32r6el = " --with-abi=32 --with-arch=mips32r6" 66EXTRA_OECONF:append:mipsisa32r6 = " --with-abi=32 --with-arch=mips32r6" 67EXTRA_OECONF:append:mipsisa64r6el = " --with-abi=64 --with-arch-64=mips64r6" 68EXTRA_OECONF:append:mipsisa64r6 = " --with-abi=64 --with-arch-64=mips64r6" 69 70EXTRA_OECONF_GCC_FLOAT ??= "" 71CPPFLAGS = "" 72 73SYSTEMHEADERS = "${target_includedir}" 74SYSTEMLIBS = "${target_base_libdir}/" 75SYSTEMLIBS1 = "${target_libdir}/" 76 77do_configure:prepend () { 78 # teach gcc to find correct target includedir when checking libc ssp support 79 mkdir -p ${B}/gcc 80 echo "NATIVE_SYSTEM_HEADER_DIR = ${SYSTEMHEADERS}" > ${B}/gcc/t-oe 81 cat ${S}/gcc/defaults.h | grep -v "\#endif.*GCC_DEFAULTS_H" > ${B}/gcc/defaults.h.new 82 cat >>${B}/gcc/defaults.h.new <<_EOF 83#define NATIVE_SYSTEM_HEADER_DIR "${SYSTEMHEADERS}" 84#define STANDARD_STARTFILE_PREFIX_1 "${SYSTEMLIBS}" 85#define STANDARD_STARTFILE_PREFIX_2 "${SYSTEMLIBS1}" 86#define SYSTEMLIBS_DIR "${SYSTEMLIBS}" 87#endif /* ! GCC_DEFAULTS_H */ 88_EOF 89 mv ${B}/gcc/defaults.h.new ${B}/gcc/defaults.h 90} 91 92do_configure () { 93 # Setup these vars for cross building only 94 # ... because foo_FOR_TARGET apparently gets misinterpreted inside the 95 # gcc build stuff when the build is producing a cross compiler - i.e. 96 # when the 'current' target is the 'host' system, and the host is not 97 # the target (because the build is actually making a cross compiler!) 98 if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then 99 export CC_FOR_TARGET="${CC}" 100 export GCC_FOR_TARGET="${CC}" 101 export CXX_FOR_TARGET="${CXX}" 102 export AS_FOR_TARGET="${HOST_PREFIX}as" 103 export LD_FOR_TARGET="${HOST_PREFIX}ld" 104 export NM_FOR_TARGET="${HOST_PREFIX}nm" 105 export AR_FOR_TARGET="${HOST_PREFIX}ar" 106 export GFORTRAN_FOR_TARGET="gfortran" 107 export RANLIB_FOR_TARGET="${HOST_PREFIX}ranlib" 108 fi 109 export CC_FOR_BUILD="${BUILD_CC}" 110 export CXX_FOR_BUILD="${BUILD_CXX}" 111 export CFLAGS_FOR_BUILD="${BUILD_CFLAGS}" 112 export CPPFLAGS_FOR_BUILD="${BUILD_CPPFLAGS}" 113 export CXXFLAGS_FOR_BUILD="${BUILD_CXXFLAGS}" 114 export LDFLAGS_FOR_BUILD="${BUILD_LDFLAGS}" 115 export CFLAGS_FOR_TARGET="${TARGET_CFLAGS}" 116 export CPPFLAGS_FOR_TARGET="${TARGET_CPPFLAGS}" 117 export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}" 118 export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}" 119 120 121 oe_runconf 122} 123 124