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