# git rev-parse -q --verify d1ce1d4d0c05325ceda8a4125ca1f0c11e23f5f6^{commit} d1ce1d4d0c05325ceda8a4125ca1f0c11e23f5f6 already have revision, skipping fetch # git checkout -q -f -B kisskb d1ce1d4d0c05325ceda8a4125ca1f0c11e23f5f6 # git clean -qxdf # < git log -1 # commit d1ce1d4d0c05325ceda8a4125ca1f0c11e23f5f6 # Author: Masahiro Yamada # Date: Sat Jan 28 18:24:23 2023 +0900 # # kbuild: remove --include-dir MAKEFLAG from top Makefile # # I added $(srctree)/ to some included Makefiles in the following commits: # # - 3204a7fb98a3 ("kbuild: prefix $(srctree)/ to some included Makefiles") # - d82856395505 ("kbuild: do not require sub-make for separate output tree builds") # # They were a preparation for removing --include-dir flag. # # I have never thought --include-dir useful. Rather, it _is_ harmful. # # For example, run the following commands: # # $ make -s ARCH=x86 mrproper defconfig # $ make ARCH=arm O=foo dtbs # make[1]: Entering directory '/tmp/linux/foo' # HOSTCC scripts/basic/fixdep # Error: kernelrelease not valid - run 'make prepare' to update it # UPD include/config/kernel.release # make[1]: Leaving directory '/tmp/linux/foo' # # The first command configures the source tree for x86. The next command # tries to build ARM device trees in the separate foo/ directory - this # must stop because the directory foo/ has not been configured yet. # # However, due to --include-dir=$(abs_srctree), the top Makefile includes # the wrong include/config/auto.conf from the source tree and continues # building. Kbuild traverses the directory tree, but of course it does # not work correctly. The Error message is also pointless - 'make prepare' # does not help at all for fixing the issue. # # This commit fixes more arch Makefile, and finally removes --include-dir # from the top Makefile. # # There are more breakages under drivers/, but I do not volunteer to fix # them all. I just moved --include-dir to drivers/Makefile. # # With this commit, the second command will stop with a sensible message. # # $ make -s ARCH=x86 mrproper defconfig # $ make ARCH=arm O=foo dtbs # make[1]: Entering directory '/tmp/linux/foo' # SYNC include/config/auto.conf.cmd # *** # *** The source tree is not clean, please run 'make ARCH=arm mrproper' # *** in /tmp/linux # *** # make[2]: *** [../Makefile:646: outputmakefile] Error 1 # /tmp/linux/Makefile:770: include/config/auto.conf.cmd: No such file or directory # make[1]: *** [/tmp/linux/Makefile:793: include/config/auto.conf.cmd] Error 2 # make[1]: Leaving directory '/tmp/linux/foo' # make: *** [Makefile:226: __sub-make] Error 2 # # Signed-off-by: Masahiro Yamada # < /opt/cross/kisskb/korg/gcc-11.1.0-nolibc/x86_64-linux/bin/x86_64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-11.1.0-nolibc/x86_64-linux/bin/x86_64-linux-ld --version # < git log --format=%s --max-count=1 d1ce1d4d0c05325ceda8a4125ca1f0c11e23f5f6 # < make -s -j 160 ARCH=x86 O=/kisskb/build/kbuild_x86_64_defconfig_x86_64-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.1.0-nolibc/x86_64-linux/bin/x86_64-linux- x86_64_defconfig # < make -s -j 160 ARCH=x86 O=/kisskb/build/kbuild_x86_64_defconfig_x86_64-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.1.0-nolibc/x86_64-linux/bin/x86_64-linux- help # make -s -j 160 ARCH=x86 O=/kisskb/build/kbuild_x86_64_defconfig_x86_64-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.1.0-nolibc/x86_64-linux/bin/x86_64-linux- olddefconfig # make -s -j 160 ARCH=x86 O=/kisskb/build/kbuild_x86_64_defconfig_x86_64-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.1.0-nolibc/x86_64-linux/bin/x86_64-linux- Completed OK # rm -rf /kisskb/build/kbuild_x86_64_defconfig_x86_64-gcc11 # Build took: 0:03:46.561940