Skip to content
  • Masahiro Yamada's avatar
    kbuild: change out-of-tree build · 9e414032
    Masahiro Yamada authored and Tom Rini's avatar Tom Rini committed
    
    
    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: default avatarMasahiro Yamada <yamada.m@jp.panasonic.com>
    Tested-by: default avatarGerhard Sittig <gsi@denx.de>
    9e414032