• Masahiro Yamada's avatar
    kbuild: use $(src) instead of $(srctree)/$(src) for source directory · b1992c37
    Masahiro Yamada authored
    Kbuild conventionally uses $(obj)/ for generated files, and $(src)/ for
    checked-in source files. It is merely a convention without any functional
    difference. In fact, $(obj) and $(src) are exactly the same, as defined
    in scripts/Makefile.build:
    
        src := $(obj)
    
    When the kernel is built in a separate output directory, $(src) does
    not accurately reflect the source directory location. While Kbuild
    resolves this discrepancy by specifying VPATH=$(srctree) to search for
    source files, it does not cover all cases. For example, when adding a
    header search path for local headers, -I$(srctree)/$(src) is typically
    passed to the compiler.
    
    This introduces inconsistency between upstream and downstream Makefiles
    because $(src) is used instead of $(srctree)/$(src) for the latter.
    
    To address this inconsistency, this commit changes the semantics of
    $(src) so that it always points to the directory in the source tree.
    
    Going forward, the variables used in Makefiles will have the following
    meanings:
    
      $(obj)     - directory in the object tree
      $(src)     - directory in the source tree  (changed by this commit)
      $(objtree) - the top of the kernel object tree
      $(srctree) - the top of the kernel source tree
    
    Consequently, $(srctree)/$(src) in upstream Makefiles need to be replaced
    with $(src).
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
    b1992c37
Makefile 18.7 KB