1From 65b79161b9e2848a174d3519a03348884f182975 Mon Sep 17 00:00:00 2001 2From: Khem Raj <raj.khem@gmail.com> 3Date: Wed, 18 Mar 2015 00:49:28 +0000 4Subject: [PATCH] eglibc: Help bootstrap cross toolchain 5 6Taken from EGLIBC, r1484 + r1525 7 8 2007-02-20 Jim Blandy <jimb@codesourcery.com> 9 10 * Makefile (install-headers): Preserve old behavior: depend on 11 $(inst_includedir)/gnu/stubs.h only if install-bootstrap-headers 12 is set; otherwise, place gnu/stubs.h on the 'install-others' list. 13 14 2007-02-16 Jim Blandy <jimb@codesourcery.com> 15 16 * Makefile: Amend make install-headers to install everything 17 necessary for building a cross-compiler. Install gnu/stubs.h as 18 part of 'install-headers', not 'install-others'. 19 If install-bootstrap-headers is 'yes', install a dummy copy of 20 gnu/stubs.h, instead of computing the real thing. 21 * include/stubs-bootstrap.h: New file. 22 23Upstream-Status: Pending 24Signed-off-by: Khem Raj <raj.khem@gmail.com> 25--- 26 Makefile | 22 +++++++++++++++++++++- 27 include/stubs-bootstrap.h | 12 ++++++++++++ 28 2 files changed, 33 insertions(+), 1 deletion(-) 29 create mode 100644 include/stubs-bootstrap.h 30 31diff --git a/Makefile b/Makefile 32index 7052b46df8..46073abaa8 100644 33--- a/Makefile 34+++ b/Makefile 35@@ -79,9 +79,18 @@ subdir-dirs = include 36 vpath %.h $(subdir-dirs) 37 38 # What to install. 39-install-others = $(inst_includedir)/gnu/stubs.h 40 install-bin-script = 41 42+# If we're bootstrapping, install a dummy gnu/stubs.h along with the 43+# other headers, so 'make install-headers' produces a useable include 44+# tree. Otherwise, install gnu/stubs.h later, after the rest of the 45+# build is done. 46+ifeq ($(install-bootstrap-headers),yes) 47+install-headers: $(inst_includedir)/gnu/stubs.h 48+else 49+install-others = $(inst_includedir)/gnu/stubs.h 50+endif 51+ 52 ifeq (yes,$(build-shared)) 53 headers += gnu/lib-names.h 54 endif 55@@ -421,6 +430,16 @@ others: $(common-objpfx)testrun.sh $(common-objpfx)debugglibc.sh 56 57 subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)$(dir)/stubs) 58 59+# gnu/stubs.h depends (via the subdir 'stubs' targets) on all the .o 60+# files in EGLIBC. For bootstrapping a GCC/EGLIBC pair, an empty 61+# gnu/stubs.h is good enough. 62+ifeq ($(install-bootstrap-headers),yes) 63+$(inst_includedir)/gnu/stubs.h: include/stubs-bootstrap.h $(+force) 64+ $(make-target-directory) 65+ $(INSTALL_DATA) $< $@ 66+ 67+installed-stubs = 68+else 69 ifndef abi-variants 70 installed-stubs = $(inst_includedir)/gnu/stubs.h 71 else 72@@ -447,6 +466,7 @@ $(inst_includedir)/gnu/stubs.h: $(+force) 73 74 install-others-nosubdir: $(installed-stubs) 75 endif 76+endif 77 78 79 # Since stubs.h is never needed when building the library, we simplify the 80diff --git a/include/stubs-bootstrap.h b/include/stubs-bootstrap.h 81new file mode 100644 82index 0000000000..1d2b669aff 83--- /dev/null 84+++ b/include/stubs-bootstrap.h 85@@ -0,0 +1,12 @@ 86+/* Placeholder stubs.h file for bootstrapping. 87+ 88+ When bootstrapping a GCC/EGLIBC pair, GCC requires that the EGLIBC 89+ headers be installed, but we can't fully build EGLIBC without that 90+ GCC. So we run the command: 91+ 92+ make install-headers install-bootstrap-headers=yes 93+ 94+ to install the headers GCC needs, but avoid building certain 95+ difficult headers. The <gnu/stubs.h> header depends, via the 96+ EGLIBC subdir 'stubs' make targets, on every .o file in EGLIBC, but 97+ an empty stubs.h like this will do fine for GCC. */ 98