with-native-system-header-dir needs to be an absolute path
[AROS.git] / tools / crosstools / mmakefile.src
blob6281daf4c807a18eb32f6d8ecf9722a6bc236cce
1 include $(TOP)/config/make.cfg
3 BINUTILS_VERSION = 2.23.2
4 GMP_VERSION=5.1.2
5 MPFR_VERSION=3.1.2
6 MPC_VERSION=1.0.1
7 ICU_VERSION := 4.2.1
8 ICU_PKGNAME := icu4c
9 ICU_PKGVERSION=$(subst .,_,$(ICU_VERSION))
11 ICU_EXTRA_OPTS= \
12         --bindir=$(CROSSTOOLSDIR) \
13         --sbindir=$(CROSSTOOLSDIR) \
14         --enable-static \
15         --disable-dyload \
16         --disable-shared \
17         --disable-tests \
18         --disable-samples \
19         --disable-extras \
20         --with-data-packaging=static
22 GCC_LANGUAGES = c,c++,objc
24 # ARM requires additional flags to determine CPU type and FP model
25 ifneq (,$(findstring $(AROS_TARGET_CPU),arm))
26 GCC_EXTRA_OPTS = \
27   --with-arch=$(GCC_DEFAULT_CPU) --with-float=$(GCC_DEFAULT_FLOAT_ABI) --with-fpu=$(GCC_DEFAULT_FPU) --with-mode=arm \
28   --target=$(AROS_TARGET_CPU)-aros --bindir=$(CROSSTOOLSDIR) --enable-languages=$(GCC_LANGUAGES) \
29   --enable-long-long --enable-version-specific-runtime-libs
30 else
31 GCC_EXTRA_OPTS = \
32   --target=$(AROS_TARGET_CPU)-aros --bindir=$(CROSSTOOLSDIR) --enable-languages=$(GCC_LANGUAGES) \
33   --enable-long-long --enable-version-specific-runtime-libs
34 endif
36 GCC_VERSION     = $(TARGET_GCC_VER)
37 GCC_EXTRA_OPTS += --with-sysroot=$(AROS_DEVELOPMENT) --with-build-sysroot=$(AROS_DEVELOPMENT)
38 GCC_EXTRA_OPTS += --with-native-system-header-dir=$(AROS_DEVELOPMENT)/include
39 GCC_EXTRA_OPTS += --disable-bootstrap 
40 GCC_EXTRA_OPTS += --enable-sjlj-exceptions=no --enable-tls=no
41 GCC_EXTRA_OPTS += --with-dwarf2
42 GCC_EXTRA_OPTS += --enable-frame-pointer
43 GCC_PATH        = `LANG=en_US $(CROSSTOOLSDIR)/$(AROS_TARGET_CPU)-aros-gcc -print-search-dirs | grep "programs: =" | cut -c 12-`
44 GCC_UNUSED_BUT_SET_VARIABLE := -Wno-unused-but-set-variable
45 GCC_ARRAY_BOUNDS            := -Wno-array-bounds
46 GCC_ENUM_COMPARE            := -Wno-enum-compare
48 GNU_REPOSITORY := gnu://
49 MPC_REPOSITORY := http://www.multiprecision.org/mpc/download http://ftp.osuosl.org/pub/lfs/lfs-packages/7.3
50 ICU_REPOSITORY := http://download.icu-project.org/files/$(ICU_PKGNAME)/$(ICU_VERSION)
52 binutils-installflag := $(CROSSTOOLSDIR)/.installflag-binutils-$(BINUTILS_VERSION)-$(AROS_TARGET_CPU)
53 gmp-installflag := $(CROSSTOOLSDIR)/.installflag-gmp-$(GMP_VERSION)
54 mpfr-installflag := $(CROSSTOOLSDIR)/.installflag-mpfr-$(MPFR_VERSION)
55 mpc-installflag := $(CROSSTOOLSDIR)/.installflag-mpc-$(MPC_VERSION)
56 gcc-installflag      := $(CROSSTOOLSDIR)/.installflag-gcc-$(GCC_VERSION)-$(AROS_TARGET_CPU)
57 icu-installflag := $(CROSSTOOLSDIR)/.installflag-icu-$(ICU_VERSION)
59 #MM- tools-crosstools : tools-crosstools-$(AROS_TARGET_CPU)
61 #MM- tools-crosstools-m68k   : tools-crosstools-gcc crosstools-gcc
62 #MM- tools-crosstools-i386   : tools-crosstools-gcc crosstools-gcc
63 #MM- tools-crosstools-x86_64 : tools-crosstools-gcc crosstools-gcc
64 #MM- tools-crosstools-ppc    : tools-crosstools-gcc crosstools-gcc
65 #MM- tools-crosstools-arm    : tools-crosstools-gcc crosstools-gcc
67 #MM- crosstools-gcc: core-linklibs
69 #MM tools-crosstools-gcc : tools-crosstools-binutils tools-crosstools-collect-aros \
70 #MM                        compiler-includes compiler-clib-includes \
71 #MM                        tools-crosstools-gmp \
72 #MM                        tools-crosstools-mpfr \
73 #MM                        tools-crosstools-mpc
75 # We intentionally bypass the usual fetch_and_build macro below and call mmakefile and gcc makefile
76 # targets directly. This is in order to not build the core-linklibs target during binutils and gcc
77 # builds because we want these static linker libraries be generated by the cross tool chain we are building
78 # right here. Additionally, we also want to maintain our own install flag files inside the directory
79 # specified by --with-aros-toolchain-install. This directory may even reside outside of the usual aros
80 # build directory and can be reused between complete rebuilds.
82 #MM
83 tools-crosstools-gmp :
84         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
85             || ! $(TEST) -f $(gmp-installflag) ; then \
86                $(RM) $(HOSTGENDIR)/$(CURDIR)/gmp/.files-touched \
87             && $(MAKE) -f ./mmakefile crosstools-gmp--fetch \
88             && $(MAKE) -f ./mmakefile crosstools-gmp--build_and_install-quick \
89             && $(TOUCH) $(gmp-installflag) ; \
90         fi
93 %fetch_and_build mmake=crosstools-gmp package=gmp version=$(GMP_VERSION) compiler=host \
94         package_repo="$(GNU_REPOSITORY)/gmp" \
95         patch=no \
96         prefix="$(CROSSTOOLSDIR)" \
97         extraoptions="--bindir=$(CROSSTOOLSDIR) --disable-shared"
99 #MM
100 tools-crosstools-mpfr :
101         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
102             || ! $(TEST) -f $(mpfr-installflag) ; then \
103                $(RM) $(HOSTGENDIR)/$(CURDIR)/mpfr/.files-touched \
104             && $(MAKE) -f ./mmakefile crosstools-mpfr--fetch \
105             && $(MAKE) -f ./mmakefile crosstools-mpfr--build_and_install-quick \
106             && $(TOUCH) $(mpfr-installflag) ; \
107         fi
110 %fetch_and_build mmake=crosstools-mpfr package=mpfr version=$(MPFR_VERSION) compiler=host \
111         package_repo="$(GNU_REPOSITORY)/mpfr" \
112         patch=no \
113         prefix="$(CROSSTOOLSDIR)" \
114         extraoptions="--bindir=$(CROSSTOOLSDIR) --disable-shared"
117 tools-crosstools-mpc :
118         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
119             || ! $(TEST) -f $(mpc-installflag) ; then \
120                $(RM) $(HOSTGENDIR)/$(CURDIR)/mpc/.files-touched \
121             && $(MAKE) -f ./mmakefile crosstools-mpc--fetch \
122             && $(MAKE) -f ./mmakefile crosstools-mpc--build_and_install-quick \
123             && $(TOUCH) $(mpc-installflag) ; \
124         fi
127 %fetch_and_build mmake=crosstools-mpc package=mpc version=$(MPC_VERSION) compiler=host \
128         package_repo="$(MPC_REPOSITORY)" suffixes="tar.gz" \
129         patch=no \
130         prefix="$(CROSSTOOLSDIR)" \
131         extraoptions="--bindir=$(CROSSTOOLSDIR) --disable-shared"
134 tools-crosstools-binutils :
135         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
136             || ! $(TEST) -f $(binutils-installflag) ; then \
137                $(RM) $(HOSTGENDIR)/$(CURDIR)/binutils/.files-touched \
138             && $(MAKE) -f ./mmakefile crosstools-binutils--fetch \
139             && $(MAKE) -f ./mmakefile crosstools-binutils--build_and_install-quick \
140             && $(TOUCH) $(binutils-installflag) ; \
141         fi
144 %fetch_and_build mmake=crosstools-binutils package=binutils version=$(BINUTILS_VERSION) compiler=host \
145         package_repo="$(GNU_REPOSITORY)/binutils" \
146         patch=yes \
147         prefix="$(CROSSTOOLSDIR)" \
148         extraoptions="--target=$(AROS_TARGET_CPU)-aros -bindir=$(CROSSTOOLSDIR) --with-sysroot=$(AROS_DEVELOPMENT) --disable-werror"
150 HOST_CFLAGS := $(HOST_CFLAGS) $(HOST_GNU89_INLINE)
153 tools-crosstools-gcc :
154         @$(IF) ! $(TEST) -f $(gcc-installflag) ; then \
155                $(RM) $(HOSTGENDIR)/$(CURDIR)/gcc/.files-touched \
156             && $(MAKE) -f ./mmakefile crosstools-gcc--fetch \
157             && $(MAKE) -f ./mmakefile crosstools-gcc--configure \
158             && $(MAKE) -C $(HOSTGENDIR)/$(CURDIR)/gcc all-gcc \
159             && $(MAKE) -j1 -C $(HOSTGENDIR)/$(CURDIR)/gcc install-gcc \
160             && $(TOUCH) $(gcc-installflag) ; \
161         fi
162         @$(IF) $(TEST) -f $(gcc-installflag); then \
163             $(SED) -i -e "s|@aros_target_cc_path@|$(GCC_PATH)|g" $(TOOLDIR)/$(AROS_TARGET_CPU)-$(AROS_TARGET_ARCH)$(AROS_TARGET_SUFFIX)-aros-ld ; \
164             $(SED) -i -e "s|@aros_cflags_unused_but_set_variable@|$(GCC_UNUSED_BUT_SET_VARIABLE)|g" $(GENDIR)/config/target.cfg ; \
165             $(SED) -i -e "s|@aros_cflags_array_bounds@|$(GCC_ARRAY_BOUNDS)|g" $(GENDIR)/config/target.cfg ; \
166             $(SED) -i -e "s|@aros_cflags_enum_compare@|$(GCC_ENUM_COMPARE)|g" $(GENDIR)/config/target.cfg ; \
167             $(SED) -i -e "s|@aros_cflags_format_security@|-Wno-format-security|g" $(GENDIR)/config/target.cfg ; \
168             $(SED) -i -e "s|@aros_cflags_strict_overflow@|-Wno-strict-overflow|g" $(GENDIR)/config/target.cfg ; \
169         fi
171 %fetch_and_build mmake=crosstools-gcc package=gcc version=$(GCC_VERSION) compiler=host \
172         package_repo="$(GNU_REPOSITORY)/gcc/gcc-$(GCC_VERSION)" \
173         patch=yes \
174         prefix="$(CROSSTOOLSDIR)" \
175         extraoptions="$(GCC_EXTRA_OPTS)"
178 tools-crosstools-icu :
179         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
180             || ! $(TEST) -f $(icu-installflag) ; then \
181                $(RM) $(HOSTGENDIR)/$(CURDIR)/icu/.files-touched \
182             && $(MAKE) -f ./mmakefile crosstools-icu--fetch \
183             && $(MAKE) -f ./mmakefile crosstools-icu--build_and_install-quick \
184             && $(TOUCH) $(icu-installflag) ; \
185         fi
187 HOST_CXXFLAGS := $(subst -Wno-pointer-sign,, $(subst -Werror-implicit-function-declaration,, $(HOST_CXXFLAGS)))
189 # specify the gendir for icu to be in the crosstools directory so it can be reused
190 %fetch_and_build mmake=crosstools-icu package=icu4c version=$(ICU_PKGVERSION)-src compiler=host \
191         package_repo="$(ICU_REPOSITORY)" suffixes="tgz" \
192         patch=yes srcdir=icu builddir=source gendir=$(CROSSTOOLSDIR) \
193         prefix="$(CROSSTOOLSDIR)" \
194         extraoptions="$(ICU_EXTRA_OPTS)"