build: include homebrew include/library directory in cflags/ldflags on mac os x
[openwrt/svn-archive/archive.git] / include / image.mk
index 020418d54d42945bd69b7c398b799a81f82c56a0..c59222e415fb56e279e76e08d883179f54ac753a 100644 (file)
@@ -15,6 +15,7 @@ override MAKE:=$(_SINGLE)$(SUBMAKE)
 override NO_TRACE_MAKE:=$(_SINGLE)$(NO_TRACE_MAKE)
 
 KDIR=$(KERNEL_BUILD_DIR)
+KDIR_TMP=$(KDIR)/tmp
 DTS_DIR:=$(LINUX_DIR)/arch/$(ARCH)/boot/dts/
 
 IMG_PREFIX:=openwrt-$(if $(CONFIG_VERSION_FILENAMES),$(VERSION_NUMBER)-)$(BOARD)$(if $(SUBTARGET),-$(SUBTARGET))
@@ -126,6 +127,22 @@ define Image/BuildKernel/MkFIT
        PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/fit-$(1).its $(KDIR)/fit-$(1)$(7).itb
 endef
 
+# $(1) source dts file
+# $(2) target dtb file
+# $(3) extra CPP flags
+# $(4) extra DTC flags
+define Image/BuildDTB
+       $(CPP) -nostdinc -x assembler-with-cpp \
+               -I$(LINUX_DIR)/arch/$(ARCH)/boot/dts \
+               -I$(LINUX_DIR)/arch/$(ARCH)/boot/dts/include \
+               -undef -D__DTS__ $(3) \
+               -o $(2).tmp $(1)
+       $(LINUX_DIR)/scripts/dtc/dtc -O dtb \
+               -i$(dir $(1)) $(4) \
+               -o $(2) $(2).tmp
+       $(RM) $(2).tmp
+endef
+
 define Image/mkfs/jffs2/sub
                $(STAGING_DIR_HOST)/bin/mkfs.jffs2 $(3) --pad -e $(patsubst %k,%KiB,$(1)) -o $(KDIR)/root.jffs2-$(2) -d $(TARGET_DIR) -v 2>&1 1>/dev/null | awk '/^.+$$$$/'
                $(call add_jffs2_mark,$(KDIR)/root.jffs2-$(2))
@@ -224,11 +241,11 @@ ifneq ($(CONFIG_TARGET_ROOTFS_UBIFS),)
 endif
 
 define Image/mkfs/cpiogz
-       ( cd $(TARGET_DIR); find . | cpio -o -H newc | gzip -9 >$(BIN_DIR)/$(IMG_PREFIX)-rootfs.cpio.gz )
+       ( cd $(TARGET_DIR); find . | cpio -o -H newc | gzip -9n >$(BIN_DIR)/$(IMG_PREFIX)-rootfs.cpio.gz )
 endef
 
 define Image/mkfs/targz
-       $(TAR) -czpf $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE),-$(PROFILE))-rootfs.tar.gz --numeric-owner --owner=0 --group=0 -C $(TARGET_DIR)/ .
+       $(TAR) -czpf $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE),-$(PROFILE))-rootfs.tar.gz --numeric-owner --owner=0 --group=0 --sort=name -C $(TARGET_DIR)/ .
 endef
 
 E2SIZE=$(shell echo $$(($(CONFIG_TARGET_ROOTFS_PARTSIZE)*1024*1024)))
@@ -282,11 +299,44 @@ define Build/uImage
        @mv $@.new $@
 endef
 
+define Build/netgear-chk
+       $(STAGING_DIR_HOST)/bin/mkchkimg \
+               -o $@.new \
+               -k $@ \
+               -b $(NETGEAR_BOARD_ID) \
+               -r $(NETGEAR_REGION)
+       mv $@.new $@
+endef
+
+define Build/netgear-dni
+       $(STAGING_DIR_HOST)/bin/mkdniimg \
+               -B $(NETGEAR_BOARD_ID) -v OpenWrt.$(REVISION) \
+               $(if $(NETGEAR_HW_ID),-H $(NETGEAR_HW_ID)) \
+               -r "$(1)" \
+               -i $@ -o $@.new
+       mv $@.new $@
+endef
+
+define Build/fit
+       $(TOPDIR)/scripts/mkits.sh \
+               -D $(DEVICE_NAME) -o $@.its -k $@ \
+               $(if $(word 2,$(1)),-d $(word 2,$(1))) -C $(word 1,$(1)) \
+               -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
+               -A $(ARCH) -v $(LINUX_VERSION)
+       PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new
+       @mv $@.new $@
+endef
+
 define Build/lzma
        $(STAGING_DIR_HOST)/bin/lzma e $@ -lc1 -lp2 -pb2 $(1) $@.new
        @mv $@.new $@
 endef
 
+define Build/gzip
+       gzip -9n -c $@ $(1) > $@.new
+       @mv $@.new $@
+endef
+
 define Build/kernel-bin
        rm -f $@
        cp $^ $@
@@ -304,6 +354,21 @@ define Build/append-rootfs
        dd if=$(word 2,$^) $(if $(1),bs=$(1) conv=sync) >> $@
 endef
 
+define Build/append-ubi
+       sh $(TOPDIR)/scripts/ubinize-image.sh \
+               $(if $(KERNEL_IN_UBI),--kernel $(word 1,$^)) \
+               $(word 2,$^) \
+               $@.tmp \
+               -p $(BLOCKSIZE) -m $(PAGESIZE) -E 5
+       cat $@.tmp >> $@
+       rm $@.tmp
+endef
+
+define Build/pad-to
+       dd if=$@ of=$@.new bs=$(1) conv=sync
+       mv $@.new $@
+endef
+
 define Build/pad-rootfs
        $(call prepare_generic_squashfs,$@ $(1))
 endef
@@ -320,15 +385,31 @@ define Build/pad-offset
 endef
 
 define Build/check-size
-       @[ $$(($(subst k,* 1024,$(subst m, * 1024k,$(1))))) -gt "$$(stat -c%s $@)" ] || { \
+       @[ $$(($(subst k,* 1024,$(subst m, * 1024k,$(1))))) -ge "$$(stat -c%s $@)" ] || { \
                echo "WARNING: Image file $@ is too big" >&2; \
                rm -f $@; \
        }
 endef
 
+define Build/combined-image
+       -sh $(TOPDIR)/scripts/combined-image.sh \
+               "$(word 1,$^)" \
+               "$@" \
+               "$@.new"
+       @mv $@.new $@
+endef
+
+define Build/sysupgrade-nand
+       sh $(TOPDIR)/scripts/sysupgrade-nand.sh \
+               --board $(if $(BOARD_NAME),$(BOARD_NAME),$(DEVICE_NAME)) \
+               --kernel $(word 1,$^) \
+               --rootfs $(word 2,$^) \
+               $@
+endef
 
 define Device/Init
   PROFILES := $(PROFILE)
+  DEVICE_NAME := $(1)
   KERNEL:=
   KERNEL_INITRAMFS = $$(KERNEL)
   KERNEL_SIZE:=
@@ -353,7 +434,7 @@ define Device/ExportVar
 
 endef
 define Device/Export
-  $(foreach var,$(DEVICE_VARS) KERNEL KERNEL_INITRAMFS,$(call Device/ExportVar,$(1),$(var)))
+  $(foreach var,$(DEVICE_VARS) DEVICE_NAME KERNEL KERNEL_INITRAMFS,$(call Device/ExportVar,$(1),$(var)))
   $(1) : FILESYSTEM:=$(2)
 endef
 
@@ -364,6 +445,7 @@ endef
 
 ifndef IB
 define Device/Build/initramfs
+  $(call Device/Export,$(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE),$(1))
   $$(_TARGET): $(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE)
 
   $(KDIR)/$$(KERNEL_NAME)-initramfs: image_prepare
@@ -377,7 +459,7 @@ endef
 endif
 
 define Device/Build/check_size
-       @[ $$(($(subst k,* 1024,$(subst m, * 1024k,$(1))))) -gt "$$(stat -c%s $@)" ] || { \
+       @[ $$(($(subst k,* 1024,$(subst m, * 1024k,$(1))))) -ge "$$(stat -c%s $@)" ] || { \
                echo "WARNING: Image file $@ is too big" >&2; \
                rm -f $@; \
        }
@@ -395,6 +477,7 @@ define Device/Build/kernel
   _KERNEL_IMAGES += $(KDIR)/$$(KERNEL_NAME)
   $(KDIR)/$$(KERNEL_NAME): image_prepare
   $$(_TARGET): $$(if $$(KERNEL_INSTALL),$(BIN_DIR)/$$(KERNEL_IMAGE))
+  $(call Device/Export,$(KDIR)/$$(KERNEL_IMAGE),$(1))
   $(BIN_DIR)/$$(KERNEL_IMAGE): $(KDIR)/$$(KERNEL_IMAGE)
        cp $$^ $$@
   ifndef IB
@@ -410,8 +493,6 @@ endef
 
 define Device/Build/image
   $$(_TARGET): $(BIN_DIR)/$(call IMAGE_NAME,$(1),$(2))
-  $(eval $(call Device/Export,$(KDIR)/$(KERNEL_IMAGE),$(1)))
-  $(eval $(call Device/Export,$(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE),$(1)))
   $(eval $(call Device/Export,$(KDIR)/tmp/$(call IMAGE_NAME,$(1),$(2)),$(1)))
   $(KDIR)/tmp/$(call IMAGE_NAME,$(1),$(2)): $(KDIR)/$$(KERNEL_IMAGE) $(KDIR)/root.$(1)
        @rm -f $$@