WIP: add an initial skeleton for a real scsi.device based upon the ata device impleme...
[AROS.git] / tools / crosstools / gnu / mmakefile.src
blob211e49fc7cf3ab490f6e85b149d3e8a8745511c4
1 include $(SRCDIR)/config/aros.cfg
2 -include $(SRCDIR)/tools/crosstools/$(AROS_TOOLCHAIN).cfg
4 LN ?= ln
6 BINUTILS_VERSION = $(TARGET_BINUTILS_VER)
7 BINUTILS_VERSION_MAJOR = $(shell echo "$(BINUTILS_VERSION)" | cut -d"." -f1)
8 BINUTILS_VERSION_MINOR = $(shell echo "$(BINUTILS_VERSION)" | cut -d"." -f2)
9 BINUTILS_VERSION_PATCH = $(shell echo "$(BINUTILS_VERSION)" | cut -d"." -f3)
11 BINUTILS_EXTRA_OPTS := --target=$(AROS_TARGET_CPU)-aros
12 BINUTILS_EXTRA_OPTS += -bindir=$(CROSSTOOLSDIR)
13 BINUTILS_EXTRA_OPTS += --libdir=$(CROSSTOOLSDIR)/lib
14 BINUTILS_EXTRA_OPTS += --with-sysroot=$(AROS_DEVELOPER)
15 BINUTILS_EXTRA_OPTS += --disable-werror
16 BINUTILS_EXTRA_OPTS += --disable-nls
17 ifeq (yes, $(TARGET_LTO))
18 BINUTILS_EXTRA_OPTS += --enable-plugins --enable-lto
19 endif
21 # Binutils 2.31 enables separate code for x86 by default
22 # however we do not handle it.
23 BINUTILS_NOSEPCODE=no
24 ifeq ($(shell test $(BINUTILS_VERSION_MAJOR) -gt 2; echo $$?),0)
25 BINUTILS_NOSEPCODE=yes
26 else
27 ifeq ($(shell test $(BINUTILS_VERSION_MAJOR) -gt 1; echo $$?),0)
28 ifeq ($(shell test $(BINUTILS_VERSION_MINOR) -gt 30; echo $$?),0)
29 BINUTILS_NOSEPCODE=yes
30 endif
31 endif
32 endif
33 ifneq ($(BINUTILS_NOSEPCODE),no)
34 ifeq ($(AROS_TARGET_CPU),i386)
35 BINUTILS_EXTRA_OPTS += --enable-separate-code=no
36 endif
37 ifeq ($(AROS_TARGET_CPU),x86_64)
38 BINUTILS_EXTRA_OPTS += --enable-separate-code=no
39 endif
40 endif
42 GCC_VERSION     = $(TARGET_GCC_VER)
43 GCC_VERSION_MAJOR = $(shell echo "$(GCC_VERSION)" | cut -d"." -f1)
44 GCC_VERSION_MINOR = $(shell echo "$(GCC_VERSION)" | cut -d"." -f2)
45 GCC_VERSION_PATCH = $(shell echo "$(GCC_VERSION)" | cut -d"." -f3)
47 GCC_LANGUAGES:=c,c++
48 ifneq (no-objc,$(OBJC_TARGET))
49 GCC_LANGUAGES:=$(GCC_LANGUAGES),objc
50 endif
51 ifneq (no-java,$(JAVA_TARGET))
52 GCC_LANGUAGES:=$(GCC_LANGUAGES),java
53 endif
55 GCC_COMMON_OPTS := --target=$(AROS_TARGET_CPU)-aros
57 # ARM requires additional flags to determine CPU type and FP model
58 ifneq (,$(findstring arm,$(AROS_TARGET_CPU)))
59 GCC_COMMON_OPTS += --with-arch=$(GCC_DEFAULT_CPU)
60 GCC_COMMON_OPTS += --with-float=$(GCC_DEFAULT_FLOAT_ABI)
61 GCC_COMMON_OPTS += --with-fpu=$(GCC_DEFAULT_FPU)
62 GCC_COMMON_OPTS += --with-mode=$(GCC_DEFAULT_MODE)
63 GCC_COMMON_OPTS += --disable-libunwind-exceptions
64 else
65 # If we are building GCC >= 5, for x86 targets, enable libmpx
66 # ifeq ($(shell test $(GCC_VERSION_MAJOR) -gt 4; echo $$?),0)
67 # ifeq ($(AROS_TARGET_CPU),i386)
68 # GCC_COMMON_OPTS += --enable-libmpx
69 # endif
70 # ifeq ($(AROS_TARGET_CPU),x86_64)
71 # GCC_COMMON_OPTS += --enable-libmpx
72 # endif
73 # endif
74 GCC_COMMON_OPTS += --with-dwarf2
75 endif
77 GCC_COMMON_OPTS += --with-sysroot=$(AROS_DEVELOPER)
78 GCC_COMMON_OPTS += --with-native-system-header-dir=/include
79 GCC_COMMON_OPTS += --bindir=$(CROSSTOOLSDIR)
80 GCC_COMMON_OPTS += --libdir=$(CROSSTOOLSDIR)/lib
81 GCC_COMMON_OPTS += --enable-languages=$(strip $(GCC_LANGUAGES))
82 GCC_COMMON_OPTS += --enable-long-long
83 GCC_COMMON_OPTS += --enable-version-specific-runtime-libs
84 GCC_COMMON_OPTS += --enable-frame-pointer
85 GCC_COMMON_OPTS += --with-isl=$(CROSSTOOLSDIR)
86 GCC_COMMON_OPTS += --disable-isl-version-check
87 GCC_COMMON_OPTS += --disable-bootstrap 
88 GCC_COMMON_OPTS += --disable-sjlj-exceptions
89 GCC_COMMON_OPTS += --disable-tls
90 ifneq (yes,$(TARGET_LTO))
91 GCC_COMMON_OPTS += --disable-plugins
92 endif
93 GCC_COMMON_OPTS += --disable-nls
94 GCC_COMMON_OPTS += --disable-libssp
95 GCC_COMMON_OPTS += --disable-libstdcxx-pch
96 GCC_COMMON_OPTS += --disable-build-with-cxx
97 GCC_COMMON_OPTS += --disable-build-poststage1-with-cxx
99 ifeq (,$(GCC_EXTRA_OPTS))
100 GCC_EXTRA_OPTS += $(GCC_COMMON_OPTS)
101 endif
103 # Disable libatomic until we are ready to build it...
104 gcc_build_libatomic?=enable_libatomic=no
105 GCC_ENV=$(gcc_build_libatomic)
107 GCC_PATH = `LANG=en_US $(CROSSTOOLSDIR)/$(AROS_TARGET_CPU)-aros-gcc -print-search-dirs | grep "programs: =" | cut -c 12-`
109 GDB_VERSION=7.9
111 GDB_EXTRA_OPTS := --target=$(AROS_TARGET_CPU)-aros
112 GDB_EXTRA_OPTS += --bindir=$(CROSSTOOLSDIR)
113 GDB_EXTRA_OPTS += --libdir=$(CROSSTOOLSDIR)/lib
115 # Use the correct GCC repository depending if it is a release or snapshot build...
116 GNU_REPOSITORY := gnu://
117 ifeq (,$(findstring -,$(GCC_VERSION)))
118 GCC_REPOSITORY := $(GNU_REPOSITORY)/gcc/gcc-$(GCC_VERSION)
119 else
120 GCC_REPOSITORY := ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/snapshots/$(GCC_VERSION)
121 endif
122 ISL_REPOSITORY := ftp://gcc.gnu.org/pub/gcc/infrastructure
123 MPC_REPOSITORY := ftp://ftp.gnu.org/gnu/mpc http://ftp.vim.org/ftp/gnu/mpc
125 binutils-installflag := $(CROSSTOOLSDIR)/.installflag-binutils-$(BINUTILS_VERSION)-$(AROS_TARGET_CPU)
126 gmp-installflag := $(CROSSTOOLSDIR)/.installflag-gmp-$(GMP_VERSION)
127 isl-installflag := $(CROSSTOOLSDIR)/.installflag-isl-$(ISL_VERSION)
128 mpfr-installflag := $(CROSSTOOLSDIR)/.installflag-mpfr-$(MPFR_VERSION)
129 mpc-installflag := $(CROSSTOOLSDIR)/.installflag-mpc-$(MPC_VERSION)
130 gcc-installflag := $(CROSSTOOLSDIR)/.installflag-gcc-$(GCC_VERSION)-$(AROS_TARGET_CPU)
131 libatomic-installflag := $(CROSSTOOLSDIR)/.installflag-libatomic-$(GCC_VERSION)-$(AROS_TARGET_CPU)
132 gdb-installflag := $(CROSSTOOLSDIR)/.installflag-gdb-$(GDB_VERSION)
134 #MM- tools-crosstools-gnu-m68k     : tools-crosstools-gcc crosstools-gcc
135 #MM- tools-crosstools-gnu-i386     : tools-crosstools-gcc crosstools-gcc
136 #MM- tools-crosstools-gnu-x86_64   : tools-crosstools-gcc crosstools-gcc
137 #MM- tools-crosstools-gnu-ppc      : tools-crosstools-gcc crosstools-gcc
138 #MM- tools-crosstools-gnu-arm      : tools-crosstools-gcc crosstools-gcc
139 #MM- tools-crosstools-gnu-armeb    : tools-crosstools-gcc crosstools-gcc
140 #MM- tools-crosstools-gnu-aarch64  : tools-crosstools-gcc crosstools-gcc
142 #MM tools-crosstools-gcc : tools-crosstools-binutils tools-crosstools-collect-aros \
143 #MM                        tools-crosstools-gmp \
144 #MM                        tools-crosstools-isl \
145 #MM                        tools-crosstools-mpfr \
146 #MM                        tools-crosstools-mpc
148 # We intentionally bypass the usual fetch_and_build macro below and call mmakefile and gcc makefile
149 # targets directly. This is in order to not build the core-linklibs target during binutils and gcc
150 # builds because we want these static linker libraries be generated by the cross tool chain we are building
151 # right here. Additionally, we also want to maintain our own install flag files inside the directory
152 # specified by --with-aros-toolchain-install. This directory may even reside outside of the usual aros
153 # build directory and can be reused between complete rebuilds.
155 ## GMP ###
158 tools-crosstools-gmp :
159         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
160             || ! $(TEST) -f $(gmp-installflag) ; then \
161                $(RM) $(HOSTGENDIR)/$(CURDIR)/gmp/.files-touched \
162             && $(MAKE) -f ./mmakefile crosstools-gmp--fetch \
163             && $(MAKE) -f ./mmakefile crosstools-gmp--build_and_install-quick \
164             && $(TOUCH) $(gmp-installflag) ; \
165         fi
167 %fetch_and_build mmake=crosstools-gmp package=gmp version=$(GMP_VERSION) compiler=host \
168         package_repo="$(GNU_REPOSITORY)/gmp" \
169         patch=no \
170         prefix="$(CROSSTOOLSDIR)" usecppflags=no \
171         extraoptions="--bindir=$(CROSSTOOLSDIR) --libdir=$(CROSSTOOLSDIR)/lib --disable-shared"
173 ## ISL ###
176 tools-crosstools-isl :
177         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
178             || ! $(TEST) -f $(isl-installflag) ; then \
179                $(RM) $(HOSTGENDIR)/$(CURDIR)/isl/.files-touched \
180             && $(MAKE) -f ./mmakefile crosstools-isl--fetch \
181             && $(MAKE) -f ./mmakefile crosstools-isl--build_and_install-quick \
182             && $(TOUCH) $(isl-installflag) ; \
183         fi
185 %fetch_and_build mmake=crosstools-isl package=isl version=$(ISL_VERSION) compiler=host \
186         package_repo="$(ISL_REPOSITORY)" \
187         patch=no \
188         prefix="$(CROSSTOOLSDIR)" usecppflags=no \
189         extraoptions="--bindir=$(CROSSTOOLSDIR) --libdir=$(CROSSTOOLSDIR)/lib --without-piplib --disable-shared"
191 ## MPFR ###
194 tools-crosstools-mpfr :
195         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
196             || ! $(TEST) -f $(mpfr-installflag) ; then \
197                $(RM) $(HOSTGENDIR)/$(CURDIR)/mpfr/.files-touched \
198             && $(MAKE) -f ./mmakefile crosstools-mpfr--fetch \
199             && $(MAKE) -f ./mmakefile crosstools-mpfr--build_and_install-quick \
200             && $(TOUCH) $(mpfr-installflag) ; \
201         fi
203 %fetch_and_build mmake=crosstools-mpfr package=mpfr version=$(MPFR_VERSION) compiler=host \
204         package_repo="$(GNU_REPOSITORY)/mpfr" \
205         patch=no \
206         prefix="$(CROSSTOOLSDIR)" usecppflags=no \
207         extraoptions="--bindir=$(CROSSTOOLSDIR) --libdir=$(CROSSTOOLSDIR)/lib --disable-shared"
209 ## MPC ###
212 tools-crosstools-mpc :
213         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
214             || ! $(TEST) -f $(mpc-installflag) ; then \
215                $(RM) $(HOSTGENDIR)/$(CURDIR)/mpc/.files-touched \
216             && $(MAKE) -f ./mmakefile crosstools-mpc--fetch \
217             && $(MAKE) -f ./mmakefile crosstools-mpc--build_and_install-quick \
218             && $(TOUCH) $(mpc-installflag) ; \
219         fi
221 %fetch_and_build mmake=crosstools-mpc package=mpc version=$(MPC_VERSION) compiler=host \
222         package_repo="$(MPC_REPOSITORY)" suffixes="tar.gz" \
223         patch=no \
224         prefix="$(CROSSTOOLSDIR)" usecppflags=no \
225         extraoptions="--bindir=$(CROSSTOOLSDIR) --libdir=$(CROSSTOOLSDIR)/lib --disable-shared"
227 ## Binutils ###
230 tools-crosstools-binutils :
231         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
232             || ! $(TEST) -f $(binutils-installflag) ; then \
233                $(RM) $(HOSTGENDIR)/$(CURDIR)/binutils/.files-touched \
234             && $(MAKE) -f ./mmakefile crosstools-binutils--fetch \
235             && $(MAKE) -f ./mmakefile crosstools-binutils--build_and_install-quick \
236             && $(TOUCH) $(binutils-installflag) ; \
237         fi
239 %fetch_and_build mmake=crosstools-binutils package=binutils version=$(BINUTILS_VERSION) compiler=host \
240         package_repo="$(GNU_REPOSITORY)/binutils" \
241         patch=yes \
242         prefix="$(CROSSTOOLSDIR)" usecppflags=no \
243         extraoptions="$(BINUTILS_EXTRA_OPTS)"
245 ## GCC ###
247 HOST_CFLAGS := $(HOST_CFLAGS) $(HOST_GNU89_INLINE)
250 tools-crosstools-gcc :
251         @$(IF) ! $(TEST) -f $(gcc-installflag) ; then \
252             $(MAKE) -C $(HOSTGENDIR)/$(CURDIR)/gcc all-gcc \
253             && $(MAKE) -j1 -C $(HOSTGENDIR)/$(CURDIR)/gcc install-gcc \
254             && $(TOUCH) $(gcc-installflag) ; \
255         fi
256         @$(IF) $(TEST) -f $(gcc-installflag); then \
257             $(SED) -i -e "s|@aros_target_cc_path@|$(GCC_PATH)|g" $(TOOLDIR)/$(AROS_TARGET_CPU)-$(AROS_TARGET_ARCH)$(AROS_TARGET_SUFFIX)-aros-ld ; \
258         fi
260 #MM tools-crosstools-gcc : crosstools-gcc--fetch crosstools-gcc--configure
262 #MM tools-crosstools-gcc-libatomic : crosstools-gcc--fetch gnu-gcc-autolibs
263 #MM- linklibs-gnu-libatomic : tools-crosstools-gcc-libatomic
265 #MM- gnu-gcc-autolibs :          \
266 #MM     linklibs-startup         \
267 #MM     linklibs-mui             \
268 #MM     linklibs-arossupport     \
269 #MM     linklibs-amiga           \
270 #MM     linklibs-posixc          \
271 #MM     linklibs-stdcio          \
272 #MM     linklibs-stdc            \
273 #MM     linklibs-codesets        \
274 #MM     linklibs-keymap          \
275 #MM     linklibs-expansion       \
276 #MM     linklibs-commodities     \
277 #MM     linklibs-diskfont        \
278 #MM     linklibs-asl             \
279 #MM     linklibs-muimaster       \
280 #MM     linklibs-datatypes       \
281 #MM     linklibs-cybergraphics   \
282 #MM     linklibs-workbench       \
283 #MM     linklibs-icon            \
284 #MM     linklibs-intuition       \
285 #MM     linklibs-gadtools        \
286 #MM     linklibs-layers          \
287 #MM     linklibs-aros            \
288 #MM     linklibs-partition       \
289 #MM     linklibs-iffparse        \
290 #MM     linklibs-graphics        \
291 #MM     linklibs-locale          \
292 #MM     linklibs-dos             \
293 #MM     linklibs-utility         \
294 #MM     linklibs-oop             \
295 #MM     linklibs-exec            \
296 #MM     linklibs-autoinit        \
297 #MM     linklibs-libinit         \
298 #MM     linklibs-pthread
300 %fetch_and_build mmake=crosstools-gcc package=gcc version=$(GCC_VERSION) compiler=host \
301         package_repo="$(GCC_REPOSITORY)" suffixes="tar.bz2 tar.gz tar.xz" \
302         patch=yes prefix="$(CROSSTOOLSDIR)" \
303         usecppflags=no usecflags=no usecxxflags=no \
304         extraoptions="$(GCC_EXTRA_OPTS)" config_env_extra="$(GCC_ENV)"
307 tools-crosstools-gcc-libatomic :
308         @$(IF) ! $(TEST) -f $(libatomic-installflag) ; then \
309             $(IF) $(TEST) -f $(crosstools-gcc--configflag) ; then \
310                 $(RM) $(crosstools-gcc--configflag) ; \
311             fi ; \
312             gcc_build_libatomic="" $(MAKE) -f ./mmakefile crosstools-gcc--configure \
313             && $(MAKE) -C $(HOSTGENDIR)/$(CURDIR)/gcc all-target-libatomic \
314             && $(MAKE) -j1 -C $(HOSTGENDIR)/$(CURDIR)/gcc install-target-libatomic \
315             && $(TOUCH) $(libatomic-installflag) ; \
316         fi
318 ## GDB ###
321 tools-crosstools-gdb :
322         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
323             || ! $(TEST) -f $(gdb-installflag) ; then \
324                $(RM) $(HOSTGENDIR)/$(CURDIR)/gdb/.files-touched \
325             && $(MAKE) -f ./mmakefile crosstools-gdb--fetch \
326             && $(MAKE) -f ./mmakefile crosstools-gdb--build_and_install-quick \
327             && $(TOUCH) $(gdb-installflag) ; \
328         fi
330 %fetch_and_build mmake=crosstools-gdb package=gdb version=$(GDB_VERSION) compiler=host \
331         package_repo="$(GNU_REPOSITORY)/gdb" \
332         patch=yes \
333         prefix="$(CROSSTOOLSDIR)" \
334         extraoptions="$(GDB_EXTRA_OPTS)"