xref: /OK3568_Linux_fs/buildroot/package/gcc/gcc-target/gcc-target.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun################################################################################
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# gcc-target
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun################################################################################
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunGCC_TARGET_VERSION = $(GCC_VERSION)
8*4882a593SmuzhiyunGCC_TARGET_SITE = $(GCC_SITE)
9*4882a593SmuzhiyunGCC_TARGET_SOURCE = $(GCC_SOURCE)
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun# Use the same archive as gcc-initial and gcc-final
12*4882a593SmuzhiyunGCC_TARGET_DL_SUBDIR = gcc
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunGCC_TARGET_DEPENDENCIES = binutils gmp mpfr mpc
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun# First, we use HOST_GCC_COMMON_MAKE_OPTS to get a lot of correct flags (such as
17*4882a593Smuzhiyun# the arch, abi, float support, etc.) which are based on the config used to
18*4882a593Smuzhiyun# build the internal toolchain
19*4882a593SmuzhiyunGCC_TARGET_CONF_OPTS = $(HOST_GCC_COMMON_CONF_OPTS)
20*4882a593Smuzhiyun# Then, we modify incorrect flags from HOST_GCC_COMMON_CONF_OPTS
21*4882a593SmuzhiyunGCC_TARGET_CONF_OPTS += \
22*4882a593Smuzhiyun	--with-sysroot=/ \
23*4882a593Smuzhiyun	--with-build-sysroot=$(STAGING_DIR) \
24*4882a593Smuzhiyun	--disable-__cxa_atexit \
25*4882a593Smuzhiyun	--with-gmp=$(STAGING_DIR) \
26*4882a593Smuzhiyun	--with-mpc=$(STAGING_DIR) \
27*4882a593Smuzhiyun	--with-mpfr=$(STAGING_DIR)
28*4882a593Smuzhiyun# Then, we force certain flags that may appear in HOST_GCC_COMMON_CONF_OPTS
29*4882a593SmuzhiyunGCC_TARGET_CONF_OPTS += \
30*4882a593Smuzhiyun	--disable-libquadmath \
31*4882a593Smuzhiyun	--disable-libsanitizer \
32*4882a593Smuzhiyun	--disable-plugin \
33*4882a593Smuzhiyun	--disable-lto
34*4882a593Smuzhiyun# Finally, we add some of our own flags
35*4882a593SmuzhiyunGCC_TARGET_CONF_OPTS += \
36*4882a593Smuzhiyun	--enable-languages=c \
37*4882a593Smuzhiyun	--disable-boostrap \
38*4882a593Smuzhiyun	--disable-libgomp \
39*4882a593Smuzhiyun	--disable-nls \
40*4882a593Smuzhiyun	--disable-libmpx \
41*4882a593Smuzhiyun	--disable-gcov \
42*4882a593Smuzhiyun	$(EXTRA_TARGET_GCC_CONFIG_OPTIONS)
43*4882a593Smuzhiyun
44*4882a593SmuzhiyunGCC_TARGET_CONF_ENV = $(HOST_GCC_COMMON_CONF_ENV)
45*4882a593Smuzhiyun
46*4882a593SmuzhiyunGCC_TARGET_MAKE_OPTS += $(HOST_GCC_COMMON_MAKE_OPTS)
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun# Install standard C headers (from glibc)
49*4882a593Smuzhiyundefine GCC_TARGET_INSTALL_HEADERS
50*4882a593Smuzhiyun	cp -r $(STAGING_DIR)/usr/include $(TARGET_DIR)/usr
51*4882a593Smuzhiyunendef
52*4882a593SmuzhiyunGCC_TARGET_POST_INSTALL_TARGET_HOOKS += GCC_TARGET_INSTALL_HEADERS
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun# Install standard C libraries (from glibc)
55*4882a593SmuzhiyunGCC_TARGET_GLIBC_LIBS = \
56*4882a593Smuzhiyun	*crt*.o *_nonshared.a \
57*4882a593Smuzhiyun	libBrokenLocale.so libanl.so libbfd.so libc.so libcrypt.so libdl.so \
58*4882a593Smuzhiyun	libm.so libnss_compat.so libnss_db.so libnss_files.so libnss_hesiod.so \
59*4882a593Smuzhiyun	libpthread.so libresolv.so librt.so libthread_db.so libutil.so
60*4882a593Smuzhiyun
61*4882a593Smuzhiyundefine GCC_TARGET_INSTALL_LIBS
62*4882a593Smuzhiyun	for libpattern in $(GCC_TARGET_GLIBC_LIBS); do \
63*4882a593Smuzhiyun		$(call copy_toolchain_lib_root,$$libpattern) ; \
64*4882a593Smuzhiyun	done
65*4882a593Smuzhiyunendef
66*4882a593SmuzhiyunGCC_TARGET_POST_INSTALL_TARGET_HOOKS += GCC_TARGET_INSTALL_LIBS
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun# Remove unnecessary files (extra links to gcc binaries, and libgcc which is
69*4882a593Smuzhiyun# already in `/lib`)
70*4882a593Smuzhiyundefine GCC_TARGET_RM_FILES
71*4882a593Smuzhiyun	rm -f $(TARGET_DIR)/usr/bin/$(ARCH)-buildroot-linux-gnu-gcc*
72*4882a593Smuzhiyun	rm -f $(TARGET_DIR)/usr/lib/libgcc_s*.so*
73*4882a593Smuzhiyun	rm -f $(TARGET_DIR)/usr/$(ARCH)-buildroot-linux-gnu/lib/ldscripts/elf32*
74*4882a593Smuzhiyun	rm -f $(TARGET_DIR)/usr/$(ARCH)-buildroot-linux-gnu/lib/ldscripts/elf64b*
75*4882a593Smuzhiyunendef
76*4882a593SmuzhiyunGCC_TARGET_POST_INSTALL_TARGET_HOOKS += GCC_TARGET_RM_FILES
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun$(eval $(autotools-package))
79