Re: [U-Boot] [PATCH v2 03/15] kbuild: move asm-offsets.h rules to ./Kbuild

2014-02-25 Thread Tom Rini
On Mon, Feb 24, 2014 at 06:36:07AM +0100, Wolfgang Denk wrote:
 Dear Masahiro,
 
 In message 1393207943-3725-4-git-send-email-yamad...@jp.panasonic.com you 
 wrote:
 
  +define cmd_generic-offsets
  +   (set -e; \
  +echo #ifndef __GENERIC_ASM_OFFSETS_H__; \
  +echo #define __GENERIC_ASM_OFFSETS_H__; \
  +echo /*; \
  +echo  * DO NOT MODIFY.; \
  +echo  *; \
  +echo  * This file was generated by Kbuild; \
  +echo  *; \
  +echo  */; \
  +echo ; \
  +sed -ne $(sed-y) $; \
  +echo ; \
  +echo #endif )  $@
  +endef
 
 Can we use here documents in cases like this, so the number of
 shell command executions could be greatly reduced?
 
 Does something like this work?
 
 define cmd_generic-offsets\
   cat _END_  $@\
 #ifndef __GENERIC_ASM_OFFSETS_H__ \
 #define __GENERIC_ASM_OFFSETS_H__ \
 /*\
  * DO NOT MODIFY  \
  *\
  * This file was generated by Kbuild  \
  */   \
 $$(sed -ne $(sed-y) $)   \
 #endif\

We can use printf(1) to split this up into 3 parts, but it honestly
reads worse:
diff --git a/Kbuild b/Kbuild
index 1d89761..b8d747f 100644
--- a/Kbuild
+++ b/Kbuild
@@ -15,15 +15,14 @@ targets := $(generic-offsets-file) lib/asm-offsets.s
 quiet_cmd_generic-offsets = GEN $@
 define cmd_generic-offsets
(set -e; \
-echo #ifndef __GENERIC_ASM_OFFSETS_H__; \
-echo #define __GENERIC_ASM_OFFSETS_H__; \
-echo /*; \
-echo  * DO NOT MODIFY.; \
-echo  *; \
-echo  * This file was generated by Kbuild; \
-echo  *; \
-echo  */; \
-echo ; \
+printf #ifndef __GENERIC_ASM_OFFSETS_H__\n\
+#define __GENERIC_ASM_OFFSETS_H__\n\
+/*\n\
+ * DO NOT MODIFY.\n\
+ *\n\
+ * This file was generated by Kbuild\n\
+ *\n\
+ */\n\n; \
 sed -ne $(sed-y) $; \
 echo ; \
 echo #endif )  $@

(And it doesn't quite look right in the file, but that's just a matter
of massaging things.  It also didn't seem to matter to overall build
time since it's a one-off generation, not a many-off generation.  I'm OK
with this as-is.

-- 
Tom


signature.asc
Description: Digital signature
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 03/15] kbuild: move asm-offsets.h rules to ./Kbuild

2014-02-24 Thread Masahiro Yamada
Hello Wolfgang,


 Can we use here documents in cases like this, so the number of
 shell command executions could be greatly reduced?
 
 Does something like this work?
 
 define cmd_generic-offsets\
   cat _END_  $@\
 #ifndef __GENERIC_ASM_OFFSETS_H__ \
 #define __GENERIC_ASM_OFFSETS_H__ \
 /*\
  * DO NOT MODIFY  \
  *\
  * This file was generated by Kbuild  \
  */   \
 $$(sed -ne $(sed-y) $)   \
 #endif\
 _END_
 
 ?


No.
I tried your code but it did not work.

Kbuild created an empty file
include/generated/generic-asm-offsets.h.

I tried to debug but finally I gave up.

Here document ( cat END ...  END) syntax
is really nightmare in Makefile.

I've never seen that syntax in Makefile.
For example, if you see the top Makefile
of Linux Kernel,  it always uses echo command.

Best Regards
Masahiro Yamada

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v2 03/15] kbuild: move asm-offsets.h rules to ./Kbuild

2014-02-23 Thread Masahiro Yamada
Generate include/generated/generic-asm-offsets.h and
include/generated/asm-offsets.h in ./Kbuild.

This commit also changes the include guard.

Before this commit, __ASM_OFFSETS_H__ was used for both of them.
So we could not include generic-asm-offsets.h and asm-offsets.h
at the same time.

This commit renames the include guard of the former to
__GENERIC_ASM_OFFSETS_H__.

Signed-off-by: Masahiro Yamada yamad...@jp.panasonic.com
---

Changes in v2: None

 Kbuild | 87 ++
 Makefile   | 36 +
 tools/scripts/make-asm-offsets | 27 -
 3 files changed, 89 insertions(+), 61 deletions(-)
 create mode 100644 Kbuild
 delete mode 100755 tools/scripts/make-asm-offsets

diff --git a/Kbuild b/Kbuild
new file mode 100644
index 000..1d89761
--- /dev/null
+++ b/Kbuild
@@ -0,0 +1,87 @@
+#
+# Kbuild for top-level directory of U-Boot
+# This file takes care of the following:
+# 1) Generate generic-asm-offsets.h
+# 2) Generate asm-offsets.h
+
+#
+# 1) Generate generic-asm-offsets.h
+
+generic-offsets-file := include/generated/generic-asm-offsets.h
+
+always  := $(generic-offsets-file)
+targets := $(generic-offsets-file) lib/asm-offsets.s
+
+quiet_cmd_generic-offsets = GEN $@
+define cmd_generic-offsets
+   (set -e; \
+echo #ifndef __GENERIC_ASM_OFFSETS_H__; \
+echo #define __GENERIC_ASM_OFFSETS_H__; \
+echo /*; \
+echo  * DO NOT MODIFY.; \
+echo  *; \
+echo  * This file was generated by Kbuild; \
+echo  *; \
+echo  */; \
+echo ; \
+sed -ne $(sed-y) $; \
+echo ; \
+echo #endif )  $@
+endef
+
+# We use internal kbuild rules to avoid the is up to date message from make
+lib/asm-offsets.s: lib/asm-offsets.c FORCE
+   $(Q)mkdir -p $(dir $@)
+   $(call if_changed_dep,cc_s_c)
+
+$(obj)/$(generic-offsets-file): lib/asm-offsets.s Kbuild
+   $(Q)mkdir -p $(dir $@)
+   $(call cmd,generic-offsets)
+
+#
+# 2) Generate asm-offsets.h
+#
+
+ifneq ($(wildcard $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c),)
+offsets-file := include/generated/asm-offsets.h
+endif
+
+always  += $(offsets-file)
+targets += $(offsets-file)
+targets += $(CPUDIR)/$(SOC)/asm-offsets.s
+
+
+# Default sed regexp - multiline due to syntax constraints
+define sed-y
+   /^-/{s:-#\(.*\):/* \1 */:; \
+   s:^-\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
+   s:^-\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
+   s:-::; p;}
+endef
+
+CFLAGS_asm-offsets.o := -DDO_DEPS_ONLY
+
+quiet_cmd_offsets = GEN $@
+define cmd_offsets
+   (set -e; \
+echo #ifndef __ASM_OFFSETS_H__; \
+echo #define __ASM_OFFSETS_H__; \
+echo /*; \
+echo  * DO NOT MODIFY.; \
+echo  *; \
+echo  * This file was generated by Kbuild; \
+echo  *; \
+echo  */; \
+echo ; \
+sed -ne $(sed-y) $; \
+echo ; \
+echo #endif )  $@
+endef
+
+# We use internal kbuild rules to avoid the is up to date message from make
+$(CPUDIR)/$(SOC)/asm-offsets.s: $(CPUDIR)/$(SOC)/asm-offsets.c FORCE
+   $(Q)mkdir -p $(dir $@)
+   $(call if_changed_dep,cc_s_c)
+
+$(obj)/$(offsets-file): $(CPUDIR)/$(SOC)/asm-offsets.s
+   $(call cmd,offsets)
diff --git a/Makefile b/Makefile
index aef936d..14dff8f 100644
--- a/Makefile
+++ b/Makefile
@@ -988,9 +988,8 @@ prepare1: prepare2 $(version_h) $(timestamp_h)
 
 archprepare: prepare1 scripts_basic
 
-prepare0: archprepare FORCE include/generated/generic-asm-offsets.h \
-   include/generated/asm-offsets.h
-   @:
+prepare0: archprepare FORCE
+   $(Q)$(MAKE) $(build)=.
 
 # All the preparing..
 prepare: prepare0
@@ -1115,37 +1114,6 @@ checkdtc:
false; \
fi
 
-quiet_cmd_offsets = GEN $@
-  cmd_offsets = $(srctree)/tools/scripts/make-asm-offsets $ $@
-
-include/generated/generic-asm-offsets.h: lib/asm-offsets.s
-   $(call cmd,offsets)
-
-quiet_cmd_asm-offsets.s = CC  $@
-  cmd_asm-offsets.s = mkdir -p lib; \
-   $(CC) -DDO_DEPS_ONLY \
-   $(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
-   -o $@ $ -c -S
-
-lib/asm-offsets.s: $(srctree)/lib/asm-offsets.c include/config.h
-   $(call cmd,asm-offsets.s)
-
-include/generated/asm-offsets.h: $(CPUDIR)/$(SOC)/asm-offsets.s
-   $(call cmd,offsets)
-
-quiet_cmd_soc_asm-offsets.s = CC  $@
-  cmd_soc_asm-offsets.s = mkdir -p $(CPUDIR)/$(SOC); \
-   if [ -f $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c ];then \
-   $(CC) -DDO_DEPS_ONLY \
-   $(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
-   -o $@ $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c -c -S; \
-   else \
-   touch $@; \
-   fi
-
-$(CPUDIR)/$(SOC)/asm-offsets.s:include/config.h
-   $(call cmd,soc_asm-offsets.s)
-
 

Re: [U-Boot] [PATCH v2 03/15] kbuild: move asm-offsets.h rules to ./Kbuild

2014-02-23 Thread Wolfgang Denk
Dear Masahiro,

In message 1393207943-3725-4-git-send-email-yamad...@jp.panasonic.com you 
wrote:

 +define cmd_generic-offsets
 + (set -e; \
 +  echo #ifndef __GENERIC_ASM_OFFSETS_H__; \
 +  echo #define __GENERIC_ASM_OFFSETS_H__; \
 +  echo /*; \
 +  echo  * DO NOT MODIFY.; \
 +  echo  *; \
 +  echo  * This file was generated by Kbuild; \
 +  echo  *; \
 +  echo  */; \
 +  echo ; \
 +  sed -ne $(sed-y) $; \
 +  echo ; \
 +  echo #endif )  $@
 +endef

Can we use here documents in cases like this, so the number of
shell command executions could be greatly reduced?

Does something like this work?

define cmd_generic-offsets  \
cat _END_  $@\
#ifndef __GENERIC_ASM_OFFSETS_H__   \
#define __GENERIC_ASM_OFFSETS_H__   \
/*  \
 * DO NOT MODIFY\
 *  \
 * This file was generated by Kbuild\
 */ \
$$(sed -ne $(sed-y) $) \
#endif  \
_END_

?

[I'm not sure how to mark the continuation lines here...]

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
If all the Chinese simultaneously jumped into the Pacific  off  a  10
foot platform erected 10 feet off their coast, it would cause a tidal
wave that would destroy everything in this country west of Nebraska.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot