Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/boot: Add sed script

The powerpc boot wrapper is potentially compiled with a separate
toolchain and/or toolchain flags than the rest of the kernel. The usual
case is a 64-bit big endian kernel builds a 32-bit big endian wrapper.

The main problem with this is that the wrapper does not have access to
the kernel headers (without a lot of gross hacks). To get around this
the required headers are copied into the build directory via several sed
scripts which rewrite problematic includes. This patch moves these
fixups out of the makefile into a separate .sed script file to clean up
makefile slightly.

Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
[mpe: Reword first paragraph of change log a little]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>

authored by

Oliver O'Halloran and committed by
Michael Ellerman
1a13de6d 96c44707

+17 -11
+5 -11
arch/powerpc/boot/Makefile
··· 125 125 obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat)))) 126 126 obj-plat: $(libfdt) 127 127 128 - quiet_cmd_copy_zlib = COPY $@ 129 - cmd_copy_zlib = sed "s@__used@@;s@<linux/\([^>]*\).*@\"\1\"@" $< > $@ 130 - 131 - quiet_cmd_copy_zlibheader = COPY $@ 132 - cmd_copy_zlibheader = sed "s@<linux/\([^>]*\).*@\"\1\"@" $< > $@ 133 - # stddef.h for NULL 134 - quiet_cmd_copy_zliblinuxheader = COPY $@ 135 - cmd_copy_zliblinuxheader = sed "s@<linux/string.h>@\"string.h\"@;s@<linux/kernel.h>@<stddef.h>@;s@<linux/\([^>]*\).*@\"\1\"@" $< > $@ 128 + quiet_cmd_copy_kern_src = COPY $@ 129 + cmd_copy_kern_src = sed -f $(srctree)/arch/powerpc/boot/fixup-headers.sed $< > $@ 136 130 137 131 $(addprefix $(obj)/,$(zlib)): $(obj)/%: $(srctree)/lib/zlib_inflate/% 138 - $(call cmd,copy_zlib) 132 + $(call cmd,copy_kern_src) 139 133 140 134 $(addprefix $(obj)/,$(zlibheader)): $(obj)/%: $(srctree)/lib/zlib_inflate/% 141 - $(call cmd,copy_zlibheader) 135 + $(call cmd,copy_kern_src) 142 136 143 137 $(addprefix $(obj)/,$(zliblinuxheader)): $(obj)/%: $(srctree)/include/linux/% 144 - $(call cmd,copy_zliblinuxheader) 138 + $(call cmd,copy_kern_src) 145 139 146 140 quiet_cmd_copy_libfdt = COPY $@ 147 141 cmd_copy_libfdt = cp $< $@
+12
arch/powerpc/boot/fixup-headers.sed
··· 1 + # Copyright 2016 IBM Corporation. 2 + # 3 + # This program is free software; you can redistribute it and/or modify it 4 + # under the terms of the GNU General Public License version 2 or later as 5 + # published by the Free Software Foundation. 6 + 7 + s@#include <linux/decompress/mm\.h>@@; 8 + s@\"zlib_inflate/\([^\"]*\).*@"\1"@; 9 + s@<linux/kernel.h>@<stddef.h>@; 10 + 11 + s@__used@@; 12 + s@<linux/\([^>]*\).*@"\1"@;