[U-Boot] [PATCH 1/2] kbuild: make arch-dtbs target PHONY

From: Stephen Warren swarren@nvidia.com
Without this, the arch-dtbs target only gets evaluated when building U-Boot the first time, not when re-building (incrementally building) U-Boot. Thus incremental builds ignore changes to DTB files.
Signed-off-by: Stephen Warren swarren@nvidia.com --- dts/Makefile | 1 + 1 file changed, 1 insertion(+)
diff --git a/dts/Makefile b/dts/Makefile index a7a604303cc6..4970223b3d2e 100644 --- a/dts/Makefile +++ b/dts/Makefile @@ -40,6 +40,7 @@ endif echo >&2; \ /bin/false)
+PHONY += arch-dtbs arch-dtbs: $(Q)$(MAKE) $(build)=$(ARCH_PATH) dtbs

From: Stephen Warren swarren@nvidia.com
*.dts are processed using a custom command, then the C pre-processor is run on them, then they are compiled using dtc. Thus, the dependency files generated by both cpp and dtc reference a temporary file name rather than the actual source file. While this information isn't used for any purpose by the build system, and hence this causes no functional issue, it does cause the dependency files to contain invalid and confusing data, which is unhelpful while debugging build problems. Fix this using sed.
Signed-off-by: Stephen Warren swarren@nvidia.com --- scripts/Makefile.lib | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 704d644f6faa..ec5c41ec5616 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -301,7 +301,8 @@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ $(DTC) -O dtb -o $@ -b 0 \ -i $(dir $<) $(DTC_FLAGS) \ -d $(depfile).dtc.tmp $(dtc-tmp) ; \ - cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) + cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) ; \ + sed -i "s:$(pre-tmp):$(<):" $(depfile)
$(obj)/%.dtb: $(src)/%.dts FORCE $(call if_changed_dep,dtc)

On Wed, Feb 27, 2019 at 4:20 AM Stephen Warren swarren@wwwdotorg.org wrote:
From: Stephen Warren swarren@nvidia.com
*.dts are processed using a custom command, then the C pre-processor is run on them, then they are compiled using dtc. Thus, the dependency files generated by both cpp and dtc reference a temporary file name rather than the actual source file. While this information isn't used for any purpose by the build system,
Right, not used in U-Boot.
The 'source_*' is only used by scripts/mod/sumversion.c in Linux.
Anyway, the .*.cmd files will look better.
Reviewed-by: Masahiro Yamada yamada.masahiro@socionext.com
and hence this causes no functional issue, it does cause the dependency files to contain invalid and confusing data, which is unhelpful while debugging build problems. Fix this using sed.
Signed-off-by: Stephen Warren swarren@nvidia.com

On Tue, Feb 26, 2019 at 12:20:26PM -0700, Stephen Warren wrote:
From: Stephen Warren swarren@nvidia.com
*.dts are processed using a custom command, then the C pre-processor is run on them, then they are compiled using dtc. Thus, the dependency files generated by both cpp and dtc reference a temporary file name rather than the actual source file. While this information isn't used for any purpose by the build system, and hence this causes no functional issue, it does cause the dependency files to contain invalid and confusing data, which is unhelpful while debugging build problems. Fix this using sed.
Signed-off-by: Stephen Warren swarren@nvidia.com Reviewed-by: Masahiro Yamada yamada.masahiro@socionext.com
Applied to u-boot/master, thanks!

On Wed, Feb 27, 2019 at 4:21 AM Stephen Warren swarren@wwwdotorg.org wrote:
From: Stephen Warren swarren@nvidia.com
Without this, the arch-dtbs target only gets evaluated when building U-Boot the first time, not when re-building (incrementally building) U-Boot. Thus incremental builds ignore changes to DTB files.
Really?
I tested "touch DT, then incremental build", and it correctly re-compiled device tree.
I attached the log of the following build sequence:
[1] make jetson-tk1_defconfig [2] make CROSS_COMPILE=arm-linux-gnueabihf- [3] touch arch/arm/dts/tegra124-jetson-tk1.dts [4] make CROSS_COMPILE=arm-linux-gnueabihf-
masahiro@pug:~/ref/u-boot$ git log --oneline -1 b3820ba Merge tag 'efi-2019-04-rc3' of https://github.com/xypron2/u-boot masahiro@pug:~/ref/u-boot$ make jetson-tk1_defconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o YACC scripts/kconfig/zconf.tab.c LEX scripts/kconfig/zconf.lex.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf # # configuration written to .config # masahiro@pug:~/ref/u-boot$ make CROSS_COMPILE=arm-linux-gnueabihf- scripts/kconfig/conf --syncconfig Kconfig CHK include/config.h UPD include/config.h CFG u-boot.cfg GEN include/autoconf.mk GEN include/autoconf.mk.dep CFG spl/u-boot.cfg GEN spl/include/autoconf.mk CHK include/config/uboot.release UPD include/config/uboot.release CHK include/generated/version_autogenerated.h UPD include/generated/version_autogenerated.h CHK include/generated/timestamp_autogenerated.h UPD include/generated/timestamp_autogenerated.h CC lib/asm-offsets.s CHK include/generated/generic-asm-offsets.h UPD include/generated/generic-asm-offsets.h CC arch/arm/lib/asm-offsets.s CHK include/generated/asm-offsets.h UPD include/generated/asm-offsets.h SHIPPED scripts/dtc/pylibfdt/libfdt.i PYMOD scripts/dtc/pylibfdt/_libfdt.so HOSTCC scripts/dtc/dtc.o HOSTCC scripts/dtc/flattree.o HOSTCC scripts/dtc/fstree.o HOSTCC scripts/dtc/data.o HOSTCC scripts/dtc/livetree.o HOSTCC scripts/dtc/treesource.o HOSTCC scripts/dtc/srcpos.o HOSTCC scripts/dtc/checks.o HOSTCC scripts/dtc/util.o LEX scripts/dtc/dtc-lexer.lex.c YACC scripts/dtc/dtc-parser.tab.h HOSTCC scripts/dtc/dtc-lexer.lex.o YACC scripts/dtc/dtc-parser.tab.c HOSTCC scripts/dtc/dtc-parser.tab.o HOSTLD scripts/dtc/dtc HOSTCC tools/gen_eth_addr HOSTCC tools/gen_ethaddr_crc.o WRAP tools/lib/crc8.c HOSTCC tools/lib/crc8.o HOSTLD tools/gen_ethaddr_crc HOSTCC tools/img2srec HOSTCC tools/mkenvimage.o HOSTCC tools/os_support.o WRAP tools/lib/crc32.c HOSTCC tools/lib/crc32.o HOSTLD tools/mkenvimage HOSTCC tools/aisimage.o HOSTCC tools/atmelimage.o WRAP tools/common/bootm.c HOSTCC tools/common/bootm.o HOSTCC tools/default_image.o WRAP tools/lib/fdtdec_common.c HOSTCC tools/lib/fdtdec_common.o WRAP tools/lib/fdtdec.c HOSTCC tools/lib/fdtdec.o HOSTCC tools/fit_common.o HOSTCC tools/fit_image.o WRAP tools/common/image-fit.c HOSTCC tools/common/image-fit.o HOSTCC tools/image-host.o WRAP tools/common/image.c HOSTCC tools/common/image.o HOSTCC tools/imagetool.o HOSTCC tools/imximage.o HOSTCC tools/imx8image.o HOSTCC tools/imx8mimage.o HOSTCC tools/kwbimage.o WRAP tools/lib/md5.c HOSTCC tools/lib/md5.o HOSTCC tools/lpc32xximage.o HOSTCC tools/mxsimage.o HOSTCC tools/omapimage.o HOSTCC tools/pblimage.o HOSTCC tools/pbl_crc32.o HOSTCC tools/vybridimage.o HOSTCC tools/stm32image.o WRAP tools/lib/rc4.c HOSTCC tools/lib/rc4.o HOSTCC tools/rkcommon.o HOSTCC tools/rkimage.o HOSTCC tools/rksd.o HOSTCC tools/rkspi.o HOSTCC tools/socfpgaimage.o WRAP tools/lib/crc16.c HOSTCC tools/lib/crc16.o WRAP tools/lib/sha1.c HOSTCC tools/lib/sha1.o WRAP tools/lib/sha256.c HOSTCC tools/lib/sha256.o WRAP tools/common/hash.c HOSTCC tools/common/hash.o HOSTCC tools/ublimage.o HOSTCC tools/zynqimage.o HOSTCC tools/zynqmpimage.o HOSTCC tools/zynqmpbif.o HOSTCC tools/libfdt/fdt.o HOSTCC tools/libfdt/fdt_wip.o HOSTCC tools/libfdt/fdt_sw.o HOSTCC tools/libfdt/fdt_rw.o HOSTCC tools/libfdt/fdt_strerror.o HOSTCC tools/libfdt/fdt_empty_tree.o HOSTCC tools/libfdt/fdt_addresses.o HOSTCC tools/libfdt/fdt_overlay.o WRAP tools/lib/libfdt/fdt_ro.c HOSTCC tools/lib/libfdt/fdt_ro.o WRAP tools/lib/libfdt/fdt_region.c HOSTCC tools/lib/libfdt/fdt_region.o HOSTCC tools/gpimage.o HOSTCC tools/gpimage-common.o HOSTCC tools/mtk_image.o HOSTCC tools/dumpimage.o HOSTLD tools/dumpimage HOSTCC tools/mkimage.o HOSTLD tools/mkimage HOSTCC tools/proftool HOSTCC tools/fdtgrep.o HOSTLD tools/fdtgrep LD arch/arm/cpu/built-in.o CC arch/arm/cpu/armv7/cache_v7.o AS arch/arm/cpu/armv7/cache_v7_asm.o CC arch/arm/cpu/armv7/cpu.o CC arch/arm/cpu/armv7/cp15.o CC arch/arm/cpu/armv7/syslib.o AS arch/arm/cpu/armv7/sctlr.o CC arch/arm/cpu/armv7/exception_level.o AS arch/arm/cpu/armv7/lowlevel_init.o AS arch/arm/cpu/armv7/nonsec_virt.o CC arch/arm/cpu/armv7/virt-v7.o CC arch/arm/cpu/armv7/virt-dt.o AS arch/arm/cpu/armv7/psci.o CC arch/arm/cpu/armv7/psci-common.o LD arch/arm/cpu/armv7/built-in.o AS arch/arm/cpu/armv7/start.o AS arch/arm/lib/vectors.o AS arch/arm/lib/crt0.o AS arch/arm/lib/setjmp.o AS arch/arm/lib/relocate.o CC arch/arm/lib/bootm-fdt.o CC arch/arm/lib/bootm.o CC arch/arm/lib/zimage.o AS arch/arm/lib/memset.o AS arch/arm/lib/memcpy.o CC arch/arm/lib/sections.o CC arch/arm/lib/stack.o CC arch/arm/lib/interrupts.o CC arch/arm/lib/reset.o CC arch/arm/lib/cache.o CC arch/arm/lib/cache-cp15.o CC arch/arm/lib/psci-dt.o LD arch/arm/lib/built-in.o AS arch/arm/lib/ashldi3.o AS arch/arm/lib/ashrdi3.o CC arch/arm/lib/div0.o AS arch/arm/lib/div64.o AS arch/arm/lib/lib1funcs.o AS arch/arm/lib/lshrdi3.o AS arch/arm/lib/muldi3.o AS arch/arm/lib/uldivmod.o AR arch/arm/lib/lib.a CC arch/arm/lib/eabi_compat.o AS arch/arm/lib/crt0_arm_efi.o CC arch/arm/lib/reloc_arm_efi.o CC arch/arm/mach-tegra/tegra124/clock.o CC arch/arm/mach-tegra/tegra124/funcmux.o CC arch/arm/mach-tegra/tegra124/pinmux.o CC arch/arm/mach-tegra/tegra124/pmc.o CC arch/arm/mach-tegra/tegra124/xusb-padctl.o CC arch/arm/mach-tegra/tegra124/../xusb-padctl-common.o CC arch/arm/mach-tegra/tegra124/psci.o LD arch/arm/mach-tegra/tegra124/built-in.o CC arch/arm/mach-tegra/cmd_enterrcm.o CC arch/arm/mach-tegra/ap.o CC arch/arm/mach-tegra/board.o CC arch/arm/mach-tegra/board2.o CC arch/arm/mach-tegra/cache.o CC arch/arm/mach-tegra/clock.o CC arch/arm/mach-tegra/pinmux-common.o CC arch/arm/mach-tegra/powergate.o CC arch/arm/mach-tegra/xusb-padctl-dummy.o CC arch/arm/mach-tegra/dt-setup.o CC arch/arm/mach-tegra/gpu.o AS arch/arm/mach-tegra/lowlevel_init.o AS arch/arm/mach-tegra/psci.o CC arch/arm/mach-tegra/sys_info.o LD arch/arm/mach-tegra/built-in.o CC board/nvidia/jetson-tk1/../venice2/as3722_init.o CC board/nvidia/jetson-tk1/jetson-tk1.o LD board/nvidia/jetson-tk1/built-in.o CC cmd/boot.o CC cmd/bootm.o CC cmd/help.o CC cmd/version.o CC cmd/blk_common.o CC cmd/source.o CC cmd/bdinfo.o CC cmd/blkcache.o CC cmd/bootefi.o CC cmd/bootz.o CC cmd/console.o CC cmd/dm.o CC cmd/echo.o CC cmd/elf.o CC cmd/exit.o CC cmd/ext4.o CC cmd/ext2.o CC cmd/fat.o CC cmd/fdt.o CC cmd/fs.o CC cmd/gpio.o CC cmd/i2c.o CC cmd/itest.o CC cmd/load.o CC cmd/mem.o CC cmd/mii.o CC cmd/misc.o CC cmd/mmc.o CC cmd/net.o CC cmd/nvedit_efi.o CC cmd/part.o CC cmd/pci.o CC cmd/pxe.o CC cmd/sf.o CC cmd/spi.o CC cmd/test.o CC cmd/usb.o CC cmd/disk.o CC cmd/usb_mass_storage.o CC cmd/ximg.o CC cmd/dfu.o CC cmd/nvedit.o LD cmd/built-in.o CC common/init/board_init.o LD common/init/built-in.o CC common/main.o CC common/exports.o CC common/hash.o CC common/cli_hush.o CC common/autoboot.o CC common/board_f.o CC common/board_r.o CC common/board_info.o CC common/bootm.o CC common/bootm_os.o CC common/fdt_support.o CC common/miiphyutil.o CC common/usb.o CC common/usb_hub.o CC common/usb_storage.o CC common/iomux.o CC common/splash.o CC common/menu.o CC common/cli_readline.o CC common/cli_simple.o CC common/bouncebuf.o CC common/console.o CC common/dlmalloc.o CC common/malloc_simple.o CC common/image.o CC common/image-fdt.o CC common/memsize.o CC common/stdio.o CC common/cli.o CC common/dfu.o CC common/command.o CC common/s_record.o CC common/xyzModem.o LD common/built-in.o CC disk/part.o CC disk/part_dos.o CC disk/part_iso.o CC disk/part_efi.o LD disk/built-in.o LD drivers/adc/built-in.o LD drivers/ata/built-in.o LD drivers/axi/built-in.o CC drivers/block/blk-uclass.o CC drivers/block/blkcache.o LD drivers/block/built-in.o LD drivers/board/built-in.o LD drivers/clk/imx/built-in.o CC drivers/clk/tegra/tegra-car-clk.o LD drivers/clk/tegra/built-in.o CC drivers/clk/clk-uclass.o CC drivers/clk/clk_fixed_rate.o LD drivers/clk/built-in.o CC drivers/core/device.o CC drivers/core/fdtaddr.o CC drivers/core/lists.o CC drivers/core/root.o CC drivers/core/uclass.o CC drivers/core/util.o CC drivers/core/device-remove.o CC drivers/core/simple-bus.o CC drivers/core/dump.o CC drivers/core/regmap.o CC drivers/core/syscon-uclass.o CC drivers/core/of_access.o CC drivers/core/of_addr.o CC drivers/core/read.o CC drivers/core/of_extra.o CC drivers/core/ofnode.o CC drivers/core/read_extra.o LD drivers/core/built-in.o CC drivers/crypto/fsl/sec.o LD drivers/crypto/fsl/built-in.o LD drivers/crypto/rsa_mod_exp/built-in.o LD drivers/crypto/built-in.o CC drivers/dfu/dfu.o CC drivers/dfu/dfu_mmc.o CC drivers/dfu/dfu_ram.o CC drivers/dfu/dfu_sf.o LD drivers/dfu/built-in.o LD drivers/firmware/built-in.o CC drivers/input/input.o CC drivers/input/key_matrix.o CC drivers/input/keyboard-uclass.o LD drivers/input/built-in.o LD drivers/mailbox/built-in.o LD drivers/memory/built-in.o CC drivers/misc/misc-uclass.o CC drivers/misc/tegra_car.o LD drivers/misc/built-in.o CC drivers/mmc/mmc.o CC drivers/mmc/mmc-uclass.o CC drivers/mmc/mmc_write.o CC drivers/mmc/tegra_mmc.o LD drivers/mmc/built-in.o CC drivers/pci/pci_rom.o CC drivers/pci/pci-uclass.o CC drivers/pci/pci_auto.o CC drivers/pci/pci_compat.o CC drivers/pci/pci_auto_common.o CC drivers/pci/pci_common.o CC drivers/pci/pci_tegra.o LD drivers/pci/built-in.o LD drivers/pcmcia/built-in.o LD drivers/phy/allwinner/built-in.o LD drivers/phy/marvell/built-in.o CC drivers/pwm/pwm-uclass.o LD drivers/pwm/built-in.o CC drivers/reset/reset-uclass.o CC drivers/reset/tegra-car-reset.o LD drivers/reset/built-in.o CC drivers/rtc/date.o CC drivers/rtc/rtc-lib.o LD drivers/rtc/built-in.o LD drivers/scsi/built-in.o LD drivers/smem/built-in.o LD drivers/soc/built-in.o LD drivers/sound/built-in.o LD drivers/spmi/built-in.o LD drivers/sysreset/built-in.o LD drivers/thermal/built-in.o LD drivers/video/bridge/built-in.o LD drivers/video/sunxi/built-in.o LD drivers/video/built-in.o LD drivers/watchdog/built-in.o LD drivers/built-in.o LD drivers/dma/built-in.o CC drivers/gpio/gpio-uclass.o CC drivers/gpio/tegra_gpio.o LD drivers/gpio/built-in.o CC drivers/i2c/i2c-uclass.o CC drivers/i2c/tegra_i2c.o LD drivers/i2c/built-in.o LD drivers/mtd/nand/built-in.o CC drivers/mtd/mtdcore.o CC drivers/mtd/mtd_uboot.o LD drivers/mtd/built-in.o LD drivers/mtd/onenand/built-in.o CC drivers/mtd/spi/sf-uclass.o CC drivers/mtd/spi/sf_probe.o CC drivers/mtd/spi/spi-nor-ids.o CC drivers/mtd/spi/spi-nor-core.o LD drivers/mtd/spi/spi-nor.o LD drivers/mtd/spi/built-in.o LD drivers/net/mscc_eswitch/built-in.o LD drivers/net/ti/built-in.o CC drivers/net/rtl8169.o LD drivers/net/built-in.o LD drivers/net/phy/built-in.o LD drivers/power/built-in.o LD drivers/power/battery/built-in.o LD drivers/power/domain/built-in.o LD drivers/power/fuel_gauge/built-in.o LD drivers/power/mfd/built-in.o CC drivers/power/pmic/pmic-uclass.o CC drivers/power/pmic/as3722.o CC drivers/power/pmic/as3722_gpio.o LD drivers/power/pmic/built-in.o CC drivers/power/regulator/regulator-uclass.o CC drivers/power/regulator/as3722_regulator.o LD drivers/power/regulator/built-in.o CC drivers/serial/serial-uclass.o CC drivers/serial/ns16550.o LD drivers/serial/built-in.o CC drivers/spi/spi-uclass.o CC drivers/spi/spi-mem.o CC drivers/spi/tegra114_spi.o LD drivers/spi/built-in.o CC drivers/usb/common/common.o LD drivers/usb/common/built-in.o LD drivers/usb/dwc3/built-in.o LD drivers/usb/emul/built-in.o CC drivers/usb/eth/usb_ether.o CC drivers/usb/eth/asix.o LD drivers/usb/eth/built-in.o CC drivers/usb/gadget/epautoconf.o CC drivers/usb/gadget/config.o CC drivers/usb/gadget/usbstring.o CC drivers/usb/gadget/ci_udc.o CC drivers/usb/gadget/g_dnl.o CC drivers/usb/gadget/f_dfu.o CC drivers/usb/gadget/f_mass_storage.o LD drivers/usb/gadget/built-in.o CC drivers/usb/gadget/udc/udc-uclass.o LD drivers/usb/gadget/udc/built-in.o CC drivers/usb/host/usb-uclass.o CC drivers/usb/host/ehci-hcd.o CC drivers/usb/host/ehci-tegra.o LD drivers/usb/host/built-in.o LD drivers/usb/musb-new/built-in.o LD drivers/usb/musb/built-in.o LD drivers/usb/phy/built-in.o LD drivers/usb/ulpi/built-in.o CC env/common.o CC env/env.o CC env/attr.o CC env/callback.o CC env/flags.o CC env/mmc.o LD env/built-in.o CC fs/ext4/ext4fs.o CC fs/ext4/ext4_common.o CC fs/ext4/dev.o CC fs/ext4/ext4_write.o CC fs/ext4/ext4_journal.o CC fs/ext4/crc16.o LD fs/ext4/built-in.o CC fs/fat/fat_write.o LD fs/fat/built-in.o CC fs/fs.o CC fs/fs_internal.o LD fs/built-in.o CC lib/efi_driver/efi_uclass.o CC lib/efi_driver/efi_block_device.o LD lib/efi_driver/built-in.o CC lib/efi_loader/efi_bootmgr.o CC lib/efi_loader/efi_boottime.o CC lib/efi_loader/efi_console.o CC lib/efi_loader/efi_device_path.o CC lib/efi_loader/efi_device_path_to_text.o CC lib/efi_loader/efi_device_path_utilities.o CC lib/efi_loader/efi_file.o CC lib/efi_loader/efi_hii.o CC lib/efi_loader/efi_hii_config.o CC lib/efi_loader/efi_image_loader.o CC lib/efi_loader/efi_memory.o CC lib/efi_loader/efi_root_node.o CC lib/efi_loader/efi_runtime.o CC lib/efi_loader/efi_setup.o CC lib/efi_loader/efi_unicode_collation.o CC lib/efi_loader/efi_variable.o CC lib/efi_loader/efi_watchdog.o CC lib/efi_loader/efi_disk.o CC lib/efi_loader/efi_net.o CC lib/efi_loader/efi_smbios.o LD lib/efi_loader/built-in.o CC lib/efi_loader/helloworld.o AS lib/efi_loader/efi_crt0.o CC lib/efi_loader/efi_reloc.o CC lib/efi_loader/../efi_loader/efi_freestanding.o LD lib/efi_loader/helloworld_efi.so OBJCOPY lib/efi_loader/helloworld.efi CC lib/libfdt/fdt.o CC lib/libfdt/fdt_wip.o CC lib/libfdt/fdt_strerror.o CC lib/libfdt/fdt_sw.o CC lib/libfdt/fdt_rw.o CC lib/libfdt/fdt_empty_tree.o CC lib/libfdt/fdt_addresses.o CC lib/libfdt/fdt_ro.o CC lib/libfdt/fdt_region.o LD lib/libfdt/built-in.o CC lib/zlib/zlib.o LD lib/zlib/built-in.o CC lib/of_live.o CC lib/charset.o CC lib/crc7.o CC lib/crc8.o CC lib/crc16.o CC lib/smbios.o CC lib/ldiv.o CC lib/net_utils.o CC lib/rc4.o CC lib/list_sort.o CC lib/gunzip.o CC lib/fdtdec_common.o CC lib/fdtdec.o CC lib/qsort.o CC lib/hashtable.o CC lib/errno.o CC lib/display_options.o CC lib/crc32.o CC lib/ctype.o CC lib/div64.o CC lib/hang.o CC lib/linux_compat.o CC lib/linux_string.o CC lib/lmb.o CC lib/membuff.o CC lib/slre.o CC lib/string.o CC lib/tables_csum.o CC lib/time.o CC lib/hexdump.o CC lib/uuid.o CC lib/panic.o CC lib/vsprintf.o CC lib/strto.o CC lib/strmhz.o LD lib/built-in.o CC net/checksum.o CC net/arp.o CC net/bootp.o CC net/eth-uclass.o CC net/eth_common.o CC net/net.o CC net/ping.o CC net/tftp.o LD net/built-in.o CC examples/standalone/hello_world.o CC examples/standalone/stubs.o LD examples/standalone/libstubs.o LD examples/standalone/hello_world OBJCOPY examples/standalone/hello_world.srec OBJCOPY examples/standalone/hello_world.bin LDS u-boot.lds LD u-boot OBJCOPY u-boot.srec OBJCOPY u-boot-nodtb.bin DTC arch/arm/dts/tegra20-harmony.dtb DTC arch/arm/dts/tegra20-medcom-wide.dtb DTC arch/arm/dts/tegra20-paz00.dtb DTC arch/arm/dts/tegra20-plutux.dtb DTC arch/arm/dts/tegra20-seaboard.dtb DTC arch/arm/dts/tegra20-tec.dtb DTC arch/arm/dts/tegra20-trimslice.dtb DTC arch/arm/dts/tegra20-ventana.dtb DTC arch/arm/dts/tegra20-colibri.dtb DTC arch/arm/dts/tegra30-apalis.dtb DTC arch/arm/dts/tegra30-beaver.dtb DTC arch/arm/dts/tegra30-cardhu.dtb DTC arch/arm/dts/tegra30-colibri.dtb DTC arch/arm/dts/tegra30-tec-ng.dtb DTC arch/arm/dts/tegra114-dalmore.dtb DTC arch/arm/dts/tegra124-apalis.dtb DTC arch/arm/dts/tegra124-jetson-tk1.dtb DTC arch/arm/dts/tegra124-nyan-big.dtb DTC arch/arm/dts/tegra124-cei-tk1-som.dtb DTC arch/arm/dts/tegra124-venice2.dtb DTC arch/arm/dts/tegra186-p2771-0000-000.dtb DTC arch/arm/dts/tegra186-p2771-0000-500.dtb DTC arch/arm/dts/tegra210-e2220-1170.dtb DTC arch/arm/dts/tegra210-p2371-0000.dtb DTC arch/arm/dts/tegra210-p2371-2180.dtb DTC arch/arm/dts/tegra210-p2571.dtb make[2]: 'arch/arm/dts/tegra124-jetson-tk1.dtb' is up to date. SHIPPED dts/dt.dtb FDTGREP dts/dt-spl.dtb CAT u-boot-dtb.bin COPY u-boot.bin SYM u-boot.sym CC spl/arch/arm/mach-tegra/tegra124/cpu.o CC spl/arch/arm/mach-tegra/tegra124/clock.o CC spl/arch/arm/mach-tegra/tegra124/funcmux.o CC spl/arch/arm/mach-tegra/tegra124/pinmux.o CC spl/arch/arm/mach-tegra/tegra124/pmc.o CC spl/arch/arm/mach-tegra/tegra124/xusb-padctl.o CC spl/arch/arm/mach-tegra/tegra124/../xusb-padctl-common.o LD spl/arch/arm/mach-tegra/tegra124/built-in.o CC spl/arch/arm/mach-tegra/spl.o CC spl/arch/arm/mach-tegra/cpu.o CC spl/arch/arm/mach-tegra/ap.o CC spl/arch/arm/mach-tegra/board.o CC spl/arch/arm/mach-tegra/board2.o CC spl/arch/arm/mach-tegra/cache.o CC spl/arch/arm/mach-tegra/clock.o CC spl/arch/arm/mach-tegra/pinmux-common.o CC spl/arch/arm/mach-tegra/powergate.o CC spl/arch/arm/mach-tegra/xusb-padctl-dummy.o CC spl/arch/arm/mach-tegra/dt-setup.o CC spl/arch/arm/mach-tegra/gpu.o AS spl/arch/arm/mach-tegra/lowlevel_init.o CC spl/arch/arm/mach-tegra/sys_info.o LD spl/arch/arm/mach-tegra/built-in.o CC spl/arch/arm/cpu/arm720t/interrupts.o CC spl/arch/arm/cpu/arm720t/cpu.o LD spl/arch/arm/cpu/arm720t/built-in.o AS spl/arch/arm/cpu/arm720t/start.o LD spl/arch/arm/cpu/built-in.o AS spl/arch/arm/lib/vectors.o AS spl/arch/arm/lib/crt0.o AS spl/arch/arm/lib/setjmp.o CC spl/arch/arm/lib/spl.o CC spl/arch/arm/lib/zimage.o CC spl/arch/arm/lib/bootm-fdt.o AS spl/arch/arm/lib/memset.o AS spl/arch/arm/lib/memcpy.o CC spl/arch/arm/lib/sections.o CC spl/arch/arm/lib/stack.o CC spl/arch/arm/lib/interrupts.o CC spl/arch/arm/lib/reset.o CC spl/arch/arm/lib/cache.o CC spl/arch/arm/lib/cache-cp15.o CC spl/arch/arm/lib/psci-dt.o LD spl/arch/arm/lib/built-in.o AS spl/arch/arm/lib/ashldi3.o AS spl/arch/arm/lib/ashrdi3.o CC spl/arch/arm/lib/div0.o AS spl/arch/arm/lib/div64.o AS spl/arch/arm/lib/lib1funcs.o AS spl/arch/arm/lib/lshrdi3.o AS spl/arch/arm/lib/muldi3.o AS spl/arch/arm/lib/uldivmod.o AR spl/arch/arm/lib/lib.a CC spl/arch/arm/lib/eabi_compat.o AS spl/arch/arm/lib/crt0_arm_efi.o CC spl/arch/arm/lib/reloc_arm_efi.o CC spl/board/nvidia/jetson-tk1/../venice2/as3722_init.o CC spl/board/nvidia/jetson-tk1/jetson-tk1.o LD spl/board/nvidia/jetson-tk1/built-in.o CC spl/common/spl/spl.o CC spl/common/spl/spl_ram.o LD spl/common/spl/built-in.o CC spl/common/init/board_init.o LD spl/common/init/built-in.o CC spl/common/bouncebuf.o CC spl/common/console.o CC spl/common/dlmalloc.o CC spl/common/malloc_simple.o CC spl/common/image.o CC spl/common/memsize.o CC spl/common/stdio.o CC spl/common/cli.o CC spl/common/dfu.o CC spl/common/command.o CC spl/common/s_record.o CC spl/common/xyzModem.o LD spl/common/built-in.o CC spl/cmd/nvedit.o LD spl/cmd/built-in.o CC spl/env/common.o CC spl/env/env.o LD spl/env/built-in.o CC spl/lib/qsort.o CC spl/lib/hashtable.o CC spl/lib/errno.o CC spl/lib/display_options.o CC spl/lib/crc32.o CC spl/lib/ctype.o CC spl/lib/div64.o CC spl/lib/fdtdec.o CC spl/lib/hang.o CC spl/lib/linux_compat.o CC spl/lib/linux_string.o CC spl/lib/lmb.o CC spl/lib/membuff.o CC spl/lib/slre.o CC spl/lib/string.o CC spl/lib/tables_csum.o CC spl/lib/time.o CC spl/lib/hexdump.o CC spl/lib/uuid.o CC spl/lib/panic.o CC spl/lib/vsprintf.o CC spl/lib/strmhz.o CC spl/lib/strto.o LD spl/lib/built-in.o CC spl/disk/part.o LD spl/disk/built-in.o CC spl/drivers/block/blk-uclass.o LD spl/drivers/block/built-in.o CC spl/drivers/core/device.o CC spl/drivers/core/fdtaddr.o CC spl/drivers/core/lists.o CC spl/drivers/core/root.o CC spl/drivers/core/uclass.o CC spl/drivers/core/util.o CC spl/drivers/core/dump.o CC spl/drivers/core/of_access.o CC spl/drivers/core/of_addr.o CC spl/drivers/core/read.o CC spl/drivers/core/of_extra.o CC spl/drivers/core/ofnode.o CC spl/drivers/core/read_extra.o LD spl/drivers/core/built-in.o CC spl/drivers/gpio/gpio-uclass.o CC spl/drivers/gpio/tegra_gpio.o LD spl/drivers/gpio/built-in.o CC spl/drivers/serial/serial-uclass.o CC spl/drivers/serial/ns16550.o LD spl/drivers/serial/built-in.o LD spl/drivers/built-in.o LD spl/dts/built-in.o CC spl/fs/fs_internal.o LD spl/fs/built-in.o LDS spl/u-boot-spl.lds LD spl/u-boot-spl OBJCOPY spl/u-boot-spl-nodtb.bin COPY spl/u-boot-spl.bin MKIMAGE u-boot.img COPY u-boot.dtb MKIMAGE u-boot-dtb.img BINMAN u-boot-tegra.bin CFGCHK u-boot.cfg masahiro@pug:~/ref/u-boot$ touch arch/arm/dts/tegra124-jetson-tk1.dts masahiro@pug:~/ref/u-boot$ make CROSS_COMPILE=arm-linux-gnueabihf- CHK include/config/uboot.release UPD include/config/uboot.release CHK include/generated/version_autogenerated.h UPD include/generated/version_autogenerated.h CHK include/generated/timestamp_autogenerated.h UPD include/generated/timestamp_autogenerated.h CHK include/generated/generic-asm-offsets.h CHK include/generated/asm-offsets.h HOSTCC tools/mkenvimage.o HOSTLD tools/mkenvimage HOSTCC tools/fit_image.o HOSTCC tools/image-host.o HOSTCC tools/dumpimage.o HOSTLD tools/dumpimage HOSTCC tools/mkimage.o HOSTLD tools/mkimage CC cmd/version.o LD cmd/built-in.o CC common/main.o LD common/built-in.o CC lib/efi_loader/helloworld.o CC lib/efi_loader/efi_reloc.o CC lib/efi_loader/../efi_loader/efi_freestanding.o LD lib/efi_loader/helloworld_efi.so OBJCOPY lib/efi_loader/helloworld.efi CC lib/smbios.o CC lib/display_options.o LD lib/built-in.o LD u-boot OBJCOPY u-boot.srec OBJCOPY u-boot-nodtb.bin DTC arch/arm/dts/tegra124-jetson-tk1.dtb <--- Recompiled!!! make[2]: 'arch/arm/dts/tegra124-jetson-tk1.dtb' is up to date. SHIPPED dts/dt.dtb <--- Copied!!! FDTGREP dts/dt-spl.dtb CAT u-boot-dtb.bin COPY u-boot.bin SYM u-boot.sym CC spl/common/spl/spl.o LD spl/common/spl/built-in.o CC spl/lib/display_options.o LD spl/lib/built-in.o LD spl/u-boot-spl OBJCOPY spl/u-boot-spl-nodtb.bin COPY spl/u-boot-spl.bin MKIMAGE u-boot.img COPY u-boot.dtb MKIMAGE u-boot-dtb.img BINMAN u-boot-tegra.bin CFGCHK u-boot.cfg
Signed-off-by: Stephen Warren swarren@nvidia.com
dts/Makefile | 1 + 1 file changed, 1 insertion(+)
diff --git a/dts/Makefile b/dts/Makefile index a7a604303cc6..4970223b3d2e 100644 --- a/dts/Makefile +++ b/dts/Makefile @@ -40,6 +40,7 @@ endif echo >&2; \ /bin/false)
+PHONY += arch-dtbs arch-dtbs: $(Q)$(MAKE) $(build)=$(ARCH_PATH) dtbs
-- 2.20.1
U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot

On Wed, Feb 27, 2019 at 11:17 AM Masahiro Yamada yamada.masahiro@socionext.com wrote:
On Wed, Feb 27, 2019 at 4:21 AM Stephen Warren swarren@wwwdotorg.org wrote:
From: Stephen Warren swarren@nvidia.com
Without this, the arch-dtbs target only gets evaluated when building U-Boot the first time, not when re-building (incrementally building) U-Boot. Thus incremental builds ignore changes to DTB files.
Really?
I tested "touch DT, then incremental build", and it correctly re-compiled device tree.
I attached the log of the following build sequence:
[1] make jetson-tk1_defconfig [2] make CROSS_COMPILE=arm-linux-gnueabihf- [3] touch arch/arm/dts/tegra124-jetson-tk1.dts [4] make CROSS_COMPILE=arm-linux-gnueabihf-
Hmm, OK. Understood.
The jetson DT was recompiled, but the other tegra DT files were not.
So, I am fine with this patch, but this Makefile is problematic already.
Looking into dts/Makefile, I noticed there are two ways to descend into arch/*/dts.
$(DTB): $(dtb_depends) ifeq ($(EXT_DTB),) $(Q)$(MAKE) $(build)=$(ARCH_PATH) $@ <----- [1] endif $(Q)test -e $@ || ( \ echo >&2; \ echo >&2 "Device Tree Source is not correctly specified."; \ echo >&2 "Please define 'CONFIG_DEFAULT_DEVICE_TREE'"; \ echo >&2 "or build with 'DEVICE_TREE=<device_tree>' argument"; \ echo >&2; \ /bin/false)
arch-dtbs: $(Q)$(MAKE) $(build)=$(ARCH_PATH) dtbs <----- [2]
[1] and [2] would cause a race in parallel building and might produce an invalid DTB.
I do not understand commit 27cb7300ffda7a3f1581f0f5a2d3bfe59b97ad67

On 2/26/19 7:36 PM, Masahiro Yamada wrote:
On Wed, Feb 27, 2019 at 11:17 AM Masahiro Yamada yamada.masahiro@socionext.com wrote:
On Wed, Feb 27, 2019 at 4:21 AM Stephen Warren swarren@wwwdotorg.org wrote:
From: Stephen Warren swarren@nvidia.com
Without this, the arch-dtbs target only gets evaluated when building U-Boot the first time, not when re-building (incrementally building) U-Boot. Thus incremental builds ignore changes to DTB files.
Really?
I tested "touch DT, then incremental build", and it correctly re-compiled device tree.
I attached the log of the following build sequence:
[1] make jetson-tk1_defconfig [2] make CROSS_COMPILE=arm-linux-gnueabihf- [3] touch arch/arm/dts/tegra124-jetson-tk1.dts [4] make CROSS_COMPILE=arm-linux-gnueabihf-
Hmm, OK. Understood.
The jetson DT was recompiled, but the other tegra DT files were not.
Yes, perhaps I should have mentioned that I found this issue when building sandbox. Sandbox's default DTB of sandbox.dtb does get recompiled as expected, but test.dtb (used by the test/py/ test system) does not, for incremental builds.

On Wed, Feb 27, 2019 at 4:21 AM Stephen Warren swarren@wwwdotorg.org wrote:
From: Stephen Warren swarren@nvidia.com
Without this, the arch-dtbs target only gets evaluated when building U-Boot the first time, not when re-building (incrementally building) U-Boot. Thus incremental builds ignore changes to DTB files.
Signed-off-by: Stephen Warren swarren@nvidia.com
Reviewed-by: Masahiro Yamada yamada.masahiro@socionext.com
dts/Makefile | 1 + 1 file changed, 1 insertion(+)
diff --git a/dts/Makefile b/dts/Makefile index a7a604303cc6..4970223b3d2e 100644 --- a/dts/Makefile +++ b/dts/Makefile @@ -40,6 +40,7 @@ endif echo >&2; \ /bin/false)
+PHONY += arch-dtbs arch-dtbs: $(Q)$(MAKE) $(build)=$(ARCH_PATH) dtbs
-- 2.20.1
U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot

On 2/26/19 12:20 PM, Stephen Warren wrote:
From: Stephen Warren swarren@nvidia.com
Without this, the arch-dtbs target only gets evaluated when building U-Boot the first time, not when re-building (incrementally building) U-Boot. Thus incremental builds ignore changes to DTB files.
Commit b630d57d0ab4 "clk: Add fixed-factor clock driver", which was recently applied to u-boot/master, also triggers this same issue. It'd be nice to get this fix applied ASAP. Thanks!

On Tue, Feb 26, 2019 at 12:20:25PM -0700, Stephen Warren wrote:
From: Stephen Warren swarren@nvidia.com
Without this, the arch-dtbs target only gets evaluated when building U-Boot the first time, not when re-building (incrementally building) U-Boot. Thus incremental builds ignore changes to DTB files.
Signed-off-by: Stephen Warren swarren@nvidia.com Reviewed-by: Masahiro Yamada yamada.masahiro@socionext.com
Applied to u-boot/master, thanks!
participants (3)
-
Masahiro Yamada
-
Stephen Warren
-
Tom Rini