xref: /rk3399_rockchip-uboot/tools/Makefile (revision 2f8d396b9302eddcd8d552648e101a46b7a80acd)
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
51*2f8d396bSPeter Tyserendif
52*2f8d396bSPeter Tyser
53*2f8d396bSPeter Tyser#
54*2f8d396bSPeter Tyser# toolchains targeting win32 generate .exe files
55*2f8d396bSPeter Tyser#
56*2f8d396bSPeter Tyserifneq (,$(findstring WIN32 ,$(shell $(HOSTCC) -E -dM -xc /dev/null)))
57*2f8d396bSPeter 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)
727cd5cbc3SPeter TyserBIN_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1$(SFX)
73123c48a2SPeter TyserBIN_FILES-$(CONFIG_CMD_NET) += gen_eth_addr$(SFX)
74335ffe7eSPeter TyserBIN_FILES-$(CONFIG_LCD_LOGO) += bmp_logo$(SFX)
75335ffe7eSPeter TyserBIN_FILES-$(CONFIG_VIDEO_LOGO) += bmp_logo$(SFX)
76cd26a31aSPeter TyserBIN_FILES-$(CONFIG_INCA_IP) += inca-swap-bytes$(SFX)
771cd300deSPeter TyserBIN_FILES-$(CONFIG_NETCONSOLE) += ncb$(SFX)
78ee3584a5SPeter Tyser
79fb8b33c1SPeter Tyser# Source files which exist outside the tools directory
80fb8b33c1SPeter TyserEXT_OBJ_FILES-y += common/env_embedded.o
81fb8b33c1SPeter TyserEXT_OBJ_FILES-y += lib_generic/crc32.o
82fb8b33c1SPeter TyserEXT_OBJ_FILES-y += lib_generic/md5.o
83fb8b33c1SPeter TyserEXT_OBJ_FILES-y += lib_generic/sha1.o
84fb8b33c1SPeter TyserEXT_OBJ_FILES-y += common/image.o
85ee3584a5SPeter Tyser
86ee3584a5SPeter Tyser# Source files located in the tools directory
87eeba8617SPeter TyserOBJ_FILES-$(CONFIG_CMD_LOADS) += img2srec.o
88ee3584a5SPeter TyserOBJ_FILES-y += mkimage.o
894d93a0a8SPeter TyserOBJ_FILES-$(CONFIG_ENV_IS_EMBEDDED) += envcrc.o
907cd5cbc3SPeter TyserOBJ_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1.o
91123c48a2SPeter TyserOBJ_FILES-$(CONFIG_CMD_NET) += gen_eth_addr.o
92335ffe7eSPeter TyserOBJ_FILES-$(CONFIG_LCD_LOGO) += bmp_logo.o
93335ffe7eSPeter TyserOBJ_FILES-$(CONFIG_VIDEO_LOGO) += bmp_logo.o
94cd26a31aSPeter TyserOBJ_FILES-$(CONFIG_INCA_IP) += inca-swap-bytes.o
951cd300deSPeter TyserOBJ_FILES-$(CONFIG_NETCONSOLE) += ncb.o
96*2f8d396bSPeter TyserOBJ_FILES-y += os_support.o
97ee3584a5SPeter Tyser
98ee3584a5SPeter Tyser# Don't build by default
99ee3584a5SPeter Tyser#ifeq ($(ARCH),ppc)
100ee3584a5SPeter Tyser#BIN_FILES-y += mpc86x_clk$(SFX)
101ee3584a5SPeter Tyser#OBJ_FILES-y += mpc86x_clk.o
102ee3584a5SPeter Tyser#endif
103ee3584a5SPeter Tyser
104ee3584a5SPeter Tyser# Flattened device tree objects
105ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt.o
106ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt_ro.o
107ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt_rw.o
108ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt_strerror.o
109ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt_wip.o
110ee3584a5SPeter Tyser
111335ffe7eSPeter Tyser# Generated LCD/video logo
112ee3584a5SPeter TyserLOGO_H = $(OBJTREE)/include/bmp_logo.h
113335ffe7eSPeter TyserLOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H)
114335ffe7eSPeter TyserLOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H)
115ee3584a5SPeter Tyser
116ee3584a5SPeter Tyserifeq ($(LOGO_BMP),)
117ee3584a5SPeter TyserLOGO_BMP= logos/denx.bmp
118ee3584a5SPeter Tyserendif
119ee3584a5SPeter Tyserifeq ($(VENDOR),atmel)
120ee3584a5SPeter TyserLOGO_BMP= logos/atmel.bmp
121ee3584a5SPeter Tyserendif
122ee3584a5SPeter Tyser
123f9328639SMarian Balakowicz# now $(obj) is defined
124fb8b33c1SPeter TyserSRCS	+= $(addprefix $(SRCTREE)/,$(EXT_OBJ_FILES-y:.o=.c))
125b0d4d721SPeter TyserSRCS	+= $(addprefix $(SRCTREE)/tools/,$(OBJ_FILES-y:.o=.c))
126eed07331SPeter TyserSRCS	+= $(addprefix $(SRCTREE)/libfdt/,$(LIBFDT_OBJ_FILES-y:.o=.c))
127ee3584a5SPeter TyserBINS	:= $(addprefix $(obj),$(BIN_FILES-y))
128ee3584a5SPeter TyserLIBFDT_OBJS	:= $(addprefix $(obj),$(LIBFDT_OBJ_FILES-y))
129f9328639SMarian Balakowicz
130efee1709Swdenk#
131efee1709Swdenk# Use native tools and options
132*2f8d396bSPeter Tyser# Define __KERNEL_STRICT_NAMES to prevent typedef overlaps
133efee1709Swdenk#
134f9328639SMarian BalakowiczCPPFLAGS   = -idirafter $(SRCTREE)/include \
135f9328639SMarian Balakowicz		-idirafter $(OBJTREE)/include2 \
136f9328639SMarian Balakowicz		-idirafter $(OBJTREE)/include \
13745d6bdffSPeter Tyser	        -I $(SRCTREE)/libfdt \
13840b8d909SPeter Tyser		-I $(SRCTREE)/tools \
139*2f8d396bSPeter Tyser		-DTEXT_BASE=$(TEXT_BASE) -DUSE_HOSTCC \
140*2f8d396bSPeter Tyser		-D__KERNEL_STRICT_NAMES
141efee1709SwdenkCFLAGS     = $(HOST_CFLAGS) $(CPPFLAGS) -O
1428cf30809SBartlomiej Sieka
1438cf30809SBartlomiej Sieka# No -pedantic switch to avoid libfdt compilation warnings
1448cf30809SBartlomiej SiekaFIT_CFLAGS = -Wall $(CPPFLAGS) -O
1458cf30809SBartlomiej Sieka
146efee1709SwdenkAFLAGS	   = -D__ASSEMBLY__ $(CPPFLAGS)
147efee1709SwdenkCC	   = $(HOSTCC)
148efee1709SwdenkSTRIP	   = $(HOSTSTRIP)
149efee1709SwdenkMAKEDEPEND = makedepend
150efee1709Swdenk
151335ffe7eSPeter Tyserall:	$(obj).depend $(BINS) $(LOGO-y) subdirs
152efee1709Swdenk
1530cf4fd3cSJean-Christophe PLAGNIOL-VILLARD$(obj)envcrc$(SFX):	$(obj)envcrc.o $(obj)crc32.o $(obj)env_embedded.o $(obj)sha1.o
154566a494fSHeiko Schocher	$(CC) $(CFLAGS) -o $@ $^
155566a494fSHeiko Schocher
156*2f8d396bSPeter Tyser$(obj)ubsha1$(SFX):	$(obj)ubsha1.o $(obj)sha1.o $(obj)os_support.o
157efee1709Swdenk	$(CC) $(CFLAGS) -o $@ $^
158efee1709Swdenk
159f9328639SMarian Balakowicz$(obj)img2srec$(SFX):	$(obj)img2srec.o
160efee1709Swdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
161efee1709Swdenk	$(STRIP) $@
162efee1709Swdenk
16321d28e95SPeter Tyser$(obj)mkimage$(SFX):	$(obj)mkimage.o $(obj)crc32.o $(obj)image.o $(obj)md5.o \
164*2f8d396bSPeter Tyser			$(obj)sha1.o $(LIBFDT_OBJS) $(obj)os_support.o
165efee1709Swdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
166efee1709Swdenk	$(STRIP) $@
167efee1709Swdenk
168f9328639SMarian Balakowicz$(obj)ncb$(SFX):	$(obj)ncb.o
169eedcd078Swdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
170eedcd078Swdenk	$(STRIP) $@
171eedcd078Swdenk
172f9328639SMarian Balakowicz$(obj)gen_eth_addr$(SFX):	$(obj)gen_eth_addr.o
173efee1709Swdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
174efee1709Swdenk	$(STRIP) $@
175efee1709Swdenk
176f9328639SMarian Balakowicz$(obj)bmp_logo$(SFX):	$(obj)bmp_logo.o
177efee1709Swdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
178efee1709Swdenk	$(STRIP) $@
179efee1709Swdenk
180f9328639SMarian Balakowicz$(obj)inca-swap-bytes$(SFX):	$(obj)inca-swap-bytes.o
1813e38691eSwdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
1823e38691eSwdenk	$(STRIP) $@
1833e38691eSwdenk
184f9328639SMarian Balakowicz$(obj)mpc86x_clk$(SFX):	$(obj)mpc86x_clk.o
185ef1464ccSwdenk	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
186ef1464ccSwdenk	$(STRIP) $@
187ef1464ccSwdenk
1880a823aa2SHarald Welte$(obj)bin2header$(SFX): $(obj)bin2header.o
1890a823aa2SHarald Welte	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^
1900a823aa2SHarald Welte	$(STRIP) $@
1910a823aa2SHarald Welte
192*2f8d396bSPeter Tyser# Some files complain if compiled with -pedantic, use FIT_CFLAGS
193b0d4d721SPeter Tyser$(obj)image.o: $(SRCTREE)/tools/image.c
1948cf30809SBartlomiej Sieka	$(CC) -g $(FIT_CFLAGS) -c -o $@ $<
195b97a2a0aSMarian Balakowicz
196b0d4d721SPeter Tyser$(obj)mkimage.o: $(SRCTREE)/tools/mkimage.c
1978cf30809SBartlomiej Sieka	$(CC) -g $(FIT_CFLAGS) -c -o $@ $<
198efee1709Swdenk
199*2f8d396bSPeter Tyser$(obj)os_support.o: $(SRCTREE)/tools/os_support.c
200*2f8d396bSPeter Tyser	$(CC) -g $(FIT_CFLAGS) -c -o $@ $<
201*2f8d396bSPeter Tyser
202b0d4d721SPeter Tyser# Some of the tool objects need to be accessed from outside the tools directory
203b0d4d721SPeter Tyser$(obj)%.o: $(SRCTREE)/common/%.c
204b0d4d721SPeter Tyser	$(CC) -g $(FIT_CFLAGS) -c -o $@ $<
205b0d4d721SPeter Tyser
206b0d4d721SPeter Tyser$(obj)%.o: $(SRCTREE)/lib_generic/%.c
207f9328639SMarian Balakowicz	$(CC) -g $(CFLAGS) -c -o $@ $<
208eedcd078Swdenk
209b0d4d721SPeter Tyser$(LIBFDT_OBJS):
2108cf30809SBartlomiej Sieka	$(CC) -g $(FIT_CFLAGS) -c -o $@ $<
2118cf30809SBartlomiej Sieka
212efee1709Swdenksubdirs:
213e0ac62d7Swdenkifeq ($(TOOLSUBDIRS),)
214e0ac62d7Swdenk	@:
215e0ac62d7Swdenkelse
216efee1709Swdenk	@for dir in $(TOOLSUBDIRS) ; do \
217efee1709Swdenk	    $(MAKE) \
218efee1709Swdenk		HOSTOS=$(HOSTOS) \
219efee1709Swdenk		HOSTARCH=$(HOSTARCH) \
220efee1709Swdenk		HOST_CFLAGS="$(HOST_CFLAGS)" \
221efee1709Swdenk		HOST_LDFLAGS="$(HOST_LDFLAGS)" \
222efee1709Swdenk		-C $$dir || exit 1 ; \
223efee1709Swdenk	done
224e0ac62d7Swdenkendif
225e0ac62d7Swdenk
226f9328639SMarian Balakowicz$(LOGO_H):	$(obj)bmp_logo $(LOGO_BMP)
227f9328639SMarian Balakowicz	$(obj)./bmp_logo $(LOGO_BMP) >$@
228efee1709Swdenk
229efee1709Swdenk#########################################################################
230efee1709Swdenk
231f9328639SMarian Balakowicz# defines $(obj).depend target
232f9328639SMarian Balakowiczinclude $(SRCTREE)/rules.mk
233efee1709Swdenk
234f9328639SMarian Balakowiczsinclude $(obj).depend
235efee1709Swdenk
236efee1709Swdenk#########################################################################
237