Makefile 6.71 KB
Newer Older
wdenk's avatar
wdenk committed
1
#
2
# (C) Copyright 2000-2006
wdenk's avatar
wdenk committed
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
# project.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#

TOOLSUBDIRS =

26 27 28 29 30 31
#
# Include this after HOSTOS HOSTARCH check
# so that we can act intelligently.
#
include $(TOPDIR)/config.mk

wdenk's avatar
wdenk committed
32
#
33
# toolchains targeting win32 generate .exe files
wdenk's avatar
wdenk committed
34
#
35
ifneq (,$(findstring WIN32 ,$(shell $(HOSTCC) -E -dM -xc /dev/null)))
wdenk's avatar
wdenk committed
36 37 38 39 40
SFX = .exe
else
SFX =
endif

41 42 43
# Enable all the config-independent tools
ifneq ($(HOST_TOOLS_ALL),)
CONFIG_LCD_LOGO = y
44
CONFIG_CMD_LOADS = y
45 46 47 48 49 50
CONFIG_CMD_NET = y
CONFIG_INCA_IP = y
CONFIG_NETCONSOLE = y
CONFIG_SHA1_CHECK_UB_IMG = y
endif

51 52 53 54 55 56 57 58 59 60 61
# Merge all the different vars for envcrc into one
ENVCRC-$(CONFIG_ENV_IS_EMBEDDED) = y
ENVCRC-$(CONFIG_ENV_IS_IN_DATAFLASH) = y
ENVCRC-$(CONFIG_ENV_IS_IN_EEPROM) = y
ENVCRC-$(CONFIG_ENV_IS_IN_FLASH) = y
ENVCRC-$(CONFIG_ENV_IS_IN_ONENAND) = y
ENVCRC-$(CONFIG_ENV_IS_IN_NAND) = y
ENVCRC-$(CONFIG_ENV_IS_IN_NVRAM) = y
ENVCRC-$(CONFIG_ENV_IS_IN_SPI_FLASH) = y
CONFIG_BUILD_ENVCRC ?= $(ENVCRC-y)

62
# Generated executable files
63 64
BIN_FILES-$(CONFIG_LCD_LOGO) += bmp_logo$(SFX)
BIN_FILES-$(CONFIG_VIDEO_LOGO) += bmp_logo$(SFX)
65
BIN_FILES-$(CONFIG_BUILD_ENVCRC) += envcrc$(SFX)
66
BIN_FILES-$(CONFIG_CMD_NET) += gen_eth_addr$(SFX)
67
BIN_FILES-$(CONFIG_CMD_LOADS) += img2srec$(SFX)
68
BIN_FILES-$(CONFIG_INCA_IP) += inca-swap-bytes$(SFX)
69
BIN_FILES-y += mkimage$(SFX)
70
BIN_FILES-$(CONFIG_NETCONSOLE) += ncb$(SFX)
71
BIN_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1$(SFX)
72

73
# Source files which exist outside the tools directory
74
EXT_OBJ_FILES-$(CONFIG_BUILD_ENVCRC) += common/env_embedded.o
75
EXT_OBJ_FILES-y += common/image.o
Peter Tyser's avatar
Peter Tyser committed
76 77 78
EXT_OBJ_FILES-y += lib/crc32.o
EXT_OBJ_FILES-y += lib/md5.o
EXT_OBJ_FILES-y += lib/sha1.o
79 80

# Source files located in the tools directory
81 82
OBJ_FILES-$(CONFIG_LCD_LOGO) += bmp_logo.o
OBJ_FILES-$(CONFIG_VIDEO_LOGO) += bmp_logo.o
83
NOPED_OBJ_FILES-y += default_image.o
84
OBJ_FILES-$(CONFIG_BUILD_ENVCRC) += envcrc.o
85
NOPED_OBJ_FILES-y += fit_image.o
86 87
OBJ_FILES-$(CONFIG_CMD_NET) += gen_eth_addr.o
OBJ_FILES-$(CONFIG_CMD_LOADS) += img2srec.o
88
OBJ_FILES-$(CONFIG_INCA_IP) += inca-swap-bytes.o
89
NOPED_OBJ_FILES-y += kwbimage.o
90
NOPED_OBJ_FILES-y += imximage.o
91
NOPED_OBJ_FILES-y += mkimage.o
92
OBJ_FILES-$(CONFIG_NETCONSOLE) += ncb.o
93
NOPED_OBJ_FILES-y += os_support.o
94
OBJ_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1.o
95 96 97 98 99 100 101 102 103 104 105 106 107 108

# Don't build by default
#ifeq ($(ARCH),ppc)
#BIN_FILES-y += mpc86x_clk$(SFX)
#OBJ_FILES-y += mpc86x_clk.o
#endif

# Flattened device tree objects
LIBFDT_OBJ_FILES-y += fdt.o
LIBFDT_OBJ_FILES-y += fdt_ro.o
LIBFDT_OBJ_FILES-y += fdt_rw.o
LIBFDT_OBJ_FILES-y += fdt_strerror.o
LIBFDT_OBJ_FILES-y += fdt_wip.o

109
# Generated LCD/video logo
110
LOGO_H = $(OBJTREE)/include/bmp_logo.h
111 112
LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H)
LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H)
113 114 115 116 117 118 119

ifeq ($(LOGO_BMP),)
LOGO_BMP= logos/denx.bmp
endif
ifeq ($(VENDOR),atmel)
LOGO_BMP= logos/atmel.bmp
endif
120 121
ifeq ($(VENDOR),esd)
LOGO_BMP= logos/esd.bmp
Timur Tabi's avatar
Timur Tabi committed
122 123 124
endif
ifeq ($(VENDOR),freescale)
LOGO_BMP= logos/freescale.bmp
125
endif
126 127 128
ifeq ($(VENDOR),ronetix)
LOGO_BMP= logos/ronetix.bmp
endif
129 130 131
ifeq ($(VENDOR),syteco)
LOGO_BMP= logos/syteco.bmp
endif
132 133 134
ifeq ($(VENDOR),intercontrol)
LOGO_BMP= logos/intercontrol.bmp
endif
135

136
# now $(obj) is defined
137 138
HOSTSRCS += $(addprefix $(SRCTREE)/,$(EXT_OBJ_FILES-y:.o=.c))
HOSTSRCS += $(addprefix $(SRCTREE)/tools/,$(OBJ_FILES-y:.o=.c))
Peter Tyser's avatar
Peter Tyser committed
139
HOSTSRCS += $(addprefix $(SRCTREE)/lib/libfdt/,$(LIBFDT_OBJ_FILES-y:.o=.c))
Wolfgang Denk's avatar
Wolfgang Denk committed
140
BINS	:= $(addprefix $(obj),$(sort $(BIN_FILES-y)))
141
LIBFDT_OBJS	:= $(addprefix $(obj),$(LIBFDT_OBJ_FILES-y))
142

143 144 145
HOSTOBJS := $(addprefix $(obj),$(OBJ_FILES-y))
NOPEDOBJS := $(addprefix $(obj),$(NOPED_OBJ_FILES-y))

wdenk's avatar
wdenk committed
146 147
#
# Use native tools and options
148
# Define __KERNEL_STRICT_NAMES to prevent typedef overlaps
wdenk's avatar
wdenk committed
149
#
150
HOSTCPPFLAGS =	-idirafter $(SRCTREE)/include \
151 152
		-idirafter $(OBJTREE)/include2 \
		-idirafter $(OBJTREE)/include \
Peter Tyser's avatar
Peter Tyser committed
153
	        -I $(SRCTREE)/lib/libfdt \
154
		-I $(SRCTREE)/tools \
155 156
		-DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) \
		-DUSE_HOSTCC \
157
		-D__KERNEL_STRICT_NAMES
158

wdenk's avatar
wdenk committed
159

160
all:	$(obj).depend $(BINS) $(LOGO-y) subdirs
wdenk's avatar
wdenk committed
161

162
$(obj)bin2header$(SFX): $(obj)bin2header.o
163 164
	$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
	$(HOSTSTRIP) $@
wdenk's avatar
wdenk committed
165

166
$(obj)bmp_logo$(SFX):	$(obj)bmp_logo.o
167 168
	$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
	$(HOSTSTRIP) $@
wdenk's avatar
wdenk committed
169

170
$(obj)envcrc$(SFX):	$(obj)crc32.o $(obj)env_embedded.o $(obj)envcrc.o $(obj)sha1.o
171
	$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
wdenk's avatar
wdenk committed
172

173
$(obj)gen_eth_addr$(SFX):	$(obj)gen_eth_addr.o
174 175
	$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
	$(HOSTSTRIP) $@
wdenk's avatar
wdenk committed
176

177
$(obj)img2srec$(SFX):	$(obj)img2srec.o
178 179
	$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
	$(HOSTSTRIP) $@
wdenk's avatar
wdenk committed
180

181
$(obj)inca-swap-bytes$(SFX):	$(obj)inca-swap-bytes.o
182 183
	$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
	$(HOSTSTRIP) $@
wdenk's avatar
wdenk committed
184

185 186 187 188
$(obj)mkimage$(SFX):	$(obj)crc32.o \
			$(obj)default_image.o \
			$(obj)fit_image.o \
			$(obj)image.o \
189
			$(obj)imximage.o \
190
			$(obj)kwbimage.o \
191 192 193 194 195
			$(obj)md5.o \
			$(obj)mkimage.o \
			$(obj)os_support.o \
			$(obj)sha1.o \
			$(LIBFDT_OBJS)
196 197
	$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
	$(HOSTSTRIP) $@
198

199
$(obj)mpc86x_clk$(SFX):	$(obj)mpc86x_clk.o
200 201
	$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
	$(HOSTSTRIP) $@
wdenk's avatar
wdenk committed
202

203
$(obj)ncb$(SFX):	$(obj)ncb.o
204 205
	$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
	$(HOSTSTRIP) $@
206

207
$(obj)ubsha1$(SFX):	$(obj)os_support.o $(obj)sha1.o $(obj)ubsha1.o
208
	$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
209

210
# Some of the tool objects need to be accessed from outside the tools directory
211
$(obj)%.o: $(SRCTREE)/common/%.c
212
	$(HOSTCC) -g $(HOSTCFLAGS_NOPED) -c -o $@ $<
213

214
$(obj)%.o: $(SRCTREE)/lib/%.c
215
	$(HOSTCC) -g $(HOSTCFLAGS) -c -o $@ $<
216

Peter Tyser's avatar
Peter Tyser committed
217
$(obj)%.o: $(SRCTREE)/lib/libfdt/%.c
218
	$(HOSTCC) -g $(HOSTCFLAGS_NOPED) -c -o $@ $<
219

wdenk's avatar
wdenk committed
220
subdirs:
221
ifeq ($(TOOLSUBDIRS),)
222
	@:
223
else
224 225 226 227 228 229
	@for dir in $(TOOLSUBDIRS) ; do \
	    $(MAKE) \
		HOSTOS=$(HOSTOS) \
		HOSTARCH=$(HOSTARCH) \
		-C $$dir || exit 1 ; \
	done
230 231
endif

232
$(LOGO_H):	$(obj)bmp_logo $(LOGO_BMP)
233
	$(obj)./bmp_logo $(LOGO_BMP) >$@
wdenk's avatar
wdenk committed
234 235 236

#########################################################################

237 238
# defines $(obj).depend target
include $(SRCTREE)/rules.mk
wdenk's avatar
wdenk committed
239

240
sinclude $(obj).depend
wdenk's avatar
wdenk committed
241 242

#########################################################################