[LEDE-DEV] arm64/layerscape dtb build break after image.mk change

Mathew McBride matt at traverse.com.au
Wed Nov 8 20:53:09 PST 2017


Hi all,

After commit 986d9deb3b24bc72e9e7ecf93affbc3f188bb926 ("build: allow 
calling append-dtb from image build commands"), layerscape targets do 
not build correctly anymore.

The failure is on DTB compilation, where an attempt is made to place the 
DTB in a non-existent path:

make[5]: Entering directory 
'/home/matt/lede-source/target/linux/layerscape/image'
make[5]: Nothing to be done for 'compile'.
aarch64-openwrt-linux-musl-cpp -nostdinc -x assembler-with-cpp 
-I/home/matt/lede-source/build_dir/target-aarch64_generic_musl/linux-layerscape_armv8_64b/linux-4.9.58/arch/arm64/boot/dts 
-I/home/matt/lede-source/build_dir/target-aarch64_generic_musl/linux-layerscape_armv8_64b/linux-4.9.58/arch/arm64/boot/dts/include 
-I/home/matt/lede-source/build_dir/target-aarch64_generic_musl/linux-layerscape_armv8_64b/linux-4.9.58/include/ 
-undef -D__DTS__  -o 
/home/matt/lede-source/build_dir/target-aarch64_generic_musl/linux-layerscape_armv8_64b/image-../../../arm64/boot/dts/freescale/fsl-ls1043a-rdb-sdk.dtb.tmp 
/home/matt/lede-source/build_dir/target-aarch64_generic_musl/linux-layerscape_armv8_64b/linux-4.9.58/arch/arm64/boot/dts/../../../arm64/boot/dts/freescale/fsl-ls1043a-rdb-sdk.dts
cc1: fatal error: opening output file 
/home/matt/lede-source/build_dir/target-aarch64_generic_musl/linux-layerscape_armv8_64b/image-../../../arm64/boot/dts/freescale/fsl-ls1043a-rdb-sdk.dtb.tmp: 
No such file or directory
compilation terminated.
Makefile:112: recipe for target 
'/home/matt/lede-source/build_dir/target-aarch64_generic_musl/linux-layerscape_armv8_64b/image-../../../arm64/boot/dts/freescale/fsl-ls1043a-rdb-sdk.dtb' 
failed

image.mk wants the compiled DTB to be at 
$(KDIR)/image-$(DEVICE_DTS).dtb, but this does not work on arm64 
targets, as the boot/dts structure is organized by vendor, i.e 
arch/arm64/boot/dts/freescale,..boot/dts/marvell/ etc, instead of having 
everything in one directory like arch/arm/boot/dts/

I have managed to work around this by setting under the 
(target/layerscape/image.mk) Device/default:

   DEVICE_DTS_DIR := $(LINUX_DIR)/arch/arm64/boot/dts/freescale
   DTS_DIR := $$(DEVICE_DTS_DIR)

And for each target:
	DEVICE_DTS = fsl-ls1043a-rdb-sdk
   	DEVICE_DTS = fsl-ls1046a-rdb-sdk

(I tried DEVICE_DTS = freescale/fsl-ls1043a-rdb-sdk but this also fails, 
it tries to generate 
build_dir/target-aarch64_generic_musl/linux-layerscape_armv8_64b/image-freescale/fsl-ls1043a-rdb-sdk.dtb.tmp 
)

I'm not sure setting DEVICE_DTS_DIR and DTS_DIR to point to 
dts/freescale is the best approach, yet alone the need to force the path 
to be under $(LINUX_DIR).

Does anyone have suggestions on how this could be (better) handled?

Regards,
Matt





More information about the Lede-dev mailing list