• Masahiro Yamada's avatar
    kbuild: resolve symlinks for O= properly · 7beba04e
    Masahiro Yamada authored
    Currently, Kbuild follows the logical chain of directories for the O=
    option, just like 'cd' (or 'realpath --logical') does.
    
    Example:
    
        $ mkdir -p /tmp/a /tmp/x/y
        $ ln -s /tmp/x/y /tmp/a/b
        $ realpath /tmp/a/b/..
        /tmp/x
        $ realpath --logical /tmp/a/b/..
        /tmp/a
        $ make O=/tmp/a/b/.. defconfig
        make[1]: Entering directory '/tmp/a'
          [snip]
        make[1]: Leaving directory '/tmp/a'
    
    'make O=/tmp/a/b/.. defconfig' creates the kernel configuration in
    /tmp/a instead of /tmp/x despite /tmp/a/b/.. resolves to /tmp/x.
    
    This is because Kbuild internally uses the 'cd ... && pwd' for the
    path resolution, but this behavior is not predictable for users.
    Additionally, it is not consistent with how the Kbuild handles the
    M= option or GNU Make works with 'make -C /tmp/a/b/..'.
    
    Using the physical directory structure for the O= option seems more
    reasonable.
    
    The comment says "expand a shell special character '~'", but it has
    already been expanded to the home directory in the command line.
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: default avatarNicolas Schier <n.schier@avm.de>
    7beba04e
Makefile 65.7 KB