summaryrefslogtreecommitdiff
path: root/recipes/glibc/glibc-2.3.6
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/glibc/glibc-2.3.6')
-rw-r--r--recipes/glibc/glibc-2.3.6/etc/ld.so.conf2
-rw-r--r--recipes/glibc/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch28
-rw-r--r--recipes/glibc/glibc-2.3.6/glibc-2.3.6-bind-already-defined-on-powerpc.patch65
-rw-r--r--recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch28
-rw-r--r--recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-pthread-raise.patch37
-rw-r--r--recipes/glibc/glibc-2.3.6/glibc-arm-socket-weakalias.patch45
-rw-r--r--recipes/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch79
-rw-r--r--recipes/glibc/glibc-2.3.6/glibc-memusage.patch44
-rw-r--r--recipes/glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch25
-rw-r--r--recipes/glibc/glibc-2.3.6/late-install-loop-break.patch29
10 files changed, 382 insertions, 0 deletions
diff --git a/recipes/glibc/glibc-2.3.6/etc/ld.so.conf b/recipes/glibc/glibc-2.3.6/etc/ld.so.conf
new file mode 100644
index 0000000000..46e06d3f0a
--- /dev/null
+++ b/recipes/glibc/glibc-2.3.6/etc/ld.so.conf
@@ -0,0 +1,2 @@
+/usr/local/lib
+
diff --git a/recipes/glibc/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch b/recipes/glibc/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch
new file mode 100644
index 0000000000..4348d6f5d0
--- /dev/null
+++ b/recipes/glibc/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch
@@ -0,0 +1,28 @@
+fixes
+
+{BUILD_DIR}/build-glibc/csu/crtn.o: In function "dummy":
+{BUILD_DIR}/build-glibc/csu/crtn.S:14: multiple definition of "dummy"
+{BUILD_DIR}/build-glibc/csu/crti.o:{BUILD_DIR}/build-glibc/csu/crti.S:33: first defined here
+{BUILD_DIR}/build-glibc/csu/crtn.o: In function "_init":
+{BUILD_DIR}/build-glibc/csu/crtn.S:30: multiple definition of "_init"
+{BUILD_DIR}/build-glibc/csu/crti.o:{BUILD_DIR}/build-glibc/csu/crti.S:65: first defined here
+{BUILD_DIR}/build-glibc/csu/crtn.o: In function "_fini":
+{BUILD_DIR}/build-glibc/csu/crtn.S:25: multiple definition of "_fini"
+{BUILD_DIR}/build-glibc/csu/crti.o:{BUILD_DIR}/build-glibc/csu/crti.S:38: first defined here
+{BUILD_DIR}/build-glibc/csu/crti.o: In function "_fini":
+{BUILD_DIR}/build-glibc/csu/crti.S:(.init+0x20): undefined reference to "i_am_not_a_leaf"
+{BUILD_DIR}/build-glibc/csu/crtn.o: In function "_fini":
+{BUILD_DIR}/build-glibc/csu/crtn.S:(.init+0x40): undefined reference to "i_am_not_a_leaf"
+{BUILD_DIR}/build-glibc/csu/crtn.S:(.init+0x44): undefined reference to "i_am_not_a_leaf"
+
+--- glibc-2.3.6/sysdeps/powerpc/powerpc32/Makefile.org 2006-08-21 19:03:01.000000000 -0700
++++ glibc-2.3.6/sysdeps/powerpc/powerpc32/Makefile 2006-08-21 19:03:19.000000000 -0700
+@@ -21,7 +21,7 @@
+ ifneq ($(elf),no)
+ # The initfini generation code doesn't work in the presence of -fPIC, so
+ # we use -fpic instead which is much better.
+-CFLAGS-initfini.s = -g0 -fpic -O1
++CFLAGS-initfini.s = -g0 -fpic -O1 $(fno-unit-at-a-time)
+
+ # There is no benefit to using sdata for these objects, and the user
+ # of the library should be able to control what goes into sdata.
diff --git a/recipes/glibc/glibc-2.3.6/glibc-2.3.6-bind-already-defined-on-powerpc.patch b/recipes/glibc/glibc-2.3.6/glibc-2.3.6-bind-already-defined-on-powerpc.patch
new file mode 100644
index 0000000000..9938ef6973
--- /dev/null
+++ b/recipes/glibc/glibc-2.3.6/glibc-2.3.6-bind-already-defined-on-powerpc.patch
@@ -0,0 +1,65 @@
+Fixes "Error: symbol `__bind' is already defined" error when building for PowerPC
+
+Patch taken from http://bugs.debian.org/343571
+
+
+--- x/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2004-06-30 17:29:12.000000000 -0500
++++ x/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2005-11-18 16:48:11.000000000 -0600
+@@ -88,7 +79,6 @@
+ b .L9
+ END (__lround)
+
+-strong_alias (__lround, __lround)
+ weak_alias (__lround, lround)
+
+ strong_alias (__lround, __lroundf)
+--- x/sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S 2005-12-16 01:04:21.000000000 -0600
++++ x/sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S 2005-12-16 01:06:26.000000000 -0600
+@@ -42,7 +42,11 @@
+ #define stackblock 20
+
+ #ifndef __socket
+-#define __socket P(__,socket)
++# ifndef NO_WEAK_ALIAS
++# define __socket P(__,socket)
++# else
++# define __socket socket
++# endif
+ #endif
+
+ .text
+@@ -116,4 +120,6 @@
+
+ PSEUDO_END (__socket)
+
++#ifndef NO_WEAK_ALIAS
+ weak_alias (__socket, socket)
++#endif
+--- x/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2005-12-16 01:08:45.000000000 -0600
++++ x/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2005-12-16 01:09:32.000000000 -0600
+@@ -41,12 +41,12 @@
+
+ #define stackblock 80 /* offset to socket parm area. */
+
+-#ifndef socket
+-/* If this is just socket.S leave it alone! */
+-#else
+ #ifndef __socket
+-#define __socket P(__,socket)
+-#endif
++# ifndef NO_WEAK_ALIAS
++# define __socket P(__,socket)
++# else
++# define __socket socket
++# endif
+ #endif
+
+ .text
+@@ -120,4 +120,6 @@
+ cfi_endproc
+ PSEUDO_END (__socket)
+
++#ifndef NO_WEAK_ALIAS
+ weak_alias (__socket, socket)
++#endif
+
diff --git a/recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch b/recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch
new file mode 100644
index 0000000000..9976eccef9
--- /dev/null
+++ b/recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch
@@ -0,0 +1,28 @@
+fixes
+
+{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "dummy":
+{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:14: multiple definition of "dummy"
+{BUILD_DIR}/build-glibc/linuxthreads/crti.o:{BUILD_DIR}/build-glibc/linuxthreads/crti.S:33: first defined here
+{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "_fini":
+{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:30: multiple definition of "_fini"
+{BUILD_DIR}/build-glibc/linuxthreads/crti.o:{BUILD_DIR}/build-glibc/linuxthreads/crti.S:65: first defined here
+{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "_init":
+{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:23: multiple definition of "_init"
+{BUILD_DIR}/build-glibc/linuxthreads/crti.o:{BUILD_DIR}/build-glibc/linuxthreads/crti.S:37: first defined here
+{BUILD_DIR}/build-glibc/linuxthreads/crti.o: In function "_fini":
+{BUILD_DIR}/build-glibc/linuxthreads/crti.S:(.text+0x70): undefined reference to "i_am_not_a_leaf"
+{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "_fini":
+{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:(.text+0x38): undefined reference to "i_am_not_a_leaf"
+collect2: ld returned 1 exit status
+
+--- glibc-2.3.6/linuxthreads/sysdeps/powerpc/Makefile.org 2003-02-17 20:33:17.000000000 +0000
++++ glibc-2.3.6/linuxthreads/sysdeps/powerpc/Makefile 2007-04-04 16:26:01.969067632 +0100
+@@ -1,6 +1,6 @@
+ ifeq ($(subdir):$(elf),linuxthreads:yes)
+ # See CFLAGS-initfini.s above; this is the same code.
+-CFLAGS-pt-initfini.s = -g0 -fpic -O1
++CFLAGS-pt-initfini.s = -g0 -fpic -O1 $(fno-unit-at-a-time)
+ endif
+ ifeq ($(subdir),csu)
+ gen-as-const-headers += tcb-offsets.sym
+
diff --git a/recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-pthread-raise.patch b/recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-pthread-raise.patch
new file mode 100644
index 0000000000..dae5db3846
--- /dev/null
+++ b/recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-pthread-raise.patch
@@ -0,0 +1,37 @@
+--- glibc-2.3.6/linuxthreads/sysdeps/unix/sysv/linux/raise.c.org 2008-07-16 22:57:58.000000000 -0700
++++ glibc-2.3.6/linuxthreads/sysdeps/unix/sysv/linux/raise.c 2008-07-16 22:58:26.000000000 -0700
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1996, 2002, 2003 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1996, 2002, 2003, 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -18,10 +18,13 @@
+
+ #include <signal.h>
+ #include <unistd.h>
+-#include <bits/libc-lock.h>
+
+-#ifndef SHARED
++#ifndef IS_IN_rtld
++# include <bits/libc-lock.h>
++
++# ifndef SHARED
+ weak_extern (__pthread_raise)
++# endif
+ #endif
+
+ /* Raise the signal SIG. */
+@@ -29,8 +32,12 @@ int
+ raise (sig)
+ int sig;
+ {
++#ifdef IS_IN_rtld
++ return __kill (__getpid (), sig);
++#else
+ return __libc_maybe_call2 (pthread_raise, (sig),
+ __kill (__getpid (), sig));
++#endif
+ }
+ libc_hidden_def (raise)
+ weak_alias (raise, gsignal)
diff --git a/recipes/glibc/glibc-2.3.6/glibc-arm-socket-weakalias.patch b/recipes/glibc/glibc-2.3.6/glibc-arm-socket-weakalias.patch
new file mode 100644
index 0000000000..722365f122
--- /dev/null
+++ b/recipes/glibc/glibc-2.3.6/glibc-arm-socket-weakalias.patch
@@ -0,0 +1,45 @@
+This one was taken from debian.
+
+# DP: Description: Fix __bind redefinition problem
+# DP: Related bugs:
+# DP: Dpatch author: Phil Blundell
+# DP: Patch author: Daniel Jacobowitz
+# DP: Upstream status: In CVS
+# DP: Status Details:
+# DP: Date: 2005-12-25
+
+Index: sysdeps/unix/sysv/linux/arm/socket.S
+===================================================================
+RCS file: /cvs/glibc/ports/sysdeps/unix/sysv/linux/arm/socket.S,v
+retrieving revision 1.12
+retrieving revision 1.13
+diff -u -r1.12 -r1.13
+--- glibc-2.3.6.ds1.orig/sysdeps/unix/sysv/linux/arm/socket.S 4 Dec 2004 21:20:16 -0000 1.12
++++ glibc-2.3.6.ds1/sysdeps/unix/sysv/linux/arm/socket.S 27 Oct 2005 18:50:12 -0000 1.13
+@@ -1,4 +1,6 @@
+-/* Copyright (C) 1995, 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
++/* Copyright (C) 1995, 1996, 1997, 1998, 2003, 2004, 2005
++ Free Software Foundation, Inc.
++
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,7 +34,11 @@
+ The .S files for the other calls just #define socket and #include this. */
+
+ #ifndef __socket
++#ifndef NO_WEAK_ALIAS
+ #define __socket P(__,socket)
++#else
++#define __socket socket
++#endif
+ #endif
+
+ #define PUSHARGS_1 str a1, [sp, $-4]!
+@@ -120,4 +126,6 @@
+
+ PSEUDO_END (__socket)
+
++#ifndef NO_WEAK_ALIAS
+ weak_alias (__socket, socket)
++#endif
diff --git a/recipes/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch b/recipes/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch
new file mode 100644
index 0000000000..8e24a831b0
--- /dev/null
+++ b/recipes/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch
@@ -0,0 +1,79 @@
+Fix rpcsvc headers missing from glibc, also
+allows glibc to produce the rpc headers when cross compiling,
+And fix for glibc-bootstrap package doesn't currently build because the
+generated sunrpc headers are not available
+
+
+---
+ sunrpc/Makefile | 28 ++++++++++++++++++++++++----
+ 1 file changed, 24 insertions(+), 4 deletions(-)
+
+Index: glibc-2.3.6/sunrpc/Makefile
+===================================================================
+--- glibc-2.3.6.orig/sunrpc/Makefile 2005-07-17 20:03:49.000000000 -0700
++++ glibc-2.3.6/sunrpc/Makefile 2008-07-17 15:28:04.000000000 -0700
+@@ -75,6 +75,8 @@ install-sbin := rpcinfo
+ rpcgen-objs = rpc_main.o rpc_hout.o rpc_cout.o rpc_parse.o \
+ rpc_scan.o rpc_util.o rpc_svcout.o rpc_clntout.o \
+ rpc_tblout.o rpc_sample.o
++host-rpcgen-objs = $(addprefix host-,$(rpcgen-objs))
++
+ # These headers are part of rpcgen.
+ distribute := proto.h rpc_util.h rpc_parse.h rpc_scan.h \
+ $(rpcgen-objs:.o=.c) etc.rpc \
+@@ -98,8 +100,8 @@ otherlibs += $(nssobjdir)/libnss_files.a
+ $(resolvobjdir)/libresolv.a
+ endif
+
+-ifeq (no,$(cross-compiling))
+-# We can only build this library if we can run the rpcgen we build.
++ifneq (,$(findstring subdir_install,$(MAKECMDGOALS)))
++## We can only build this library if we can run the rpcgen we build.
+ headers += $(rpcsvc:%.x=rpcsvc/%.h)
+ extra-libs := librpcsvc
+ extra-libs-others := librpcsvc # Make it in `others' pass, not `lib' pass.
+@@ -144,8 +146,26 @@ cpp-srcs-left := $(rpcgen-objs:.o=.c)
+ lib := nonlib
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+
++# Rely on the target rpcgen objects for dependency information.
++$(objpfx)host-%.o: %.c $(objpfx)%.o
++ $(patsubst %/,cd % &&,$(objpfx)) \
++ $(BUILD_CC) $($(basename $(<F))-CFLAGS) \
++ -I$(shell cd .. && pwd) \
++ -Dattribute_hidden= \
++ -include $(shell cd ../include && pwd)/libintl.h \
++ -O2 $(ALL_BUILD_CFLAGS) $(shell pwd)/$(<F) -c -o $(@F)
++
++$(objpfx)host-rpcgen: $(addprefix $(objpfx),$(host-rpcgen-objs))
++ $(BUILD_CC) $(BUILD_CFLAGS) $+ -o $(objpfx)host-rpcgen
++
+ # Tell rpcgen where to find the C preprocessor.
++ifeq ($(cross-compiling),no)
+ rpcgen-cmd = CPP='$(CC) -E -x c-header' $(built-program-cmd) -Y ../scripts
++rpcgen-prog = $(objpfx)rpcgen
++else
++rpcgen-cmd = CPP='$(CC) -E -x c-header' $(objpfx)host-rpcgen -Y ../scripts
++rpcgen-prog = $(objpfx)host-rpcgen
++endif
+
+ # Install the rpc data base file.
+ $(inst_sysconfdir)/rpc: etc.rpc $(+force)
+@@ -156,7 +176,7 @@ $(inst_sysconfdir)/rpc: etc.rpc $(+force
+ # relinked.
+ $(rpcsvc:%.x=$(objpfx)rpcsvc/%.h): $(objpfx)rpcsvc/%.h: $(objpfx)rpcsvc/%.stmp
+ @:
+-$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)rpcgen
++$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(rpcgen-prog)
+ $(make-target-directory)
+ -@rm -f ${@:stmp=T} $@
+ $(rpcgen-cmd) -h $< -o ${@:stmp=T}
+@@ -166,7 +186,7 @@ $(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(obj
+ # Generate the rpcsvc XDR functions with rpcgen.
+ $(rpcsvc:%.x=$(objpfx)x%.c): $(objpfx)x%.c: $(objpfx)x%.stmp
+ @:
+-$(objpfx)x%.stmp: rpcsvc/%.x $(objpfx)rpcgen
++$(objpfx)x%.stmp: rpcsvc/%.x $(rpcgen-prog)
+ -@rm -f ${@:stmp=T} $@
+ $(rpcgen-cmd) -c $< -o ${@:stmp=T}
+ $(move-if-change) $(@:stmp=T) $(@:stmp=c)
diff --git a/recipes/glibc/glibc-2.3.6/glibc-memusage.patch b/recipes/glibc/glibc-2.3.6/glibc-memusage.patch
new file mode 100644
index 0000000000..39ca1a77b5
--- /dev/null
+++ b/recipes/glibc/glibc-2.3.6/glibc-memusage.patch
@@ -0,0 +1,44 @@
+---
+ malloc/Makefile | 4 +++-
+ malloc/memusage.sh | 6 ++++++
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+Index: glibc-2.3.6/malloc/Makefile
+===================================================================
+--- glibc-2.3.6.orig/malloc/Makefile 2008-07-17 14:40:54.000000000 -0700
++++ glibc-2.3.6/malloc/Makefile 2008-07-17 14:42:07.000000000 -0700
+@@ -80,7 +80,7 @@ ifneq ($(cross-compiling),yes)
+ ifneq ($(LIBGD),no)
+ install-bin = memusagestat
+ install-bin-script += memusage
+-generated += memusagestat memusage
++generated += memusagestat
+ extra-objs += memusagestat.o
+
+ # The configure.in check for libgd and its headers did not use $SYSINCLUDES.
+@@ -90,6 +90,8 @@ extra-objs += memusagestat.o
+ $(objpfx)memusagestat.o: sysincludes = # nothing
+ endif
+ endif
++install-bin-script += memusage
++generated += memusage
+
+ # Another goal which can be used to override the configure decision.
+ .PHONY: do-memusagestat
+Index: glibc-2.3.6/malloc/memusage.sh
+===================================================================
+--- glibc-2.3.6.orig/malloc/memusage.sh 2008-07-17 14:42:17.000000000 -0700
++++ glibc-2.3.6/malloc/memusage.sh 2008-07-17 14:42:54.000000000 -0700
+@@ -205,6 +205,12 @@ if test $# -eq 0; then
+ do_usage
+ fi
+
++# Find memusagestat.
++if test -n "$png" -a ! -x $memusagestat; then
++ echo >&2 $"PNG generation is not supported."
++ png=""
++fi
++
+ # This will be in the environment.
+ add_env="LD_PRELOAD=$memusageso"
+
diff --git a/recipes/glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch b/recipes/glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch
new file mode 100644
index 0000000000..a3658f4cd6
--- /dev/null
+++ b/recipes/glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch
@@ -0,0 +1,25 @@
+---
+ elf/Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Index: glibc-2.3.6/elf/Makefile
+===================================================================
+--- glibc-2.3.6.orig/elf/Makefile 2008-07-17 01:10:39.000000000 -0700
++++ glibc-2.3.6/elf/Makefile 2008-07-17 01:17:18.000000000 -0700
+@@ -279,7 +279,7 @@ $(objpfx)rtld-libc.a: $(objpfx)librtld.m
+ $(MAKE) -f $< -f rtld-Rules
+
+ $(objpfx)librtld.os: $(objpfx)dl-allobjs.os $(objpfx)rtld-libc.a
+- $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc '-Wl,-)' \
++ $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc -lgcc_eh '-Wl,-)' \
+ -Wl,-Map,$@.map
+
+ generated += librtld.map librtld.mk rtld-libc.a librtld.os.map
+@@ -295,6 +295,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld
+ -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \
+ > $@.lds
+ $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \
++ -lgcc -lgcc_eh \
+ $(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now)) \
+ $(filter-out $(map-file),$^) $(load-map-file) \
+ -Wl,-soname=$(rtld-installed-name) -T $@.lds
diff --git a/recipes/glibc/glibc-2.3.6/late-install-loop-break.patch b/recipes/glibc/glibc-2.3.6/late-install-loop-break.patch
new file mode 100644
index 0000000000..fc7d8b31e6
--- /dev/null
+++ b/recipes/glibc/glibc-2.3.6/late-install-loop-break.patch
@@ -0,0 +1,29 @@
+--- glibc-2.3.6/Makerules Sat Sep 8 22:59:54 2007
++++ glibc-2.3.6/Makerules Sun Sep 9 01:04:29 2007
+@@ -154,26 +154,6 @@
+ common-before-compile = $(before-compile)
+ endif
+
+-ifndef subdir
+-# If a makefile needs to do something conditional on something that
+-# can only be figured out from headers, write a FOO.make.c input
+-# file that uses cpp contructs and contains @@@ LINE @@@ for each LINE
+-# to emit in the generated makefile, and use -include $(common-objpfx)FOO.make.
+-#
+-# We only generate these in the top-level makefile, to avoid any weirdness
+-# from subdir-specific makefile tweaks creeping in on an update.
+-$(common-objpfx)%.make: $(..)%.make.c $(..)Makerules $(common-before-compile)
+- rm -f $@T $@.dT
+- (echo '# Generated from $*.make.c by Makerules.'; \
+- $(CC) $(CFLAGS) $(CPPFLAGS) -E $< \
+- -MD -MP -MT '$$(common-objpfx)$*.make' -MF $@.dT \
+- | sed -n '/@@@/{s/@@@[ ]*\(.*\)@@@/\1/;s/[ ]*$$//p;}'; \
+- echo 'common-generated += $(@F)'; \
+- sed $(sed-remove-objpfx) $(sed-remove-dotdot) $@.dT; \
+- rm -f $@.dT) > $@T
+- mv -f $@T $@
+-endif
+-
+ ifdef subdir
+ sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g' \
+ -e 's@^\.\.\/\([^ \]*\)@$$(..)\1@g'