build the requested binutils version. dont disable objc-gc.
[AROS.git] / tools / crosstools / mmakefile.src
blobbe91dddaf1fe93ff3fcb155d2b4e26836f4a3784
1 include $(TOP)/config/make.cfg
3 GMP_VERSION=5.1.2
4 MPFR_VERSION=3.1.2
5 MPC_VERSION=1.0.1
6 ICU_VERSION := 4.2.1
7 ICU_PKGNAME := icu4c
8 ICU_PKGVERSION=$(subst .,_,$(ICU_VERSION))
10 ICU_EXTRA_OPTS= \
11         --bindir=$(CROSSTOOLSDIR) \
12         --sbindir=$(CROSSTOOLSDIR) \
13         --enable-static \
14         --disable-dyload \
15         --disable-shared \
16         --disable-tests \
17         --disable-samples \
18         --disable-extras \
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)
31 GCC_LANGUAGES:=c,c++
32 ifneq (no-objc,$(OBJC_TARGET))
33 GCC_LANGUAGES:=$(GCC_LANGUAGES),objc
34 endif
35 ifneq (no-java,$(JAVA_TARGET))
36 GCC_LANGUAGES:=$(GCC_LANGUAGES),java
37 endif
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
47 endif
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) ; \
108         fi
111 %fetch_and_build mmake=crosstools-gmp package=gmp version=$(GMP_VERSION) compiler=host \
112         package_repo="$(GNU_REPOSITORY)/gmp" \
113         patch=no \
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) ; \
125         fi
128 %fetch_and_build mmake=crosstools-mpfr package=mpfr version=$(MPFR_VERSION) compiler=host \
129         package_repo="$(GNU_REPOSITORY)/mpfr" \
130         patch=no \
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) ; \
142         fi
145 %fetch_and_build mmake=crosstools-mpc package=mpc version=$(MPC_VERSION) compiler=host \
146         package_repo="$(MPC_REPOSITORY)" suffixes="tar.gz" \
147         patch=no \
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) ; \
159         fi
162 %fetch_and_build mmake=crosstools-binutils package=binutils version=$(BINUTILS_VERSION) compiler=host \
163         package_repo="$(GNU_REPOSITORY)/binutils" \
164         patch=yes \
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) ; \
179         fi
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 ; \
187         fi
189 %fetch_and_build mmake=crosstools-gcc package=gcc version=$(GCC_VERSION) compiler=host \
190         package_repo="$(GNU_REPOSITORY)/gcc/gcc-$(GCC_VERSION)" \
191         patch=yes \
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) ; \
203         fi
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)"