Add some more delinting compiler options, they are supported by the oldest gcc we...
[AROS.git] / tools / crosstools / mmakefile.src
blobd773db17fe1b91bd365682f38bc52726e69b088f
1 include $(TOP)/config/make.cfg
3 BINUTILS_VERSION = 2.21.1
5 GCC_LANGUAGES = c,c++
7 GCC_EXTRA_OPTS = \
8   --target=$(AROS_TARGET_CPU)-aros --bindir=$(CROSSTOOLSDIR) --enable-languages=$(GCC_LANGUAGES) \
9   --enable-long-long --enable-version-specific-runtime-libs
11 # Hack to support building with custom gpm/mpfr/mpc libraries
12 ifeq ($(shell test -e "$(HOME)/include/gmp.h" && echo y),y)
13     GCC_EXTRA_OPTS += --with-gmp="$(HOME)"
14 endif
15 ifeq ($(shell test -e "$(HOME)/include/mpfr.h" && echo y),y)
16     GCC_EXTRA_OPTS += --with-mpfr="$(HOME)"
17 endif
18 ifeq ($(shell test -e "$(HOME)/include/mpc.h" && echo y),y)
19     GCC_EXTRA_OPTS += --with-mpc="$(HOME)"
20 endif
22 ifeq ($(AROS_TARGET_CPU), arm)
23   # FIXME: Update patch to work with --with-sysroot then set GCC_INCLUDES and GCC_PATH for --enable-crosstools
24   GCC_VERSION     = 4.4.2
25   GCC_EXTRA_OPTS += --with-headers=$(AROS_DEVELOPMENT)/include --with-libs=$(AROS_DEVELOPMENT)/lib
26 else
27 ifeq ($(AROS_TARGET_CPU), m68k)
28   GCC_VERSION     = 4.6.2
29   GCC_EXTRA_OPTS += --with-sysroot=$(AROS_DEVELOPMENT) --disable-bootstrap 
30   GCC_EXTRA_OPTS += --with-headers=$(AROS_DEVELOPMENT)/include --with-libs=$(AROS_DEVELOPMENT)/lib
31   GCC_EXTRA_OPTS += --enable-sjlj-exceptions=no --enable-tls=no
32   GCC_INCLUDES    = $(CROSSTOOLSDIR)/lib/gcc/$(AROS_TARGET_CPU)-aros/$(GCC_VERSION)/include
33   GCC_PATH        = `LANG=en_US $(CROSSTOOLSDIR)/$(AROS_TARGET_CPU)-aros-gcc -print-search-dirs | grep "programs: =" | cut -c 12-`
34   GCC_LANGUAGES  := $(GCC_LANGUAGES),objc
35   GCC_UNUSED_BUT_SET_VARIABLE := -Wno-unused-but-set-variable
36   GCC_ARRAY_BOUNDS            := -Wno-array-bounds
37   GCC_ENUM_COMPARE            := -Wno-enum-compare
38 else
39   GCC_VERSION     = 4.2.4
40   GCC_EXTRA_OPTS += --with-sysroot=$(AROS_DEVELOPMENT)
41   GCC_INCLUDES    = $(CROSSTOOLSDIR)/lib/gcc/$(AROS_TARGET_CPU)-aros/$(GCC_VERSION)/include
42   GCC_PATH        = `LANG=en_US $(CROSSTOOLSDIR)/$(AROS_TARGET_CPU)-aros-gcc -print-search-dirs | grep "programs: =" | cut -c 12-`
43 endif
44 endif
46 GNU_REPOSITORY := gnu://
48 binutils-installflag := $(CROSSTOOLSDIR)/.installflag-binutils-$(BINUTILS_VERSION)
49 gcc-installflag      := $(CROSSTOOLSDIR)/.installflag-gcc-$(GCC_VERSION)
51 #MM- tools-crosstools : tools-crosstools-$(AROS_TARGET_CPU)
53 #MM- tools-crosstools-m68k  : tools-crosstools-gcc crosstools-gcc
54 #MM- tools-crosstools-i386   : tools-crosstools-gcc crosstools-gcc
55 #MM- tools-crosstools-x86_64 : tools-crosstools-gcc crosstools-gcc
56 #MM- tools-crosstools-ppc    : tools-crosstools-gcc crosstools-gcc
57 # arm still needs linklibs be build before, can be removed after patch is updated to work with --with-sysroot
58 #MM- tools-crosstools-arm    : core-linklibs tools-crosstools-gcc crosstools-gcc
60 #MM tools-crosstools-gcc : tools-crosstools-binutils tools-crosstools-collect-aros compiler-includes compiler-clib-includes
62 # We intentionally bypass the usual fetch_and_build macro below and call mmakefile and gcc makefile
63 # targets directly. This is in order to not build the core-linklibs target during binutils and gcc
64 # builds because we want these static linker libraries be generated by the cross tool chain we are building
65 # right here. Additionally, we also want to maintain our own install flag files inside the directory
66 # specified by --with-crosstools. This directory may even reside outside of the usual aros build directory
67 # and can be reused between complete rebuilds.
69 #MM
70 tools-crosstools-binutils :
71         @$(IF) ! $(TEST) -d $(CROSSTOOLSDIR) \
72             || ! $(TEST) -f $(binutils-installflag) \
73             || $(TEST) "$(AROS_DEVELOPMENT)" != "$(shell $(CAT) 2>/dev/null $(binutils-installflag))" ; then \
74                $(RM) $(HOSTGENDIR)/$(CURDIR)/binutils/.files-touched \
75             && $(MAKE) -f ./mmakefile crosstools-binutils--fetch \
76             && $(MAKE) -f ./mmakefile crosstools-binutils--build_and_install-quick \
77             && $(ECHO) $(AROS_DEVELOPMENT) > $(binutils-installflag) ; \
78         fi
80 %fetch_and_build mmake=crosstools-binutils package=binutils version=$(BINUTILS_VERSION) compiler=host \
81         package_repo="$(GNU_REPOSITORY)/binutils" \
82         patch=yes \
83         prefix="$(CROSSTOOLSDIR)" \
84         extraoptions="--target=$(AROS_TARGET_CPU)-aros -bindir=$(CROSSTOOLSDIR) --with-sysroot=$(AROS_DEVELOPMENT) --disable-werror"
86 HOST_CFLAGS := $(HOST_CFLAGS) $(HOST_GNU89_INLINE)
88 #MM- tools-crosstools-includes: includes
90 ARCH_INCLUDES := $(TOOLDIR)/crosstools/$(AROS_TARGET_CPU)-aros/include
91     
92 #MM
93 tools-crosstools-includes: $(ARCH_INCLUDES)/aros/system.h
95 $(ARCH_INCLUDES)/aros/system.h: $(AROS_DEVELOPMENT)/include/aros/system.h
96         $(MKDIR) -p $(ARCH_INCLUDES)
97         $(CP) -a $(AROS_DEVELOPMENT)/include/. $(ARCH_INCLUDES)/.
98         $(TOUCH) $@
101 tools-crosstools-gcc : tools-crosstools-includes
102         @$(SED) -i -e "s|@aros_target_cc_includes@|$(GCC_INCLUDES)|g" $(GENDIR)/config/specs
103         @$(IF) ! $(TEST) -f $(gcc-installflag) \
104             || $(TEST) "$(AROS_DEVELOPMENT)" != "$(shell $(CAT) 2>/dev/null $(gcc-installflag))" ; then \
105                $(RM) $(HOSTGENDIR)/$(CURDIR)/gcc/.files-touched \
106             && $(MAKE) -f ./mmakefile crosstools-gcc--fetch \
107             && $(MAKE) -f ./mmakefile crosstools-gcc--configure \
108             && $(MAKE) -C $(HOSTGENDIR)/$(CURDIR)/gcc all-gcc \
109             && $(MAKE) -j1 -C $(HOSTGENDIR)/$(CURDIR)/gcc install-gcc \
110             && $(ECHO) $(AROS_DEVELOPMENT) > $(gcc-installflag) ; \
111         fi
112         @$(IF) $(TEST) -f $(gcc-installflag); then \
113             $(SED) -i -e "s|@aros_target_cc_path@|$(GCC_PATH)|g" $(TOOLDIR)/$(AROS_TARGET_CPU)-$(AROS_TARGET_ARCH)$(AROS_TARGET_SUFFIX)-aros-ld ; \
114             $(SED) -i -e "s|@aros_cflags_unused_but_set_variable@|$(GCC_UNUSED_BUT_SET_VARIABLE)|g" $(GENDIR)/config/target.cfg ; \
115             $(SED) -i -e "s|@aros_cflags_array_bounds@|$(GCC_ARRAY_BOUNDS)|g" $(GENDIR)/config/target.cfg ; \
116             $(SED) -i -e "s|@aros_cflags_enum_compare@|$(GCC_ENUM_COMPARE)|g" $(GENDIR)/config/target.cfg ; \
117             $(SED) -i -e "s|@aros_cflags_format_security@|-Wno-format-security|g" $(GENDIR)/config/target.cfg ; \
118             $(SED) -i -e "s|@aros_cflags_strict_overflow@|-Wno-strict-overflow|g" $(GENDIR)/config/target.cfg ; \
119         fi
121 %fetch_and_build mmake=crosstools-gcc package=gcc version=$(GCC_VERSION) compiler=host \
122         package_repo="$(GNU_REPOSITORY)/gcc/gcc-$(GCC_VERSION)" \
123         patch=yes \
124         prefix="$(CROSSTOOLSDIR)" \
125         extraoptions="$(GCC_EXTRA_OPTS)"