xref: /rk3399_rockchip-uboot/tools/Makefile (revision f0a2c7b4b64eacd06bb272856bcc056be8719f5a)
1efee1709Swdenk#
2f9328639SMarian Balakowicz# (C) Copyright 2000-2006
3efee1709Swdenk# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4efee1709Swdenk#
5efee1709Swdenk# See file CREDITS for list of people who contributed to this
6efee1709Swdenk# project.
7efee1709Swdenk#
8efee1709Swdenk# This program is free software; you can redistribute it and/or
9efee1709Swdenk# modify it under the terms of the GNU General Public License as
10efee1709Swdenk# published by the Free Software Foundation; either version 2 of
11efee1709Swdenk# the License, or (at your option) any later version.
12efee1709Swdenk#
13efee1709Swdenk# This program is distributed in the hope that it will be useful,
14efee1709Swdenk# but WITHOUT ANY WARRANTY; without even the implied warranty of
15efee1709Swdenk# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16efee1709Swdenk# GNU General Public License for more details.
17efee1709Swdenk#
18efee1709Swdenk# You should have received a copy of the GNU General Public License
19efee1709Swdenk# along with this program; if not, write to the Free Software
20efee1709Swdenk# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21efee1709Swdenk# MA 02111-1307 USA
22efee1709Swdenk#
23efee1709Swdenk
24efee1709SwdenkTOOLSUBDIRS =
25efee1709Swdenk
26efee1709Swdenk#
27efee1709Swdenk# Mac OS X / Darwin's C preprocessor is Apple specific.  It
28efee1709Swdenk# generates numerous errors and warnings.  We want to bypass it
29efee1709Swdenk# and use GNU C's cpp.  To do this we pass the -traditional-cpp
30efee1709Swdenk# option to the compiler.  Note that the -traditional-cpp flag
31efee1709Swdenk# DOES NOT have the same semantics as GNU C's flag, all it does
32efee1709Swdenk# is invoke the GNU preprocessor in stock ANSI/ISO C fashion.
33efee1709Swdenk#
34efee1709Swdenk# Apple's linker is similar, thanks to the new 2 stage linking
35efee1709Swdenk# multiple symbol definitions are treated as errors, hence the
36efee1709Swdenk# -multiply_defined suppress option to turn off this error.
37efee1709Swdenk#
38e50abf66SPeter Tyser
39e50abf66SPeter TyserHOST_CFLAGS = -Wall
40e50abf66SPeter TyserHOST_LDFLAGS =
41e50abf66SPeter Tyser
42efee1709Swdenkifeq ($(HOSTOS)-$(HOSTARCH),darwin-ppc)
43e50abf66SPeter TyserHOST_CFLAGS += -traditional-cpp
44e50abf66SPeter TyserHOST_LDFLAGS += -multiply_defined suppress
45efee1709Swdenkelse
46e50abf66SPeter TyserHOST_CFLAGS += -pedantic
47efee1709Swdenkendif
48efee1709Swdenk
49efee1709Swdenkifeq ($(HOSTOS),cygwin)
50883e3925Sraptorbrino@aim.comHOST_CFLAGS += -ansi
512f8d396bSPeter Tyserendif
522f8d396bSPeter Tyser
532f8d396bSPeter Tyser#
542f8d396bSPeter Tyser# toolchains targeting win32 generate .exe files
552f8d396bSPeter Tyser#
562f8d396bSPeter Tyserifneq (,$(findstring WIN32 ,$(shell $(HOSTCC) -E -dM -xc /dev/null)))
572f8d396bSPeter TyserSFX = .exe
58efee1709Swdenkelse
59efee1709SwdenkSFX =
60efee1709Swdenkendif
61efee1709Swdenk
62efee1709Swdenk#
63efee1709Swdenk# Include this after HOSTOS HOSTARCH check
64efee1709Swdenk# so that we can act intelligently.
65efee1709Swdenk#
66efee1709Swdenkinclude $(TOPDIR)/config.mk
67efee1709Swdenk
68ee3584a5SPeter Tyser# Generated executable files
69eeba8617SPeter TyserBIN_FILES-$(CONFIG_CMD_LOADS) += img2srec$(SFX)
70ee3584a5SPeter TyserBIN_FILES-y += mkimage$(SFX)
714d93a0a8SPeter TyserBIN_FILES-$(CONFIG_ENV_IS_EMBEDDED) += envcrc$(SFX)
72f63728c8SWolfgang DenkBIN_FILES-$(CONFIG_ENV_IS_IN_EEPROM) += envcrc$(SFX)
73afcbce07SWolfgang DenkBIN_FILES-$(CONFIG_ENV_IS_IN_FLASH) += envcrc$(SFX)
74f63728c8SWolfgang DenkBIN_FILES-$(CONFIG_ENV_IS_IN_NVRAM) += envcrc$(SFX)
757cd5cbc3SPeter TyserBIN_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1$(SFX)
76123c48a2SPeter TyserBIN_FILES-$(CONFIG_CMD_NET) += gen_eth_addr$(SFX)
77335ffe7eSPeter TyserBIN_FILES-$(CONFIG_LCD_LOGO) += bmp_logo$(SFX)
78335ffe7eSPeter TyserBIN_FILES-$(CONFIG_VIDEO_LOGO) += bmp_logo$(SFX)
79cd26a31aSPeter TyserBIN_FILES-$(CONFIG_INCA_IP) += inca-swap-bytes$(SFX)
801cd300deSPeter TyserBIN_FILES-$(CONFIG_NETCONSOLE) += ncb$(SFX)
81ee3584a5SPeter Tyser
82fb8b33c1SPeter Tyser# Source files which exist outside the tools directory
83fb8b33c1SPeter TyserEXT_OBJ_FILES-y += common/env_embedded.o
84fb8b33c1SPeter TyserEXT_OBJ_FILES-y += lib_generic/crc32.o
85fb8b33c1SPeter TyserEXT_OBJ_FILES-y += lib_generic/md5.o
86fb8b33c1SPeter TyserEXT_OBJ_FILES-y += lib_generic/sha1.o
87fb8b33c1SPeter TyserEXT_OBJ_FILES-y += common/image.o
88ee3584a5SPeter Tyser
89ee3584a5SPeter Tyser# Source files located in the tools directory
90eeba8617SPeter TyserOBJ_FILES-$(CONFIG_CMD_LOADS) += img2srec.o
91ee3584a5SPeter TyserOBJ_FILES-y += mkimage.o
924d93a0a8SPeter TyserOBJ_FILES-$(CONFIG_ENV_IS_EMBEDDED) += envcrc.o
937cd5cbc3SPeter TyserOBJ_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1.o
94123c48a2SPeter TyserOBJ_FILES-$(CONFIG_CMD_NET) += gen_eth_addr.o
95335ffe7eSPeter TyserOBJ_FILES-$(CONFIG_LCD_LOGO) += bmp_logo.o
96335ffe7eSPeter TyserOBJ_FILES-$(CONFIG_VIDEO_LOGO) += bmp_logo.o
97cd26a31aSPeter TyserOBJ_FILES-$(CONFIG_INCA_IP) += inca-swap-bytes.o
981cd300deSPeter TyserOBJ_FILES-$(CONFIG_NETCONSOLE) += ncb.o
992f8d396bSPeter TyserOBJ_FILES-y += os_support.o
100ee3584a5SPeter Tyser
101ee3584a5SPeter Tyser# Don't build by default
102ee3584a5SPeter Tyser#ifeq ($(ARCH),ppc)
103ee3584a5SPeter Tyser#BIN_FILES-y += mpc86x_clk$(SFX)
104ee3584a5SPeter Tyser#OBJ_FILES-y += mpc86x_clk.o
105ee3584a5SPeter Tyser#endif
106ee3584a5SPeter Tyser
107ee3584a5SPeter Tyser# Flattened device tree objects
108ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt.o
109ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt_ro.o
110ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt_rw.o
111ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt_strerror.o
112ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt_wip.o
113ee3584a5SPeter Tyser
114335ffe7eSPeter Tyser# Generated LCD/video logo
115ee3584a5SPeter TyserLOGO_H = $(OBJTREE)/include/bmp_logo.h
116335ffe7eSPeter TyserLOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H)
117335ffe7eSPeter TyserLOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H)
118ee3584a5SPeter Tyser
119ee3584a5SPeter Tyserifeq ($(LOGO_BMP),)
120ee3584a5SPeter TyserLOGO_BMP= logos/denx.bmp
121ee3584a5SPeter Tyserendif
122ee3584a5SPeter Tyserifeq ($(VENDOR),atmel)
123ee3584a5SPeter TyserLOGO_BMP= logos/atmel.bmp
124ee3584a5SPeter Tyserendif
125*f0a2c7b4SIlko Ilievifeq ($(VENDOR),ronetix)
126*f0a2c7b4SIlko IlievLOGO_BMP= logos/ronetix.bmp
127*f0a2c7b4SIlko Ilievendif
128ee3584a5SPeter Tyser
129f9328639SMarian Balakowicz# now $(obj) is defined
130fb8b33c1SPeter TyserSRCS	+= $(addprefix $(SRCTREE)/,$(EXT_OBJ_FILES-y:.o=.c))
131b0d4d721SPeter TyserSRCS	+= $(addprefix $(SRCTREE)/tools/,$(OBJ_FILES-y:.o=.c))
132eed07331SPeter TyserSRCS	+= $(addprefix $(SRCTREE)/libfdt/,$(LIBFDT_OBJ_FILES-y:.o=.c))
133afcbce07SWolfgang DenkBINS	:= $(addprefix $(obj),$(sort $(BIN_FILES-y)))
134ee3584a5SPeter TyserLIBFDT_OBJS	:= $(addprefix $(obj),$(LIBFDT_OBJ_FILES-y))
135f9328639SMarian Balakowicz
136efee1709Swdenk#
137efee1709Swdenk# Use native tools and options
1382f8d396bSPeter Tyser# Define __KERNEL_STRICT_NAMES to prevent typedef overlaps
139efee1709Swdenk#
140f9328639SMarian BalakowiczCPPFLAGS   = -idirafter $(SRCTREE)/include \
141f9328639SMarian Balakowicz		-idirafter $(OBJTREE)/include2 \
142f9328639SMarian Balakowicz		-idirafter $(OBJTREE)/include \
14345d6bdffSPeter Tyser	        -I $(SRCTREE)/libfdt \
14440b8d909SPeter Tyser		-I $(SRCTREE)/tools \
1452f8d396bSPeter Tyser		-DTEXT_BASE=$(TEXT_BASE) -DUSE_HOSTCC \
1462f8d396bSPeter Tyser		-D__KERNEL_STRICT_NAMES
147efee1709SwdenkCFLAGS     = $(HOST_CFLAGS) $(CPPFLAGS) -O
1488cf30809SBartlomiej Sieka
1498cf30809SBartlomiej Sieka# No -pedantic switch to avoid libfdt compilation warnings
1508cf30809SBartlomiej SiekaFIT_CFLAGS = -Wall $(CPPFLAGS) -O
1518cf30809SBartlomiej Sieka
152efee1709SwdenkAFLAGS	   = -D__ASSEMBLY__ $(CPPFLAGS)
153efee1709SwdenkCC	   = $(HOSTCC)
154efee1709SwdenkSTRIP	   = $(HOSTSTRIP)
155efee1709SwdenkMAKEDEPEND = makedepend
156efee1709Swdenk
157335ffe7eSPeter Tyserall:	$(obj).depend $(BINS) $(LOGO-y) subdirs
158efee1709Swdenk
1590cf4fd3cSJean-Christophe PLAGNIOL-VILLARD$(obj)envcrc$(SFX):	$(obj)envcrc.o $(obj)crc32.o $(obj)env_embedded.o $(obj)sha1.o
160566a494fSHeiko Schocher	$(CC) $(CFLAGS) -o $@ $^
161566a494fSHeiko Schocher
1622f8d396bSPeter Tyser$(obj)ubsha1$(SFX):	$(obj)ubsha1.o $(obj)sha1.o $(obj)os_support.o
163efee1709Swdenk	$(CC) $(CFLAGS) -o $@ $^
164efee1709Swdenk
165f9328639SMarian Balakowicz$(obj)img2srec$(SFX):	$(obj)img2srec.o
166efee1709Swdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
167efee1709Swdenk	$(STRIP) $@
168efee1709Swdenk
16921d28e95SPeter Tyser$(obj)mkimage$(SFX):	$(obj)mkimage.o $(obj)crc32.o $(obj)image.o $(obj)md5.o \
1702f8d396bSPeter Tyser			$(obj)sha1.o $(LIBFDT_OBJS) $(obj)os_support.o
171efee1709Swdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
172efee1709Swdenk	$(STRIP) $@
173efee1709Swdenk
174f9328639SMarian Balakowicz$(obj)ncb$(SFX):	$(obj)ncb.o
175eedcd078Swdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
176eedcd078Swdenk	$(STRIP) $@
177eedcd078Swdenk
178f9328639SMarian Balakowicz$(obj)gen_eth_addr$(SFX):	$(obj)gen_eth_addr.o
179efee1709Swdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
180efee1709Swdenk	$(STRIP) $@
181efee1709Swdenk
182f9328639SMarian Balakowicz$(obj)bmp_logo$(SFX):	$(obj)bmp_logo.o
183efee1709Swdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
184efee1709Swdenk	$(STRIP) $@
185efee1709Swdenk
186f9328639SMarian Balakowicz$(obj)inca-swap-bytes$(SFX):	$(obj)inca-swap-bytes.o
1873e38691eSwdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
1883e38691eSwdenk	$(STRIP) $@
1893e38691eSwdenk
190f9328639SMarian Balakowicz$(obj)mpc86x_clk$(SFX):	$(obj)mpc86x_clk.o
191ef1464ccSwdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
192ef1464ccSwdenk	$(STRIP) $@
193ef1464ccSwdenk
1940a823aa2SHarald Welte$(obj)bin2header$(SFX): $(obj)bin2header.o
1950a823aa2SHarald Welte	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
1960a823aa2SHarald Welte	$(STRIP) $@
1970a823aa2SHarald Welte
1982f8d396bSPeter Tyser# Some files complain if compiled with -pedantic, use FIT_CFLAGS
199ae644c17SJean-Christophe PLAGNIOL-VILLARD$(obj)image.o: $(SRCTREE)/common/image.c
2008cf30809SBartlomiej Sieka	$(CC) -g $(FIT_CFLAGS) -c -o $@ $<
201b97a2a0aSMarian Balakowicz
202b0d4d721SPeter Tyser$(obj)mkimage.o: $(SRCTREE)/tools/mkimage.c
2038cf30809SBartlomiej Sieka	$(CC) -g $(FIT_CFLAGS) -c -o $@ $<
204efee1709Swdenk
2052f8d396bSPeter Tyser$(obj)os_support.o: $(SRCTREE)/tools/os_support.c
2062f8d396bSPeter Tyser	$(CC) -g $(FIT_CFLAGS) -c -o $@ $<
2072f8d396bSPeter Tyser
208b0d4d721SPeter Tyser# Some of the tool objects need to be accessed from outside the tools directory
209b0d4d721SPeter Tyser$(obj)%.o: $(SRCTREE)/common/%.c
210b0d4d721SPeter Tyser	$(CC) -g $(FIT_CFLAGS) -c -o $@ $<
211b0d4d721SPeter Tyser
212b0d4d721SPeter Tyser$(obj)%.o: $(SRCTREE)/lib_generic/%.c
213f9328639SMarian Balakowicz	$(CC) -g $(CFLAGS) -c -o $@ $<
214eedcd078Swdenk
215b0d4d721SPeter Tyser$(LIBFDT_OBJS):
2168cf30809SBartlomiej Sieka	$(CC) -g $(FIT_CFLAGS) -c -o $@ $<
2178cf30809SBartlomiej Sieka
218efee1709Swdenksubdirs:
219e0ac62d7Swdenkifeq ($(TOOLSUBDIRS),)
220e0ac62d7Swdenk	@:
221e0ac62d7Swdenkelse
222efee1709Swdenk	@for dir in $(TOOLSUBDIRS) ; do \
223efee1709Swdenk	    $(MAKE) \
224efee1709Swdenk		HOSTOS=$(HOSTOS) \
225efee1709Swdenk		HOSTARCH=$(HOSTARCH) \
226efee1709Swdenk		HOST_CFLAGS="$(HOST_CFLAGS)" \
227efee1709Swdenk		HOST_LDFLAGS="$(HOST_LDFLAGS)" \
228efee1709Swdenk		-C $$dir || exit 1 ; \
229efee1709Swdenk	done
230e0ac62d7Swdenkendif
231e0ac62d7Swdenk
232f9328639SMarian Balakowicz$(LOGO_H):	$(obj)bmp_logo $(LOGO_BMP)
233f9328639SMarian Balakowicz	$(obj)./bmp_logo $(LOGO_BMP) >$@
234efee1709Swdenk
235efee1709Swdenk#########################################################################
236efee1709Swdenk
237f9328639SMarian Balakowicz# defines $(obj).depend target
238f9328639SMarian Balakowiczinclude $(SRCTREE)/rules.mk
239efee1709Swdenk
240f9328639SMarian Balakowiczsinclude $(obj).depend
241efee1709Swdenk
242efee1709Swdenk#########################################################################
243