alsa.audio: build the bridge link lib only for linux architecture
[AROS.git] / tools / crosstools / mmakefile.src
blobb7e6a73a5e9f8a667a64b8d7fd7130ff6cbf1308
1 include $(TOP)/config/make.cfg
3 GMP_VERSION=6.0.0a
4 ISL_VERSION=0.14
5 MPFR_VERSION=3.1.2
6 MPC_VERSION=1.0.3
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 BINUTILS_VERSION = $(TARGET_BINUTILS_VER)
24 BINUTILS_EXTRA_OPTS := --target=$(AROS_TARGET_CPU)-aros
25 BINUTILS_EXTRA_OPTS += -bindir=$(CROSSTOOLSDIR)
26 BINUTILS_EXTRA_OPTS += --libdir=$(CROSSTOOLSDIR)/lib
27 BINUTILS_EXTRA_OPTS += --with-sysroot=$(AROS_DEVELOPMENT)
28 BINUTILS_EXTRA_OPTS += --disable-werror
30 GCC_VERSION     = $(TARGET_GCC_VER)
32 GCC_LANGUAGES:=c,c++
33 ifneq (no-objc,$(OBJC_TARGET))
34 GCC_LANGUAGES:=$(GCC_LANGUAGES),objc
35 endif
36 ifneq (no-java,$(JAVA_TARGET))
37 GCC_LANGUAGES:=$(GCC_LANGUAGES),java
38 endif
40 GCC_EXTRA_OPTS := --target=$(AROS_TARGET_CPU)-aros
42 # ARM requires additional flags to determine CPU type and FP model
43 ifneq (,$(findstring $(AROS_TARGET_CPU),arm))
44 GCC_EXTRA_OPTS += --with-arch=$(GCC_DEFAULT_CPU)
45 GCC_EXTRA_OPTS += --with-float=$(GCC_DEFAULT_FLOAT_ABI)
46 GCC_EXTRA_OPTS += --with-fpu=$(GCC_DEFAULT_FPU)
47 GCC_EXTRA_OPTS += --with-mode=arm
48 GCC_EXTRA_OPTS += --disable-libunwind-exceptions
49 else
50 GCC_EXTRA_OPTS += --with-dwarf2
51 endif
53 GCC_EXTRA_OPTS += --with-sysroot=$(AROS_DEVELOPMENT)
54 GCC_EXTRA_OPTS += --with-native-system-header-dir=/include
55 GCC_EXTRA_OPTS += --bindir=$(CROSSTOOLSDIR)
56 GCC_EXTRA_OPTS += --libdir=$(CROSSTOOLSDIR)/lib
57 GCC_EXTRA_OPTS += --enable-languages=$(strip $(GCC_LANGUAGES))
58 GCC_EXTRA_OPTS += --enable-long-long
59 GCC_EXTRA_OPTS += --enable-version-specific-runtime-libs
60 GCC_EXTRA_OPTS += --enable-frame-pointer
61 GCC_EXTRA_OPTS += --with-isl=$(CROSSTOOLSDIR)
62 GCC_EXTRA_OPTS += --disable-isl-version-check
63 GCC_EXTRA_OPTS += --disable-bootstrap 
64 GCC_EXTRA_OPTS += --disable-sjlj-exceptions
65 GCC_EXTRA_OPTS += --disable-tls
66 GCC_EXTRA_OPTS += --disable-plugins
67 GCC_EXTRA_OPTS += --disable-libssp
68 GCC_EXTRA_OPTS += --disable-libstdcxx-pch
69 GCC_EXTRA_OPTS += --disable-build-with-cxx
70 GCC_EXTRA_OPTS += --disable-build-poststage1-with-cxx
72 GCC_PATH        = `LANG=en_US $(CROSSTOOLSDIR)/$(AROS_TARGET_CPU)-aros-gcc -print-search-dirs | grep "programs: =" | cut -c 12-`
73 GCC_UNUSED_BUT_SET_VARIABLE := -Wno-unused-but-set-variable
74 GCC_ARRAY_BOUNDS            := -Wno-array-bounds
75 GCC_ENUM_COMPARE            := -Wno-enum-compare
77 GDB_VERSION=7.9
79 GDB_EXTRA_OPTS := --target=$(AROS_TARGET_CPU)-aros
80 GDB_EXTRA_OPTS += --bindir=$(CROSSTOOLSDIR)
81 GDB_EXTRA_OPTS += --libdir=$(CROSSTOOLSDIR)/lib
83 GNU_REPOSITORY := gnu://
84 ISL_REPOSITORY :=  ftp://gcc.gnu.org/pub/gcc/infrastructure
85 MPC_REPOSITORY := http://www.multiprecision.org/mpc/download http://ftp.osuosl.org/pub/lfs/lfs-packages/7.3
86 ICU_REPOSITORY := http://download.icu-project.org/files/$(ICU_PKGNAME)/$(ICU_VERSION)
88 binutils-installflag := $(CROSSTOOLSDIR)/.installflag-binutils-$(BINUTILS_VERSION)-$(AROS_TARGET_CPU)
89 gmp-installflag := $(CROSSTOOLSDIR)/.installflag-gmp-$(GMP_VERSION)
90 isl-installflag := $(CROSSTOOLSDIR)/.installflag-isl-$(ISL_VERSION)
91 mpfr-installflag := $(CROSSTOOLSDIR)/.installflag-mpfr-$(MPFR_VERSION)
92 mpc-installflag := $(CROSSTOOLSDIR)/.installflag-mpc-$(MPC_VERSION)
93 gcc-installflag      := $(CROSSTOOLSDIR)/.installflag-gcc-$(GCC_VERSION)-$(AROS_TARGET_CPU)
94 icu-installflag := $(CROSSTOOLSDIR)/.installflag-icu-$(ICU_VERSION)
95 gdb-installflag := $(CROSSTOOLSDIR)/.installflag-gdb-$(GDB_VERSION)
97 #MM- tools-crosstools : tools-crosstools-$(AROS_TARGET_CPU)
99 #MM- tools-crosstools-m68k   : tools-crosstools-gcc crosstools-gcc
100 #MM- tools-crosstools-i386   : tools-crosstools-gcc crosstools-gcc
101 #MM- tools-crosstools-x86_64 : tools-crosstools-gcc crosstools-gcc
102 #MM- tools-crosstools-ppc    : tools-crosstools-gcc crosstools-gcc
103 #MM- tools-crosstools-arm    : tools-crosstools-gcc crosstools-gcc
105 #MM- crosstools-gcc: core-linklibs
107 #MM tools-crosstools-gcc : tools-crosstools-binutils tools-crosstools-collect-aros \
108 #MM                        compiler-includes compiler-clib-includes \
109 #MM                        tools-crosstools-gmp \
110 #MM                        tools-crosstools-isl \
111 #MM                        tools-crosstools-mpfr \
112 #MM                        tools-crosstools-mpc
114 # We intentionally bypass the usual fetch_and_build macro below and call mmakefile and gcc makefile
115 # targets directly. This is in order to not build the core-linklibs target during binutils and gcc
116 # builds because we want these static linker libraries be generated by the cross tool chain we are building
117 # right here. Additionally, we also want to maintain our own install flag files inside the directory
118 # specified by --with-aros-toolchain-install. This directory may even reside outside of the usual aros
119 # build directory and can be reused between complete rebuilds.
122 tools-crosstools-gmp :
123         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
124             || ! $(TEST) -f $(gmp-installflag) ; then \
125                $(RM) $(HOSTGENDIR)/$(CURDIR)/gmp/.files-touched \
126             && $(MAKE) -f ./mmakefile crosstools-gmp--fetch \
127             && $(MAKE) -f ./mmakefile crosstools-gmp--build_and_install-quick \
128             && $(TOUCH) $(gmp-installflag) ; \
129         fi
131 %fetch_and_build mmake=crosstools-gmp package=gmp version=$(GMP_VERSION) compiler=host \
132         package_repo="$(GNU_REPOSITORY)/gmp" \
133         srcdir=gmp-6.0.0 patch=no \
134         prefix="$(CROSSTOOLSDIR)" \
135         extraoptions="--bindir=$(CROSSTOOLSDIR) --libdir=$(CROSSTOOLSDIR)/lib --disable-shared"
138 tools-crosstools-isl :
139         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
140             || ! $(TEST) -f $(isl-installflag) ; then \
141                $(RM) $(HOSTGENDIR)/$(CURDIR)/isl/.files-touched \
142             && $(MAKE) -f ./mmakefile crosstools-isl--fetch \
143             && $(MAKE) -f ./mmakefile crosstools-isl--build_and_install-quick \
144             && $(TOUCH) $(isl-installflag) ; \
145         fi
147 %fetch_and_build mmake=crosstools-isl package=isl version=$(ISL_VERSION) compiler=host \
148         package_repo="$(ISL_REPOSITORY)" \
149         patch=no \
150         prefix="$(CROSSTOOLSDIR)" \
151         extraoptions="--bindir=$(CROSSTOOLSDIR) --libdir=$(CROSSTOOLSDIR)/lib --without-piplib --disable-shared"
154 tools-crosstools-mpfr :
155         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
156             || ! $(TEST) -f $(mpfr-installflag) ; then \
157                $(RM) $(HOSTGENDIR)/$(CURDIR)/mpfr/.files-touched \
158             && $(MAKE) -f ./mmakefile crosstools-mpfr--fetch \
159             && $(MAKE) -f ./mmakefile crosstools-mpfr--build_and_install-quick \
160             && $(TOUCH) $(mpfr-installflag) ; \
161         fi
163 %fetch_and_build mmake=crosstools-mpfr package=mpfr version=$(MPFR_VERSION) compiler=host \
164         package_repo="$(GNU_REPOSITORY)/mpfr" \
165         patch=no \
166         prefix="$(CROSSTOOLSDIR)" \
167         extraoptions="--bindir=$(CROSSTOOLSDIR) --libdir=$(CROSSTOOLSDIR)/lib --disable-shared"
170 tools-crosstools-mpc :
171         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
172             || ! $(TEST) -f $(mpc-installflag) ; then \
173                $(RM) $(HOSTGENDIR)/$(CURDIR)/mpc/.files-touched \
174             && $(MAKE) -f ./mmakefile crosstools-mpc--fetch \
175             && $(MAKE) -f ./mmakefile crosstools-mpc--build_and_install-quick \
176             && $(TOUCH) $(mpc-installflag) ; \
177         fi
179 %fetch_and_build mmake=crosstools-mpc package=mpc version=$(MPC_VERSION) compiler=host \
180         package_repo="$(MPC_REPOSITORY)" suffixes="tar.gz" \
181         patch=no \
182         prefix="$(CROSSTOOLSDIR)" \
183         extraoptions="--bindir=$(CROSSTOOLSDIR) --libdir=$(CROSSTOOLSDIR)/lib --disable-shared"
186 tools-crosstools-binutils :
187         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
188             || ! $(TEST) -f $(binutils-installflag) ; then \
189                $(RM) $(HOSTGENDIR)/$(CURDIR)/binutils/.files-touched \
190             && $(MAKE) -f ./mmakefile crosstools-binutils--fetch \
191             && $(MAKE) -f ./mmakefile crosstools-binutils--build_and_install-quick \
192             && $(TOUCH) $(binutils-installflag) ; \
193         fi
195 %fetch_and_build mmake=crosstools-binutils package=binutils version=$(BINUTILS_VERSION) compiler=host \
196         package_repo="$(GNU_REPOSITORY)/binutils" \
197         patch=yes \
198         prefix="$(CROSSTOOLSDIR)" \
199         extraoptions="$(BINUTILS_EXTRA_OPTS)"
201 HOST_CFLAGS := $(HOST_CFLAGS) $(HOST_GNU89_INLINE)
204 tools-crosstools-gcc :
205         @$(IF) ! $(TEST) -f $(gcc-installflag) ; then \
206                $(RM) $(HOSTGENDIR)/$(CURDIR)/gcc/.files-touched \
207             && $(MAKE) -f ./mmakefile crosstools-gcc--fetch \
208             && $(MAKE) -f ./mmakefile crosstools-gcc--configure \
209             && $(MAKE) -C $(HOSTGENDIR)/$(CURDIR)/gcc all-gcc \
210             && $(MAKE) -j1 -C $(HOSTGENDIR)/$(CURDIR)/gcc install-gcc \
211             && $(TOUCH) $(gcc-installflag) ; \
212         fi
213         @$(IF) $(TEST) -f $(gcc-installflag); then \
214             $(SED) -i -e "s|@aros_target_cc_path@|$(GCC_PATH)|g" $(TOOLDIR)/$(AROS_TARGET_CPU)-$(AROS_TARGET_ARCH)$(AROS_TARGET_SUFFIX)-aros-ld ; \
215             $(SED) -i -e "s|@aros_cflags_unused_but_set_variable@|$(GCC_UNUSED_BUT_SET_VARIABLE)|g" $(GENDIR)/config/target.cfg ; \
216             $(SED) -i -e "s|@aros_cflags_array_bounds@|$(GCC_ARRAY_BOUNDS)|g" $(GENDIR)/config/target.cfg ; \
217             $(SED) -i -e "s|@aros_cflags_enum_compare@|$(GCC_ENUM_COMPARE)|g" $(GENDIR)/config/target.cfg ; \
218             $(SED) -i -e "s|@aros_cflags_format_security@|-Wno-format-security|g" $(GENDIR)/config/target.cfg ; \
219             $(SED) -i -e "s|@aros_cflags_strict_overflow@|-Wno-strict-overflow|g" $(GENDIR)/config/target.cfg ; \
220         fi
222 %fetch_and_build mmake=crosstools-gcc package=gcc version=$(GCC_VERSION) compiler=host \
223         package_repo="$(GNU_REPOSITORY)/gcc/gcc-$(GCC_VERSION)" \
224         patch=yes \
225         prefix="$(CROSSTOOLSDIR)" \
226         extraoptions="$(GCC_EXTRA_OPTS)"
229 tools-crosstools-icu :
230         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
231             || ! $(TEST) -f $(icu-installflag) ; then \
232                $(RM) $(HOSTGENDIR)/$(CURDIR)/icu/.files-touched \
233             && $(MAKE) -f ./mmakefile crosstools-icu--fetch \
234             && $(MAKE) -f ./mmakefile crosstools-icu--build_and_install-quick \
235             && $(TOUCH) $(icu-installflag) ; \
236         fi
238 HOST_CXXFLAGS := $(subst -Wno-pointer-sign,, $(subst -Werror-implicit-function-declaration,, $(HOST_CXXFLAGS)))
240 # specify the gendir for icu to be in the crosstools directory so it can be reused
241 %fetch_and_build mmake=crosstools-icu package=icu4c version=$(ICU_PKGVERSION)-src compiler=host \
242         package_repo="$(ICU_REPOSITORY)" suffixes="tgz" \
243         patch=yes srcdir=icu builddir=source gendir=$(CROSSTOOLSDIR) \
244         prefix="$(CROSSTOOLSDIR)" \
245         extraoptions="$(ICU_EXTRA_OPTS)"
248 tools-crosstools-gdb :
249         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
250             || ! $(TEST) -f $(gdb-installflag) ; then \
251                $(RM) $(HOSTGENDIR)/$(CURDIR)/gdb/.files-touched \
252             && $(MAKE) -f ./mmakefile crosstools-gdb--fetch \
253             && $(MAKE) -f ./mmakefile crosstools-gdb--build_and_install-quick \
254             && $(TOUCH) $(gdb-installflag) ; \
255         fi
257 %fetch_and_build mmake=crosstools-gdb package=gdb version=$(GDB_VERSION) compiler=host \
258         package_repo="$(GNU_REPOSITORY)/gdb" \
259         patch=yes \
260         prefix="$(CROSSTOOLSDIR)" \
261         extraoptions="$(GDB_EXTRA_OPTS)"