1 include $(TOP)/config/make.cfg
3 BINUTILS_VERSION = 2.21.1
8 # gcc 4.6.2 can't build arm Objective C support without
10 ifneq (,$(findstring $(AROS_TARGET_CPU),arm))
13 --with-arch=$(GCC_DEFAULT_CPU) --with-float=$(GCC_DEFAULT_FLOAT_ABI) --with-fpu=$(GCC_DEFAULT_FPU) --with-mode=arm \
14 --target=$(AROS_TARGET_CPU)-aros --bindir=$(CROSSTOOLSDIR) --enable-languages=$(GCC_LANGUAGES) \
15 --enable-long-long --enable-version-specific-runtime-libs --disable-multilib
17 GCC_LANGUAGES = c,c++,objc
19 --target=$(AROS_TARGET_CPU)-aros --bindir=$(CROSSTOOLSDIR) --enable-languages=$(GCC_LANGUAGES) \
20 --enable-long-long --enable-version-specific-runtime-libs
26 GCC_EXTRA_OPTS += --with-sysroot=$(AROS_DEVELOPMENT) --with-build-sysroot=$(AROS_DEVELOPMENT)
27 GCC_EXTRA_OPTS += --disable-bootstrap
28 GCC_EXTRA_OPTS += --enable-sjlj-exceptions=no --enable-tls=no
29 GCC_PATH = `LANG=en_US $(CROSSTOOLSDIR)/$(AROS_TARGET_CPU)-aros-gcc -print-search-dirs | grep "programs: =" | cut -c 12-`
30 GCC_UNUSED_BUT_SET_VARIABLE := -Wno-unused-but-set-variable
31 GCC_ARRAY_BOUNDS := -Wno-array-bounds
32 GCC_ENUM_COMPARE := -Wno-enum-compare
34 GNU_REPOSITORY := gnu://
35 MPC_REPOSITORY := http://www.multiprecision.org/mpc/download/
37 binutils-installflag := $(CROSSTOOLSDIR)/.installflag-binutils-$(BINUTILS_VERSION)-$(AROS_TARGET_CPU)
38 gmp-installflag := $(CROSSTOOLSDIR)/.installflag-gmp-$(GMP_VERSION)
39 mpfr-installflag := $(CROSSTOOLSDIR)/.installflag-mpfr-$(MPFR_VERSION)
40 mpc-installflag := $(CROSSTOOLSDIR)/.installflag-mpc-$(MPC_VERSION)
41 gcc-installflag := $(CROSSTOOLSDIR)/.installflag-gcc-$(GCC_VERSION)-$(AROS_TARGET_CPU)
43 #MM- tools-crosstools : tools-crosstools-$(AROS_TARGET_CPU)
45 #MM- tools-crosstools-m68k : tools-crosstools-gcc crosstools-gcc
46 #MM- tools-crosstools-i386 : tools-crosstools-gcc crosstools-gcc
47 #MM- tools-crosstools-x86_64 : tools-crosstools-gcc crosstools-gcc
48 #MM- tools-crosstools-ppc : tools-crosstools-gcc crosstools-gcc
49 #MM- tools-crosstools-arm : tools-crosstools-gcc crosstools-gcc
51 #MM- crosstools-gcc: includes-copy-mlib core-linklibs
53 #MM tools-crosstools-gcc : tools-crosstools-binutils tools-crosstools-collect-aros \
54 #MM compiler-includes compiler-clib-includes \
55 #MM tools-crosstools-gmp \
56 #MM tools-crosstools-mpfr \
57 #MM tools-crosstools-mpc
59 # We intentionally bypass the usual fetch_and_build macro below and call mmakefile and gcc makefile
60 # targets directly. This is in order to not build the core-linklibs target during binutils and gcc
61 # builds because we want these static linker libraries be generated by the cross tool chain we are building
62 # right here. Additionally, we also want to maintain our own install flag files inside the directory
63 # specified by --with-crosstools. This directory may even reside outside of the usual aros build directory
64 # and can be reused between complete rebuilds.
67 tools-crosstools-gmp :
68 @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
69 || ! $(TEST) -f $(gmp-installflag) ; then \
70 $(RM) $(HOSTGENDIR)/$(CURDIR)/gmp/.files-touched \
71 && $(MAKE) -f ./mmakefile crosstools-gmp--fetch \
72 && $(MAKE) -f ./mmakefile crosstools-gmp--build_and_install-quick \
73 && $(TOUCH) $(gmp-installflag) ; \
77 %fetch_and_build mmake=crosstools-gmp package=gmp version=$(GMP_VERSION) compiler=host \
78 package_repo="$(GNU_REPOSITORY)/gmp" \
80 prefix="$(CROSSTOOLSDIR)" \
81 extraoptions="--bindir=$(CROSSTOOLSDIR) --disable-shared"
84 tools-crosstools-mpfr :
85 @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
86 || ! $(TEST) -f $(mpfr-installflag) ; then \
87 $(RM) $(HOSTGENDIR)/$(CURDIR)/mpfr/.files-touched \
88 && $(MAKE) -f ./mmakefile crosstools-mpfr--fetch \
89 && $(MAKE) -f ./mmakefile crosstools-mpfr--build_and_install-quick \
90 && $(TOUCH) $(mpfr-installflag) ; \
94 %fetch_and_build mmake=crosstools-mpfr package=mpfr version=$(MPFR_VERSION) compiler=host \
95 package_repo="$(GNU_REPOSITORY)/mpfr" \
97 prefix="$(CROSSTOOLSDIR)" \
98 extraoptions="--bindir=$(CROSSTOOLSDIR) --disable-shared"
101 tools-crosstools-mpc :
102 @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
103 || ! $(TEST) -f $(mpc-installflag) ; then \
104 $(RM) $(HOSTGENDIR)/$(CURDIR)/mpc/.files-touched \
105 && $(MAKE) -f ./mmakefile crosstools-mpc--fetch \
106 && $(MAKE) -f ./mmakefile crosstools-mpc--build_and_install-quick \
107 && $(TOUCH) $(mpc-installflag) ; \
111 %fetch_and_build mmake=crosstools-mpc package=mpc version=$(MPC_VERSION) compiler=host \
112 package_repo="$(MPC_REPOSITORY)" suffixes="tar.gz" \
114 prefix="$(CROSSTOOLSDIR)" \
115 extraoptions="--bindir=$(CROSSTOOLSDIR) --disable-shared"
118 tools-crosstools-binutils :
119 @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
120 || ! $(TEST) -f $(binutils-installflag) ; then \
121 $(RM) $(HOSTGENDIR)/$(CURDIR)/binutils/.files-touched \
122 && $(MAKE) -f ./mmakefile crosstools-binutils--fetch \
123 && $(MAKE) -f ./mmakefile crosstools-binutils--build_and_install-quick \
124 && $(TOUCH) $(binutils-installflag) ; \
128 %fetch_and_build mmake=crosstools-binutils package=binutils version=$(BINUTILS_VERSION) compiler=host \
129 package_repo="$(GNU_REPOSITORY)/binutils" \
131 prefix="$(CROSSTOOLSDIR)" \
132 extraoptions="--target=$(AROS_TARGET_CPU)-aros -bindir=$(CROSSTOOLSDIR) --with-sysroot=$(AROS_DEVELOPMENT) --disable-werror"
134 HOST_CFLAGS := $(HOST_CFLAGS) $(HOST_GNU89_INLINE)
137 tools-crosstools-gcc :
138 @$(IF) ! $(TEST) -f $(gcc-installflag) ; then \
139 $(RM) $(HOSTGENDIR)/$(CURDIR)/gcc/.files-touched \
140 && $(MAKE) -f ./mmakefile crosstools-gcc--fetch \
141 && $(MAKE) -f ./mmakefile crosstools-gcc--configure \
142 && $(MAKE) -C $(HOSTGENDIR)/$(CURDIR)/gcc all-gcc \
143 && $(MAKE) -j1 -C $(HOSTGENDIR)/$(CURDIR)/gcc install-gcc \
144 && $(TOUCH) $(gcc-installflag) ; \
146 @$(IF) $(TEST) -f $(gcc-installflag); then \
147 $(SED) -i -e "s|@aros_target_cc_path@|$(GCC_PATH)|g" $(TOOLDIR)/$(AROS_TARGET_CPU)-$(AROS_TARGET_ARCH)$(AROS_TARGET_SUFFIX)-aros-ld ; \
148 $(SED) -i -e "s|@aros_cflags_unused_but_set_variable@|$(GCC_UNUSED_BUT_SET_VARIABLE)|g" $(GENDIR)/config/target.cfg ; \
149 $(SED) -i -e "s|@aros_cflags_array_bounds@|$(GCC_ARRAY_BOUNDS)|g" $(GENDIR)/config/target.cfg ; \
150 $(SED) -i -e "s|@aros_cflags_enum_compare@|$(GCC_ENUM_COMPARE)|g" $(GENDIR)/config/target.cfg ; \
151 $(SED) -i -e "s|@aros_cflags_format_security@|-Wno-format-security|g" $(GENDIR)/config/target.cfg ; \
152 $(SED) -i -e "s|@aros_cflags_strict_overflow@|-Wno-strict-overflow|g" $(GENDIR)/config/target.cfg ; \
155 %fetch_and_build mmake=crosstools-gcc package=gcc version=$(GCC_VERSION) compiler=host \
156 package_repo="$(GNU_REPOSITORY)/gcc/gcc-$(GCC_VERSION)" \
158 prefix="$(CROSSTOOLSDIR)" \
159 extraoptions="$(GCC_EXTRA_OPTS)"