scripts: mkits.sh make it possible to specify fdt@#
[openwrt/staging/dedeckeh.git] / include / image.mk
index 8592c19b996499ce85183faee5f34f0810ae2008..a1308f47ade46402725cb9c8feae27d6c7fac0f8 100644 (file)
@@ -45,6 +45,7 @@ IMG_PREFIX:=$(VERSION_DIST_SANITIZED)-$(IMG_PREFIX_VERNUM)$(IMG_PREFIX_VERCODE)$
 IMG_ROOTFS:=$(IMG_PREFIX)-rootfs
 IMG_COMBINED:=$(IMG_PREFIX)-combined
 IMG_PART_SIGNATURE:=$(shell echo $(SOURCE_DATE_EPOCH)$(LINUX_VERMAGIC) | mkhash md5 | cut -b1-8)
+IMG_PART_DISKGUID:=$(shell echo $(SOURCE_DATE_EPOCH)$(LINUX_VERMAGIC) | mkhash md5 | sed -E 's/(.{8})(.{4})(.{4})(.{4})(.{10})../\1-\2-\3-\4-\500/')
 
 MKFS_DEVTABLE_OPT := -D $(INCLUDE_DIR)/device_table.txt
 
@@ -93,7 +94,6 @@ fs-types-$(CONFIG_TARGET_ROOTFS_SQUASHFS) += squashfs
 fs-types-$(CONFIG_TARGET_ROOTFS_JFFS2) += $(addprefix jffs2-,$(JFFS2_BLOCKSIZE))
 fs-types-$(CONFIG_TARGET_ROOTFS_JFFS2_NAND) += $(addprefix jffs2-nand-,$(NAND_BLOCKSIZE))
 fs-types-$(CONFIG_TARGET_ROOTFS_EXT4FS) += ext4
-fs-types-$(CONFIG_TARGET_ROOTFS_ISO) += iso
 fs-types-$(CONFIG_TARGET_ROOTFS_UBIFS) += ubifs
 fs-subtypes-$(CONFIG_TARGET_ROOTFS_JFFS2) += $(addsuffix -raw,$(addprefix jffs2-,$(JFFS2_BLOCKSIZE)))
 
@@ -157,18 +157,13 @@ endif
 
 
 # Disable noisy checks by default as in upstream
-ifeq ($(strip $(call kernel_patchver_ge,4.7.0)),1)
-  DTC_FLAGS += -Wno-unit_address_vs_reg
-endif
-ifeq ($(strip $(call kernel_patchver_ge,4.12.0)),1)
-  DTC_FLAGS += \
-       -Wno-unit_address_vs_reg \
-       -Wno-simple_bus_reg \
-       -Wno-unit_address_format \
-       -Wno-pci_bridge \
-       -Wno-pci_device_bus_num \
-       -Wno-pci_device_reg
-endif
+DTC_FLAGS += \
+  -Wno-unit_address_vs_reg \
+  -Wno-simple_bus_reg \
+  -Wno-unit_address_format \
+  -Wno-pci_bridge \
+  -Wno-pci_device_bus_num \
+  -Wno-pci_device_reg
 ifeq ($(strip $(call kernel_patchver_ge,4.17.0)),1)
   DTC_FLAGS += \
        -Wno-avoid_unnecessary_addr_size \
@@ -239,13 +234,30 @@ endef
 $(eval $(foreach S,$(JFFS2_BLOCKSIZE),$(call Image/mkfs/jffs2/template,$(S))))
 $(eval $(foreach S,$(NAND_BLOCKSIZE),$(call Image/mkfs/jffs2-nand/template,$(S))))
 
-define Image/mkfs/squashfs
+define Image/mkfs/squashfs-common
        $(STAGING_DIR_HOST)/bin/mksquashfs4 $(call mkfs_target_dir,$(1)) $@ \
                -nopad -noappend -root-owned \
                -comp $(SQUASHFSCOMP) $(SQUASHFSOPT) \
                -processors 1
 endef
 
+ifeq ($(CONFIG_TARGET_ROOTFS_SECURITY_LABELS),y)
+define Image/mkfs/squashfs
+       echo "LD_LIBRARY_PATH=\$$LD_LIBRARY_PATH:$(STAGING_DIR_HOSTPKG)/lib" \
+            "$(STAGING_DIR_HOSTPKG)/sbin/setfiles -r" \
+            "$(call mkfs_target_dir,$(1))" \
+            "$(call mkfs_target_dir,$(1))/etc/selinux/targeted/contexts/files/file_contexts " \
+            "$(call mkfs_target_dir,$(1))" > $@.fakeroot-script
+       echo "$(Image/mkfs/squashfs-common)" >> $@.fakeroot-script
+       chmod +x $@.fakeroot-script
+       $(FAKEROOT) "$@.fakeroot-script"
+endef
+else
+define Image/mkfs/squashfs
+       $(call Image/mkfs/squashfs-common,$(1))
+endef
+endif
+
 # $(1): board name
 # $(2): rootfs type
 # $(3): kernel image
@@ -386,13 +398,13 @@ define Device/Init
   DEVICE_NAME := $(1)
   KERNEL:=
   KERNEL_INITRAMFS = $$(KERNEL)
-  KERNEL_SIZE:=
   CMDLINE:=
 
   IMAGES :=
   ARTIFACTS :=
   IMAGE_PREFIX := $(IMG_PREFIX)-$(1)
   IMAGE_NAME = $$(IMAGE_PREFIX)-$$(1)-$$(2)
+  IMAGE_SIZE :=
   KERNEL_PREFIX = $$(IMAGE_PREFIX)
   KERNEL_SUFFIX := -kernel.bin
   KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX)
@@ -420,9 +432,13 @@ define Device/Init
   DEVICE_DTS :=
   DEVICE_DTS_CONFIG :=
   DEVICE_DTS_DIR :=
+  DEVICE_FDT_NUM :=
+  SOC :=
 
   BOARD_NAME :=
   UIMAGE_NAME :=
+  DEVICE_COMPAT_VERSION := 1.0
+  DEVICE_COMPAT_MESSAGE :=
   SUPPORTED_DEVICES :=
   IMAGE_METADATA :=
 
@@ -430,6 +446,7 @@ define Device/Init
 
   UBOOT_PATH :=  $(STAGING_DIR_IMAGE)/uboot-$(1)
 
+  BROKEN :=
   DEFAULT :=
 endef
 
@@ -437,9 +454,11 @@ DEFAULT_DEVICE_VARS := \
   DEVICE_NAME KERNEL KERNEL_INITRAMFS KERNEL_INITRAMFS_IMAGE KERNEL_SIZE \
   CMDLINE UBOOTENV_IN_UBI KERNEL_IN_UBI BLOCKSIZE PAGESIZE SUBPAGESIZE \
   VID_HDR_OFFSET UBINIZE_OPTS UBINIZE_PARTS MKUBIFS_OPTS DEVICE_DTS \
-  DEVICE_DTS_CONFIG DEVICE_DTS_DIR BOARD_NAME UIMAGE_NAME SUPPORTED_DEVICES \
-  IMAGE_METADATA KERNEL_ENTRY KERNEL_LOADADDR UBOOT_PATH DEVICE_VENDOR \
-  DEVICE_MODEL DEVICE_VARIANT \
+  DEVICE_DTS_CONFIG DEVICE_DTS_DIR DEVICE_FDT_NUM SOC BOARD_NAME \
+  UIMAGE_NAME SUPPORTED_DEVICES IMAGE_METADATA KERNEL_ENTRY KERNEL_LOADADDR \
+  UBOOT_PATH IMAGE_SIZE \
+  DEVICE_COMPAT_VERSION DEVICE_COMPAT_MESSAGE \
+  DEVICE_VENDOR DEVICE_MODEL DEVICE_VARIANT \
   DEVICE_ALT0_VENDOR DEVICE_ALT0_MODEL DEVICE_ALT0_VARIANT \
   DEVICE_ALT1_VENDOR DEVICE_ALT1_MODEL DEVICE_ALT1_VARIANT \
   DEVICE_ALT2_VENDOR DEVICE_ALT2_MODEL DEVICE_ALT2_VARIANT
@@ -549,8 +568,11 @@ endef
 
 define Device/Build/image
   GZ_SUFFIX := $(if $(filter %dtb %gz,$(2)),,$(if $(and $(findstring ext4,$(1)),$(CONFIG_TARGET_IMAGES_GZIP)),.gz))
-  $$(_TARGET): $(BIN_DIR)/$(call IMAGE_NAME,$(1),$(2))$$(GZ_SUFFIX)
+  $$(_TARGET): $(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \
+         $(BUILD_DIR)/json_info_files/$(call IMAGE_NAME,$(1),$(2)).json, \
+         $(BIN_DIR)/$(call IMAGE_NAME,$(1),$(2))$$(GZ_SUFFIX))
   $(eval $(call Device/Export,$(KDIR)/tmp/$(call IMAGE_NAME,$(1),$(2)),$(1)))
+
   ROOTFS/$(1)/$(3) := \
        $(KDIR)/root.$(1)$$(strip \
                $$(if $$(FS_OPTIONS/$(1)),+fs=$$(call param_mangle,$$(FS_OPTIONS/$(1)))) \
@@ -572,32 +594,34 @@ define Device/Build/image
 
   $(BIN_DIR)/$(call IMAGE_NAME,$(1),$(2)): $(KDIR)/tmp/$(call IMAGE_NAME,$(1),$(2))
        cp $$^ $$@
-       $(if $(CONFIG_JSON_ADD_IMAGE_INFO), \
-               DEVICE_ID="$(DEVICE_NAME)" \
-               BIN_DIR="$(BIN_DIR)" \
-               IMAGE_NAME="$(IMAGE_NAME)" \
-               IMAGE_TYPE=$(word 1,$(subst ., ,$(2))) \
-               IMAGE_PREFIX="$(IMAGE_PREFIX)" \
-               DEVICE_VENDOR="$(DEVICE_VENDOR)" \
-               DEVICE_MODEL="$(DEVICE_MODEL)" \
-               DEVICE_VARIANT="$(DEVICE_VARIANT)" \
-               DEVICE_ALT0_VENDOR="$(DEVICE_ALT0_VENDOR)" \
-               DEVICE_ALT0_MODEL="$(DEVICE_ALT0_MODEL)" \
-               DEVICE_ALT0_VARIANT="$(DEVICE_ALT0_VARIANT)" \
-               DEVICE_ALT1_VENDOR="$(DEVICE_ALT1_VENDOR)" \
-               DEVICE_ALT1_MODEL="$(DEVICE_ALT1_MODEL)" \
-               DEVICE_ALT1_VARIANT="$(DEVICE_ALT1_VARIANT)" \
-               DEVICE_ALT2_VENDOR="$(DEVICE_ALT2_VENDOR)" \
-               DEVICE_ALT2_MODEL="$(DEVICE_ALT2_MODEL)" \
-               DEVICE_ALT2_VARIANT="$(DEVICE_ALT2_VARIANT)" \
-               DEVICE_TITLE="$(DEVICE_TITLE)" \
-               TARGET="$(BOARD)" \
-               SUBTARGET="$(SUBTARGET)" \
-               VERSION_NUMBER="$(VERSION_NUMBER)" \
-               VERSION_CODE="$(VERSION_CODE)" \
-               SUPPORTED_DEVICES="$(SUPPORTED_DEVICES)" \
-               $(TOPDIR)/scripts/json_add_image_info.py \
-       )
+
+  $(BUILD_DIR)/json_info_files/$(call IMAGE_NAME,$(1),$(2)).json: $(BIN_DIR)/$(call IMAGE_NAME,$(1),$(2))$$(GZ_SUFFIX)
+       @mkdir -p $$(shell dirname $$@)
+       DEVICE_ID="$(DEVICE_NAME)" \
+       BIN_DIR="$(BIN_DIR)" \
+       IMAGE_NAME="$(IMAGE_NAME)" \
+       IMAGE_TYPE=$(word 1,$(subst ., ,$(2))) \
+       IMAGE_PREFIX="$(IMAGE_PREFIX)" \
+       DEVICE_VENDOR="$(DEVICE_VENDOR)" \
+       DEVICE_MODEL="$(DEVICE_MODEL)" \
+       DEVICE_VARIANT="$(DEVICE_VARIANT)" \
+       DEVICE_ALT0_VENDOR="$(DEVICE_ALT0_VENDOR)" \
+       DEVICE_ALT0_MODEL="$(DEVICE_ALT0_MODEL)" \
+       DEVICE_ALT0_VARIANT="$(DEVICE_ALT0_VARIANT)" \
+       DEVICE_ALT1_VENDOR="$(DEVICE_ALT1_VENDOR)" \
+       DEVICE_ALT1_MODEL="$(DEVICE_ALT1_MODEL)" \
+       DEVICE_ALT1_VARIANT="$(DEVICE_ALT1_VARIANT)" \
+       DEVICE_ALT2_VENDOR="$(DEVICE_ALT2_VENDOR)" \
+       DEVICE_ALT2_MODEL="$(DEVICE_ALT2_MODEL)" \
+       DEVICE_ALT2_VARIANT="$(DEVICE_ALT2_VARIANT)" \
+       DEVICE_TITLE="$(DEVICE_TITLE)" \
+       DEVICE_PACKAGES="$(DEVICE_PACKAGES)" \
+       TARGET="$(BOARD)" \
+       SUBTARGET="$(if $(SUBTARGET),$(SUBTARGET),generic)" \
+       VERSION_NUMBER="$(VERSION_NUMBER)" \
+       VERSION_CODE="$(VERSION_CODE)" \
+       SUPPORTED_DEVICES="$(SUPPORTED_DEVICES)" \
+       $(TOPDIR)/scripts/json_add_image_info.py $$@
 
 endef
 
@@ -616,8 +640,6 @@ define Device/Build/artifact
 endef
 
 define Device/Build
-  $(shell rm -f $(BIN_DIR)/$(IMG_PREFIX)-$(1).json)
-
   $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$(call Device/Build/initramfs,$(1)))
   $(call Device/Build/kernel,$(1))
 
@@ -639,6 +661,7 @@ Target-Profile-Name: $(DEVICE_DISPLAY)
 Target-Profile-Packages: $(DEVICE_PACKAGES)
 Target-Profile-hasImageMetadata: $(if $(foreach image,$(IMAGES),$(findstring append-metadata,$(IMAGE/$(image)))),1,0)
 Target-Profile-SupportedDevices: $(SUPPORTED_DEVICES)
+$(if $(BROKEN),Target-Profile-Broken: $(BROKEN))
 $(if $(DEFAULT),Target-Profile-Default: $(DEFAULT))
 Target-Profile-Description:
 $(DEVICE_DESCRIPTION)
@@ -703,6 +726,7 @@ define BuildImage
 
     image_prepare: compile
                mkdir -p $(BIN_DIR) $(KDIR)/tmp
+               rm -rf $(BUILD_DIR)/json_info_files
                $(call Image/Prepare)
 
     legacy-images-prepare-make: image_prepare