Instead of showing how cool sed(1) invocation could be, rely on the fact
that gcc doesn't really look inside "asm" statement body and more or less
directly emits it into assembly. Pretend "#define" is an instruction.

%a prints integer as plain integer without '$' or other characters.
C++ comment takes care of trailing '#' character nobody asked for.

Remove empty lines in generated file while I'm at it.

Signed-off-by: Alexey Dobriyan <adobri...@gmail.com>
---

        NOT compile tested on ia64.
        Compile tested on arm.

 Kbuild                    |   12 +-----------
 arch/ia64/kernel/Makefile |    8 +-------
 include/linux/kbuild.h    |    2 +-
 scripts/mod/Makefile      |   11 +----------
 4 files changed, 4 insertions(+), 29 deletions(-)

--- a/Kbuild
+++ b/Kbuild
@@ -6,14 +6,6 @@
 # 3) Generate asm-offsets.h (may need bounds.h and timeconst.h)
 # 4) Check for missing system calls
 
-# 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
-
 # Use filechk to avoid rebuilds when a header changes, but the resulting file
 # does not
 define filechk_offsets
@@ -25,9 +17,7 @@ define filechk_offsets
         echo " *"; \
         echo " * This file was generated by Kbuild"; \
         echo " */"; \
-        echo ""; \
-        sed -ne $(sed-y); \
-        echo ""; \
+        sed -ne '/#define/p'; \
         echo "#endif" )
 endef
 
--- a/arch/ia64/kernel/Makefile
+++ b/arch/ia64/kernel/Makefile
@@ -50,10 +50,6 @@ CFLAGS_traps.o  += -mfixed-range=f2-f5,f16-f31
 # The gate DSO image is built using a special linker script.
 include $(src)/Makefile.gate
 
-# Calculate NR_IRQ = max(IA64_NATIVE_NR_IRQS, XEN_NR_IRQS, ...) based on config
-define sed-y
-       "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; 
s:->::; p;}"
-endef
 quiet_cmd_nr_irqs = GEN     $@
 define cmd_nr_irqs
        (set -e; \
@@ -65,9 +61,7 @@ define cmd_nr_irqs
         echo " * This file was generated by Kbuild"; \
         echo " *"; \
         echo " */"; \
-        echo ""; \
-        sed -ne $(sed-y) $<; \
-        echo ""; \
+        sed -ne '/#define/p' $<; \
         echo "#endif" ) > $@
 endef
 
--- a/include/linux/kbuild.h
+++ b/include/linux/kbuild.h
@@ -2,7 +2,7 @@
 #define __LINUX_KBUILD_H
 
 #define DEFINE(sym, val) \
-        asm volatile("\n->" #sym " %0 " #val : : "i" (val))
+       asm volatile ("#define " #sym " %a0 //" #val :: "i" (val))
 
 #define BLANK() asm volatile("\n->" : : )
 
--- a/scripts/mod/Makefile
+++ b/scripts/mod/Makefile
@@ -7,13 +7,6 @@ modpost-objs   := modpost.o file2alias.o sumversion.o
 
 devicetable-offsets-file := devicetable-offsets.h
 
-define sed-y
-       "/^->/{s:->#\(.*\):/* \1 */:; \
-       s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
-       s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
-       s:->::; p;}"
-endef
-
 quiet_cmd_offsets = GEN     $@
 define cmd_offsets
        (set -e; \
@@ -25,9 +18,7 @@ define cmd_offsets
         echo " * This file was generated by Kbuild"; \
         echo " *"; \
         echo " */"; \
-        echo ""; \
-        sed -ne $(sed-y) $<; \
-        echo ""; \
+        sed -ne '/#define/p' $<; \
         echo "#endif" ) > $@
 endef
 

Reply via email to