350 lines
10 KiB
Makefile
350 lines
10 KiB
Makefile
#
|
|
# (C) Copyright 2000-2006
|
|
# 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
|
|
#
|
|
|
|
VERSION = 1
|
|
PATCHLEVEL = 1
|
|
SUBLEVEL = 4
|
|
EXTRAVERSION =
|
|
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
|
|
VERSION_FILE = include/version_autogenerated.h
|
|
|
|
HOSTARCH := $(shell uname -m | \
|
|
sed -e s/i.86/i386/ \
|
|
-e s/sun4u/sparc64/ \
|
|
-e s/arm.*/arm/ \
|
|
-e s/sa110/arm/ \
|
|
-e s/powerpc/ppc/ \
|
|
-e s/macppc/ppc/)
|
|
|
|
HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
|
|
sed -e 's/\(cygwin\).*/cygwin/')
|
|
|
|
export HOSTARCH HOSTOS
|
|
|
|
# Deal with colliding definitions from tcsh etc.
|
|
VENDOR=
|
|
|
|
#########################################################################
|
|
|
|
TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
|
|
export TOPDIR
|
|
|
|
BUILDVERSION=$(shell if test -e $(KERNELPATH)/ath_version.mk ; then cat $(KERNELPATH)/ath_version.mk | sed s/EXTRAVERSION=-LSDK-//g; fi)
|
|
|
|
ifndef COMPRESSED_UBOOT
|
|
COMPRESSED_UBOOT = 0
|
|
endif
|
|
|
|
ifeq (include/config.mk,$(wildcard include/config.mk))
|
|
# load ARCH, BOARD, and CPU configuration
|
|
include include/config.mk
|
|
export ARCH CPU BOARD VENDOR SOC
|
|
ifndef CROSS_COMPILE
|
|
ifeq ($(HOSTARCH),ppc)
|
|
CROSS_COMPILE =
|
|
else
|
|
ifeq ($(ARCH),ppc)
|
|
CROSS_COMPILE = powerpc-linux-
|
|
endif
|
|
ifeq ($(ARCH),arm)
|
|
CROSS_COMPILE = arm-linux-
|
|
endif
|
|
ifeq ($(ARCH),i386)
|
|
ifeq ($(HOSTARCH),i386)
|
|
CROSS_COMPILE =
|
|
else
|
|
CROSS_COMPILE = i386-linux-
|
|
endif
|
|
endif
|
|
ifeq ($(ARCH),mips)
|
|
CROSS_COMPILE = mips-linux-
|
|
endif
|
|
ifeq ($(ARCH),nios)
|
|
CROSS_COMPILE = nios-elf-
|
|
endif
|
|
ifeq ($(ARCH),nios2)
|
|
CROSS_COMPILE = nios2-elf-
|
|
endif
|
|
ifeq ($(ARCH),m68k)
|
|
CROSS_COMPILE = m68k-elf-
|
|
endif
|
|
ifeq ($(ARCH),microblaze)
|
|
CROSS_COMPILE = mb-
|
|
endif
|
|
ifeq ($(ARCH),blackfin)
|
|
CROSS_COMPILE = bfin-elf-
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
export CROSS_COMPILE
|
|
|
|
# load other configuration
|
|
include $(TOPDIR)/config.mk
|
|
|
|
|
|
#########################################################################
|
|
# U-Boot objects....order is important (i.e. start must be first)
|
|
OBJS = cpu/$(CPU)/start.o
|
|
|
|
ifeq ($(COMPRESSED_UBOOT),1)
|
|
OBJS_BOOTSTRAP = cpu/$(CPU)/start_bootstrap.o
|
|
endif
|
|
|
|
|
|
|
|
LIBS = lib_generic/libgeneric.a
|
|
LIBS += common/libcommon.a
|
|
LIBS += board/$(BOARDDIR)/lib$(BOARD).a
|
|
LIBS += cpu/$(CPU)/lib$(CPU).a
|
|
ifdef SOC
|
|
LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a
|
|
endif
|
|
LIBS += lib_$(ARCH)/lib$(ARCH).a
|
|
|
|
LIBS += drivers/libdrivers.a
|
|
LIBS += disk/libdisk.a fs/fat/libfat.a fs/libfs.a
|
|
LIBS += net/libnet.a
|
|
LIBS += rtc/librtc.a
|
|
LIBS += $(BOARDLIBS)
|
|
|
|
ifeq ($(COMPRESSED_UBOOT),1)
|
|
LIBS_BOOTSTRAP = lib_bootstrap/libbootstrap.a
|
|
#LIBS_BOOTSTRAP += lib_$(CPU)/lib$(CPU).a
|
|
LIBS_BOOTSTRAP += board/$(BOARDDIR)/lib$(BOARD).a
|
|
LIBS_BOOTSTRAP += cpu/$(CPU)/lib$(CPU).a
|
|
ifneq ($(SOC),)
|
|
LIBS_BOOTSTRAP += cpu/$(CPU)/$(SOC)/lib$(SOC).a
|
|
endif
|
|
endif
|
|
.PHONY : $(LIBS)
|
|
|
|
ifeq ($(COMPRESSED_UBOOT),1)
|
|
.PHONY : $(LIBS_BOOTSTRAP)
|
|
endif
|
|
|
|
# Add GCC lib
|
|
PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
|
|
|
|
|
|
# The "tools" are needed early, so put this first
|
|
# Don't include stuff already done in $(LIBS)
|
|
SUBDIRS = tools
|
|
.PHONY : $(SUBDIRS)
|
|
|
|
#########################################################################
|
|
#########################################################################
|
|
|
|
ALL = u-boot.srec u-boot.bin System.map
|
|
|
|
ifeq ($(COMPRESSED_UBOOT),1)
|
|
all: $(ALL) tuboot.bin
|
|
else
|
|
all: $(ALL)
|
|
endif
|
|
|
|
u-boot.hex: u-boot
|
|
$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@
|
|
|
|
u-boot.srec: u-boot
|
|
$(OBJCOPY) ${OBJCFLAGS} -O srec $< $@
|
|
|
|
u-boot.bin: u-boot
|
|
$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
|
|
|
|
u-boot.img: u-boot.bin
|
|
./tools/mkimage -A $(ARCH) -T firmware -C none \
|
|
-a $(TEXT_BASE) -e 0 \
|
|
-n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \
|
|
sed -e 's/"[ ]*$$/ for $(BOARD) board"/') \
|
|
-d $< $@
|
|
|
|
u-boot.dis: u-boot
|
|
$(OBJDUMP) -d $< > $@
|
|
|
|
u-boot: depend version $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)
|
|
UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
|
|
$(LD) $(LDFLAGS) $$UNDEF_SYM $(OBJS) $(BOARD_EXTRA_OBJS) \
|
|
--start-group $(LIBS) --end-group $(PLATFORM_LIBS) \
|
|
-Map u-boot.map -o u-boot
|
|
|
|
$(LIBS):
|
|
$(MAKE) -C `dirname $@`
|
|
|
|
$(SUBDIRS):
|
|
$(MAKE) -C $@ all
|
|
|
|
ifeq ($(COMPRESSED_UBOOT),1)
|
|
|
|
LZMA = $(BUILD_DIR)/util/lzma
|
|
|
|
tuboot.bin: System.map bootstrap.bin u-boot.lzimg
|
|
@cat bootstrap.bin > $@
|
|
@cat u-boot.lzimg >> $@
|
|
|
|
u-boot.lzimg: $(obj)u-boot.bin System.map
|
|
@$(LZMA) e $(obj)u-boot.bin u-boot.bin.lzma
|
|
@./tools/mkimage -A mips -T firmware -C lzma \
|
|
-a 0x$(shell grep "T _start" $(TOPDIR)/System.map | awk '{ printf "%s", $$1 }') \
|
|
-e 0x$(shell grep "T _start" $(TOPDIR)/System.map | awk '{ printf "%s", $$1 }') \
|
|
-n 'u-boot image' -d $(obj)u-boot.bin.lzma $@
|
|
|
|
bootstrap.bin: bootstrap
|
|
$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
|
|
|
|
bootstrap: depend version $(SUBDIRS) $(OBJS_BOOTSTRAP) $(LIBS_BOOTSTRAP) $(LDSCRIPT_BOOTSTRAP)
|
|
UNDEF_SYM=`$(OBJDUMP) -x $(LIBS_BOOTSTRAP) |sed -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
|
|
$(LD) $(LDFLAGS_BOOTSTRAP) $$UNDEF_SYM $(OBJS_BOOTSTRAP) \
|
|
--start-group $(LIBS_BOOTSTRAP) --end-group $(PLATFORM_LIBS) \
|
|
-Map bootstrap.map -o bootstrap
|
|
|
|
$(LIBS_BOOTSTRAP):
|
|
$(MAKE) -C `dirname $@`
|
|
endif
|
|
|
|
version:
|
|
@echo -n "#define U_BOOT_VERSION \"U-Boot " > $(VERSION_FILE); \
|
|
echo -n "$(U_BOOT_VERSION)" >> $(VERSION_FILE); \
|
|
echo -n $(shell $(CONFIG_SHELL) $(TOPDIR)/tools/setlocalversion \
|
|
$(TOPDIR)) >> $(VERSION_FILE); \
|
|
echo "\"" >> $(VERSION_FILE)
|
|
|
|
gdbtools:
|
|
$(MAKE) -C tools/gdb || exit 1
|
|
|
|
depend dep:
|
|
@for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir .depend ; done
|
|
|
|
tags:
|
|
ctags -w `find $(SUBDIRS) include \
|
|
lib_generic board/$(BOARDDIR) cpu/$(CPU) lib_$(ARCH) \
|
|
fs/cramfs fs/fat fs/fdos fs/jffs2 \
|
|
net disk rtc dtt drivers drivers/sk98lin common \
|
|
\( -name CVS -prune \) -o \( -name '*.[ch]' -print \)`
|
|
|
|
etags:
|
|
etags -a `find $(SUBDIRS) include \
|
|
lib_generic board/$(BOARDDIR) cpu/$(CPU) lib_$(ARCH) \
|
|
fs/cramfs fs/fat fs/fdos fs/jffs2 \
|
|
net disk rtc dtt drivers drivers/sk98lin common \
|
|
\( -name CVS -prune \) -o \( -name '*.[ch]' -print \)`
|
|
|
|
System.map: u-boot
|
|
@$(NM) $< | \
|
|
grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
|
|
sort > System.map
|
|
|
|
#########################################################################
|
|
else
|
|
all install u-boot u-boot.srec depend dep:
|
|
@echo "System not configured - see README" >&2
|
|
@ exit 1
|
|
endif
|
|
|
|
#########################################################################
|
|
|
|
unconfig:
|
|
@rm -f include/config.h include/config.mk board/*/config.tmp
|
|
|
|
|
|
#========================================================================
|
|
# MIPS
|
|
#========================================================================
|
|
|
|
carambola2_config: unconfig hornet_common_config
|
|
@echo "#define CARABOOT_RELEASE \"$(CARABOOT_RELEASE)\"" >>include/config.h
|
|
@./mkconfig -a carambola2 mips mips carambola2 ar7240 ar7240
|
|
|
|
ap1_config: unconfig hornet_common_config
|
|
@echo "#define CARABOOT_RELEASE \"$(CARABOOT_RELEASE)\"" >>include/config.h
|
|
@./mkconfig -a ap1 mips mips carambola2 ar7240 ar7240
|
|
|
|
ap2_config: unconfig hornet_common_config
|
|
@echo "#define CARABOOT_RELEASE \"$(CARABOOT_RELEASE)\"" >>include/config.h
|
|
@./mkconfig -a ap2 mips mips carambola2 ar7240 ar7240
|
|
|
|
jb02v2-cb2_config: unconfig hornet_common_config
|
|
@echo "#define CARABOOT_RELEASE \"$(CARABOOT_RELEASE)\"" >>include/config.h
|
|
@./mkconfig -a jb02v3-skw mips mips carambola2 ar7240 ar7240
|
|
|
|
jb02v3-skw_config: unconfig hornet_common_config
|
|
@echo "#define CARABOOT_RELEASE \"$(CARABOOT_RELEASE)\"" >>include/config.h
|
|
@./mkconfig -a jb02v3-skw mips mips carambola2 ar7240 ar7240
|
|
|
|
hornet_common_config :
|
|
@ >include/config.h
|
|
ifeq ($(AG7240_BROADCAST_ENABLE), 1)
|
|
@echo "#define AG7240_BROADCAST_ENABLE 1" >>include/config.h
|
|
endif
|
|
|
|
###############
|
|
|
|
clean:
|
|
@echo Making $@
|
|
@find . -type f \
|
|
\( -name 'core' -o -name '*.bak' -o -name '*~' \
|
|
-o -name '*.o' -o -name '*.a' -o -name .depend \) -print \
|
|
| xargs rm -f
|
|
@rm -f examples/hello_world examples/timer \
|
|
examples/eepro100_eeprom examples/sched \
|
|
examples/mem_to_mem_idma2intr examples/82559_eeprom \
|
|
examples/smc91111_eeprom \
|
|
examples/test_burst
|
|
@rm -f tools/img2srec tools/mkimage tools/envcrc tools/gen_eth_addr
|
|
@rm -f tools/mpc86x_clk tools/ncb
|
|
@rm -f tools/easylogo/easylogo tools/bmp_logo
|
|
@rm -f tools/gdb/astest tools/gdb/gdbcont tools/gdb/gdbsend
|
|
@rm -f tools/env/fw_printenv tools/env/fw_setenv
|
|
@rm -f board/cray/L1/bootscript.c board/cray/L1/bootscript.image
|
|
@rm -f board/netstar/eeprom board/netstar/crcek
|
|
@rm -f board/netstar/*.srec board/netstar/*.bin
|
|
@rm -f board/trab/trab_fkt board/voiceblue/eeprom
|
|
@rm -f board/integratorap/u-boot.lds board/integratorcp/u-boot.lds
|
|
ifeq ($(COMPRESSED_UBOOT),1)
|
|
@rm -f lib_bootstrap/*.o
|
|
@rm -f lib_bootstrap/*.a
|
|
@rm -f bootstrap bootstrap.bin tuboot.bin u-boot.lzimg
|
|
endif
|
|
|
|
clobber: clean
|
|
@echo Making $@
|
|
@find . -type f \( -name .depend \
|
|
-o -name '*.srec' -o -name '*.bin' -o -name u-boot.img \) \
|
|
-print0 \
|
|
| xargs -0 rm -f
|
|
@rm -f $(OBJS) *.bak tags TAGS include/version_autogenerated.h
|
|
@rm -fr *.*~
|
|
@rm -f u-boot u-boot.map u-boot.hex $(ALL)
|
|
@rm -f tools/crc32.c tools/environment.c tools/env/crc32.c
|
|
@rm -f tools/inca-swap-bytes cpu/mpc824x/bedbug_603e.c
|
|
@rm -f include/asm/proc include/asm/arch include/asm
|
|
|
|
mrproper \
|
|
distclean: clobber unconfig
|
|
|
|
backup:
|
|
F=`basename $(TOPDIR)` ; cd .. ; \
|
|
gtar --force-local -zcvf `date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
|
|
|
|
#########################################################################
|