xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-devtools/gcc/gcc-configure-common.inc (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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