Skip to content

Commit

Permalink
kbuild: change out-of-tree build
Browse files Browse the repository at this point in the history
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 <[email protected]>
Tested-by: Gerhard Sittig <[email protected]>
  • Loading branch information
masahir0y authored and trini committed Feb 19, 2014
1 parent d958002 commit 9e41403
Show file tree
Hide file tree
Showing 64 changed files with 612 additions and 744 deletions.
6 changes: 4 additions & 2 deletions MAKEALL
Original file line number Diff line number Diff line change
Expand Up @@ -674,8 +674,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
Expand All @@ -686,6 +684,10 @@ build_target() {
MAKE=make
fi
if [ "${output_dir}" != "." ] ; then
MAKE="${MAKE} O=${output_dir}"
fi
${MAKE} distclean >/dev/null
${MAKE} -s ${target}_config
Expand Down
Loading

0 comments on commit 9e41403

Please sign in to comment.