mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-29 08:00:26 +09:00
9e4140329e
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>
48 lines
1.6 KiB
Makefile
48 lines
1.6 KiB
Makefile
#
|
|
# (C) Copyright 2006-2013
|
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0+
|
|
#
|
|
#########################################################################
|
|
|
|
_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 := $(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 $(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: $(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 >> $@ ; \
|
|
done
|
|
@for f in $(HOSTSRCS); do \
|
|
g=`basename $$f | sed -e 's/\(.*\)\.[[:alnum:]_]/\1.o/'`; \
|
|
$(HOSTCC) -M $(HOSTCPPFLAGS) -MQ $(obj)/$$g $$f >> $@ ; \
|
|
done
|
|
|
|
MAKE_DEPEND = $(CC) -M $(CPPFLAGS) $(EXTRA_CPPFLAGS_DEP) \
|
|
-MQ $(addsuffix .o,$(obj)$(basename $<)) $< >$@
|
|
|
|
|
|
$(obj)/.depend.%: $(src)/%.c
|
|
$(MAKE_DEPEND)
|
|
|
|
$(obj)/.depend.%: $(src)/%.S
|
|
$(MAKE_DEPEND)
|
|
|
|
#########################################################################
|