From 5e7833d044b0a11c7f05e38f52d5e9772aea468c Mon Sep 17 00:00:00 2001
From: Florian Fainelli <florian@openwrt.org>
Date: Wed, 21 Mar 2007 15:04:07 +0000
Subject: [PATCH] Add image generation for edimax routers

SVN-Revision: 6627
---
 target/linux/adm5120-2.6/image/Makefile | 13 ++++++++
 tools/firmware-utils/Makefile           |  1 +
 tools/firmware-utils/src/mksyshdr.c     | 44 +++++++++++++++++++++++++
 3 files changed, 58 insertions(+)
 create mode 100644 tools/firmware-utils/src/mksyshdr.c

diff --git a/target/linux/adm5120-2.6/image/Makefile b/target/linux/adm5120-2.6/image/Makefile
index 2043ffa9e5..a41fde9330 100644
--- a/target/linux/adm5120-2.6/image/Makefile
+++ b/target/linux/adm5120-2.6/image/Makefile
@@ -34,8 +34,21 @@ define trxalign/squashfs
 -a 1024
 endef
 
+define Image/Build/Compex
+	$(CP) $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(1).trx $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(3)-$(2).trx
+endef
+
+define Image/Build/Edimax
+	$(STAGING_DIR)/bin/mksyshdr csys $(KDIR)/vmlinux
+	cat csys $(KDIR)/vmlinux $(KDIR)/root.$(1) > $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(3)-$(2).img
+endef
+
 define Image/Build
 	$(STAGING_DIR)/bin/trx -o $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(1).trx -f $(KDIR)/loader.gz -f $(KDIR)/vmlinux.lzma $(call trxalign/$(1)) -f $(KDIR)/root.$(1)
+ifneq ($(1),jffs2-128K)
+	$(call Image/Build/Compex,$(1),wp54g,$(patsubst jffs2-%,jffs2,$(1)))
+	$(call Image/Build/Edimax,$(1),br6104,$(patsubst jffs2-%,jffs2,$(1)))
+endif
 endef
 
 $(eval $(call BuildImage))
diff --git a/tools/firmware-utils/Makefile b/tools/firmware-utils/Makefile
index 9f5346b449..88e3a4964c 100644
--- a/tools/firmware-utils/Makefile
+++ b/tools/firmware-utils/Makefile
@@ -26,6 +26,7 @@ define Build/Compile
 	$(call cc,ptgen)
 	$(call cc,airlink)
 	$(call cc,srec2bin)
+	$(call cc,mksyshdr)
 endef
 
 define Build/Install
diff --git a/tools/firmware-utils/src/mksyshdr.c b/tools/firmware-utils/src/mksyshdr.c
new file mode 100644
index 0000000000..9c6888e773
--- /dev/null
+++ b/tools/firmware-utils/src/mksyshdr.c
@@ -0,0 +1,44 @@
+#include <stdlib.h>
+#include <stdio.h>
+int main(int argc, char* argv[])
+{
+	FILE* fp;
+	long  nImgSize;
+	char* pHeader1 = "CSYS";
+	long  nHeader2 = 0x80500000;
+
+	if (argc != 3)
+	{
+		printf("Usage: mksyshdr <header file> <image file>\n");
+		return -1;
+	}
+
+	fp = fopen(argv[2], "rb");
+	if (fp != NULL)
+	{
+		fseek(fp, 0, SEEK_END);
+		nImgSize = ftell(fp);
+		fclose(fp);
+		fp = fopen(argv[1], "wb+");
+		if (fp != NULL)
+		{
+			fwrite(pHeader1,  sizeof(char), 4, fp);
+			fwrite(&nHeader2, sizeof(long), 1, fp);
+			fwrite(&nImgSize, sizeof(long), 1, fp);
+			fclose(fp);
+		}
+		else
+		{
+			printf("Cannot create %s.\n", argv[1]);
+			return -1;
+		}
+	}
+	else
+	{
+		printf("Cannot open %s.\n", argv[2]);
+		return -1;
+	}
+
+	return 0;
+}
+
-- 
GitLab