kbuild: rename OBJCFLAGS to OBJCOPYFLAGS
[kernel/u-boot.git] / Makefile
index 75fd7f3..ad91168 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -6,9 +6,9 @@
 #
 
 VERSION = 2014
-PATCHLEVEL = 01
+PATCHLEVEL = 04
 SUBLEVEL =
-EXTRAVERSION =
+EXTRAVERSION = -rc1
 NAME =
 
 # *DOCUMENTATION*
@@ -180,9 +180,6 @@ unexport CDPATH
 
 #########################################################################
 
-TIMESTAMP_FILE = include/generated/timestamp_autogenerated.h
-VERSION_FILE = include/generated/version_autogenerated.h
-
 HOSTARCH := $(shell uname -m | \
        sed -e s/i.86/x86/ \
            -e s/sun4u/sparc64/ \
@@ -356,9 +353,11 @@ KBUILD_CFLAGS   := -Wall -Wstrict-prototypes \
                   -fno-builtin -ffreestanding
 KBUILD_AFLAGS   := -D__ASSEMBLY__
 
-U_BOOT_VERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
+# Read UBOOTRELEASE from include/config/uboot.release (if it exists)
+UBOOTRELEASE = $(shell cat include/config/uboot.release 2> /dev/null)
+UBOOTVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
 
-export VERSION PATCHLEVEL SUBLEVEL U_BOOT_VERSION
+export VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION
 export ARCH CPU BOARD VENDOR SOC
 export CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC
 export CPP AR NM LDR STRIP OBJCOPY OBJDUMP
@@ -411,8 +410,11 @@ endif
 # Detect when mixed targets is specified, and make a second invocation
 # of make so .config is not included in this case either (for *config).
 
+version_h := include/generated/version_autogenerated.h
+timestamp_h := include/generated/timestamp_autogenerated.h
+
 no-dot-config-targets := clean clobber mrproper distclean \
-                        cscope TAGS %tags help %docs check% coccicheck \
+                        help %docs check% coccicheck \
                         backup
 
 config-targets := 0
@@ -547,7 +549,9 @@ KBUILD_CFLAGS       += -g
 KBUILD_AFLAGS  += -g
 
 # Report stack usage if supported
-KBUILD_CFLAGS += $(call cc-option,-fstack-usage)
+ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y)
+       KBUILD_CFLAGS += -fstack-usage
+endif
 
 KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral)
 
@@ -580,8 +584,6 @@ CHECKFLAGS     += $(NOSTDINC_FLAGS)
 cpp_flags := $(KBUILD_CPPFLAGS) $(CPPFLAGS) $(UBOOTINCLUDE) $(NOSTDINC_FLAGS)
 c_flags := $(KBUILD_CFLAGS) $(cpp_flags)
 
-.PHONY : $(VERSION_FILE) $(TIMESTAMP_FILE)
-
 #########################################################################
 # U-Boot objects....order is important (i.e. start must be first)
 
@@ -597,7 +599,6 @@ libs-y += $(CPUDIR)/
 ifdef SOC
 libs-y += $(CPUDIR)/$(SOC)/
 endif
-libs-$(CONFIG_IXP4XX_NPE) += drivers/net/npe/
 libs-$(CONFIG_OF_EMBED) += dts/
 libs-y += arch/$(ARCH)/lib/
 libs-y += fs/
@@ -720,7 +721,7 @@ ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl
 ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
-ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin
+ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.bin
 ifneq ($(CONFIG_SPL_TARGET),)
 ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
 endif
@@ -744,21 +745,21 @@ endif
 
 all:           $(ALL-y)
 
-u-boot.dtb:    checkdtc u-boot
-               $(MAKE) $(build)=dts binary
-               mv dts/dt.dtb $@
+PHONY += dtbs
+dtbs dts/dt.dtb: checkdtc u-boot
+       $(Q)$(MAKE) $(build)=dts dtbs
 
-u-boot-dtb.bin:        u-boot.bin u-boot.dtb
+u-boot-dtb.bin: u-boot.bin dts/dt.dtb
                cat $^ >$@
 
 u-boot.hex:    u-boot
-               $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@
+               $(OBJCOPY) $(OBJCOPYFLAGS) -O ihex $< $@
 
 u-boot.srec:   u-boot
-               $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@
+               $(OBJCOPY) $(OBJCOPYFLAGS) -O srec $< $@
 
 u-boot.bin:    u-boot
-               $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
+               $(OBJCOPY) $(OBJCOPYFLAGS) -O binary $< $@
                $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))
                $(BOARD_SIZE_CHECK)
 
@@ -768,10 +769,10 @@ u-boot.ldr:       u-boot
                $(BOARD_SIZE_CHECK)
 
 u-boot.ldr.hex:        u-boot.ldr
-               $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary
+               $(OBJCOPY) $(OBJCOPYFLAGS) -O ihex $< $@ -I binary
 
 u-boot.ldr.srec:       u-boot.ldr
-               $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ -I binary
+               $(OBJCOPY) $(OBJCOPYFLAGS) -O srec $< $@ -I binary
 
 #
 # U-Boot entry point, needed for booting of full-blown U-Boot
@@ -785,8 +786,7 @@ u-boot.img: u-boot.bin
                tools/mkimage -A $(ARCH) -T firmware -C none \
                -O u-boot -a $(CONFIG_SYS_TEXT_BASE) \
                -e $(CONFIG_SYS_UBOOT_START) \
-               -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \
-                       sed -e 's/"[     ]*$$/ for $(BOARD) board"/') \
+               -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" \
                -d $< $@
 
 u-boot.imx: u-boot.bin
@@ -810,7 +810,7 @@ u-boot.dis: u-boot
 # $@ is output, $(1) and $(2) are inputs, $(3) is padded intermediate,
 # $(4) is pad-to
 SPL_PAD_APPEND = \
-               $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(4) -I binary -O binary \
+               $(OBJCOPY) $(OBJCOPYFLAGS) --pad-to=$(4) -I binary -O binary \
                $(1) $(3); \
                cat $(3) $(2) > $@; \
                rm $(3)
@@ -845,7 +845,7 @@ u-boot.ais:       spl/u-boot-spl.bin u-boot.img
                        -e $(CONFIG_SPL_TEXT_BASE) \
                        -d spl/u-boot-spl.bin \
                        spl/u-boot-spl.ais
-               $(OBJCOPY) ${OBJCFLAGS} -I binary \
+               $(OBJCOPY) $(OBJCOPYFLAGS) -I binary \
                        --pad-to=$(CONFIG_SPL_MAX_SIZE) -O binary \
                        spl/u-boot-spl.ais spl/u-boot-spl-pad.ais
                cat spl/u-boot-spl-pad.ais u-boot.img > u-boot.ais
@@ -870,13 +870,13 @@ u-boot.spr:       u-boot.img spl/u-boot-spl.bin
 
 ifneq ($(CONFIG_TEGRA),)
 u-boot-nodtb-tegra.bin: spl/u-boot-spl.bin u-boot.bin
-               $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(CONFIG_SYS_TEXT_BASE) -O binary spl/u-boot-spl spl/u-boot-spl-pad.bin
+               $(OBJCOPY) $(OBJCOPYFLAGS) --pad-to=$(CONFIG_SYS_TEXT_BASE) -O binary spl/u-boot-spl spl/u-boot-spl-pad.bin
                cat spl/u-boot-spl-pad.bin u-boot.bin > $@
                rm spl/u-boot-spl-pad.bin
 
 ifeq ($(CONFIG_OF_SEPARATE),y)
-u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin u-boot.dtb
-               cat u-boot-nodtb-tegra.bin u-boot.dtb > $@
+u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin dts/dt.dtb
+               cat $^ > $@
 endif
 endif
 
@@ -939,16 +939,25 @@ $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ;
 # Error messages still appears in the original language
 
 PHONY += $(u-boot-dirs)
-$(u-boot-dirs): depend prepare scripts
+$(u-boot-dirs): prepare scripts
        $(Q)$(MAKE) $(build)=$@
 
-tools: $(TIMESTAMP_FILE) $(VERSION_FILE)
+tools: prepare
 # The "tools" are needed early
 $(filter-out tools, $(u-boot-dirs)): tools
 # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC
 # is "yes"), so compile examples after U-Boot is compiled.
 examples: $(filter-out examples, $(u-boot-dirs))
 
+define filechk_uboot.release
+       echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
+endef
+
+# Store (new) UBOOTRELEASE string in include/config/uboot.release
+include/config/uboot.release: Makefile FORCE
+       $(call filechk,uboot.release)
+
+
 # Things we need to do before we recursively start building the kernel
 # or the modules are listed in "prepare".
 # A multi level approach is used. prepareN is processed before prepareN-1.
@@ -961,7 +970,7 @@ PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
 # prepare3 is used to check if we are building in a separate output directory,
 # and if so do:
 # 1) Check that make has not been executed in the kernel src $(srctree)
-prepare3:
+prepare3: include/config/uboot.release
 ifneq ($(KBUILD_SRC),)
        @$(kecho) '  Using $(srctree) as source for u-boot'
        $(Q)if [ -f $(srctree)/include/config.mk ]; then \
@@ -974,17 +983,38 @@ endif
 # prepare2 creates a makefile if using a separate output directory
 prepare2: prepare3 outputmakefile
 
-prepare1: prepare2
+prepare1: prepare2 $(version_h) $(timestamp_h)
        @:
 
 archprepare: prepare1 scripts_basic
 
 prepare0: archprepare FORCE
-       @:
+       $(Q)$(MAKE) $(build)=.
 
 # All the preparing..
 prepare: prepare0
 
+# Generate some files
+# ---------------------------------------------------------------------------
+
+define filechk_version.h
+       (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \
+       echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \
+       echo \#define CC_VERSION_STRING \"$$($(CC) --version | head -n 1)\"; \
+       echo \#define LD_VERSION_STRING \"$$($(LD) --version | head -n 1)\"; )
+endef
+
+define filechk_timestamp.h
+       (LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \
+       LC_ALL=C date +'#define U_BOOT_TIME "%T"')
+endef
+
+$(version_h): $(srctree)/Makefile FORCE
+       $(call filechk,version.h)
+
+$(timestamp_h): $(srctree)/Makefile FORCE
+       $(call filechk,timestamp.h)
+
 #
 # Auto-generate the autoconf.mk file (which is included by all makefiles)
 #
@@ -1008,27 +1038,29 @@ quiet_cmd_autoconf = GEN     $@
 include/autoconf.mk: include/config.h
        $(call cmd,autoconf)
 
-u-boot.lds: $(LDSCRIPT) depend
+# ---------------------------------------------------------------------------
+
+PHONY += depend dep
+depend dep:
+       @echo '*** Warning: make $@ is unnecessary now.'
+
+# ---------------------------------------------------------------------------
+
+u-boot.lds: $(LDSCRIPT) prepare
                $(CPP) $(cpp_flags) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
-nand_spl:      $(TIMESTAMP_FILE) $(VERSION_FILE) depend prepare
+nand_spl: prepare
                $(MAKE) $(build)=nand_spl/board/$(BOARDDIR) all
 
 u-boot-nand.bin:       nand_spl u-boot.bin
                cat nand_spl/u-boot-spl-16k.bin u-boot.bin > u-boot-nand.bin
 
-spl/u-boot-spl.bin: tools depend prepare 
+spl/u-boot-spl.bin: tools prepare
                $(MAKE) obj=spl -f $(srctree)/spl/Makefile all
 
-tpl/u-boot-tpl.bin: tools depend prepare
+tpl/u-boot-tpl.bin: tools prepare
                $(MAKE) obj=tpl -f $(srctree)/spl/Makefile all CONFIG_TPL_BUILD=y
 
-# Explicitly make _depend in subdirs containing multiple targets to prevent
-# parallel sub-makes creating .depend files simultaneously.
-depend dep:    $(TIMESTAMP_FILE) $(VERSION_FILE) \
-               include/generated/generic-asm-offsets.h \
-               include/generated/asm-offsets.h
-
 TAG_SUBDIRS := $(u-boot-dirs) include
 
 FIND := find
@@ -1082,37 +1114,6 @@ checkdtc:
                false; \
        fi
 
-quiet_cmd_offsets = GEN     $@
-      cmd_offsets = $(srctree)/tools/scripts/make-asm-offsets $< $@
-
-include/generated/generic-asm-offsets.h: lib/asm-offsets.s
-       $(call cmd,offsets)
-
-quiet_cmd_asm-offsets.s = CC      $@
-      cmd_asm-offsets.s = mkdir -p lib; \
-               $(CC) -DDO_DEPS_ONLY \
-               $(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
-               -o $@ $< -c -S
-
-lib/asm-offsets.s: $(srctree)/lib/asm-offsets.c include/config.h
-       $(call cmd,asm-offsets.s)
-
-include/generated/asm-offsets.h: $(CPUDIR)/$(SOC)/asm-offsets.s
-       $(call cmd,offsets)
-
-quiet_cmd_soc_asm-offsets.s = CC      $@
-      cmd_soc_asm-offsets.s = mkdir -p $(CPUDIR)/$(SOC); \
-       if [ -f $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c ];then \
-               $(CC) -DDO_DEPS_ONLY \
-               $(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
-                       -o $@ $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c -c -S; \
-       else \
-               touch $@; \
-       fi
-
-$(CPUDIR)/$(SOC)/asm-offsets.s:        include/config.h
-       $(call cmd,soc_asm-offsets.s)
-
 #########################################################################
 
 # ARM relocations should all be R_ARM_RELATIVE (32-bit) or
@@ -1126,27 +1127,7 @@ checkarmreloc: u-boot
                false; \
        fi
 
-$(VERSION_FILE):
-               @mkdir -p $(dir $(VERSION_FILE))
-               @( localvers='$(shell $(TOPDIR)/scripts/setlocalversion $(TOPDIR))' ; \
-                  printf '#define PLAIN_VERSION "%s%s"\n' \
-                       "$(U_BOOT_VERSION)" "$${localvers}" ; \
-                  printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' \
-                       "$(U_BOOT_VERSION)" "$${localvers}" ; \
-               ) > $@.tmp
-               @( printf '#define CC_VERSION_STRING "%s"\n' \
-                '$(shell $(CC) --version | head -n 1)' )>>  $@.tmp
-               @( printf '#define LD_VERSION_STRING "%s"\n' \
-                '$(shell $(LD) -v | head -n 1)' )>>  $@.tmp
-               @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
-
-$(TIMESTAMP_FILE):
-               @mkdir -p $(dir $(TIMESTAMP_FILE))
-               @LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > $@.tmp
-               @LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> $@.tmp
-               @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
-
-env: depend scripts_basic
+env: scripts_basic
        $(Q)$(MAKE) $(build)=tools/$@
 
 tools-all: HOST_TOOLS_ALL=y
@@ -1171,7 +1152,7 @@ include/license.h: tools/bin2header COPYING
 # Directories & files removed with 'make clean'
 CLEAN_DIRS  += $(MODVERDIR)
 CLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h \
-              board/*/config.tmp board/*/*/config.tmp dts/*.tmp \
+              board/*/config.tmp board/*/*/config.tmp \
               include/autoconf.mk* include/spl-autoconf.mk \
               include/tpl-autoconf.mk
 
@@ -1179,7 +1160,7 @@ CLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h \
 CLOBBER_DIRS  += $(patsubst %,spl/%, $(filter-out Makefile, \
                 $(shell ls -1 spl 2>/dev/null))) \
                 tpl
-CLOBBER_FILES += u-boot* MLO MLO* SPL System.map nand_spl/u-boot*
+CLOBBER_FILES += u-boot* MLO* SPL System.map nand_spl/u-boot*
 
 # Directories & files removed with 'make mrproper'
 MRPROPER_DIRS  += include/config include/generated