# git rev-parse -q --verify ab6aaea6835b5d6da15f4d14d4af8b1a9a1c609b^{commit} ab6aaea6835b5d6da15f4d14d4af8b1a9a1c609b already have revision, skipping fetch # git checkout -q -f -B kisskb ab6aaea6835b5d6da15f4d14d4af8b1a9a1c609b # git clean -qxdf # < git log -1 # commit ab6aaea6835b5d6da15f4d14d4af8b1a9a1c609b # Author: Masahiro Yamada # Date: Thu Jul 4 22:13:58 2024 +0900 # # kbuild: avoid build error when single DTB is turned into composite DTB # # As commit afa974b77128 ("kbuild: add real-prereqs shorthand for # $(filter-out FORCE,$^)") explained, $(real-prereqs) is not just a list # of objects when linking a multi-object module. If a single-object module # is turned into a multi-object module, $^ (and therefore $(real-prereqs) # as well) contains header files recorded in the *.cmd file. Such headers # must be filtered out. # # Now that a DTB can be built either from a single source or multiple # source files, the same issue can occur. # # Consider the following scenario: # # First, foo.dtb is implemented as a single-blob device tree. # # The code looks something like this: # # [Sample Code 1] # # Makefile: # # dtb-y += foo.dtb # # foo.dts: # # #include # /dts-v1/; # / { }; # # When it is compiled, .foo.dtb.cmd records that foo.dtb depends on # scripts/dtc/include-prefixes/dt-bindings/gpio/gpio.h. # # Later, foo.dtb is split into a base and an overlay. The code looks # something like this: # # [Sample Code 2] # # Makefile: # # dtb-y += foo.dtb # foo-dtbs := foo-base.dtb foo-addon.dtbo # # foo-base.dts: # # #include # /dts-v1/; # / { }; # # foo-addon.dtso: # # /dts-v1/; # /plugin/; # / { }; # # If you rebuild foo.dtb without 'make clean', you will get this error: # # Overlay 'scripts/dtc/include-prefixes/dt-bindings/gpio/gpio.h' is incomplete # # $(real-prereqs) contains not only foo-base.dtb and foo-addon.dtbo but # also scripts/dtc/include-prefixes/dt-bindings/gpio/gpio.h, which is # passed to scripts/dtc/fdtoverlay. # # Fixes: 15d16d6dadf6 ("kbuild: Add generic rule to apply fdtoverlay") # Signed-off-by: Masahiro Yamada # < /opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 ab6aaea6835b5d6da15f4d14d4af8b1a9a1c609b # make -s -j 160 ARCH=powerpc O=/kisskb/build/kbuild_ppc64le_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- ppc64le_defconfig Using /kisskb/src/arch/powerpc/configs/ppc64_defconfig as base Merging /kisskb/src/arch/powerpc/configs/le.config # # merged configuration written to .config (needs make) # # < make -s -j 160 ARCH=powerpc O=/kisskb/build/kbuild_ppc64le_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- help # make -s -j 160 ARCH=powerpc O=/kisskb/build/kbuild_ppc64le_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- olddefconfig # make -s -j 160 ARCH=powerpc O=/kisskb/build/kbuild_ppc64le_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- Completed OK # rm -rf /kisskb/build/kbuild_ppc64le_defconfig_powerpc-gcc5 # Build took: 0:02:13.903122