1 include $(TOP)/config/make.cfg
8 ICU_PKGVERSION=$(subst .,_,$(ICU_VERSION))
11 --bindir=$(CROSSTOOLSDIR) \
12 --sbindir=$(CROSSTOOLSDIR) \
19 --with-data-packaging=static
21 BINUTILS_VERSION = $(TARGET_BINUTILS_VER)
23 BINUTILS_EXTRA_OPTS := --target=$(AROS_TARGET_CPU)-aros
24 BINUTILS_EXTRA_OPTS += -bindir=$(CROSSTOOLSDIR)
25 BINUTILS_EXTRA_OPTS += --libdir=$(CROSSTOOLSDIR)/lib
26 BINUTILS_EXTRA_OPTS += --with-sysroot=$(AROS_DEVELOPMENT)
27 BINUTILS_EXTRA_OPTS += --disable-werror
29 GCC_VERSION = $(TARGET_GCC_VER)
32 ifneq (no-objc,$(OBJC_TARGET))
33 GCC_LANGUAGES:=$(GCC_LANGUAGES),objc
35 ifneq (no-java,$(JAVA_TARGET))
36 GCC_LANGUAGES:=$(GCC_LANGUAGES),java
39 GCC_EXTRA_OPTS := --target=$(AROS_TARGET_CPU)-aros
41 # ARM requires additional flags to determine CPU type and FP model
42 ifneq (,$(findstring $(AROS_TARGET_CPU),arm))
43 GCC_EXTRA_OPTS += --with-arch=$(GCC_DEFAULT_CPU)
44 GCC_EXTRA_OPTS += --with-float=$(GCC_DEFAULT_FLOAT_ABI)
45 GCC_EXTRA_OPTS += --with-fpu=$(GCC_DEFAULT_FPU)
46 GCC_EXTRA_OPTS += --with-mode=arm
49 GCC_EXTRA_OPTS += --with-sysroot=$(AROS_DEVELOPMENT)
50 GCC_EXTRA_OPTS += --bindir=$(CROSSTOOLSDIR)
51 GCC_EXTRA_OPTS += --enable-languages=$(strip $(GCC_LANGUAGES))
52 GCC_EXTRA_OPTS += --enable-long-long
53 GCC_EXTRA_OPTS += --enable-version-specific-runtime-libs
54 GCC_EXTRA_OPTS += --disable-bootstrap
55 GCC_EXTRA_OPTS += --disable-sjlj-exceptions
56 GCC_EXTRA_OPTS += --disable-tls
57 GCC_EXTRA_OPTS += --disable-plugins
58 GCC_EXTRA_OPTS += --with-dwarf2
59 GCC_EXTRA_OPTS += --enable-frame-pointer
60 GCC_EXTRA_OPTS += --libdir=$(CROSSTOOLSDIR)/lib
61 GCC_PATH = `LANG=en_US $(CROSSTOOLSDIR)/$(AROS_TARGET_CPU)-aros-gcc -print-search-dirs | grep "programs: =" | cut -c 12-`
62 GCC_UNUSED_BUT_SET_VARIABLE := -Wno-unused-but-set-variable
63 GCC_ARRAY_BOUNDS := -Wno-array-bounds
64 GCC_ENUM_COMPARE := -Wno-enum-compare
66 GNU_REPOSITORY := gnu://
67 MPC_REPOSITORY := http://www.multiprecision.org/mpc/download http://ftp.osuosl.org/pub/lfs/lfs-packages/7.3
68 ICU_REPOSITORY := http://download.icu-project.org/files/$(ICU_PKGNAME)/$(ICU_VERSION)
70 binutils-installflag := $(CROSSTOOLSDIR)/.installflag-binutils-$(BINUTILS_VERSION)-$(AROS_TARGET_CPU)
71 gmp-installflag := $(CROSSTOOLSDIR)/.installflag-gmp-$(GMP_VERSION)
72 mpfr-installflag := $(CROSSTOOLSDIR)/.installflag-mpfr-$(MPFR_VERSION)
73 mpc-installflag := $(CROSSTOOLSDIR)/.installflag-mpc-$(MPC_VERSION)
74 gcc-installflag := $(CROSSTOOLSDIR)/.installflag-gcc-$(GCC_VERSION)-$(AROS_TARGET_CPU)
75 icu-installflag := $(CROSSTOOLSDIR)/.installflag-icu-$(ICU_VERSION)
77 #MM- tools-crosstools : tools-crosstools-$(AROS_TARGET_CPU)
79 #MM- tools-crosstools-m68k : tools-crosstools-gcc crosstools-gcc
80 #MM- tools-crosstools-i386 : tools-crosstools-gcc crosstools-gcc
81 #MM- tools-crosstools-x86_64 : tools-crosstools-gcc crosstools-gcc
82 #MM- tools-crosstools-ppc : tools-crosstools-gcc crosstools-gcc
83 #MM- tools-crosstools-arm : tools-crosstools-gcc crosstools-gcc
85 #MM- crosstools-gcc: core-linklibs
87 #MM tools-crosstools-gcc : tools-crosstools-binutils tools-crosstools-collect-aros \
88 #MM compiler-includes compiler-clib-includes \
89 #MM tools-crosstools-gmp \
90 #MM tools-crosstools-mpfr \
91 #MM tools-crosstools-mpc
93 # We intentionally bypass the usual fetch_and_build macro below and call mmakefile and gcc makefile
94 # targets directly. This is in order to not build the core-linklibs target during binutils and gcc
95 # builds because we want these static linker libraries be generated by the cross tool chain we are building
96 # right here. Additionally, we also want to maintain our own install flag files inside the directory
97 # specified by --with-aros-toolchain-install. This directory may even reside outside of the usual aros
98 # build directory and can be reused between complete rebuilds.
101 tools-crosstools-gmp :
102 @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
103 || ! $(TEST) -f $(gmp-installflag) ; then \
104 $(RM) $(HOSTGENDIR)/$(CURDIR)/gmp/.files-touched \
105 && $(MAKE) -f ./mmakefile crosstools-gmp--fetch \
106 && $(MAKE) -f ./mmakefile crosstools-gmp--build_and_install-quick \
107 && $(TOUCH) $(gmp-installflag) ; \
111 %fetch_and_build mmake=crosstools-gmp package=gmp version=$(GMP_VERSION) compiler=host \
112 package_repo="$(GNU_REPOSITORY)/gmp" \
114 prefix="$(CROSSTOOLSDIR)" \
115 extraoptions="--bindir=$(CROSSTOOLSDIR) --libdir=$(CROSSTOOLSDIR)/lib --disable-shared"
118 tools-crosstools-mpfr :
119 @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
120 || ! $(TEST) -f $(mpfr-installflag) ; then \
121 $(RM) $(HOSTGENDIR)/$(CURDIR)/mpfr/.files-touched \
122 && $(MAKE) -f ./mmakefile crosstools-mpfr--fetch \
123 && $(MAKE) -f ./mmakefile crosstools-mpfr--build_and_install-quick \
124 && $(TOUCH) $(mpfr-installflag) ; \
128 %fetch_and_build mmake=crosstools-mpfr package=mpfr version=$(MPFR_VERSION) compiler=host \
129 package_repo="$(GNU_REPOSITORY)/mpfr" \
131 prefix="$(CROSSTOOLSDIR)" \
132 extraoptions="--bindir=$(CROSSTOOLSDIR) --libdir=$(CROSSTOOLSDIR)/lib --disable-shared"
135 tools-crosstools-mpc :
136 @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
137 || ! $(TEST) -f $(mpc-installflag) ; then \
138 $(RM) $(HOSTGENDIR)/$(CURDIR)/mpc/.files-touched \
139 && $(MAKE) -f ./mmakefile crosstools-mpc--fetch \
140 && $(MAKE) -f ./mmakefile crosstools-mpc--build_and_install-quick \
141 && $(TOUCH) $(mpc-installflag) ; \
145 %fetch_and_build mmake=crosstools-mpc package=mpc version=$(MPC_VERSION) compiler=host \
146 package_repo="$(MPC_REPOSITORY)" suffixes="tar.gz" \
148 prefix="$(CROSSTOOLSDIR)" \
149 extraoptions="--bindir=$(CROSSTOOLSDIR) --libdir=$(CROSSTOOLSDIR)/lib --disable-shared"
152 tools-crosstools-binutils :
153 @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
154 || ! $(TEST) -f $(binutils-installflag) ; then \
155 $(RM) $(HOSTGENDIR)/$(CURDIR)/binutils/.files-touched \
156 && $(MAKE) -f ./mmakefile crosstools-binutils--fetch \
157 && $(MAKE) -f ./mmakefile crosstools-binutils--build_and_install-quick \
158 && $(TOUCH) $(binutils-installflag) ; \
162 %fetch_and_build mmake=crosstools-binutils package=binutils version=$(BINUTILS_VERSION) compiler=host \
163 package_repo="$(GNU_REPOSITORY)/binutils" \
165 prefix="$(CROSSTOOLSDIR)" \
166 extraoptions="$(BINUTILS_EXTRA_OPTS)"
168 HOST_CFLAGS := $(HOST_CFLAGS) $(HOST_GNU89_INLINE)
171 tools-crosstools-gcc :
172 @$(IF) ! $(TEST) -f $(gcc-installflag) ; then \
173 $(RM) $(HOSTGENDIR)/$(CURDIR)/gcc/.files-touched \
174 && $(MAKE) -f ./mmakefile crosstools-gcc--fetch \
175 && $(MAKE) -f ./mmakefile crosstools-gcc--configure \
176 && $(MAKE) -C $(HOSTGENDIR)/$(CURDIR)/gcc all-gcc \
177 && $(MAKE) -j1 -C $(HOSTGENDIR)/$(CURDIR)/gcc install-gcc \
178 && $(TOUCH) $(gcc-installflag) ; \
180 @$(IF) $(TEST) -f $(gcc-installflag); then \
181 $(SED) -i -e "s|@aros_target_cc_path@|$(GCC_PATH)|g" $(TOOLDIR)/$(AROS_TARGET_CPU)-$(AROS_TARGET_ARCH)$(AROS_TARGET_SUFFIX)-aros-ld ; \
182 $(SED) -i -e "s|@aros_cflags_unused_but_set_variable@|$(GCC_UNUSED_BUT_SET_VARIABLE)|g" $(GENDIR)/config/target.cfg ; \
183 $(SED) -i -e "s|@aros_cflags_array_bounds@|$(GCC_ARRAY_BOUNDS)|g" $(GENDIR)/config/target.cfg ; \
184 $(SED) -i -e "s|@aros_cflags_enum_compare@|$(GCC_ENUM_COMPARE)|g" $(GENDIR)/config/target.cfg ; \
185 $(SED) -i -e "s|@aros_cflags_format_security@|-Wno-format-security|g" $(GENDIR)/config/target.cfg ; \
186 $(SED) -i -e "s|@aros_cflags_strict_overflow@|-Wno-strict-overflow|g" $(GENDIR)/config/target.cfg ; \
189 %fetch_and_build mmake=crosstools-gcc package=gcc version=$(GCC_VERSION) compiler=host \
190 package_repo="$(GNU_REPOSITORY)/gcc/gcc-$(GCC_VERSION)" \
192 prefix="$(CROSSTOOLSDIR)" \
193 extraoptions="$(GCC_EXTRA_OPTS)"
196 tools-crosstools-icu :
197 @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
198 || ! $(TEST) -f $(icu-installflag) ; then \
199 $(RM) $(HOSTGENDIR)/$(CURDIR)/icu/.files-touched \
200 && $(MAKE) -f ./mmakefile crosstools-icu--fetch \
201 && $(MAKE) -f ./mmakefile crosstools-icu--build_and_install-quick \
202 && $(TOUCH) $(icu-installflag) ; \
205 HOST_CXXFLAGS := $(subst -Wno-pointer-sign,, $(subst -Werror-implicit-function-declaration,, $(HOST_CXXFLAGS)))
207 # specify the gendir for icu to be in the crosstools directory so it can be reused
208 %fetch_and_build mmake=crosstools-icu package=icu4c version=$(ICU_PKGVERSION)-src compiler=host \
209 package_repo="$(ICU_REPOSITORY)" suffixes="tgz" \
210 patch=yes srcdir=icu builddir=source gendir=$(CROSSTOOLSDIR) \
211 prefix="$(CROSSTOOLSDIR)" \
212 extraoptions="$(ICU_EXTRA_OPTS)"