From ad80c4a3220b5348f904f909ed572c364d50f867 Mon Sep 17 00:00:00 2001
From: Masahiro Yamada <yamada.m@jp.panasonic.com>
Date: Fri, 6 Jun 2014 14:04:32 +0900
Subject: [PATCH] kbuild, tools: generate wrapper C sources automatically by
 Makefile

There are many source files shared between U-boot image and tools.
Instead of adding a lot of dummy wrapper files that just include
the corresponding file in lib/ or common/ directory,
Makefile should automatically generate them.

The original inspiration for this came from
scripts/Makefile.asm-generic of Linux Kernel.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Acked-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
---
 tools/.gitignore     |  3 +++
 tools/Makefile       | 36 +++++++++++++++++++++++-------------
 tools/crc32.c        |  1 -
 tools/env_embedded.c |  1 -
 tools/fdt.c          |  1 -
 tools/fdt_ro.c       |  1 -
 tools/fdt_rw.c       |  1 -
 tools/fdt_strerror.c |  1 -
 tools/fdt_wip.c      |  1 -
 tools/fdtdec.c       |  1 -
 tools/image-fit.c    |  1 -
 tools/image-sig.c    |  1 -
 tools/image.c        |  1 -
 tools/md5.c          |  1 -
 tools/rsa-checksum.c |  1 -
 tools/rsa-sign.c     |  1 -
 tools/rsa-verify.c   |  1 -
 tools/sha1.c         |  1 -
 tools/sha256.c       |  1 -
 19 files changed, 26 insertions(+), 30 deletions(-)
 delete mode 100644 tools/crc32.c
 delete mode 100644 tools/env_embedded.c
 delete mode 100644 tools/fdt.c
 delete mode 100644 tools/fdt_ro.c
 delete mode 100644 tools/fdt_rw.c
 delete mode 100644 tools/fdt_strerror.c
 delete mode 100644 tools/fdt_wip.c
 delete mode 100644 tools/fdtdec.c
 delete mode 100644 tools/image-fit.c
 delete mode 100644 tools/image-sig.c
 delete mode 100644 tools/image.c
 delete mode 100644 tools/md5.c
 delete mode 100644 tools/rsa-checksum.c
 delete mode 100644 tools/rsa-sign.c
 delete mode 100644 tools/rsa-verify.c
 delete mode 100644 tools/sha1.c
 delete mode 100644 tools/sha256.c

diff --git a/tools/.gitignore b/tools/.gitignore
index 725db906e8..0eb9068dc7 100644
--- a/tools/.gitignore
+++ b/tools/.gitignore
@@ -21,3 +21,6 @@
 /easylogo/easylogo
 /gdb/gdbcont
 /gdb/gdbsend
+
+/lib/
+/common/
diff --git a/tools/Makefile b/tools/Makefile
index 762f7dce9b..06a95bb50f 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -47,7 +47,7 @@ hostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo$(SFX)
 HOSTCFLAGS_bmp_logo$(SFX).o := -pedantic
 
 hostprogs-$(CONFIG_BUILD_ENVCRC) += envcrc$(SFX)
-envcrc$(SFX)-objs := crc32.o env_embedded.o envcrc.o sha1.o
+envcrc$(SFX)-objs := envcrc.o lib/crc32.o common/env_embedded.o lib/sha1.o
 
 hostprogs-$(CONFIG_CMD_NET) += gen_eth_addr$(SFX)
 HOSTCFLAGS_gen_eth_addr$(SFX).o := -pedantic
@@ -59,41 +59,43 @@ hostprogs-$(CONFIG_XWAY_SWAP_BYTES) += xway-swap-bytes$(SFX)
 HOSTCFLAGS_xway-swap-bytes$(SFX).o := -pedantic
 
 hostprogs-y += mkenvimage$(SFX)
-mkenvimage$(SFX)-objs := crc32.o mkenvimage.o os_support.o
+mkenvimage$(SFX)-objs := mkenvimage.o os_support.o lib/crc32.o
 
 hostprogs-y += dumpimage$(SFX) mkimage$(SFX)
 hostprogs-$(CONFIG_FIT_SIGNATURE) += fit_info$(SFX) fit_check_sign$(SFX)
 
-FIT_SIG_OBJS-$(CONFIG_FIT_SIGNATURE) := image-sig.o
+FIT_SIG_OBJS-$(CONFIG_FIT_SIGNATURE) := common/image-sig.o
 # Flattened device tree objects
-LIBFDT_OBJS := fdt.o fdt_ro.o fdt_rw.o fdt_strerror.o fdt_wip.o
-RSA_OBJS-$(CONFIG_FIT_SIGNATURE) := rsa-sign.o rsa-verify.o rsa-checksum.o
+LIBFDT_OBJS := $(addprefix lib/libfdt/, \
+			fdt.o fdt_ro.o fdt_rw.o fdt_strerror.o fdt_wip.o)
+RSA_OBJS-$(CONFIG_FIT_SIGNATURE) := $(addprefix lib/rsa/, \
+					rsa-sign.o rsa-verify.o rsa-checksum.o)
 
 # common objs for dumpimage and mkimage
 dumpimage-mkimage-objs := aisimage.o \
 			atmelimage.o \
 			$(FIT_SIG_OBJS-y) \
-			crc32.o \
+			lib/crc32.o \
 			default_image.o \
-			fdtdec.o \
+			lib/fdtdec.o \
 			fit_common.o \
 			fit_image.o \
 			gpimage.o \
 			gpimage-common.o \
-			image-fit.o \
+			common/image-fit.o \
 			image-host.o \
-			image.o \
+			common/image.o \
 			imagetool.o \
 			imximage.o \
 			kwbimage.o \
-			md5.o \
+			lib/md5.o \
 			mxsimage.o \
 			omapimage.o \
 			os_support.o \
 			pblimage.o \
 			pbl_crc32.o \
-			sha1.o \
-			sha256.o \
+			lib/sha1.o \
+			lib/sha256.o \
 			ublimage.o \
 			$(LIBFDT_OBJS) \
 			$(RSA_OBJS-y)
@@ -139,7 +141,7 @@ hostprogs-$(CONFIG_SUNXI) += mksunxiboot$(SFX)
 hostprogs-$(CONFIG_NETCONSOLE) += ncb$(SFX)
 hostprogs-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1$(SFX)
 
-ubsha1$(SFX)-objs := os_support.o sha1.o ubsha1.o
+ubsha1$(SFX)-objs := os_support.o ubsha1.o lib/sha1.o
 
 HOSTCFLAGS_ubsha1.o := -pedantic
 
@@ -159,6 +161,14 @@ HOSTCFLAGS_sha256.o := -pedantic
 #hostprogs-$(CONFIG_PPC) += mpc86x_clk$(SFX)
 #HOSTCFLAGS_mpc86x_clk$(SFX).o := -pedantic
 
+quiet_cmd_wrap = WRAP    $@
+cmd_wrap = echo "\#include <$(srctree)/$(patsubst $(obj)/%,%,$@)>" >$@
+
+$(obj)/lib/%.c $(obj)/common/%.c:
+	$(call cmd,wrap)
+
+clean-dirs := lib common
+
 always := $(hostprogs-y)
 
 # Generated LCD/video logo
diff --git a/tools/crc32.c b/tools/crc32.c
deleted file mode 100644
index aed7112f6a..0000000000
--- a/tools/crc32.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/crc32.c"
diff --git a/tools/env_embedded.c b/tools/env_embedded.c
deleted file mode 100644
index 59a6357195..0000000000
--- a/tools/env_embedded.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../common/env_embedded.c"
diff --git a/tools/fdt.c b/tools/fdt.c
deleted file mode 100644
index 1eafc56d76..0000000000
--- a/tools/fdt.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/libfdt/fdt.c"
diff --git a/tools/fdt_ro.c b/tools/fdt_ro.c
deleted file mode 100644
index 9005fe3ca3..0000000000
--- a/tools/fdt_ro.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/libfdt/fdt_ro.c"
diff --git a/tools/fdt_rw.c b/tools/fdt_rw.c
deleted file mode 100644
index adc3fdfbea..0000000000
--- a/tools/fdt_rw.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/libfdt/fdt_rw.c"
diff --git a/tools/fdt_strerror.c b/tools/fdt_strerror.c
deleted file mode 100644
index d0b58220a4..0000000000
--- a/tools/fdt_strerror.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/libfdt/fdt_strerror.c"
diff --git a/tools/fdt_wip.c b/tools/fdt_wip.c
deleted file mode 100644
index 7810f07079..0000000000
--- a/tools/fdt_wip.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/libfdt/fdt_wip.c"
diff --git a/tools/fdtdec.c b/tools/fdtdec.c
deleted file mode 100644
index f1c22569ca..0000000000
--- a/tools/fdtdec.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/fdtdec.c"
diff --git a/tools/image-fit.c b/tools/image-fit.c
deleted file mode 100644
index 037e5cc8d7..0000000000
--- a/tools/image-fit.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../common/image-fit.c"
diff --git a/tools/image-sig.c b/tools/image-sig.c
deleted file mode 100644
index e45419f321..0000000000
--- a/tools/image-sig.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../common/image-sig.c"
diff --git a/tools/image.c b/tools/image.c
deleted file mode 100644
index 0f9bacc702..0000000000
--- a/tools/image.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../common/image.c"
diff --git a/tools/md5.c b/tools/md5.c
deleted file mode 100644
index befaa321c7..0000000000
--- a/tools/md5.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/md5.c"
diff --git a/tools/rsa-checksum.c b/tools/rsa-checksum.c
deleted file mode 100644
index 09033e6201..0000000000
--- a/tools/rsa-checksum.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/rsa/rsa-checksum.c"
diff --git a/tools/rsa-sign.c b/tools/rsa-sign.c
deleted file mode 100644
index 150bbe151e..0000000000
--- a/tools/rsa-sign.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/rsa/rsa-sign.c"
diff --git a/tools/rsa-verify.c b/tools/rsa-verify.c
deleted file mode 100644
index bb662a1ef8..0000000000
--- a/tools/rsa-verify.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/rsa/rsa-verify.c"
diff --git a/tools/sha1.c b/tools/sha1.c
deleted file mode 100644
index 0d717dfa44..0000000000
--- a/tools/sha1.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/sha1.c"
diff --git a/tools/sha256.c b/tools/sha256.c
deleted file mode 100644
index 8ca931f6bf..0000000000
--- a/tools/sha256.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../lib/sha256.c"
-- 
2.39.5