[U-Boot] [PATCH v9 17/38] kbuild: change out-of-tree build

Masahiro Yamada
2014-02-04T08:24:24Z

This commit changes the working directory
where the build process occurs.

Before this commit, build process occurred under the source
tree for both in-tree and out-of-tree build.

That's why we needed to add $(obj) prefix to all generated
files in makefiles like follows:
$(obj)u-boot.bin: $(obj)u-boot

Here, $(obj) is empty for in-tree build, whereas it points
to the output directory for out-of-tree build.

And our old build system changes the current working directory
with "make -C <sub-dir>" syntax when descending into the
sub-directories.

On the other hand, Kbuild uses a different idea
to handle out-of-tree build and directory descending.

The build process of Kbuild always occurs under the output tree.
When "O=dir/to/store/output/files" is given, the build system
changes the current working directory to that directory and
restarts the make.

Kbuild uses "make -f $(srctree)/scripts/Makefile.build obj=<sub-dir>"
syntax for descending into sub-directories.
(We can write it like "make $(obj)=<sub-dir>" with a shorthand.)
This means the current working directory is always the top
of the output directory.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Tested-by: Gerhard Sittig <gsi@denx.de>
---

This patch seems a big change at a glance.
But the idea is pretty simple.

The major change in the top Makefile is imported
from Linux Kernel from Linux Kernel.

The rest parts are for adjusting prefixes.

- omit $(obj) prefixes for files which are generated in
the top directory
- change $(obj)foo to $(obj)/foo for files which are generated
under sub directories.
- add $(srctree)/ or $(src)/ prefixes when we need to point
to the source files.
- The environmanet BUILD_DIR has been renamed to KBUILD_OUTPUT.
So, this commit modifies MAKEALL too.

FYI:
Basic structure of the top Makefile is as follows:

ifeq ($(KBUILD_SRC),)

ifeq ("$(origin O)", "command line")
KBUILD_OUTPUT := $(O)
endif

ifneq ($(KBUILD_OUTPUT),)

<< define KBUILD_SRC and change directory and restart make >>

skip-makefile := 1
endif
endif

ifeq ($(skip-makefile),)

<<Main part of Makefile>>

endif

Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Fix doc/DocBook/Makefile
- Rebase on the current u-boot/master

Changes in v5:
- Rebase on the current u-boot/master

Changes in v4:
- Change a little checkstack target:
Use $(src) rather than $(srctree) where Linux Kernel does so.

Changes in v3:
- Rebase on the current u-boot/master

Changes in v2:
- Rebase on v2014.01-rc2 tag
- At version 1, sandbox got broken by this commit
(and fixed again in the lator commit.)
Fix this problem
- Change a little MAKEALL
Do not add "O= " if objtree is the same as srctree.
This will be helpful at 35/35.

MAKEALL | 6 +-
Makefile | 569 ++++++++++++++------------
arch/arm/cpu/arm1136/config.mk | 2 +-
arch/arm/cpu/arm926ejs/config.mk | 2 +-
arch/arm/cpu/arm926ejs/davinci/config.mk | 2 +-
arch/arm/cpu/armv7/am33xx/config.mk | 2 +-
arch/arm/cpu/armv7/config.mk | 2 +-
arch/arm/cpu/armv7/omap3/config.mk | 2 +-
arch/arm/cpu/armv7/omap4/config.mk | 2 +-
arch/arm/cpu/armv7/omap5/config.mk | 2 +-
arch/arm/cpu/armv7/socfpga/config.mk | 2 +-
arch/blackfin/config.mk | 10 +-
arch/blackfin/cpu/Makefile | 8 +-
arch/mips/cpu/mips32/config.mk | 2 +-
arch/mips/cpu/mips64/config.mk | 2 +-
arch/mips/cpu/xburst/config.mk | 2 +-
arch/nds32/config.mk | 2 +-
arch/powerpc/lib/Makefile | 4 +-
arch/sandbox/cpu/Makefile | 4 +-
arch/sparc/config.mk | 3 +-
arch/x86/lib/Makefile | 2 +-
board/ait/cam_enc_4xx/config.mk | 2 +-
board/avionic-design/medcom-wide/Makefile | 2 +-
board/avionic-design/plutux/Makefile | 2 +-
board/avionic-design/tec-ng/Makefile | 2 +-
board/avionic-design/tec/Makefile | 2 +-
board/compal/paz00/Makefile | 2 +-
board/compulab/trimslice/Makefile | 2 +-
board/cray/L1/Makefile | 8 +-
board/h2200/Makefile | 2 +-
board/matrix_vision/mvblm7/Makefile | 4 +-
board/matrix_vision/mvsmr/Makefile | 2 +-
board/nvidia/common/Makefile | 2 +-
board/pcs440ep/config.mk | 2 +-
board/samsung/origen/Makefile | 2 +-
common/Makefile | 9 +-
config.mk | 42 +-
doc/DocBook/Makefile | 6 +-
drivers/bios_emulator/Makefile | 2 +-
dts/Makefile | 6 +-
examples/api/Makefile | 16 +-
examples/standalone/Makefile | 14 +-
fs/ubifs/Makefile | 2 +-
lib/Makefile | 2 +-
mkconfig | 2 +-
nand_spl/board/amcc/acadia/Makefile | 30 +-
nand_spl/board/amcc/bamboo/Makefile | 30 +-
nand_spl/board/amcc/canyonlands/Makefile | 30 +-
nand_spl/board/amcc/kilauea/Makefile | 28 +-
nand_spl/board/amcc/sequoia/Makefile | 32 +-
nand_spl/board/freescale/mpc8315erdb/Makefile | 30 +-
nand_spl/board/freescale/mpc8536ds/Makefile | 42 +-
nand_spl/board/freescale/mpc8569mds/Makefile | 42 +-
nand_spl/board/freescale/mpc8572ds/Makefile | 42 +-
nand_spl/board/freescale/p1023rds/Makefile | 42 +-
nand_spl/board/freescale/p1_p2_rdb/Makefile | 42 +-
nand_spl/board/sheldon/simpc8313/Makefile | 30 +-
post/lib_powerpc/fpu/Makefile | 2 +-
rules.mk | 19 +-
scripts/Kbuild.include | 4 +-
scripts/Makefile.build | 57 ++-
scripts/Makefile.host.tmp | 18 +-
spl/Makefile | 49 ++-
tools/Makefile | 18 +-
64 files changed, 612 insertions(+), 744 deletions(-)

diff --git a/MAKEALL b/MAKEALL
index 562071a..01d0598 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -668,8 +668,6 @@ build_target() {
output_dir="${OUTPUT_PREFIX}"
fi

- export BUILD_DIR="${output_dir}"
-
target_arch=$(get_target_arch ${target})
eval cross_toolchain=\$CROSS_COMPILE_`echo $target_arch | tr '[:lower:]' '[:upper:]'`
if [ "${cross_toolchain}" ] ; then
@@ -680,6 +678,10 @@ build_target() {
MAKE=make
fi

+ if [ "${output_dir}" != "." ] ; then
+ MAKE="${MAKE} O=${output_dir}"
+ fi
+
${MAKE} distclean >/dev/null
${MAKE} -s ${target}_config

diff --git a/Makefile b/Makefile
index b24b425..1409c8b 100644
--- a/Makefile
+++ b/Makefile
@@ -14,8 +14,8 @@ U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
else
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)
endif
-TIMESTAMP_FILE = $(obj)include/generated/timestamp_autogenerated.h
-VERSION_FILE = $(obj)include/generated/version_autogenerated.h
+TIMESTAMP_FILE = include/generated/timestamp_autogenerated.h
+VERSION_FILE = include/generated/version_autogenerated.h

HOSTARCH := $(shell uname -m | \
sed -e s/i.86/x86/ \
@@ -43,32 +43,82 @@ else
XECHO = :
endif

-#########################################################################
-#
-# U-boot build supports generating object files in a separate external
-# directory. Two use cases are supported:
-#
-# 1) Add O= to the make command line
-# 'make O=/tmp/build all'
-#
-# 2) Set environment variable BUILD_DIR to point to the desired location
-# 'export BUILD_DIR=/tmp/build'
-# 'make'
-#
-# The second approach can also be used with a MAKEALL script
-# 'export BUILD_DIR=/tmp/build'
-# './MAKEALL'
+# kbuild supports saving output files in a separate directory.
+# To locate output files in a separate directory two syntaxes are supported.
+# In both cases the working directory must be the root of the kernel src.
+# 1) O=
+# Use "make O=dir/to/store/output/files/"
#
-# Command line 'O=' setting overrides BUILD_DIR environment variable.
-#
-# When none of the above methods is used the local build is performed and
-# the object files are placed in the source directory.
+# 2) Set KBUILD_OUTPUT
+# Set the environment variable KBUILD_OUTPUT to point to the directory
+# where the output files shall be placed.
+# export KBUILD_OUTPUT=dir/to/store/output/files/
+# make
#
+# The O= assignment takes precedence over the KBUILD_OUTPUT environment
+# variable.
+
+
+# KBUILD_SRC is set on invocation of make in OBJ directory
+# KBUILD_SRC is not intended to be used by the regular user (for now)
+ifeq ($(KBUILD_SRC),)

+# OK, Make called in directory where kernel src resides
+# Do we want to locate output files in a separate directory?
ifeq ("$(origin O)", "command line")
-BUILD_DIR := $(O)
+ KBUILD_OUTPUT := $(O)
+endif
+
+ifeq ("$(origin W)", "command line")
+ export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
endif

+# That's our default target when none is given on the command line
+PHONY := _all
+_all:
+
+# Cancel implicit rules on top Makefile
+$(CURDIR)/Makefile Makefile: ;
+
+ifneq ($(KBUILD_OUTPUT),)
+# Invoke a second make in the output directory, passing relevant variables
+# check that the output directory actually exists
+saved-output := $(KBUILD_OUTPUT)
+KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
+$(if $(KBUILD_OUTPUT),, \
+ $(error output directory "$(saved-output)" does not exist))
+
+PHONY += $(MAKECMDGOALS) sub-make
+
+$(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
+ @:
+
+sub-make: FORCE
+ $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \
+ KBUILD_SRC=$(CURDIR) \
+ KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \
+ $(filter-out _all sub-make,$(MAKECMDGOALS))
+
+# Leave processing to above invocation of make
+skip-makefile := 1
+endif # ifneq ($(KBUILD_OUTPUT),)
+endif # ifeq ($(KBUILD_SRC),)
+
+# We process the rest of the Makefile if this is the final invocation of make
+ifeq ($(skip-makefile),)
+
+PHONY += all
+_all: all
+
+srctree := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
+objtree := $(CURDIR)
+src := $(srctree)
+obj := $(objtree)
+
+VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
+
+export srctree objtree VPATH
+
# Call a source code checker (by default, "sparse") as part of the
# C compilation.
#
@@ -87,41 +137,16 @@ ifndef CHECKSRC
endif
export CHECKSRC

-ifneq ($(BUILD_DIR),)
-saved-output := $(BUILD_DIR)
-
-# Attempt to create a output directory.
-$(shell [ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR})
-
-# Verify if it was successful.
-BUILD_DIR := $(shell cd $(BUILD_DIR) && /bin/pwd)
-$(if $(BUILD_DIR),,$(error output directory "$(saved-output)" does not exist))
-endif # ifneq ($(BUILD_DIR),)
-
-OBJTREE := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))
+OBJTREE := $(objtree)
SPLTREE := $(OBJTREE)/spl
TPLTREE := $(OBJTREE)/tpl
-SRCTREE := $(CURDIR)
-srctree := $(SRCTREE)
+SRCTREE := $(srctree)
TOPDIR := $(SRCTREE)
-LNDIR := $(OBJTREE)
-export TOPDIR SRCTREE srctree OBJTREE SPLTREE TPLTREE
+export TOPDIR SRCTREE OBJTREE SPLTREE TPLTREE

MKCONFIG := $(SRCTREE)/mkconfig
export MKCONFIG

-# $(obj) and (src) are defined in config.mk but here in main Makefile
-# we also need them before config.mk is included which is the case for
-# some targets like unconfig, clean, clobber, distclean, etc.
-ifneq ($(OBJTREE),$(SRCTREE))
-obj := $(OBJTREE)/
-src := $(SRCTREE)/
-else
-obj :=
-src :=
-endif
-export obj src
-
# Make sure CDPATH settings don't interfere
unexport CDPATH

@@ -136,14 +161,14 @@ SUBDIRS = $(SUBDIR_TOOLS)

.PHONY : $(SUBDIRS) $(VERSION_FILE) $(TIMESTAMP_FILE)

-ifeq ($(obj)include/config.mk,$(wildcard $(obj)include/config.mk))
+ifeq (include/config.mk,$(wildcard include/config.mk))

# Include autoconf.mk before config.mk so that the config options are available
# to all top level build files. We need the dummy all: target to prevent the
# dependency target in autoconf.mk.dep from being the default.
all:
-sinclude $(obj)include/autoconf.mk.dep
-sinclude $(obj)include/autoconf.mk
+sinclude include/autoconf.mk.dep
+sinclude include/autoconf.mk

SUBDIR_EXAMPLES-y := examples/standalone
SUBDIR_EXAMPLES-$(CONFIG_API) += examples/api
@@ -152,7 +177,7 @@ SUBDIRS += $(SUBDIR_EXAMPLES-y)
endif

# load ARCH, BOARD, and CPU configuration
-include $(obj)include/config.mk
+include include/config.mk
export ARCH CPU BOARD VENDOR SOC

# set default to nothing for native builds
@@ -197,6 +222,9 @@ HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp")
HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")
endif

+# Look for make include files relative to root of kernel src
+MAKEFLAGS += --include-dir=$(srctree)
+
# We need some generic definitions (do not try to remake the file).
$(srctree)/scripts/Kbuild.include: ;
include $(srctree)/scripts/Kbuild.include
@@ -287,7 +315,7 @@ endif

export CONFIG_SYS_TEXT_BASE

-LDFLAGS_u-boot += -T $(obj)u-boot.lds $(LDFLAGS_FINAL)
+LDFLAGS_u-boot += -T u-boot.lds $(LDFLAGS_FINAL)
ifneq ($(CONFIG_SYS_TEXT_BASE),)
LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
endif
@@ -350,9 +378,9 @@ head-y := $(CPUDIR)/start.o
head-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o
head-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o

-OBJS := $(addprefix $(obj),$(head-y))
+OBJS := $(head-y)

-HAVE_VENDOR_COMMON_LIB = $(if $(wildcard board/$(VENDOR)/common/Makefile),y,n)
+HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)

LIBS-y += lib/
LIBS-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
@@ -412,7 +440,7 @@ LIBS-$(CONFIG_PPC) += arch/powerpc/cpu/
LIBS-y += board/$(BOARDDIR)/

LIBS-y := $(patsubst %/, %/built-in.o, $(LIBS-y))
-LIBS := $(addprefix $(obj),$(sort $(LIBS-y)))
+LIBS := $(sort $(LIBS-y))
.PHONY : $(LIBS)

# Add GCC lib
@@ -437,9 +465,6 @@ LDPPFLAGS += \
$(shell $(LD) --version | \
sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')

-__OBJS := $(subst $(obj),,$(OBJS))
-__LIBS := $(subst $(obj),,$(LIBS))
-
#########################################################################
#########################################################################

@@ -464,66 +489,66 @@ ifneq ($(CONFIG_STATIC_RELA),)
DO_STATIC_RELA = \
start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \
end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \
- $(obj)tools/relocate-rela $(2) $(3) $$start $$end
+ tools/relocate-rela $(2) $(3) $$start $$end
else
DO_STATIC_RELA =
endif

# Always append ALL so that arch config.mk's can add custom ones
-ALL-y += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map
-
-ALL-$(CONFIG_NAND_U_BOOT) += $(obj)u-boot-nand.bin
-ALL-$(CONFIG_ONENAND_U_BOOT) += $(obj)u-boot-onenand.bin
-ALL-$(CONFIG_RAMBOOT_PBL) += $(obj)u-boot.pbl
-ALL-$(CONFIG_SPL) += $(obj)spl/u-boot-spl.bin
-ALL-$(CONFIG_SPL_FRAMEWORK) += $(obj)u-boot.img
-ALL-$(CONFIG_TPL) += $(obj)tpl/u-boot-tpl.bin
-ALL-$(CONFIG_OF_SEPARATE) += $(obj)u-boot.dtb $(obj)u-boot-dtb.bin
+ALL-y += u-boot.srec u-boot.bin System.map
+
+ALL-$(CONFIG_NAND_U_BOOT) += u-boot-nand.bin
+ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
+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
ifneq ($(CONFIG_SPL_TARGET),)
-ALL-$(CONFIG_SPL) += $(obj)$(CONFIG_SPL_TARGET:"%"=%)
+ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
endif
-ALL-$(CONFIG_REMAKE_ELF) += $(obj)u-boot.elf
+ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf

# enable combined SPL/u-boot/dtb rules for tegra
ifneq ($(CONFIG_TEGRA),)
ifeq ($(CONFIG_SPL),y)
ifeq ($(CONFIG_OF_SEPARATE),y)
-ALL-y += $(obj)u-boot-dtb-tegra.bin
+ALL-y += u-boot-dtb-tegra.bin
else
-ALL-y += $(obj)u-boot-nodtb-tegra.bin
+ALL-y += u-boot-nodtb-tegra.bin
endif
endif
endif

all: $(ALL-y) $(SUBDIR_EXAMPLES-y)

-$(obj)u-boot.dtb: checkdtc $(obj)u-boot
- $(MAKE) $(build) dts binary
- mv $(obj)dts/dt.dtb $@
+u-boot.dtb: checkdtc u-boot
+ $(MAKE) $(build)=dts binary
+ mv dts/dt.dtb $@

-$(obj)u-boot-dtb.bin: $(obj)u-boot.bin $(obj)u-boot.dtb
+u-boot-dtb.bin: u-boot.bin u-boot.dtb
cat $^ >$@

-$(obj)u-boot.hex: $(obj)u-boot
+u-boot.hex: u-boot
$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@

-$(obj)u-boot.srec: $(obj)u-boot
+u-boot.srec: u-boot
$(OBJCOPY) ${OBJCFLAGS} -O srec $< $@

-$(obj)u-boot.bin: $(obj)u-boot
+u-boot.bin: u-boot
$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
$(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))
$(BOARD_SIZE_CHECK)

-$(obj)u-boot.ldr: $(obj)u-boot
+u-boot.ldr: u-boot
$(CREATE_LDR_ENV)
$(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
$(BOARD_SIZE_CHECK)

-$(obj)u-boot.ldr.hex: $(obj)u-boot.ldr
+u-boot.ldr.hex: u-boot.ldr
$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary

-$(obj)u-boot.ldr.srec: $(obj)u-boot.ldr
+u-boot.ldr.srec: u-boot.ldr
$(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ -I binary

#
@@ -534,79 +559,78 @@ ifndef CONFIG_SYS_UBOOT_START
CONFIG_SYS_UBOOT_START := 0
endif

-$(obj)u-boot.img: $(obj)u-boot.bin
- $(obj)tools/mkimage -A $(ARCH) -T firmware -C none \
+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"/') \
-d $< $@

-$(obj)u-boot.imx: $(obj)u-boot.bin depend
- $(MAKE) $(build) $(SRCTREE)/arch/arm/imx-common $(OBJTREE)/u-boot.imx
+u-boot.imx: u-boot.bin depend
+ $(MAKE) $(build)=arch/arm/imx-common $(objtree)/u-boot.imx

-$(obj)u-boot.kwb: $(obj)u-boot.bin
- $(obj)tools/mkimage -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \
+u-boot.kwb: u-boot.bin
+ tools/mkimage -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \
-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -d $< $@

-$(obj)u-boot.pbl: $(obj)u-boot.bin
- $(obj)tools/mkimage -n $(CONFIG_SYS_FSL_PBL_RCW) \
+u-boot.pbl: u-boot.bin
+ tools/mkimage -n $(CONFIG_SYS_FSL_PBL_RCW) \
-R $(CONFIG_SYS_FSL_PBL_PBI) -T pblimage \
-d $< $@

-$(obj)u-boot.sha1: $(obj)u-boot.bin
- $(obj)tools/ubsha1 $(obj)u-boot.bin
+u-boot.sha1: u-boot.bin
+ tools/ubsha1 u-boot.bin

-$(obj)u-boot.dis: $(obj)u-boot
+u-boot.dis: u-boot
$(OBJDUMP) -d $< > $@

# $@ 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 \
- $(1) $(obj)$(3); \
- cat $(obj)$(3) $(2) > $@; \
- rm $(obj)$(3)
+ $(1) $(3); \
+ cat $(3) $(2) > $@; \
+ rm $(3)

ifdef CONFIG_TPL
-SPL_PAYLOAD := $(obj)tpl/u-boot-with-tpl.bin
+SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
else
-SPL_PAYLOAD := $(obj)u-boot.bin
+SPL_PAYLOAD := u-boot.bin
endif

-$(obj)u-boot-with-spl.bin: $(obj)spl/u-boot-spl.bin $(SPL_PAYLOAD)
+u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD)
$(call SPL_PAD_APPEND,$<,$(SPL_PAYLOAD),spl/u-boot-spl-pad.bin,$(CONFIG_SPL_PAD_TO))

-$(obj)tpl/u-boot-with-tpl.bin: $(obj)tpl/u-boot-tpl.bin $(obj)u-boot.bin
- $(call SPL_PAD_APPEND,$<,$(obj)u-boot.bin,tpl/u-boot-tpl-pad.bin,$(CONFIG_TPL_PAD_TO))
+tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin
+ $(call SPL_PAD_APPEND,$<,u-boot.bin,tpl/u-boot-tpl-pad.bin,$(CONFIG_TPL_PAD_TO))

-$(obj)u-boot-with-spl.imx: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
- $(MAKE) $(build) $(SRCTREE)/arch/arm/imx-common \
+u-boot-with-spl.imx: spl/u-boot-spl.bin u-boot.bin
+ $(MAKE) $(build)=arch/arm/imx-common \
$(OBJTREE)/u-boot-with-spl.imx

-$(obj)u-boot-with-nand-spl.imx: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
- $(MAKE) $(build) $(SRCTREE)/arch/arm/imx-common \
+u-boot-with-nand-spl.imx: spl/u-boot-spl.bin u-boot.bin
+ $(MAKE) $(build)=arch/arm/imx-common \
$(OBJTREE)/u-boot-with-nand-spl.imx

-$(obj)u-boot.ubl: $(obj)u-boot-with-spl.bin
- $(obj)tools/mkimage -n $(UBL_CONFIG) -T ublimage \
- -e $(CONFIG_SYS_TEXT_BASE) -d $< $(obj)u-boot.ubl
+u-boot.ubl: u-boot-with-spl.bin
+ tools/mkimage -n $(UBL_CONFIG) -T ublimage \
+ -e $(CONFIG_SYS_TEXT_BASE) -d $< u-boot.ubl

-$(obj)u-boot.ais: $(obj)spl/u-boot-spl.bin $(obj)u-boot.img
- $(obj)tools/mkimage -s -n $(if $(CONFIG_AIS_CONFIG_FILE),$(CONFIG_AIS_CONFIG_FILE),"/dev/null") \
+u-boot.ais: spl/u-boot-spl.bin u-boot.img
+ tools/mkimage -s -n $(if $(CONFIG_AIS_CONFIG_FILE),$(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \
-T aisimage \
-e $(CONFIG_SPL_TEXT_BASE) \
- -d $(obj)spl/u-boot-spl.bin \
- $(obj)spl/u-boot-spl.ais
+ -d spl/u-boot-spl.bin \
+ spl/u-boot-spl.ais
$(OBJCOPY) ${OBJCFLAGS} -I binary \
--pad-to=$(CONFIG_SPL_MAX_SIZE) -O binary \
- $(obj)spl/u-boot-spl.ais $(obj)spl/u-boot-spl-pad.ais
- cat $(obj)spl/u-boot-spl-pad.ais $(obj)u-boot.img > \
- $(obj)u-boot.ais
+ spl/u-boot-spl.ais spl/u-boot-spl-pad.ais
+ cat spl/u-boot-spl-pad.ais u-boot.img > u-boot.ais

-$(obj)u-boot.sb: $(obj)u-boot.bin $(obj)spl/u-boot-spl.bin
- $(MAKE) $(build) $(SRCTREE)/$(CPUDIR)/$(SOC)/ $(OBJTREE)/u-boot.sb
+u-boot.sb: u-boot.bin spl/u-boot-spl.bin
+ $(MAKE) $(build)=$(CPUDIR)/$(SOC)/ $(OBJTREE)/u-boot.sb

# On x600 (SPEAr600) U-Boot is appended to U-Boot SPL.
# Both images are created using mkimage (crc etc), so that the ROM
@@ -614,124 +638,123 @@ $(obj)u-boot.sb: $(obj)u-boot.bin $(obj)spl/u-boot-spl.bin
# SPL image (with mkimage header) and not the binary. Otherwise the resulting image
# which is loaded/copied by the ROM bootloader to SRAM doesn't fit.
# The resulting image containing both U-Boot images is called u-boot.spr
-$(obj)u-boot.spr: $(obj)u-boot.img $(obj)spl/u-boot-spl.bin
- $(obj)tools/mkimage -A $(ARCH) -T firmware -C none \
+u-boot.spr: u-boot.img spl/u-boot-spl.bin
+ tools/mkimage -A $(ARCH) -T firmware -C none \
-a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER \
- -d $(obj)spl/u-boot-spl.bin $@
+ -d spl/u-boot-spl.bin $@
$(OBJCOPY) -I binary -O binary \
--pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff $@
- cat $(obj)u-boot.img >> $@
+ cat u-boot.img >> $@

ifneq ($(CONFIG_TEGRA),)
-$(obj)u-boot-nodtb-tegra.bin: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
- $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(CONFIG_SYS_TEXT_BASE) -O binary $(obj)spl/u-boot-spl $(obj)spl/u-boot-spl-pad.bin
- cat $(obj)spl/u-boot-spl-pad.bin $(obj)u-boot.bin > $@
- rm $(obj)spl/u-boot-spl-pad.bin
+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
+ cat spl/u-boot-spl-pad.bin u-boot.bin > $@
+ rm spl/u-boot-spl-pad.bin

ifeq ($(CONFIG_OF_SEPARATE),y)
-$(obj)u-boot-dtb-tegra.bin: $(obj)u-boot-nodtb-tegra.bin $(obj)u-boot.dtb
- cat $(obj)u-boot-nodtb-tegra.bin $(obj)u-boot.dtb > $@
+u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin u-boot.dtb
+ cat u-boot-nodtb-tegra.bin u-boot.dtb > $@
endif
endif

-$(obj)u-boot-img.bin: $(obj)spl/u-boot-spl.bin $(obj)u-boot.img
- cat $(obj)spl/u-boot-spl.bin $(obj)u-boot.img > $@
+u-boot-img.bin: spl/u-boot-spl.bin u-boot.img
+ cat spl/u-boot-spl.bin u-boot.img > $@

# PPC4xx needs the SPL at the end of the image, since the reset vector
# is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target
# and need to introduce a new build target with the full blown U-Boot
# at the start padded up to the start of the SPL image. And then concat
# the SPL image to the end.
-$(obj)u-boot-img-spl-at-end.bin: $(obj)spl/u-boot-spl.bin $(obj)u-boot.img
+u-boot-img-spl-at-end.bin: spl/u-boot-spl.bin u-boot.img
$(OBJCOPY) -I binary -O binary --pad-to=$(CONFIG_UBOOT_PAD_TO) \
- --gap-fill=0xff $(obj)u-boot.img $@
- cat $(obj)spl/u-boot-spl.bin >> $@
+ --gap-fill=0xff u-boot.img $@
+ cat spl/u-boot-spl.bin >> $@

# Create a new ELF from a raw binary file. This is useful for arm64
# where static relocation needs to be performed on the raw binary,
# but certain simulators only accept an ELF file (but don't do the
# relocation).
# FIXME refactor dts/Makefile to share target/arch detection
-$(obj)u-boot.elf: $(obj)u-boot.bin
+u-boot.elf: u-boot.bin
@$(OBJCOPY) -B aarch64 -I binary -O elf64-littleaarch64 \
- $< $(obj)u-boot-elf.o
- @$(LD) $(obj)u-boot-elf.o -o $@ \
+ $< u-boot-elf.o
+ @$(LD) u-boot-elf.o -o $@ \
--defsym=_start=$(CONFIG_SYS_TEXT_BASE) \
-Ttext=$(CONFIG_SYS_TEXT_BASE)

ifeq ($(CONFIG_SANDBOX),y)
GEN_UBOOT = \
- cd $(LNDIR) && $(CC) $(SYMS) -T $(obj)u-boot.lds \
- -Wl,--start-group $(__LIBS) -Wl,--end-group \
+ $(CC) $(SYMS) -T u-boot.lds \
+ -Wl,--start-group $(LIBS) -Wl,--end-group \
$(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map -o u-boot
else
GEN_UBOOT = \
- cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
- $(__OBJS) \
- --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
+ $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
+ $(OBJS) \
+ --start-group $(LIBS) --end-group $(PLATFORM_LIBS) \
-Map u-boot.map -o u-boot
endif

-$(obj)u-boot: depend \
- $(SUBDIR_TOOLS) $(OBJS) $(LIBS) $(obj)u-boot.lds
+u-boot: depend $(SUBDIR_TOOLS) $(OBJS) $(LIBS) u-boot.lds
$(GEN_UBOOT)
ifeq ($(CONFIG_KALLSYMS),y)
- smap=`$(call SYSTEM_MAP,$(obj)u-boot) | \
+ smap=`$(call SYSTEM_MAP,u-boot) | \
awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
$(CC) $(CFLAGS) -DSYSTEM_MAP="\"$${smap}\"" \
- -c common/system_map.c -o $(obj)common/system_map.o
- $(GEN_UBOOT) $(obj)common/system_map.o
+ -c $(srctree)/common/system_map.c -o common/system_map.o
+ $(GEN_UBOOT) common/system_map.o
endif

$(OBJS):
@:

$(LIBS): depend $(SUBDIR_TOOLS)
- $(MAKE) $(build) $(dir $(subst $(obj),,$@))
+ $(MAKE) $(build)=$(patsubst %/,%,$(dir $@))

$(SUBDIRS): depend
- $(MAKE) $(build) $@ all
+ $(MAKE) $(build)=$@ all

-$(SUBDIR_EXAMPLES-y): $(obj)u-boot
+$(SUBDIR_EXAMPLES-y): u-boot

-$(obj)u-boot.lds: $(LDSCRIPT) depend
+u-boot.lds: $(LDSCRIPT) depend
$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@

nand_spl: $(TIMESTAMP_FILE) $(VERSION_FILE) depend
- $(MAKE) $(build) nand_spl/board/$(BOARDDIR) all
+ $(MAKE) $(build)=nand_spl/board/$(BOARDDIR) all

-$(obj)u-boot-nand.bin: nand_spl $(obj)u-boot.bin
- cat $(obj)nand_spl/u-boot-spl-16k.bin $(obj)u-boot.bin > $(obj)u-boot-nand.bin
+u-boot-nand.bin: nand_spl u-boot.bin
+ cat nand_spl/u-boot-spl-16k.bin u-boot.bin > u-boot-nand.bin

-$(obj)spl/u-boot-spl.bin: $(SUBDIR_TOOLS) depend
- $(MAKE) -C spl all
+spl/u-boot-spl.bin: $(SUBDIR_TOOLS) depend
+ $(MAKE) obj=spl -f $(srctree)/spl/Makefile all

-$(obj)tpl/u-boot-tpl.bin: $(SUBDIR_TOOLS) depend
- $(MAKE) -C spl all CONFIG_TPL_BUILD=y
+tpl/u-boot-tpl.bin: $(SUBDIR_TOOLS) depend
+ $(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) \
- $(obj)include/spl-autoconf.mk \
- $(obj)include/tpl-autoconf.mk \
- $(obj)include/autoconf.mk \
- $(obj)include/generated/generic-asm-offsets.h \
- $(obj)include/generated/asm-offsets.h
+ include/spl-autoconf.mk \
+ include/tpl-autoconf.mk \
+ include/autoconf.mk \
+ include/generated/generic-asm-offsets.h \
+ include/generated/asm-offsets.h

TAG_SUBDIRS = $(SUBDIRS)
-TAG_SUBDIRS += $(dir $(__LIBS))
+TAG_SUBDIRS += $(dir $(LIBS))
TAG_SUBDIRS += include

FIND := find
FINDFLAGS := -L

checkstack:
- $(CROSS_COMPILE)objdump -d $(obj)u-boot \
- `$(FIND) $(obj) -name u-boot-spl -print` | \
- perl $(src)scripts/checkstack.pl $(ARCH)
+ $(CROSS_COMPILE)objdump -d u-boot \
+ `$(FIND) . -name u-boot-spl -print` | \
+ perl $(src)/scripts/checkstack.pl $(ARCH)

tags ctags:
- ctags -w -o $(obj)ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
+ ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
-name '*.[chS]' -print`

etags:
@@ -746,7 +769,7 @@ SYSTEM_MAP = \
$(NM) $1 | \
grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
LC_ALL=C sort
-$(obj)System.map: $(obj)u-boot
+System.map: u-boot
@$(call SYSTEM_MAP,$<) > $@

checkthumb:
@@ -778,76 +801,76 @@ checkdtc:
# This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
# the dep file is only include in this top level makefile to determine when
# to regenerate the autoconf.mk file.
-$(obj)include/autoconf.mk.dep: $(obj)include/config.h include/common.h
+include/autoconf.mk.dep: include/config.h include/common.h
@$(XECHO) Generating $@ ; \
: Generate the dependancies ; \
$(CC) -x c -DDO_DEPS_ONLY -M $(CFLAGS) $(CPPFLAGS) \
- -MQ $(obj)include/autoconf.mk include/common.h > $@ || \
+ -MQ include/autoconf.mk $(srctree)/include/common.h > $@ || \
rm $@

-$(obj)include/autoconf.mk: $(obj)include/config.h
+include/autoconf.mk: include/config.h
@$(XECHO) Generating $@ ; \
: Extract the config macros ; \
- $(CPP) $(CFLAGS) -DDO_DEPS_ONLY -dM include/common.h > $@.tmp && \
- sed -n -f tools/scripts/define2mk.sed $@.tmp > $@; \
+ $(CPP) $(CFLAGS) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
+ sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
rm $@.tmp

# Auto-generate the spl-autoconf.mk file (which is included by all makefiles for SPL)
-$(obj)include/tpl-autoconf.mk: $(obj)include/config.h
+include/tpl-autoconf.mk: include/config.h
@$(XECHO) Generating $@ ; \
: Extract the config macros ; \
$(CPP) $(CFLAGS) -DCONFIG_TPL_BUILD -DCONFIG_SPL_BUILD\
- -DDO_DEPS_ONLY -dM include/common.h > $@.tmp && \
- sed -n -f tools/scripts/define2mk.sed $@.tmp > $@; \
+ -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
+ sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
rm $@.tmp

-$(obj)include/spl-autoconf.mk: $(obj)include/config.h
+include/spl-autoconf.mk: include/config.h
@$(XECHO) Generating $@ ; \
: Extract the config macros ; \
- $(CPP) $(CFLAGS) -DCONFIG_SPL_BUILD -DDO_DEPS_ONLY -dM include/common.h > $@.tmp && \
- sed -n -f tools/scripts/define2mk.sed $@.tmp > $@; \
+ $(CPP) $(CFLAGS) -DCONFIG_SPL_BUILD -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
+ sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
rm $@.tmp

-$(obj)include/generated/generic-asm-offsets.h: $(obj)lib/asm-offsets.s
+include/generated/generic-asm-offsets.h: lib/asm-offsets.s
@$(XECHO) Generating $@
- tools/scripts/make-asm-offsets $(obj)lib/asm-offsets.s $@
+ $(srctree)/tools/scripts/make-asm-offsets lib/asm-offsets.s $@

-$(obj)lib/asm-offsets.s: $(obj)include/config.h $(src)lib/asm-offsets.c
- @mkdir -p $(obj)lib
+lib/asm-offsets.s: include/config.h $(srctree)/lib/asm-offsets.c
+ @mkdir -p lib
$(CC) -DDO_DEPS_ONLY \
$(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
- -o $@ $(src)lib/asm-offsets.c -c -S
+ -o $@ $(srctree)/lib/asm-offsets.c -c -S

-$(obj)include/generated/asm-offsets.h: $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s
+include/generated/asm-offsets.h: $(CPUDIR)/$(SOC)/asm-offsets.s
@$(XECHO) Generating $@
- tools/scripts/make-asm-offsets $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s $@
+ $(srctree)/tools/scripts/make-asm-offsets $(CPUDIR)/$(SOC)/asm-offsets.s $@

-$(obj)$(CPUDIR)/$(SOC)/asm-offsets.s: $(obj)include/config.h
- @mkdir -p $(obj)$(CPUDIR)/$(SOC)
- if [ -f $(src)$(CPUDIR)/$(SOC)/asm-offsets.c ];then \
+$(CPUDIR)/$(SOC)/asm-offsets.s: include/config.h
+ @mkdir -p $(CPUDIR)/$(SOC)
+ if [ -f $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c ];then \
$(CC) -DDO_DEPS_ONLY \
$(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
- -o $@ $(src)$(CPUDIR)/$(SOC)/asm-offsets.c -c -S; \
+ -o $@ $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c -c -S; \
else \
touch $@; \
fi

#########################################################################
else # !config.mk
-all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \
-$(obj)u-boot.img $(obj)u-boot.dis $(obj)u-boot \
+all u-boot.hex u-boot.srec u-boot.bin \
+u-boot.img u-boot.dis u-boot \
$(filter-out tools,$(SUBDIRS)) \
-depend dep tags ctags etags cscope $(obj)System.map:
+depend dep tags ctags etags cscope System.map:
@echo "System not configured - see README" >&2
@ exit 1

tools: $(VERSION_FILE) $(TIMESTAMP_FILE)
- $(MAKE) $(build) $@ all
+ $(MAKE) $(build)=$@ all
endif # config.mk

# ARM relocations should all be R_ARM_RELATIVE (32-bit) or
# R_AARCH64_RELATIVE (64-bit).
-checkarmreloc: $(obj)u-boot
+checkarmreloc: u-boot
@RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \
grep R_A | sort -u`"; \
if test "$$RELOC" != "R_ARM_RELATIVE" -a \
@@ -877,15 +900,15 @@ $(TIMESTAMP_FILE):
@cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@

easylogo env gdb:
- $(MAKE) $(build) tools/$@ MTD_VERSION=${MTD_VERSION}
+ $(MAKE) $(build)=tools/$@ MTD_VERSION=${MTD_VERSION}

gdbtools: gdb

xmldocs pdfdocs psdocs htmldocs mandocs: tools/kernel-doc/docproc
- $(MAKE) U_BOOT_VERSION=$(U_BOOT_VERSION) -C doc/DocBook/ $@
+ $(MAKE) U_BOOT_VERSION=$(U_BOOT_VERSION) $(build)=doc/DocBook $@

tools-all: easylogo env gdb $(VERSION_FILE) $(TIMESTAMP_FILE)
- $(MAKE) $(build) tools HOST_TOOLS_ALL=y
+ $(MAKE) $(build)=tools HOST_TOOLS_ALL=y

.PHONY : CHANGELOG
CHANGELOG:
@@ -897,57 +920,52 @@ include/license.h: tools/bin2header COPYING
#########################################################################

unconfig:
- @rm -f $(obj)include/config.h $(obj)include/config.mk \
- $(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \
- $(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep \
- $(obj)include/spl-autoconf.mk \
- $(obj)include/tpl-autoconf.mk
+ @rm -f include/config.h include/config.mk \
+ board/*/config.tmp board/*/*/config.tmp \
+ include/autoconf.mk include/autoconf.mk.dep \
+ include/spl-autoconf.mk \
+ include/tpl-autoconf.mk

%_config:: unconfig
@$(MKCONFIG) -A $(@:_config=)

-sinclude $(obj).boards.depend
-$(obj).boards.depend: boards.cfg
- @awk '(NF && $$1 !~ /^#/) { print $$7 ": " $$7 "_config; $$(MAKE)" }' $< > $@
-
-#########################################################################
#########################################################################

clean:
- @rm -f $(obj)examples/standalone/atmel_df_pow2 \
- $(obj)examples/standalone/hello_world \
- $(obj)examples/standalone/interrupt \
- $(obj)examples/standalone/mem_to_mem_idma2intr \
- $(obj)examples/standalone/sched \
- $(addprefix $(obj)examples/standalone/, smc91111_eeprom smc911x_eeprom) \
- $(obj)examples/standalone/test_burst \
- $(obj)examples/standalone/timer
- @rm -f $(addprefix $(obj)examples/api/, demo demo.bin)
- @rm -f $(obj)tools/bmp_logo $(obj)tools/easylogo/easylogo \
- $(obj)tools/env/fw_printenv \
- $(obj)tools/envcrc \
- $(addprefix $(obj)tools/gdb/, gdbcont gdbsend) \
- $(obj)tools/gen_eth_addr $(obj)tools/img2srec \
- $(obj)tools/dumpimage \
- $(addprefix $(obj)tools/, mkenvimage mkimage) \
- $(obj)tools/mpc86x_clk \
- $(addprefix $(obj)tools/, mk$(BOARD)spl mkexynosspl) \
- $(obj)tools/mxsboot \
- $(obj)tools/ncb $(obj)tools/ubsha1 \
- $(obj)tools/kernel-doc/docproc \
- $(obj)tools/proftool
- @rm -f $(addprefix $(obj)board/cray/L1/, bootscript.c bootscript.image) \
- $(obj)board/matrix_vision/*/bootscript.img \
- $(obj)spl/board/samsung/$(BOARD)/tools/mk$(BOARD)spl \
- $(obj)u-boot.lds \
- $(addprefix $(obj)arch/blackfin/cpu/, init.lds init.elf)
- @rm -f $(obj)include/bmp_logo.h
- @rm -f $(obj)include/bmp_logo_data.h
- @rm -f $(obj)lib/asm-offsets.s
- @rm -f $(obj)include/generated/asm-offsets.h
- @rm -f $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s
+ @rm -f examples/standalone/atmel_df_pow2 \
+ examples/standalone/hello_world \
+ examples/standalone/interrupt \
+ examples/standalone/mem_to_mem_idma2intr \
+ examples/standalone/sched \
+ $(addprefix examples/standalone/, smc91111_eeprom smc911x_eeprom) \
+ examples/standalone/test_burst \
+ examples/standalone/timer
+ @rm -f $(addprefix examples/api/, demo demo.bin)
+ @rm -f tools/bmp_logo tools/easylogo/easylogo \
+ tools/env/fw_printenv \
+ tools/envcrc \
+ $(addprefix tools/gdb/, gdbcont gdbsend) \
+ tools/gen_eth_addr tools/img2srec \
+ tools/dumpimage \
+ $(addprefix tools/, mkenvimage mkimage) \
+ tools/mpc86x_clk \
+ $(addprefix tools/, mk$(BOARD)spl mkexynosspl) \
+ tools/mxsboot \
+ tools/ncb tools/ubsha1 \
+ tools/kernel-doc/docproc \
+ tools/proftool
+ @rm -f $(addprefix board/cray/L1/, bootscript.c bootscript.image) \
+ board/matrix_vision/*/bootscript.img \
+ spl/board/samsung/$(BOARD)/tools/mk$(BOARD)spl \
+ u-boot.lds \
+ $(addprefix arch/blackfin/cpu/, init.lds init.elf)
+ @rm -f include/bmp_logo.h
+ @rm -f include/bmp_logo_data.h
+ @rm -f lib/asm-offsets.s
+ @rm -f include/generated/asm-offsets.h
+ @rm -f $(CPUDIR)/$(SOC)/asm-offsets.s
@rm -f $(TIMESTAMP_FILE) $(VERSION_FILE)
- @$(MAKE) -s -C doc/DocBook/ cleandocs
+ @$(MAKE) -f $(srctree)/doc/DocBook/Makefile cleandocs
@find $(OBJTREE) -type f \
\( -name 'core' -o -name '*.bak' -o -name '*~' -o -name '*.su' \
-o -name '*.o' -o -name '*.a' -o -name '*.exe' \
@@ -962,38 +980,38 @@ clobber: tidy
@find $(OBJTREE) -type f \( -name '*.srec' \
-o -name '*.bin' -o -name u-boot.img \) \
-print0 | xargs -0 rm -f
- @rm -f $(OBJS) $(obj)*.bak $(obj)ctags $(obj)etags $(obj)TAGS \
- $(obj)cscope.* $(obj)*.*~
- @rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL-y)
- @rm -f $(obj)u-boot.kwb
- @rm -f $(obj)u-boot.pbl
- @rm -f $(obj)u-boot.imx
- @rm -f $(obj)u-boot-with-spl.imx
- @rm -f $(obj)u-boot-with-nand-spl.imx
- @rm -f $(obj)u-boot.ubl
- @rm -f $(obj)u-boot.ais
- @rm -f $(obj)u-boot.dtb
- @rm -f $(obj)u-boot.sb
- @rm -f $(obj)u-boot.spr
- @rm -f $(addprefix $(obj)nand_spl/, u-boot.lds u-boot.lst System.map)
- @rm -f $(addprefix $(obj)nand_spl/, u-boot-nand_spl.lds u-boot-spl u-boot-spl.map)
- @rm -f $(addprefix $(obj)spl/, u-boot-spl u-boot-spl.bin u-boot-spl.map)
- @rm -f $(obj)spl/u-boot-spl.lds
- @rm -f $(addprefix $(obj)tpl/, u-boot-tpl u-boot-tpl.bin u-boot-tpl.map)
- @rm -f $(obj)tpl/u-boot-spl.lds
- @rm -f $(obj)MLO MLO.byteswap
- @rm -f $(obj)SPL
- @rm -f $(obj)tools/xway-swap-bytes
- @rm -fr $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
- @rm -fr $(obj)include/generated
- @[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -name "*" -type l -print | xargs rm -f
- @rm -f $(obj)dts/*.tmp
- @rm -f $(addprefix $(obj)spl/, u-boot-spl.ais, u-boot-spl-pad.ais)
+ @rm -f $(OBJS) *.bak ctags etags TAGS \
+ cscope.* *.*~
+ @rm -f u-boot u-boot.map u-boot.hex $(ALL-y)
+ @rm -f u-boot.kwb
+ @rm -f u-boot.pbl
+ @rm -f u-boot.imx
+ @rm -f u-boot-with-spl.imx
+ @rm -f u-boot-with-nand-spl.imx
+ @rm -f u-boot.ubl
+ @rm -f u-boot.ais
+ @rm -f u-boot.dtb
+ @rm -f u-boot.sb
+ @rm -f u-boot.spr
+ @rm -f $(addprefix nand_spl/, u-boot.lds u-boot.lst System.map)
+ @rm -f $(addprefix nand_spl/, u-boot-nand_spl.lds u-boot-spl u-boot-spl.map)
+ @rm -f $(addprefix spl/, u-boot-spl u-boot-spl.bin u-boot-spl.map)
+ @rm -f spl/u-boot-spl.lds
+ @rm -f $(addprefix tpl/, u-boot-tpl u-boot-tpl.bin u-boot-tpl.map)
+ @rm -f tpl/u-boot-spl.lds
+ @rm -f MLO MLO.byteswap
+ @rm -f SPL
+ @rm -f tools/xway-swap-bytes
+ @rm -fr include/asm/proc include/asm/arch include/asm
+ @rm -fr include/generated
+ @[ ! -d nand_spl ] || find nand_spl -name "*" -type l -print | xargs rm -f
+ @rm -f dts/*.tmp
+ @rm -f $(addprefix spl/, u-boot-spl.ais, u-boot-spl-pad.ais)

mrproper \
distclean: clobber unconfig
ifneq ($(OBJTREE),$(SRCTREE))
- rm -rf $(obj)*
+ rm -rf *
endif

backup:
@@ -1001,3 +1019,12 @@ backup:
gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F

#########################################################################
+
+endif # skip-makefile
+
+PHONY += FORCE
+FORCE:
+
+# Declare the contents of the .PHONY variable as phony. We keep that
+# information in a variable so we can use it in if_changed and friends.
+.PHONY: $(PHONY)
diff --git a/arch/arm/cpu/arm1136/config.mk b/arch/arm/cpu/arm1136/config.mk
index f74228c..ab1fc4a 100644
--- a/arch/arm/cpu/arm1136/config.mk
+++ b/arch/arm/cpu/arm1136/config.mk
@@ -14,6 +14,6 @@ ifdef CONFIG_SPL_BUILD
ALL-y += $(OBJTREE)/SPL
endif
else
-ALL-y += $(obj)u-boot.imx
+ALL-y += u-boot.imx
endif
endif
diff --git a/arch/arm/cpu/arm926ejs/config.mk b/arch/arm/cpu/arm926ejs/config.mk
index 4d9895f..f27ca15 100644
--- a/arch/arm/cpu/arm926ejs/config.mk
+++ b/arch/arm/cpu/arm926ejs/config.mk
@@ -13,6 +13,6 @@ ifdef CONFIG_SPL_BUILD
ALL-y += $(OBJTREE)/SPL
endif
else
-ALL-y += $(obj)u-boot.imx
+ALL-y += u-boot.imx
endif
endif
diff --git a/arch/arm/cpu/arm926ejs/davinci/config.mk b/arch/arm/cpu/arm926ejs/davinci/config.mk
index d5c978b..69e9d5a 100644
--- a/arch/arm/cpu/arm926ejs/davinci/config.mk
+++ b/arch/arm/cpu/arm926ejs/davinci/config.mk
@@ -4,5 +4,5 @@
# SPDX-License-Identifier: GPL-2.0+
#
ifndef CONFIG_SPL_BUILD
-ALL-$(CONFIG_SPL_FRAMEWORK) += $(obj)u-boot.ais
+ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.ais
endif
diff --git a/arch/arm/cpu/armv7/am33xx/config.mk b/arch/arm/cpu/armv7/am33xx/config.mk
index 8e3668f..1c06fb4 100644
--- a/arch/arm/cpu/armv7/am33xx/config.mk
+++ b/arch/arm/cpu/armv7/am33xx/config.mk
@@ -7,5 +7,5 @@ ifdef CONFIG_SPL_BUILD
ALL-y += $(OBJTREE)/MLO
ALL-$(CONFIG_SPL_SPI_SUPPORT) += $(OBJTREE)/MLO.byteswap
else
-ALL-y += $(obj)u-boot.img
+ALL-y += u-boot.img
endif
diff --git a/arch/arm/cpu/armv7/config.mk b/arch/arm/cpu/armv7/config.mk
index 38b7c40..d01f3d9 100644
--- a/arch/arm/cpu/armv7/config.mk
+++ b/arch/arm/cpu/armv7/config.mk
@@ -20,6 +20,6 @@ ifdef CONFIG_SPL_BUILD
ALL-y += $(OBJTREE)/SPL
endif
else
-ALL-y += $(obj)u-boot.imx
+ALL-y += u-boot.imx
endif
endif
diff --git a/arch/arm/cpu/armv7/omap3/config.mk b/arch/arm/cpu/armv7/omap3/config.mk
index 1d6a57c..2a3d1c5 100644
--- a/arch/arm/cpu/armv7/omap3/config.mk
+++ b/arch/arm/cpu/armv7/omap3/config.mk
@@ -11,5 +11,5 @@
ifdef CONFIG_SPL_BUILD
ALL-y += $(OBJTREE)/MLO
else
-ALL-y += $(obj)u-boot.img
+ALL-y += u-boot.img
endif
diff --git a/arch/arm/cpu/armv7/omap4/config.mk b/arch/arm/cpu/armv7/omap4/config.mk
index 1d6a57c..2a3d1c5 100644
--- a/arch/arm/cpu/armv7/omap4/config.mk
+++ b/arch/arm/cpu/armv7/omap4/config.mk
@@ -11,5 +11,5 @@
ifdef CONFIG_SPL_BUILD
ALL-y += $(OBJTREE)/MLO
else
-ALL-y += $(obj)u-boot.img
+ALL-y += u-boot.img
endif
diff --git a/arch/arm/cpu/armv7/omap5/config.mk b/arch/arm/cpu/armv7/omap5/config.mk
index 2673af9..261b272 100644
--- a/arch/arm/cpu/armv7/omap5/config.mk
+++ b/arch/arm/cpu/armv7/omap5/config.mk
@@ -9,5 +9,5 @@
ifdef CONFIG_SPL_BUILD
ALL-y += $(OBJTREE)/MLO
else
-ALL-y += $(obj)u-boot.img
+ALL-y += u-boot.img
endif
diff --git a/arch/arm/cpu/armv7/socfpga/config.mk b/arch/arm/cpu/armv7/socfpga/config.mk
index d33ab7d..3d18491 100644
--- a/arch/arm/cpu/armv7/socfpga/config.mk
+++ b/arch/arm/cpu/armv7/socfpga/config.mk
@@ -4,5 +4,5 @@
# SPDX-License-Identifier: GPL-2.0+
#
ifndef CONFIG_SPL_BUILD
-ALL-y += $(obj)u-boot.img
+ALL-y += u-boot.img
endif
diff --git a/arch/blackfin/config.mk b/arch/blackfin/config.mk
index 73fa798..c752025 100644
--- a/arch/blackfin/config.mk
+++ b/arch/blackfin/config.mk
@@ -12,7 +12,7 @@ CONFIG_STANDALONE_LOAD_ADDR ?= 0x1000 -m elf32bfin
ifeq ($(CONFIG_BFIN_CPU),)
CONFIG_BFIN_CPU := \
$(shell awk '$$2 == "CONFIG_BFIN_CPU" { print $$3 }' \
- $(src)include/configs/$(BOARD).h)
+ $(srctree)/include/configs/$(BOARD).h)
else
CONFIG_BFIN_CPU := $(strip $(CONFIG_BFIN_CPU:"%"=%))
endif
@@ -28,10 +28,10 @@ PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
PLATFORM_RELFLAGS += -mcpu=$(CONFIG_BFIN_CPU)

ifneq ($(CONFIG_BFIN_BOOT_MODE),BFIN_BOOT_BYPASS)
-ALL-y += $(obj)u-boot.ldr
+ALL-y += u-boot.ldr
endif
ifeq ($(CONFIG_ENV_IS_EMBEDDED_IN_LDR),y)
-CREATE_LDR_ENV = $(obj)tools/envcrc --binary > $(obj)env-ldr.o
+CREATE_LDR_ENV = tools/envcrc --binary > env-ldr.o
HOSTCFLAGS_NOPED_ADSP := \
$(shell $(CPP) -dD - -mcpu=$(CONFIG_BFIN_CPU) </dev/null \
| awk '$$2 ~ /ADSP/ { print "-D" $$2 }')
@@ -47,10 +47,10 @@ LDR_FLAGS-$(CONFIG_BFIN_BOOTROM_USES_EVT1) += -J

LDR_FLAGS += --bmode $(subst BFIN_BOOT_,,$(CONFIG_BFIN_BOOT_MODE))
LDR_FLAGS += --use-vmas
-LDR_FLAGS += --initcode $(obj)$(CPUDIR)/initcode.o
+LDR_FLAGS += --initcode $(CPUDIR)/initcode.o
ifneq ($(CONFIG_BFIN_BOOT_MODE),BFIN_BOOT_UART)
LDR_FLAGS-$(CONFIG_ENV_IS_EMBEDDED_IN_LDR) += \
- --punchit $$(($(CONFIG_ENV_OFFSET))):$$(($(CONFIG_ENV_SIZE))):$(obj)env-ldr.o
+ --punchit $$(($(CONFIG_ENV_OFFSET))):$$(($(CONFIG_ENV_SIZE))):env-ldr.o
endif
ifneq (,$(findstring s,$(MAKEFLAGS)))
LDR_FLAGS += --quiet
diff --git a/arch/blackfin/cpu/Makefile b/arch/blackfin/cpu/Makefile
index a61594a..369dc74 100644
--- a/arch/blackfin/cpu/Makefile
+++ b/arch/blackfin/cpu/Makefile
@@ -25,9 +25,9 @@ extra-y += check_initcode

# make sure our initcode (which goes into LDR) does not
# have relocs or external references
-$(obj)initcode.o: CFLAGS += -fno-function-sections -fno-data-sections
+$(obj)/initcode.o: CFLAGS += -fno-function-sections -fno-data-sections
READINIT = env LC_ALL=C $(CROSS_COMPILE)readelf -s $<
-$(obj)check_initcode: $(obj)initcode.o
+$(obj)/check_initcode: $(obj)/initcode.o
ifneq ($(CONFIG_BFIN_BOOT_MODE),BFIN_BOOT_BYPASS)
@if $(READINIT) | grep '\<GLOBAL\>.*\<UND\>' ; then \
echo "$< contains external references!" 1>&2 ; \
@@ -35,7 +35,7 @@ ifneq ($(CONFIG_BFIN_BOOT_MODE),BFIN_BOOT_BYPASS)
fi
endif

-$(obj)init.lds: init.lds.S
+$(obj)/init.lds: $(src)/init.lds.S
$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P $^ -o $@
-$(obj)init.elf: $(obj)init.lds $(obj)init.o $(obj)initcode.o
+$(obj)/init.elf: $(obj)/init.lds $(obj)/init.o $(obj)/initcode.o
$(LD) $(LDFLAGS) -T $^ -o $@
diff --git a/arch/mips/cpu/mips32/config.mk b/arch/mips/cpu/mips32/config.mk
index 067f871..7ee7faa 100644
--- a/arch/mips/cpu/mips32/config.mk
+++ b/arch/mips/cpu/mips32/config.mk
@@ -21,4 +21,4 @@ else
PLATFORM_LDFLAGS += -m elf32ltsmip
endif

-CONFIG_STANDALONE_LOAD_ADDR ?= 0x80200000 -T mips.lds
+CONFIG_STANDALONE_LOAD_ADDR ?= 0x80200000 -T $(srctree)/$(src)/mips.lds
diff --git a/arch/mips/cpu/mips64/config.mk b/arch/mips/cpu/mips64/config.mk
index d1a8b2c..02113a1 100644
--- a/arch/mips/cpu/mips64/config.mk
+++ b/arch/mips/cpu/mips64/config.mk
@@ -21,4 +21,4 @@ else
PLATFORM_LDFLAGS += -m elf64ltsmip
endif

-CONFIG_STANDALONE_LOAD_ADDR ?= 0xffffffff80200000 -T mips64.lds
+CONFIG_STANDALONE_LOAD_ADDR ?= 0xffffffff80200000 -T $(srctree)/$(src)/mips64.lds
diff --git a/arch/mips/cpu/xburst/config.mk b/arch/mips/cpu/xburst/config.mk
index d81da21..00b0fd9 100644
--- a/arch/mips/cpu/xburst/config.mk
+++ b/arch/mips/cpu/xburst/config.mk
@@ -12,4 +12,4 @@ else
PLATFORM_LDFLAGS += -m elf32ltsmip
endif

-CONFIG_STANDALONE_LOAD_ADDR ?= 0x80200000 -T mips.lds
+CONFIG_STANDALONE_LOAD_ADDR ?= 0x80200000 -T $(srctree)/$(src)/mips.lds
diff --git a/arch/nds32/config.mk b/arch/nds32/config.mk
index e93e3a8..550f8a4 100644
--- a/arch/nds32/config.mk
+++ b/arch/nds32/config.mk
@@ -10,7 +10,7 @@

CROSS_COMPILE ?= nds32le-linux-

-CONFIG_STANDALONE_LOAD_ADDR = 0x300000 -T nds32.lds
+CONFIG_STANDALONE_LOAD_ADDR = 0x300000 -T $(srctree)/$(src)/nds32.lds

PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -mrelax
PLATFORM_RELFLAGS += -gdwarf-2
diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile
index a706d3c..ac780d4 100644
--- a/arch/powerpc/lib/Makefile
+++ b/arch/powerpc/lib/Makefile
@@ -54,11 +54,11 @@ ifndef CONFIG_SPL_BUILD
# Workaround for local bus unaligned access problems
# on MPC512x and MPC5200
ifdef CONFIG_MPC512X
-$(obj)ppcstring.o: AFLAGS += -Dmemcpy=__memcpy
+$(obj)/ppcstring.o: AFLAGS += -Dmemcpy=__memcpy
obj-y += memcpy_mpc5200.o
endif
ifdef CONFIG_MPC5200
-$(obj)ppcstring.o: AFLAGS += -Dmemcpy=__memcpy
+$(obj)/ppcstring.o: AFLAGS += -Dmemcpy=__memcpy
obj-y += memcpy_mpc5200.o
endif
endif
diff --git a/arch/sandbox/cpu/Makefile b/arch/sandbox/cpu/Makefile
index b564294..c5f5426 100644
--- a/arch/sandbox/cpu/Makefile
+++ b/arch/sandbox/cpu/Makefile
@@ -10,7 +10,7 @@
obj-y := cpu.o os.o start.o state.o

# os.c is build in the system environment, so needs standard includes
-$(obj)os.o: CFLAGS := $(filter-out -nostdinc,\
+$(obj)/os.o: CFLAGS := $(filter-out -nostdinc,\
$(patsubst -I%,-idirafter%,$(CFLAGS)))
-$(obj).depend.os: CPPFLAGS := $(filter-out -nostdinc,\
+$(obj)/.depend.os: CPPFLAGS := $(filter-out -nostdinc,\
$(patsubst -I%,-idirafter%,$(CPPFLAGS)))
diff --git a/arch/sparc/config.mk b/arch/sparc/config.mk
index e94e7cb..9bb3724 100644
--- a/arch/sparc/config.mk
+++ b/arch/sparc/config.mk
@@ -7,6 +7,7 @@

CROSS_COMPILE ?= sparc-elf-

-CONFIG_STANDALONE_LOAD_ADDR ?= 0x00000000 -L $(gcclibdir) -T sparc.lds
+CONFIG_STANDALONE_LOAD_ADDR ?= 0x00000000 -L $(gcclibdir) \
+ -T $(srctree)/$(src)/sparc.lds

PLATFORM_CPPFLAGS += -DCONFIG_SPARC -D__sparc__
diff --git a/arch/x86/lib/Makefile b/arch/x86/lib/Makefile
index 638f790..a35d062 100644
--- a/arch/x86/lib/Makefile
+++ b/arch/x86/lib/Makefile
@@ -23,5 +23,5 @@ obj-$(CONFIG_CMD_ZBOOT) += zimage.o
LIBGCC := $(notdir $(NORMAL_LIBGCC))
extra-y := $(LIBGCC)

-$(obj)$(LIBGCC): $(NORMAL_LIBGCC)
+$(obj)/$(LIBGCC): $(NORMAL_LIBGCC)
$(OBJCOPY) $< $@ --prefix-symbols=__normal_
diff --git a/board/ait/cam_enc_4xx/config.mk b/board/ait/cam_enc_4xx/config.mk
index d7e7894..c7cfaca 100644
--- a/board/ait/cam_enc_4xx/config.mk
+++ b/board/ait/cam_enc_4xx/config.mk
@@ -9,7 +9,7 @@

UBL_CONFIG = $(SRCTREE)/board/$(BOARDDIR)/ublimage.cfg
ifndef CONFIG_SPL_BUILD
-ALL-y += $(obj)u-boot.ubl
+ALL-y += u-boot.ubl
else
# as SPL_TEXT_BASE is not page-aligned, we need for some
# linkers the -n flag (Do not page align data), to prevent
diff --git a/board/avionic-design/medcom-wide/Makefile b/board/avionic-design/medcom-wide/Makefile
index 87e1912..bcf7ccf 100644
--- a/board/avionic-design/medcom-wide/Makefile
+++ b/board/avionic-design/medcom-wide/Makefile
@@ -9,4 +9,4 @@

obj-y := ../common/tamonten.o

-include ../../nvidia/common/common.mk
+include $(srctree)/board/nvidia/common/common.mk
diff --git a/board/avionic-design/plutux/Makefile b/board/avionic-design/plutux/Makefile
index 87e1912..bcf7ccf 100644
--- a/board/avionic-design/plutux/Makefile
+++ b/board/avionic-design/plutux/Makefile
@@ -9,4 +9,4 @@

obj-y := ../common/tamonten.o

-include ../../nvidia/common/common.mk
+include $(srctree)/board/nvidia/common/common.mk
diff --git a/board/avionic-design/tec-ng/Makefile b/board/avionic-design/tec-ng/Makefile
index 79d8602..a556b92 100644
--- a/board/avionic-design/tec-ng/Makefile
+++ b/board/avionic-design/tec-ng/Makefile
@@ -7,4 +7,4 @@

obj-y := ../common/tamonten-ng.o

-include ../../nvidia/common/common.mk
+include $(srctree)/board/nvidia/common/common.mk
diff --git a/board/avionic-design/tec/Makefile b/board/avionic-design/tec/Makefile
index 87e1912..bcf7ccf 100644
--- a/board/avionic-design/tec/Makefile
+++ b/board/avionic-design/tec/Makefile
@@ -9,4 +9,4 @@

obj-y := ../common/tamonten.o

-include ../../nvidia/common/common.mk
+include $(srctree)/board/nvidia/common/common.mk
diff --git a/board/compal/paz00/Makefile b/board/compal/paz00/Makefile
index b2d3b6b..e6a0b29 100644
--- a/board/compal/paz00/Makefile
+++ b/board/compal/paz00/Makefile
@@ -16,4 +16,4 @@

obj-y := paz00.o

-include ../../nvidia/common/common.mk
+include $(srctree)/board/nvidia/common/common.mk
diff --git a/board/compulab/trimslice/Makefile b/board/compulab/trimslice/Makefile
index f3bd00d..311eb92 100644
--- a/board/compulab/trimslice/Makefile
+++ b/board/compulab/trimslice/Makefile
@@ -7,4 +7,4 @@

obj-y := trimslice.o

-include ../../nvidia/common/common.mk
+include $(srctree)/board/nvidia/common/common.mk
diff --git a/board/cray/L1/Makefile b/board/cray/L1/Makefile
index 5f6c690..6aae9fa 100644
--- a/board/cray/L1/Makefile
+++ b/board/cray/L1/Makefile
@@ -9,8 +9,8 @@ obj-y = L1.o flash.o
obj-y += init.o
obj-y += bootscript.o

-$(obj)bootscript.c: $(obj)bootscript.image
- od -t x1 -v -A x $^ | awk -f x2c.awk > $@
+$(obj)/bootscript.c: $(obj)/bootscript.image
+ od -t x1 -v -A x $^ | awk -f $(srctree)/$(src)/x2c.awk > $@

-$(obj)bootscript.image: $(src)bootscript.hush $(src)Makefile
- -$(OBJTREE)/tools/mkimage -A ppc -O linux -T script -C none -a 0 -e 0 -n bootscript -d $(src)bootscript.hush $@
+$(obj)/bootscript.image: $(src)/bootscript.hush
+ -$(OBJTREE)/tools/mkimage -A ppc -O linux -T script -C none -a 0 -e 0 -n bootscript -d $< $@
diff --git a/board/h2200/Makefile b/board/h2200/Makefile
index d4fa153..e516e91 100644
--- a/board/h2200/Makefile
+++ b/board/h2200/Makefile
@@ -10,5 +10,5 @@ obj-y := h2200.o

extra-y := h2200-header.bin

-$(obj)h2200-header.bin: $(obj)h2200-header.o
+$(obj)/h2200-header.bin: $(obj)/h2200-header.o
$(OBJCOPY) -O binary $< $@
diff --git a/board/matrix_vision/mvblm7/Makefile b/board/matrix_vision/mvblm7/Makefile
index 879d794..1bc1d61 100644
--- a/board/matrix_vision/mvblm7/Makefile
+++ b/board/matrix_vision/mvblm7/Makefile
@@ -8,5 +8,5 @@ obj-y := mvblm7.o pci.o fpga.o

extra-y := bootscript.img

-$(obj)bootscript.img:
- @mkimage -T script -C none -n M7_script -d bootscript $@
+$(obj)/bootscript.img: $(src)/bootscript
+ @mkimage -T script -C none -n M7_script -d $< $@
diff --git a/board/matrix_vision/mvsmr/Makefile b/board/matrix_vision/mvsmr/Makefile
index b6a4f67..9454259 100644
--- a/board/matrix_vision/mvsmr/Makefile
+++ b/board/matrix_vision/mvsmr/Makefile
@@ -12,5 +12,5 @@ obj-y := mvsmr.o fpga.o

extra-y := bootscript.img

-$(obj)bootscript.img: bootscript
+$(obj)/bootscript.img: $(src)/bootscript
@mkimage -T script -C none -n mvSMR_Script -d $< $@
diff --git a/board/nvidia/common/Makefile b/board/nvidia/common/Makefile
index e3fcf2b..e3b2651 100644
--- a/board/nvidia/common/Makefile
+++ b/board/nvidia/common/Makefile
@@ -1,4 +1,4 @@
# Copyright (c) 2011 The Chromium OS Authors.
# SPDX-License-Identifier: GPL-2.0+

-include common.mk
+include $(src)/common.mk
diff --git a/board/pcs440ep/config.mk b/board/pcs440ep/config.mk
index 1e76128..b90d5d0 100644
--- a/board/pcs440ep/config.mk
+++ b/board/pcs440ep/config.mk
@@ -10,7 +10,7 @@
#

# Check the U-Boot Image with a SHA1 checksum
-ALL-y += $(obj)u-boot.sha1
+ALL-y += u-boot.sha1

PLATFORM_CPPFLAGS += -DCONFIG_440=1

diff --git a/board/samsung/origen/Makefile b/board/samsung/origen/Makefile
index 31e88f4..37acba7 100644
--- a/board/samsung/origen/Makefile
+++ b/board/samsung/origen/Makefile
@@ -13,7 +13,7 @@ always := $(hostprogs-y)
#
# TODO:
# Fix the root cause in tools/mkorigenspl.c and delete the following work-around
-$(obj)tools/mkorigenspl: HOSTCFLAGS:=$(filter-out -O2,$(HOSTCFLAGS))
+$(obj)/tools/mkorigenspl: HOSTCFLAGS:=$(filter-out -O2,$(HOSTCFLAGS))
else
obj-y += origen.o
endif
diff --git a/common/Makefile b/common/Makefile
index 4d99ecd..a292ee8 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -234,11 +234,10 @@ obj-$(CONFIG_FIT_SIGNATURE) += image-sig.o
obj-y += memsize.o
obj-y += stdio.o

-$(obj)env_embedded.o: $(src)env_embedded.c
+$(obj)/env_embedded.o: $(src)/env_embedded.c
$(CC) $(AFLAGS) -Wa,--no-warn \
- -DENV_CRC=$(shell $(obj)../tools/envcrc) \
- -c -o $@ $(src)env_embedded.c
+ -DENV_CRC=$(shell tools/envcrc) -c -o $@ $<

# SEE README.arm-unaligned-accesses
-$(obj)hush.o: CFLAGS += $(PLATFORM_NO_UNALIGNED)
-$(obj)fdt_support.o: CFLAGS += $(PLATFORM_NO_UNALIGNED)
+$(obj)/hush.o: CFLAGS += $(PLATFORM_NO_UNALIGNED)
+$(obj)/fdt_support.o: CFLAGS += $(PLATFORM_NO_UNALIGNED)
diff --git a/config.mk b/config.mk
index ed1a519..0fa3167 100644
--- a/config.mk
+++ b/config.mk
@@ -6,42 +6,6 @@
#
#########################################################################

-ifeq ($(CURDIR),$(SRCTREE))
-dir :=
-else
-dir := $(subst $(SRCTREE)/,,$(CURDIR))
-endif
-
-ifneq ($(OBJTREE),$(SRCTREE))
-# Create object files for SPL in a separate directory
-ifeq ($(CONFIG_SPL_BUILD),y)
-ifeq ($(CONFIG_TPL_BUILD),y)
-obj := $(if $(dir),$(TPLTREE)/$(dir)/,$(TPLTREE)/)
-else
-obj := $(if $(dir),$(SPLTREE)/$(dir)/,$(SPLTREE)/)
-endif
-else
-obj := $(if $(dir),$(OBJTREE)/$(dir)/,$(OBJTREE)/)
-endif
-src := $(if $(dir),$(SRCTREE)/$(dir)/,$(SRCTREE)/)
-
-$(shell mkdir -p $(obj))
-else
-# Create object files for SPL in a separate directory
-ifeq ($(CONFIG_SPL_BUILD),y)
-ifeq ($(CONFIG_TPL_BUILD),y)
-obj := $(if $(dir),$(TPLTREE)/$(dir)/,$(TPLTREE)/)
-else
-obj := $(if $(dir),$(SPLTREE)/$(dir)/,$(SPLTREE)/)
-
-endif
-$(shell mkdir -p $(obj))
-else
-obj :=
-endif
-src :=
-endif
-
# clean the slate ...
PLATFORM_RELFLAGS =
PLATFORM_CPPFLAGS =
@@ -52,14 +16,14 @@ PLATFORM_LDFLAGS =
# Load generated board configuration
ifeq ($(CONFIG_TPL_BUILD),y)
# Include TPL autoconf
-sinclude $(OBJTREE)/include/tpl-autoconf.mk
+sinclude include/tpl-autoconf.mk
else
ifeq ($(CONFIG_SPL_BUILD),y)
# Include SPL autoconf
-sinclude $(OBJTREE)/include/spl-autoconf.mk
+sinclude include/spl-autoconf.mk
else
# Include normal autoconf
-sinclude $(OBJTREE)/include/autoconf.mk
+sinclude include/autoconf.mk
endif
endif
sinclude $(OBJTREE)/include/config.mk
diff --git a/doc/DocBook/Makefile b/doc/DocBook/Makefile
index 29b79d7..aa7c44b 100644
--- a/doc/DocBook/Makefile
+++ b/doc/DocBook/Makefile
@@ -6,8 +6,6 @@
# To add a new book the only step required is to add the book to the
# list of DOCBOOKS.

-include $(TOPDIR)/config.mk
-
DOCBOOKS := fs.xml linker_lists.xml stdio.xml

###
@@ -122,7 +120,7 @@ quiet_cmd_db2pdf = PDF $@

index = index.html
-main_idx = $(index)
+main_idx = doc/DocBook/$(index)
build_main_index = rm -rf $(main_idx); \
echo ' U-Boot Bootloader HTML Documentation ' >> $(main_idx) && \
echo ' U-Boot Version: $(U_BOOT_VERSION) ' >> $(main_idx) && \
@@ -151,7 +149,7 @@ quiet_cmd_db2man = MAN $@
@(which xmlto > /dev/null 2>&1) || \
(echo "*** You need to install xmlto ***"; \
exit 1)
- $(Q)mkdir -p $(obj)man
+ $(Q)mkdir -p $(obj)/man
$(call cmd_db2man)
@touch $@

diff --git a/drivers/bios_emulator/Makefile b/drivers/bios_emulator/Makefile
index 52a2ceb..330f36f 100644
--- a/drivers/bios_emulator/Makefile
+++ b/drivers/bios_emulator/Makefile
@@ -8,7 +8,7 @@ obj-y = atibios.o biosemu.o besys.o bios.o \
$(X86DIR)/sys.o \
$(X86DIR)/debug.o

-EXTRA_CFLAGS += -I. -I./include \
+EXTRA_CFLAGS += -I$(srctree)/$(src) -I$(srctree)/$(src)/include \
-D__PPC__ -D__BIG_ENDIAN__

CFLAGS += $(EXTRA_CFLAGS)
diff --git a/dts/Makefile b/dts/Makefile
index 6c7198f..d81f32d 100644
--- a/dts/Makefile
+++ b/dts/Makefile
@@ -26,7 +26,7 @@ DTC_FLAGS := -R 4 -p 0x1000 \
# Use a constant name for this so we can access it from C code.
# objcopy doesn't seem to allow us to set the symbol name independently of
# the filename.
-DT_BIN := $(obj)dt.dtb
+DT_BIN := $(obj)/dt.dtb

$(DT_BIN): $(TOPDIR)/board/$(VENDOR)/dts/$(DEVICE_TREE).dts
$(CPP) $(DTS_CPPFLAGS) $< -o $(DT_BIN).dts.tmp
@@ -38,7 +38,7 @@ process_lds = \
# Run the compiler and get the link script from the linker
GET_LDS = $(CC) $(CFLAGS) $(LDFLAGS) -Wl,--verbose 2>&1

-$(obj)dt.o: $(DT_BIN)
+$(obj)/dt.o: $(DT_BIN)
# We want the output format and arch.
# We also hope to win a prize for ugliest Makefile / shell interaction
# We look in the LDSCRIPT first.
@@ -62,7 +62,7 @@ $(obj)dt.o: $(DT_BIN)
\
cd $(dir ${DT_BIN}) && \
$(OBJCOPY) -I binary -O $${oformat} -B $${oarch} \
- $(notdir ${DT_BIN}) $@
+ $(notdir ${DT_BIN}) $(notdir $@)
rm $(DT_BIN)

obj-$(CONFIG_OF_EMBED) := dt.o
diff --git a/examples/api/Makefile b/examples/api/Makefile
index ee3c487..db0bb34 100644
--- a/examples/api/Makefile
+++ b/examples/api/Makefile
@@ -40,23 +40,23 @@ SRCS += $(addprefix $(SRCTREE)/examples/api/,$(COBJ_FILES-y:.o=.c))
SRCS += $(addprefix $(SRCTREE)/examples/api/,$(SOBJ_FILES-y:.o=.S))

# Create a list of object files to be compiled
-OBJS += $(addprefix $(obj),$(SOBJ_FILES-y))
-OBJS += $(addprefix $(obj),$(COBJ_FILES-y))
-OBJS += $(addprefix $(obj),$(notdir $(EXT_COBJ_FILES-y)))
-OBJS += $(addprefix $(obj),$(notdir $(EXT_SOBJ_FILES-y)))
+OBJS += $(addprefix $(obj)/,$(SOBJ_FILES-y))
+OBJS += $(addprefix $(obj)/,$(COBJ_FILES-y))
+OBJS += $(addprefix $(obj)/,$(notdir $(EXT_COBJ_FILES-y)))
+OBJS += $(addprefix $(obj)/,$(notdir $(EXT_SOBJ_FILES-y)))

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

-$(obj)demo: $(OBJS)
+$(obj)/demo: $(OBJS)
$(LD) --gc-sections -Ttext $(LOAD_ADDR) -o $@ $^ $(PLATFORM_LIBS)

-$(obj)demo.bin: $(obj)demo
+$(obj)/demo.bin: $(obj)/demo
$(OBJCOPY) -O binary $< $@ 2>/dev/null

# Rule to build generic library C files
-$(addprefix $(obj),$(notdir $(EXT_COBJ_FILES-y))): $(obj)%.o: $(SRCTREE)/lib/%.c
+$(addprefix $(obj)/,$(notdir $(EXT_COBJ_FILES-y))): $(obj)/%.o: $(SRCTREE)/lib/%.c
$(CC) -g $(CFLAGS) -c -o $@ $<

# Rule to build architecture-specific library assembly files
-$(addprefix $(obj),$(notdir $(EXT_SOBJ_FILES-y))): $(obj)%.o: $(SRCTREE)/arch/$(ARCH)/lib/%.S
+$(addprefix $(obj)/,$(notdir $(EXT_SOBJ_FILES-y))): $(obj)/%.o: $(SRCTREE)/arch/$(ARCH)/lib/%.S
$(CC) -g $(CFLAGS) -c -o $@ $<
diff --git a/examples/standalone/Makefile b/examples/standalone/Makefile
index 1f8d70c..a6819f7 100644
--- a/examples/standalone/Makefile
+++ b/examples/standalone/Makefile
@@ -31,7 +31,7 @@ clean-files := $(extra-) $(addsuffix .srec,$(extra-)) $(addsuffix .bin,$(extra-

COBJS := $(ELF:=.o)

-LIB = $(obj)libstubs.o
+LIB = $(obj)/libstubs.o

LIBAOBJS-$(CONFIG_PPC) += ppc_longjmp.o ppc_setjmp.o
LIBAOBJS-$(CONFIG_8xx) += test_burst_lib.o
@@ -39,11 +39,11 @@ LIBAOBJS := $(LIBAOBJS-y)

LIBCOBJS = stubs.o

-LIBOBJS = $(addprefix $(obj),$(LIBAOBJS) $(LIBCOBJS))
+LIBOBJS = $(addprefix $(obj)/,$(LIBAOBJS) $(LIBCOBJS))

SRCS := $(COBJS:.o=.c) $(LIBCOBJS:.o=.c) $(LIBAOBJS:.o=.S)
-OBJS := $(addprefix $(obj),$(COBJS))
-ELF := $(addprefix $(obj),$(ELF))
+OBJS := $(addprefix $(obj)/,$(COBJS))
+ELF := $(addprefix $(obj)/,$(ELF))

gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)

@@ -67,13 +67,13 @@ $(LIB): $(LIBOBJS)
$(call cmd_link_o_target, $(LIBOBJS))

$(ELF):
-$(obj)%: $(obj)%.o $(LIB)
+$(obj)/%: $(obj)/%.o $(LIB)
$(LD) $(LDFLAGS) -g -Ttext $(CONFIG_STANDALONE_LOAD_ADDR) \
-o $@ -e $(SYM_PREFIX)$(notdir $(<:.o=)) $< $(LIB) \
-L$(gcclibdir) -lgcc

-$(obj)%.srec: $(obj)%
+$(obj)/%.srec: $(obj)/%
$(OBJCOPY) -O srec $< $@ 2>/dev/null

-$(obj)%.bin: $(obj)%
+$(obj)/%.bin: $(obj)/%
$(OBJCOPY) -O binary $< $@ 2>/dev/null
diff --git a/fs/ubifs/Makefile b/fs/ubifs/Makefile
index 389b0e3..5682b16 100644
--- a/fs/ubifs/Makefile
+++ b/fs/ubifs/Makefile
@@ -15,4 +15,4 @@ obj-y += tnc.o tnc_misc.o debug.o crc16.o budget.o
obj-y += log.o orphan.o recovery.o replay.o

# SEE README.arm-unaligned-accesses
-$(obj)super.o: CFLAGS += $(PLATFORM_NO_UNALIGNED)
+$(obj)/super.o: CFLAGS += $(PLATFORM_NO_UNALIGNED)
diff --git a/lib/Makefile b/lib/Makefile
index 760340f..43b13d0 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -67,4 +67,4 @@ obj-$(CONFIG_BOOTP_RANDOM_DELAY) += rand.o
obj-$(CONFIG_CMD_LINK_LOCAL) += rand.o

# SEE README.arm-unaligned-accesses
-$(obj)bzlib.o: CFLAGS += $(PLATFORM_NO_UNALIGNED)
+$(obj)/bzlib.o: CFLAGS += $(PLATFORM_NO_UNALIGNED)
diff --git a/mkconfig b/mkconfig
index b96c81f..5f516f2 100755
--- a/mkconfig
+++ b/mkconfig
@@ -23,7 +23,7 @@ options=""

if [ \( $# -eq 2 \) -a \( "$1" = "-A" \) ] ; then
# Automatic mode
- line=`awk '($0 !~ /^#/ && $7 ~ /^'"$2"'$/) { print $1, $2, $3, $4, $5, $6, $7, $8 }' boards.cfg`
+ line=`awk '($0 !~ /^#/ && $7 ~ /^'"$2"'$/) { print $1, $2, $3, $4, $5, $6, $7, $8 }' $srctree/boards.cfg`
if [ -z "$line" ] ; then
echo "make: *** No rule to make target \`$2_config'. Stop." >&2
exit 1
diff --git a/nand_spl/board/amcc/acadia/Makefile b/nand_spl/board/amcc/acadia/Makefile
index 3b00d49..041213f 100644
--- a/nand_spl/board/amcc/acadia/Makefile
+++ b/nand_spl/board/amcc/acadia/Makefile
@@ -18,8 +18,8 @@ CFLAGS += -DCONFIG_NAND_SPL
SOBJS = start.o resetvec.o cache.o
COBJS = gpio.o nand_boot.o nand_ecc.o memory.o ndfc.o pll.o

-SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS := $(addprefix $(obj)/,$(SOBJS:.o=.S) $(COBJS:.o=.c))
+OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
__OBJS := $(SOBJS) $(COBJS)
LNDIR := $(nandobj)board/$(BOARDDIR)

@@ -47,49 +47,41 @@ $(nandobj)u-boot.lds: $(LDSCRIPT)
# create symbolic links for common files

# from cpu directory
-$(obj)cache.S:
+$(obj)/cache.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/cache.S $@

-$(obj)gpio.c:
+$(obj)/gpio.c:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/gpio.c $@

-$(obj)ndfc.c:
+$(obj)/ndfc.c:
@rm -f $@
ln -s $(SRCTREE)/drivers/mtd/nand/ndfc.c $@

-$(obj)resetvec.S:
+$(obj)/resetvec.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/resetvec.S $@

-$(obj)start.S:
+$(obj)/start.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/start.S $@

# from board directory
-$(obj)memory.c:
+$(obj)/memory.c:
@rm -f $@
ln -s $(SRCTREE)/board/amcc/acadia/memory.c $@

-$(obj)pll.c:
+$(obj)/pll.c:
@rm -f $@
ln -s $(SRCTREE)/board/amcc/acadia/pll.c $@

# from nand_spl directory
-$(obj)nand_boot.c:
+$(obj)/nand_boot.c:
@rm -f $@
ln -s $(SRCTREE)/nand_spl/nand_boot.c $@

# from drivers/mtd/nand directory
-$(obj)nand_ecc.c:
+$(obj)/nand_ecc.c:
@rm -f $@
ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $@
-
-#########################################################################
-
-$(obj)%.o: $(obj)%.S
- $(CC) $(AFLAGS) -c -o $@ $<
-
-$(obj)%.o: $(obj)%.c
- $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/nand_spl/board/amcc/bamboo/Makefile b/nand_spl/board/amcc/bamboo/Makefile
index 4063274..92b604e 100644
--- a/nand_spl/board/amcc/bamboo/Makefile
+++ b/nand_spl/board/amcc/bamboo/Makefile
@@ -18,8 +18,8 @@ CFLAGS += -DCONFIG_NAND_SPL
SOBJS = start.o init.o resetvec.o
COBJS = nand_boot.o nand_ecc.o ndfc.o sdram.o

-SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS := $(addprefix $(obj)/,$(SOBJS:.o=.S) $(COBJS:.o=.c))
+OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
__OBJS := $(SOBJS) $(COBJS)
LNDIR := $(nandobj)board/$(BOARDDIR)

@@ -41,43 +41,29 @@ $(nandobj)u-boot.lds: $(LDSCRIPT)
# create symbolic links for common files

# from cpu directory
-$(obj)ndfc.c:
+$(obj)/ndfc.c:
@rm -f $@
ln -s $(SRCTREE)/drivers/mtd/nand/ndfc.c $@

-$(obj)resetvec.S:
+$(obj)/resetvec.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/resetvec.S $@

-$(obj)start.S:
+$(obj)/start.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/start.S $@

# from board directory
-$(obj)init.S:
+$(obj)/init.S:
@rm -f $@
ln -s $(SRCTREE)/board/amcc/bamboo/init.S $@

# from nand_spl directory
-$(obj)nand_boot.c:
+$(obj)/nand_boot.c:
@rm -f $@
ln -s $(SRCTREE)/nand_spl/nand_boot.c $@

# from drivers/mtd/nand directory
-$(obj)nand_ecc.c:
+$(obj)/nand_ecc.c:
@rm -f $@
ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $@
-
-ifneq ($(OBJTREE), $(SRCTREE))
-$(obj)sdram.c:
- @rm -f $@
- ln -s $(SRCTREE)/nand_spl/board/$(BOARDDIR)/sdram.c $@
-endif
-
-#########################################################################
-
-$(obj)%.o: $(obj)%.S
- $(CC) $(AFLAGS) -c -o $@ $<
-
-$(obj)%.o: $(obj)%.c
- $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/nand_spl/board/amcc/canyonlands/Makefile b/nand_spl/board/amcc/canyonlands/Makefile
index 13c8b36..9a730e9 100644
--- a/nand_spl/board/amcc/canyonlands/Makefile
+++ b/nand_spl/board/amcc/canyonlands/Makefile
@@ -23,8 +23,8 @@ COBJS += nand_boot.o
COBJS += nand_ecc.o
COBJS += ndfc.o

-SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS := $(addprefix $(obj)/,$(SOBJS:.o=.S) $(COBJS:.o=.c))
+OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
__OBJS := $(SOBJS) $(COBJS)
LNDIR := $(nandobj)board/$(BOARDDIR)

@@ -46,43 +46,29 @@ $(nandobj)u-boot.lds: $(LDSCRIPT)
# create symbolic links for common files

# from cpu directory
-$(obj)ndfc.c:
+$(obj)/ndfc.c:
@rm -f $@
ln -s $(SRCTREE)/drivers/mtd/nand/ndfc.c $@

-$(obj)resetvec.S:
+$(obj)/resetvec.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/resetvec.S $@

-$(obj)start.S:
+$(obj)/start.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/start.S $@

# from board directory
-$(obj)init.S:
+$(obj)/init.S:
@rm -f $@
ln -s $(SRCTREE)/board/amcc/canyonlands/init.S $@

# from nand_spl directory
-$(obj)nand_boot.c:
+$(obj)/nand_boot.c:
@rm -f $@
ln -s $(SRCTREE)/nand_spl/nand_boot.c $@

# from drivers/mtd/nand directory
-$(obj)nand_ecc.c:
+$(obj)/nand_ecc.c:
@rm -f $@
ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $@
-
-ifneq ($(OBJTREE), $(SRCTREE))
-$(obj)ddr2_fixed.c:
- @rm -f $@
- ln -s $(SRCTREE)/nand_spl/board/$(BOARDDIR)/ddr2_fixed.c $@
-endif
-
-#########################################################################
-
-$(obj)%.o: $(obj)%.S
- $(CC) $(AFLAGS) -c -o $@ $<
-
-$(obj)%.o: $(obj)%.c
- $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/nand_spl/board/amcc/kilauea/Makefile b/nand_spl/board/amcc/kilauea/Makefile
index 9d07147..1c5498c 100644
--- a/nand_spl/board/amcc/kilauea/Makefile
+++ b/nand_spl/board/amcc/kilauea/Makefile
@@ -18,8 +18,8 @@ CFLAGS += -DCONFIG_NAND_SPL
SOBJS = start.o resetvec.o cache.o
COBJS = 44x_spd_ddr2.o nand_boot.o nand_ecc.o ndfc.o

-SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS := $(addprefix $(obj)/,$(SOBJS:.o=.S) $(COBJS:.o=.c))
+OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
__OBJS := $(SOBJS) $(COBJS)
LNDIR := $(nandobj)board/$(BOARDDIR)

@@ -41,44 +41,36 @@ $(nandobj)u-boot.lds: $(LDSCRIPT)
# create symbolic links for common files

# from cpu directory
-$(obj)44x_spd_ddr2.c: $(obj)ecc.h
+$(obj)/44x_spd_ddr2.c: $(obj)/ecc.h
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/44x_spd_ddr2.c $@

-$(obj)cache.S:
+$(obj)/cache.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/cache.S $@

-$(obj)ecc.h:
+$(obj)/ecc.h:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/ecc.h $@

-$(obj)ndfc.c:
+$(obj)/ndfc.c:
@rm -f $@
ln -s $(SRCTREE)/drivers/mtd/nand/ndfc.c $@

-$(obj)resetvec.S:
+$(obj)/resetvec.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/resetvec.S $@

-$(obj)start.S:
+$(obj)/start.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/start.S $@

# from nand_spl directory
-$(obj)nand_boot.c:
+$(obj)/nand_boot.c:
@rm -f $@
ln -s $(SRCTREE)/nand_spl/nand_boot.c $@

# from drivers/nand directory
-$(obj)nand_ecc.c:
+$(obj)/nand_ecc.c:
@rm -f $@
ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $@
-
-#########################################################################
-
-$(obj)%.o: $(obj)%.S
- $(CC) $(AFLAGS) -c -o $@ $<
-
-$(obj)%.o: $(obj)%.c
- $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/nand_spl/board/amcc/sequoia/Makefile b/nand_spl/board/amcc/sequoia/Makefile
index 111bb0d..62131ab 100644
--- a/nand_spl/board/amcc/sequoia/Makefile
+++ b/nand_spl/board/amcc/sequoia/Makefile
@@ -18,8 +18,8 @@ CFLAGS += -DCONFIG_NAND_SPL
SOBJS = start.o init.o resetvec.o
COBJS = denali_data_eye.o nand_boot.o nand_ecc.o ndfc.o sdram.o

-SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS := $(addprefix $(obj)/,$(SOBJS:.o=.S) $(COBJS:.o=.c))
+OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
__OBJS := $(SOBJS) $(COBJS)
LNDIR := $(nandobj)board/$(BOARDDIR)

@@ -41,47 +41,39 @@ $(nandobj)u-boot.lds: $(LDSCRIPT)
# create symbolic links for common files

# from cpu directory
-$(obj)denali_data_eye.c:
+$(obj)/denali_data_eye.c:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/denali_data_eye.c $@

-$(obj)ndfc.c:
+$(obj)/ndfc.c:
@rm -f $@
ln -s $(SRCTREE)/drivers/mtd/nand/ndfc.c $@

-$(obj)resetvec.S:
+$(obj)/resetvec.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/resetvec.S $@

-$(obj)start.S:
+$(obj)/start.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/start.S $@

# from board directory
-$(obj)init.S:
+$(obj)/init.S:
@rm -f $@
ln -s $(SRCTREE)/board/amcc/sequoia/init.S $@

-$(obj)sdram.c:
+$(obj)/sdram.c:
@rm -f $@
- @rm -f $(obj)sdram.h
+ @rm -f $(obj)/sdram.h
ln -s $(SRCTREE)/board/amcc/sequoia/sdram.c $@
- ln -s $(SRCTREE)/board/amcc/sequoia/sdram.h $(obj)sdram.h
+ ln -s $(SRCTREE)/board/amcc/sequoia/sdram.h $(obj)/sdram.h

# from nand_spl directory
-$(obj)nand_boot.c:
+$(obj)/nand_boot.c:
@rm -f $@
ln -s $(SRCTREE)/nand_spl/nand_boot.c $@

# from drivers/mtd/nand directory
-$(obj)nand_ecc.c:
+$(obj)/nand_ecc.c:
@rm -f $@
ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $@
-
-#########################################################################
-
-$(obj)%.o: $(obj)%.S
- $(CC) $(AFLAGS) -c -o $@ $<
-
-$(obj)%.o: $(obj)%.c
- $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/nand_spl/board/freescale/mpc8315erdb/Makefile b/nand_spl/board/freescale/mpc8315erdb/Makefile
index 7813823..a2054ee 100644
--- a/nand_spl/board/freescale/mpc8315erdb/Makefile
+++ b/nand_spl/board/freescale/mpc8315erdb/Makefile
@@ -20,8 +20,8 @@ SOBJS = start.o ticks.o
COBJS = nand_boot_fsl_elbc.o $(BOARD).o sdram.o ns16550.o spl_minimal.o \
time.o cache.o

-SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS := $(addprefix $(obj)/,$(SOBJS:.o=.S) $(COBJS:.o=.c))
+OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
__OBJS := $(SOBJS) $(COBJS)
LNDIR := $(nandobj)board/$(BOARDDIR)

@@ -42,37 +42,29 @@ $(nandobj)u-boot.lds: $(LDSCRIPT)

# create symbolic links for common files

-$(obj)start.S:
+$(obj)/start.S:
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc83xx/start.S $@

-$(obj)nand_boot_fsl_elbc.c:
+$(obj)/nand_boot_fsl_elbc.c:
ln -sf $(SRCTREE)/nand_spl/nand_boot_fsl_elbc.c $@

-$(obj)sdram.c:
+$(obj)/sdram.c:
ln -sf $(SRCTREE)/board/$(BOARDDIR)/sdram.c $@

-$(obj)$(BOARD).c:
+$(obj)/$(BOARD).c:
ln -sf $(SRCTREE)/board/$(BOARDDIR)/$(BOARD).c $@

-$(obj)ns16550.c:
+$(obj)/ns16550.c:
ln -sf $(SRCTREE)/drivers/serial/ns16550.c $@

-$(obj)spl_minimal.c:
+$(obj)/spl_minimal.c:
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc83xx/spl_minimal.c $@

-$(obj)cache.c:
+$(obj)/cache.c:
ln -sf $(SRCTREE)/arch/powerpc/lib/cache.c $@

-$(obj)time.c:
+$(obj)/time.c:
ln -sf $(SRCTREE)/arch/powerpc/lib/time.c $@

-$(obj)ticks.S:
+$(obj)/ticks.S:
ln -sf $(SRCTREE)/arch/powerpc/lib/ticks.S $@
-
-#########################################################################
-
-$(obj)%.o: $(obj)%.S
- $(CC) $(AFLAGS) -c -o $@ $<
-
-$(obj)%.o: $(obj)%.c
- $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/nand_spl/board/freescale/mpc8536ds/Makefile b/nand_spl/board/freescale/mpc8536ds/Makefile
index 5d9953b..f711cf3 100644
--- a/nand_spl/board/freescale/mpc8536ds/Makefile
+++ b/nand_spl/board/freescale/mpc8536ds/Makefile
@@ -22,8 +22,8 @@ SOBJS = start.o resetvec.o
COBJS = cache.o cpu_init_early.o spl_minimal.o fsl_law.o law.o \
nand_boot.o nand_boot_fsl_elbc.o ns16550.o tlb.o tlb_table.o

-SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS := $(addprefix $(obj)/,$(SOBJS:.o=.S) $(COBJS:.o=.c))
+OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
__OBJS := $(SOBJS) $(COBJS)
LNDIR := $(nandobj)board/$(BOARDDIR)

@@ -45,64 +45,50 @@ $(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)

# create symbolic links for common files

-$(obj)cache.c:
+$(obj)/cache.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/lib/cache.c $@

-$(obj)cpu_init_early.c:
+$(obj)/cpu_init_early.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/cpu_init_early.c $@

-$(obj)spl_minimal.c:
+$(obj)/spl_minimal.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/spl_minimal.c $@

-$(obj)fsl_law.c:
+$(obj)/fsl_law.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc8xxx/law.c $@

-$(obj)law.c:
+$(obj)/law.c:
@rm -f $@
ln -sf $(SRCTREE)/board/$(BOARDDIR)/law.c $@

-$(obj)nand_boot_fsl_elbc.c:
+$(obj)/nand_boot_fsl_elbc.c:
@rm -f $@
ln -sf $(SRCTREE)/nand_spl/nand_boot_fsl_elbc.c $@

-$(obj)ns16550.c:
+$(obj)/ns16550.c:
@rm -f $@
ln -sf $(SRCTREE)/drivers/serial/ns16550.c $@

-$(obj)resetvec.S:
+$(obj)/resetvec.S:
@rm -f $@
ln -s $(SRCTREE)/$(CPUDIR)/resetvec.S $@

-$(obj)fixed_ivor.S:
+$(obj)/fixed_ivor.S:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/fixed_ivor.S $@

-$(obj)start.S: $(obj)fixed_ivor.S
+$(obj)/start.S: $(obj)/fixed_ivor.S
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/start.S $@

-$(obj)tlb.c:
+$(obj)/tlb.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/tlb.c $@

-$(obj)tlb_table.c:
+$(obj)/tlb_table.c:
@rm -f $@
ln -sf $(SRCTREE)/board/$(BOARDDIR)/tlb.c $@
-
-ifneq ($(OBJTREE), $(SRCTREE))
-$(obj)nand_boot.c:
- @rm -f $@
- ln -s $(SRCTREE)/nand_spl/board/$(BOARDDIR)/nand_boot.c $@
-endif
-
-#########################################################################
-
-$(obj)%.o: $(obj)%.S
- $(CC) $(AFLAGS) -c -o $@ $<
-
-$(obj)%.o: $(obj)%.c
- $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/nand_spl/board/freescale/mpc8569mds/Makefile b/nand_spl/board/freescale/mpc8569mds/Makefile
index 5d9953b..f711cf3 100644
--- a/nand_spl/board/freescale/mpc8569mds/Makefile
+++ b/nand_spl/board/freescale/mpc8569mds/Makefile
@@ -22,8 +22,8 @@ SOBJS = start.o resetvec.o
COBJS = cache.o cpu_init_early.o spl_minimal.o fsl_law.o law.o \
nand_boot.o nand_boot_fsl_elbc.o ns16550.o tlb.o tlb_table.o

-SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS := $(addprefix $(obj)/,$(SOBJS:.o=.S) $(COBJS:.o=.c))
+OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
__OBJS := $(SOBJS) $(COBJS)
LNDIR := $(nandobj)board/$(BOARDDIR)

@@ -45,64 +45,50 @@ $(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)

# create symbolic links for common files

-$(obj)cache.c:
+$(obj)/cache.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/lib/cache.c $@

-$(obj)cpu_init_early.c:
+$(obj)/cpu_init_early.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/cpu_init_early.c $@

-$(obj)spl_minimal.c:
+$(obj)/spl_minimal.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/spl_minimal.c $@

-$(obj)fsl_law.c:
+$(obj)/fsl_law.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc8xxx/law.c $@

-$(obj)law.c:
+$(obj)/law.c:
@rm -f $@
ln -sf $(SRCTREE)/board/$(BOARDDIR)/law.c $@

-$(obj)nand_boot_fsl_elbc.c:
+$(obj)/nand_boot_fsl_elbc.c:
@rm -f $@
ln -sf $(SRCTREE)/nand_spl/nand_boot_fsl_elbc.c $@

-$(obj)ns16550.c:
+$(obj)/ns16550.c:
@rm -f $@
ln -sf $(SRCTREE)/drivers/serial/ns16550.c $@

-$(obj)resetvec.S:
+$(obj)/resetvec.S:
@rm -f $@
ln -s $(SRCTREE)/$(CPUDIR)/resetvec.S $@

-$(obj)fixed_ivor.S:
+$(obj)/fixed_ivor.S:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/fixed_ivor.S $@

-$(obj)start.S: $(obj)fixed_ivor.S
+$(obj)/start.S: $(obj)/fixed_ivor.S
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/start.S $@

-$(obj)tlb.c:
+$(obj)/tlb.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/tlb.c $@

-$(obj)tlb_table.c:
+$(obj)/tlb_table.c:
@rm -f $@
ln -sf $(SRCTREE)/board/$(BOARDDIR)/tlb.c $@
-
-ifneq ($(OBJTREE), $(SRCTREE))
-$(obj)nand_boot.c:
- @rm -f $@
- ln -s $(SRCTREE)/nand_spl/board/$(BOARDDIR)/nand_boot.c $@
-endif
-
-#########################################################################
-
-$(obj)%.o: $(obj)%.S
- $(CC) $(AFLAGS) -c -o $@ $<
-
-$(obj)%.o: $(obj)%.c
- $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/nand_spl/board/freescale/mpc8572ds/Makefile b/nand_spl/board/freescale/mpc8572ds/Makefile
index 5d9953b..f711cf3 100644
--- a/nand_spl/board/freescale/mpc8572ds/Makefile
+++ b/nand_spl/board/freescale/mpc8572ds/Makefile
@@ -22,8 +22,8 @@ SOBJS = start.o resetvec.o
COBJS = cache.o cpu_init_early.o spl_minimal.o fsl_law.o law.o \
nand_boot.o nand_boot_fsl_elbc.o ns16550.o tlb.o tlb_table.o

-SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS := $(addprefix $(obj)/,$(SOBJS:.o=.S) $(COBJS:.o=.c))
+OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
__OBJS := $(SOBJS) $(COBJS)
LNDIR := $(nandobj)board/$(BOARDDIR)

@@ -45,64 +45,50 @@ $(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)

# create symbolic links for common files

-$(obj)cache.c:
+$(obj)/cache.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/lib/cache.c $@

-$(obj)cpu_init_early.c:
+$(obj)/cpu_init_early.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/cpu_init_early.c $@

-$(obj)spl_minimal.c:
+$(obj)/spl_minimal.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/spl_minimal.c $@

-$(obj)fsl_law.c:
+$(obj)/fsl_law.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc8xxx/law.c $@

-$(obj)law.c:
+$(obj)/law.c:
@rm -f $@
ln -sf $(SRCTREE)/board/$(BOARDDIR)/law.c $@

-$(obj)nand_boot_fsl_elbc.c:
+$(obj)/nand_boot_fsl_elbc.c:
@rm -f $@
ln -sf $(SRCTREE)/nand_spl/nand_boot_fsl_elbc.c $@

-$(obj)ns16550.c:
+$(obj)/ns16550.c:
@rm -f $@
ln -sf $(SRCTREE)/drivers/serial/ns16550.c $@

-$(obj)resetvec.S:
+$(obj)/resetvec.S:
@rm -f $@
ln -s $(SRCTREE)/$(CPUDIR)/resetvec.S $@

-$(obj)fixed_ivor.S:
+$(obj)/fixed_ivor.S:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/fixed_ivor.S $@

-$(obj)start.S: $(obj)fixed_ivor.S
+$(obj)/start.S: $(obj)/fixed_ivor.S
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/start.S $@

-$(obj)tlb.c:
+$(obj)/tlb.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/tlb.c $@

-$(obj)tlb_table.c:
+$(obj)/tlb_table.c:
@rm -f $@
ln -sf $(SRCTREE)/board/$(BOARDDIR)/tlb.c $@
-
-ifneq ($(OBJTREE), $(SRCTREE))
-$(obj)nand_boot.c:
- @rm -f $@
- ln -s $(SRCTREE)/nand_spl/board/$(BOARDDIR)/nand_boot.c $@
-endif
-
-#########################################################################
-
-$(obj)%.o: $(obj)%.S
- $(CC) $(AFLAGS) -c -o $@ $<
-
-$(obj)%.o: $(obj)%.c
- $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/nand_spl/board/freescale/p1023rds/Makefile b/nand_spl/board/freescale/p1023rds/Makefile
index 652590d..21a6920 100644
--- a/nand_spl/board/freescale/p1023rds/Makefile
+++ b/nand_spl/board/freescale/p1023rds/Makefile
@@ -18,8 +18,8 @@ SOBJS = start.o resetvec.o
COBJS = cache.o cpu_init_early.o spl_minimal.o fsl_law.o law.o \
nand_boot.o nand_boot_fsl_elbc.o ns16550.o tlb.o tlb_table.o

-SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS := $(addprefix $(obj)/,$(SOBJS:.o=.S) $(COBJS:.o=.c))
+OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
__OBJS := $(SOBJS) $(COBJS)
LNDIR := $(nandobj)board/$(BOARDDIR)

@@ -41,64 +41,50 @@ $(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)

# create symbolic links for common files

-$(obj)cache.c:
+$(obj)/cache.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/lib/cache.c $@

-$(obj)cpu_init_early.c:
+$(obj)/cpu_init_early.c:
@rm -f $@
ln -sf $(SRCTREE)/$(CPUDIR)/cpu_init_early.c $@

-$(obj)spl_minimal.c:
+$(obj)/spl_minimal.c:
@rm -f $@
ln -sf $(SRCTREE)/$(CPUDIR)/spl_minimal.c $@

-$(obj)fsl_law.c:
+$(obj)/fsl_law.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc8xxx/law.c $@

-$(obj)law.c:
+$(obj)/law.c:
@rm -f $@
ln -sf $(SRCTREE)/board/$(BOARDDIR)/law.c $@

-$(obj)nand_boot_fsl_elbc.c:
+$(obj)/nand_boot_fsl_elbc.c:
@rm -f $@
ln -sf $(SRCTREE)/nand_spl/nand_boot_fsl_elbc.c $@

-$(obj)ns16550.c:
+$(obj)/ns16550.c:
@rm -f $@
ln -sf $(SRCTREE)/drivers/serial/ns16550.c $@

-$(obj)resetvec.S:
+$(obj)/resetvec.S:
@rm -f $@
ln -s $(SRCTREE)/$(CPUDIR)/resetvec.S $@

-$(obj)fixed_ivor.S:
+$(obj)/fixed_ivor.S:
@rm -f $@
ln -sf $(SRCTREE)/$(CPUDIR)/fixed_ivor.S $@

-$(obj)start.S: $(obj)fixed_ivor.S
+$(obj)/start.S: $(obj)/fixed_ivor.S
@rm -f $@
ln -sf $(SRCTREE)/$(CPUDIR)/start.S $@

-$(obj)tlb.c:
+$(obj)/tlb.c:
@rm -f $@
ln -sf $(SRCTREE)/$(CPUDIR)/tlb.c $@

-$(obj)tlb_table.c:
+$(obj)/tlb_table.c:
@rm -f $@
ln -sf $(SRCTREE)/board/$(BOARDDIR)/tlb.c $@
-
-ifneq ($(OBJTREE), $(SRCTREE))
-$(obj)nand_boot.c:
- @rm -f $@
- ln -s $(SRCTREE)/nand_spl/board/$(BOARDDIR)/nand_boot.c $@
-endif
-
-#########################################################################
-
-$(obj)%.o: $(obj)%.S
- $(CC) $(AFLAGS) -c -o $@ $<
-
-$(obj)%.o: $(obj)%.c
- $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/nand_spl/board/freescale/p1_p2_rdb/Makefile b/nand_spl/board/freescale/p1_p2_rdb/Makefile
index 5d9953b..f711cf3 100644
--- a/nand_spl/board/freescale/p1_p2_rdb/Makefile
+++ b/nand_spl/board/freescale/p1_p2_rdb/Makefile
@@ -22,8 +22,8 @@ SOBJS = start.o resetvec.o
COBJS = cache.o cpu_init_early.o spl_minimal.o fsl_law.o law.o \
nand_boot.o nand_boot_fsl_elbc.o ns16550.o tlb.o tlb_table.o

-SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS := $(addprefix $(obj)/,$(SOBJS:.o=.S) $(COBJS:.o=.c))
+OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
__OBJS := $(SOBJS) $(COBJS)
LNDIR := $(nandobj)board/$(BOARDDIR)

@@ -45,64 +45,50 @@ $(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)

# create symbolic links for common files

-$(obj)cache.c:
+$(obj)/cache.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/lib/cache.c $@

-$(obj)cpu_init_early.c:
+$(obj)/cpu_init_early.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/cpu_init_early.c $@

-$(obj)spl_minimal.c:
+$(obj)/spl_minimal.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/spl_minimal.c $@

-$(obj)fsl_law.c:
+$(obj)/fsl_law.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc8xxx/law.c $@

-$(obj)law.c:
+$(obj)/law.c:
@rm -f $@
ln -sf $(SRCTREE)/board/$(BOARDDIR)/law.c $@

-$(obj)nand_boot_fsl_elbc.c:
+$(obj)/nand_boot_fsl_elbc.c:
@rm -f $@
ln -sf $(SRCTREE)/nand_spl/nand_boot_fsl_elbc.c $@

-$(obj)ns16550.c:
+$(obj)/ns16550.c:
@rm -f $@
ln -sf $(SRCTREE)/drivers/serial/ns16550.c $@

-$(obj)resetvec.S:
+$(obj)/resetvec.S:
@rm -f $@
ln -s $(SRCTREE)/$(CPUDIR)/resetvec.S $@

-$(obj)fixed_ivor.S:
+$(obj)/fixed_ivor.S:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/fixed_ivor.S $@

-$(obj)start.S: $(obj)fixed_ivor.S
+$(obj)/start.S: $(obj)/fixed_ivor.S
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/start.S $@

-$(obj)tlb.c:
+$(obj)/tlb.c:
@rm -f $@
ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/tlb.c $@

-$(obj)tlb_table.c:
+$(obj)/tlb_table.c:
@rm -f $@
ln -sf $(SRCTREE)/board/$(BOARDDIR)/tlb.c $@
-
-ifneq ($(OBJTREE), $(SRCTREE))
-$(obj)nand_boot.c:
- @rm -f $@
- ln -s $(SRCTREE)/nand_spl/board/$(BOARDDIR)/nand_boot.c $@
-endif
-
-#########################################################################
-
-$(obj)%.o: $(obj)%.S
- $(CC) $(AFLAGS) -c -o $@ $<
-
-$(obj)%.o: $(obj)%.c
- $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/nand_spl/board/sheldon/simpc8313/Makefile b/nand_spl/board/sheldon/simpc8313/Makefile
index 5e83abc..ca45ecd 100644
--- a/nand_spl/board/sheldon/simpc8313/Makefile
+++ b/nand_spl/board/sheldon/simpc8313/Makefile
@@ -19,8 +19,8 @@ SOBJS = start.o ticks.o
COBJS = nand_boot_fsl_elbc.o $(BOARD).o sdram.o ns16550.o spl_minimal.o \
time.o cache.o

-SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS := $(addprefix $(obj)/,$(SOBJS:.o=.S) $(COBJS:.o=.c))
+OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
__OBJS := $(SOBJS) $(COBJS)
LNDIR := $(nandobj)board/$(BOARDDIR)

@@ -41,46 +41,38 @@ $(nandobj)u-boot.lds: $(LDSCRIPT)

# create symbolic links for common files

-$(obj)start.S:
+$(obj)/start.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/mpc83xx/start.S $@

-$(obj)nand_boot_fsl_elbc.c:
+$(obj)/nand_boot_fsl_elbc.c:
@rm -f $@
ln -s $(SRCTREE)/nand_spl/nand_boot_fsl_elbc.c $@

-$(obj)sdram.c:
+$(obj)/sdram.c:
@rm -f $@
ln -s $(SRCTREE)/board/$(BOARDDIR)/sdram.c $@

-$(obj)$(BOARD).c:
+$(obj)/$(BOARD).c:
@rm -f $@
ln -s $(SRCTREE)/board/$(BOARDDIR)/$(BOARD).c $@

-$(obj)ns16550.c:
+$(obj)/ns16550.c:
@rm -f $@
ln -s $(SRCTREE)/drivers/serial/ns16550.c $@

-$(obj)spl_minimal.c:
+$(obj)/spl_minimal.c:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/cpu/mpc83xx/spl_minimal.c $@

-$(obj)cache.c:
+$(obj)/cache.c:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/lib/cache.c $@

-$(obj)time.c:
+$(obj)/time.c:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/lib/time.c $@

-$(obj)ticks.S:
+$(obj)/ticks.S:
@rm -f $@
ln -s $(SRCTREE)/arch/powerpc/lib/ticks.S $@
-
-#########################################################################
-
-$(obj)%.o: $(obj)%.S
- $(CC) $(AFLAGS) -c -o $@ $<
-
-$(obj)%.o: $(obj)%.c
- $(CC) $(CFLAGS) -c -o $@ $<
diff --git a/post/lib_powerpc/fpu/Makefile b/post/lib_powerpc/fpu/Makefile
index a7aa5bc..c720a26 100644
--- a/post/lib_powerpc/fpu/Makefile
+++ b/post/lib_powerpc/fpu/Makefile
@@ -18,7 +18,7 @@ obj-y += darwin-ldouble.o
CFLAGS := $(shell echo $(CFLAGS) | sed s/-msoft-float//)
CFLAGS += -mhard-float -fkeep-inline-functions

-$(addprefix $(obj),$(obj-y)): $(obj)%.o: %.c
+$(addprefix $(obj)/,$(obj-y)): $(obj)/%.o: $(src)/%.c
$(CC) $(ALL_CFLAGS) -o $@.fp $< -c
$(OBJCOPY) -R .gnu.attributes $@.fp $@
rm -f $@.fp
diff --git a/rules.mk b/rules.mk
index b36de4d..e4fd337 100644
--- a/rules.mk
+++ b/rules.mk
@@ -6,41 +6,42 @@
#
#########################################################################

-_depend: $(obj).depend
+_depend: $(obj)/.depend

# Split the source files into two camps: those in the current directory, and
# those somewhere else. For the first camp we want to support CPPFLAGS_<fname>
# and for the second we don't / can't.
-PWD_SRCS := $(filter $(notdir $(SRCS)),$(SRCS))
-OTHER_SRCS := $(filter-out $(notdir $(SRCS)),$(SRCS))
+PWD_SRCS := $(foreach f,$(SRCS), $(if \
+ $(filter $(if $(KBUILD_SRC),$(srctree)/)$(src)/$(notdir $f),$f), $f))
+OTHER_SRCS := $(filter-out $(PWD_SRCS),$(SRCS))

# This is a list of dependency files to generate
-DEPS := $(basename $(patsubst %,$(obj).depend.%,$(PWD_SRCS)))
+DEPS := $(basename $(addprefix $(obj)/.depend., $(notdir $(PWD_SRCS))))

# Join all the dependencies into a single file, in three parts
# 1 .Concatenate all the generated depend files together
# 2. Add in the deps from OTHER_SRCS which we couldn't process
# 3. Add in the HOSTSRCS
-$(obj).depend: $(src)Makefile $(TOPDIR)/config.mk $(DEPS) $(OTHER_SRCS) \
+$(obj)/.depend: $(TOPDIR)/config.mk $(DEPS) $(OTHER_SRCS) \
$(HOSTSRCS)
cat /dev/null $(DEPS) >$@
@for f in $(OTHER_SRCS); do \
g=`basename $$f | sed -e 's/\(.*\)\.[[:alnum:]_]/\1.o/'`; \
- $(CC) -M $(CPPFLAGS) -MQ $(obj)$$g $$f >> $@ ; \
+ $(CC) -M $(CPPFLAGS) -MQ $(obj)/$$g $$f >> $@ ; \
done
@for f in $(HOSTSRCS); do \
g=`basename $$f | sed -e 's/\(.*\)\.[[:alnum:]_]/\1.o/'`; \
- $(HOSTCC) -M $(HOSTCPPFLAGS) -MQ $(obj)$$g $$f >> $@ ; \
+ $(HOSTCC) -M $(HOSTCPPFLAGS) -MQ $(obj)/$$g $$f >> $@ ; \
done

MAKE_DEPEND = $(CC) -M $(CPPFLAGS) $(EXTRA_CPPFLAGS_DEP) \
-MQ $(addsuffix .o,$(obj)$(basename $<)) $< >$@

-$(obj).depend.%: %.c
+$(obj)/.depend.%: $(src)/%.c
$(MAKE_DEPEND)

-$(obj).depend.%: %.S
+$(obj)/.depend.%: $(src)/%.S
$(MAKE_DEPEND)

#########################################################################
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index ca5fd56..6113c13 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -165,9 +165,7 @@ ar-option = $(call try-run, $(AR) rc$(1) "$$TMP",$(1),$(2))
# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=
# Usage:
# $(Q)$(MAKE) $(build)=dir
-#build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
-# temporary
-build := -f $(srctree)/scripts/Makefile.build -C
+build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj

###
# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.modbuiltin obj=
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 7789efa..52a44ff 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -2,17 +2,28 @@
.PHONY: all
all:

+ifeq ($(CONFIG_TPL_BUILD),y)
+ src := $(patsubst tpl/%,%,$(obj))
+else
+ ifeq ($(CONFIG_SPL_BUILD),y)
+ src := $(patsubst spl/%,%,$(obj))
+ else
+ src := $(obj)
+ endif
+endif
+
include $(srctree)/scripts/Kbuild.include
-include $(TOPDIR)/config.mk
+include $(srctree)/config.mk

# variable LIB is used in examples/standalone/Makefile
-__LIB := $(obj)built-in.o
-LIBGCC = $(obj)libgcc.o
+__LIB := $(obj)/built-in.o
+LIBGCC = $(obj)/libgcc.o
SRCS :=
subdir-y :=
obj-dirs :=

-include Makefile
+kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
+include $(kbuild-dir)/Makefile

# Do not include host rules unless needed
ifneq ($(hostprogs-y)$(hostprogs-m),)
@@ -28,31 +39,37 @@ lib-y := $(sort $(lib-y))
subdir-y += $(patsubst %/,%,$(filter %/, $(obj-y)))
obj-y := $(patsubst %/, %/built-in.o, $(obj-y))
subdir-obj-y := $(filter %/built-in.o, $(obj-y))
-subdir-obj-y := $(addprefix $(obj),$(subdir-obj-y))
+subdir-obj-y := $(addprefix $(obj)/,$(subdir-obj-y))
+
+SRCS += $(obj-y:.o=.c) $(obj-y:.o=.S) $(lib-y:.o=.c) \
+ $(lib-y:.o=.S) $(extra-y:.o=.c) $(extra-y:.o=.S)

-SRCS += $(wildcard $(obj-y:.o=.c) $(obj-y:.o=.S) $(lib-y:.o=.c) \
- $(lib-y:.o=.S) $(extra-y:.o=.c) $(extra-y:.o=.S))
-OBJS := $(addprefix $(obj),$(obj-y))
+SRCS := $(addprefix $(if $(KBUILD_SRC),$(srctree)/$(src)/,$(src)/),$(SRCS))
+SRCS := $(wildcard $(SRCS))
+
+OBJS := $(addprefix $(obj)/,$(obj-y))

# $(obj-dirs) is a list of directories that contain object files

obj-dirs += $(dir $(OBJS))

+_dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
+
# Create directories for object files if directory does not exist
# Needed when obj-y := dir/file.o syntax is used
_dummy := $(foreach d,$(obj-dirs), $(shell [ -d $(d) ] || mkdir -p $(d)))

-LGOBJS := $(addprefix $(obj),$(sort $(lib-y)))
+LGOBJS := $(addprefix $(obj)/,$(sort $(lib-y)))

-all: $(__LIB) $(addprefix $(obj),$(extra-y) $(always)) $(subdir-y)
+all: $(__LIB) $(addprefix $(obj)/,$(extra-y) $(always)) $(subdir-y)

-$(__LIB): $(obj).depend $(OBJS)
+$(__LIB): $(obj)/.depend $(OBJS)
$(call cmd_link_o_target, $(OBJS))

ifneq ($(strip $(lib-y)),)
all: $(LIBGCC)

-$(LIBGCC): $(obj).depend $(LGOBJS)
+$(LIBGCC): $(obj)/.depend $(LGOBJS)
$(call cmd_link_o_target, $(LGOBJS))
endif

@@ -63,7 +80,7 @@ endif

ifneq ($(subdir-y),)
$(subdir-y): FORCE
- $(MAKE) -C $@ -f $(TOPDIR)/scripts/Makefile.build
+ $(MAKE) $(build)=$(obj)/$@
endif

#########################################################################
@@ -78,18 +95,18 @@ ALL_CFLAGS += $(EXTRA_CPPFLAGS)
# See rules.mk
EXTRA_CPPFLAGS_DEP = $(CPPFLAGS_$(BCURDIR)/$(addsuffix .o,$(basename $<))) \
$(CPPFLAGS_$(BCURDIR))
-$(obj)%.s: %.S
+$(obj)/%.s: $(src)/%.S
$(CPP) $(ALL_AFLAGS) -o $@ $<
-$(obj)%.o: %.S
+$(obj)/%.o: $(src)/%.S
$(CC) $(ALL_AFLAGS) -o $@ $< -c
-$(obj)%.o: %.c
+$(obj)/%.o: $(src)/%.c
ifneq ($(CHECKSRC),0)
$(CHECK) $(CHECKFLAGS) $(ALL_CFLAGS) $<
endif
$(CC) $(ALL_CFLAGS) -o $@ $< -c
-$(obj)%.i: %.c
+$(obj)/%.i: $(src)/%.c
$(CPP) $(ALL_CFLAGS) -o $@ $< -c
-$(obj)%.s: %.c
+$(obj)/%.s: $(src)/%.c
$(CC) $(ALL_CFLAGS) -o $@ $< -c -S

# If the list of objects to link is empty, just create an empty built-in.o
@@ -99,11 +116,11 @@ cmd_link_o_target = $(if $(strip $1),\

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

-# defines $(obj).depend target
+# defines $(obj)/.depend target

include $(TOPDIR)/rules.mk

-sinclude $(obj).depend
+sinclude $(obj)/.depend

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

diff --git a/scripts/Makefile.host.tmp b/scripts/Makefile.host.tmp
index 4b57846..53fe930 100644
--- a/scripts/Makefile.host.tmp
+++ b/scripts/Makefile.host.tmp
@@ -21,11 +21,11 @@ host-objdirs += $(foreach f,$(host-cmulti), \

host-objdirs := $(strip $(sort $(filter-out ./,$(host-objdirs))))

-__hostprogs := $(addprefix $(obj),$(__hostprogs))
-host-csingle := $(addprefix $(obj),$(host-csingle))
-host-cmulti := $(addprefix $(obj),$(host-cmulti))
-host-cobjs := $(addprefix $(obj),$(host-cobjs))
-host-objdirs := $(addprefix $(obj),$(host-objdirs))
+__hostprogs := $(addprefix $(obj)/,$(__hostprogs))
+host-csingle := $(addprefix $(obj)/,$(host-csingle))
+host-cmulti := $(addprefix $(obj)/,$(host-cmulti))
+host-cobjs := $(addprefix $(obj)/,$(host-cobjs))
+host-objdirs := $(addprefix $(obj)/,$(host-objdirs))

obj-dirs += $(host-objdirs)

@@ -49,13 +49,13 @@ hostc_flags = $(__hostc_flags)
#####
# Compile programs on the host

-$(host-csingle): $(obj)%: %.c
+$(host-csingle): $(obj)/%: $(src)/%.c
$(HOSTCC) $(HOSTCFLAGS) $(HOST_EXTRACFLAGS) $(HOSTLDFLAGS) $(HOSTCFLAGS_$(@F)) $(HOSTCFLAGS_$(BCURDIR)) -o $@ $<

-$(host-cmulti): $(obj)%: $(host-cobjs)
- $(HOSTCC) $(HOSTLDFLAGS) -o $@ $(addprefix $(obj),$($(@F)-objs)) $(HOSTLOADLIBES_$(@F))
+$(host-cmulti): $(obj)/%: $(host-cobjs)
+ $(HOSTCC) $(HOSTLDFLAGS) -o $@ $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F))

-$(host-cobjs): $(obj)%.o: %.c
+$(host-cobjs): $(obj)/%.o: $(src)/%.c
$(HOSTCC) $(HOSTCFLAGS) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS_$(@F)) $(HOSTCFLAGS_$(BCURDIR)) -o $@ $< -c

targets += $(host-csingle) $(host-cmulti) $(host-cobjs)
diff --git a/spl/Makefile b/spl/Makefile
index 63af4ed..819db87 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -14,6 +14,11 @@
# Based on top-level Makefile.
#

+src := $(obj)
+
+# Create output directory if not already present
+_dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
+
include $(srctree)/scripts/Kbuild.include

CONFIG_SPL_BUILD := y
@@ -37,14 +42,6 @@ endif

include $(TOPDIR)/config.mk

-# We want the final binaries in this directory
-ifeq ($(CONFIG_TPL_BUILD),y)
-obj := $(OBJTREE)/tpl/
-SPLTREE := $(TPLTREE)
-else
-obj := $(OBJTREE)/spl/
-endif
-
HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(SRCTREE)/board/$(VENDOR)/common/Makefile),y,n)

ifdef CONFIG_SPL_START_S_PATH
@@ -112,11 +109,13 @@ PLATFORM_LIBGCC = $(SPLTREE)/arch/$(ARCH)/lib/libgcc.o
PLATFORM_LIBS := $(filter-out %/libgcc.o, $(filter-out -lgcc, $(PLATFORM_LIBS))) $(PLATFORM_LIBGCC)
endif

-START := $(addprefix $(SPLTREE)/,$(head-y))
-LIBS := $(addprefix $(SPLTREE)/,$(sort $(LIBS-y)))
+LIBS-y := $(sort $(LIBS-y))
+
+__START := $(head-y)
+__LIBS := $(LIBS-y)

-__START := $(subst $(obj),,$(START))
-__LIBS := $(subst $(obj),,$(LIBS))
+START := $(addprefix $(obj)/,$(head-y))
+LIBS := $(addprefix $(obj)/,$(LIBS-y))

# Linker Script
ifdef CONFIG_SPL_LDSCRIPT
@@ -147,21 +146,21 @@ LDPPFLAGS += \
$(shell $(LD) --version | \
sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')

-$(OBJTREE)/MLO: $(obj)u-boot-spl.bin
+$(OBJTREE)/MLO: $(obj)/u-boot-spl.bin
$(OBJTREE)/tools/mkimage -T omapimage \
-a $(CONFIG_SPL_TEXT_BASE) -d $< $@

-$(OBJTREE)/MLO.byteswap: $(obj)u-boot-spl.bin
+$(OBJTREE)/MLO.byteswap: $(obj)/u-boot-spl.bin
$(OBJTREE)/tools/mkimage -T omapimage -n byteswap \
-a $(CONFIG_SPL_TEXT_BASE) -d $< $@

-$(OBJTREE)/SPL : $(obj)u-boot-spl.bin depend
- $(MAKE) $(build) $(SRCTREE)/arch/arm/imx-common $@
+$(objtree)/SPL : $(obj)/u-boot-spl.bin depend
+ $(MAKE) $(build)=spl/arch/arm/imx-common $@

-ALL-y += $(obj)$(SPL_BIN).bin
+ALL-y += $(obj)/$(SPL_BIN).bin

ifdef CONFIG_SAMSUNG
-ALL-y += $(obj)$(BOARD)-spl.bin
+ALL-y += $(obj)/$(BOARD)-spl.bin
endif

all: $(ALL-y)
@@ -172,16 +171,16 @@ VAR_SIZE_PARAM = --vs
else
VAR_SIZE_PARAM =
endif
-$(obj)$(BOARD)-spl.bin: $(obj)u-boot-spl.bin
+$(obj)/$(BOARD)-spl.bin: $(obj)/u-boot-spl.bin
$(if $(wildcard $(OBJTREE)/spl/board/samsung/$(BOARD)/tools/mk$(BOARD)spl),\
$(OBJTREE)/spl/board/samsung/$(BOARD)/tools/mk$(BOARD)spl,\
$(OBJTREE)/tools/mkexynosspl) $(VAR_SIZE_PARAM) $< $@
endif

-$(obj)$(SPL_BIN).bin: $(obj)$(SPL_BIN)
+$(obj)/$(SPL_BIN).bin: $(obj)/$(SPL_BIN)
$(OBJCOPY) $(OBJCFLAGS) $(SPL_OBJCFLAGS) -O binary $< $@

-LDFLAGS_$(SPL_BIN) += -T $(obj)u-boot-spl.lds $(LDFLAGS_FINAL)
+LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL)
ifneq ($(CONFIG_SPL_TEXT_BASE),)
LDFLAGS_$(SPL_BIN) += -Ttext $(CONFIG_SPL_TEXT_BASE)
endif
@@ -191,19 +190,19 @@ GEN_UBOOT = \
--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
-Map $(SPL_BIN).map -o $(SPL_BIN)

-$(obj)$(SPL_BIN): depend $(START) $(LIBS) $(obj)u-boot-spl.lds
+$(obj)/$(SPL_BIN): depend $(START) $(LIBS) $(obj)/u-boot-spl.lds
$(GEN_UBOOT)

$(START):
@:

$(LIBS): depend
- $(MAKE) $(build) $(SRCTREE)$(dir $(subst $(SPLTREE),,$@))
+ $(MAKE) $(build)=$(patsubst %/,%,$(dir $@))

-$(obj)u-boot-spl.lds: $(LDSCRIPT) depend
+$(obj)/u-boot-spl.lds: $(LDSCRIPT) depend
$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(obj). -ansi -D__ASSEMBLY__ -P - < $< > $@

-depend: $(obj).depend
+depend: $(obj)/.depend
.PHONY: depend

# defines $(obj).depend target
diff --git a/tools/Makefile b/tools/Makefile
index 21341b7..9b19dcb 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -142,8 +142,8 @@ HOSTCFLAGS_sha1.o := -pedantic
always := $(hostprogs-y)

# Generated LCD/video logo
-LOGO_H = $(OBJTREE)/include/bmp_logo.h
-LOGO_DATA_H = $(OBJTREE)/include/bmp_logo_data.h
+LOGO_H = $(objtree)/include/bmp_logo.h
+LOGO_DATA_H = $(objtree)/include/bmp_logo_data.h
LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H)
LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_DATA_H)
LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H)
@@ -151,14 +151,14 @@ LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_DATA_H)

# Generic logo
ifeq ($(LOGO_BMP),)
-LOGO_BMP= logos/denx.bmp
+LOGO_BMP= $(srctree)/$(src)/logos/denx.bmp

# Use board logo and fallback to vendor
ifneq ($(wildcard logos/$(BOARD).bmp),)
-LOGO_BMP= logos/$(BOARD).bmp
+LOGO_BMP= $(srctree)/$(src)/logos/$(BOARD).bmp
else
ifneq ($(wildcard logos/$(VENDOR).bmp),)
-LOGO_BMP= logos/$(VENDOR).bmp
+LOGO_BMP= $(srctree)/$(src)/logos/$(VENDOR).bmp
endif
endif

@@ -187,8 +187,8 @@ all: $(LOGO-y)

subdir-y := kernel-doc

-$(LOGO_H): $(obj)bmp_logo $(LOGO_BMP)
- $(obj)./bmp_logo --gen-info $(LOGO_BMP) > $@
+$(LOGO_H): $(obj)/bmp_logo $(LOGO_BMP)
+ $(obj)/bmp_logo --gen-info $(LOGO_BMP) > $@

-$(LOGO_DATA_H): $(obj)bmp_logo $(LOGO_BMP)
- $(obj)./bmp_logo --gen-data $(LOGO_BMP) > $@
+$(LOGO_DATA_H): $(obj)/bmp_logo $(LOGO_BMP)
+ $(obj)/bmp_logo --gen-data $(LOGO_BMP) > $@
--
1.8.3.2