Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | From 8fe0d29488b376011cdaaa462d557ffc0b31fb63 Mon Sep 17 00:00:00 2001 |
| 2 | From: Khem Raj <raj.khem@gmail.com> |
| 3 | Date: Wed, 18 Mar 2015 00:49:28 +0000 |
| 4 | Subject: [PATCH 20/27] eglibc: Help bootstrap cross toolchain |
| 5 | |
| 6 | Taken 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 | |
| 23 | Upstream-Status: Pending |
| 24 | Signed-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 | |
| 31 | diff --git a/Makefile b/Makefile |
| 32 | index f906391..e4e149e 100644 |
| 33 | --- a/Makefile |
| 34 | +++ b/Makefile |
| 35 | @@ -69,9 +69,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 | @@ -151,6 +160,16 @@ others: $(common-objpfx)testrun.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 | @@ -177,6 +196,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 |
| 80 | diff --git a/include/stubs-bootstrap.h b/include/stubs-bootstrap.h |
| 81 | new file mode 100644 |
| 82 | index 0000000..1d2b669 |
| 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 | -- |
| 99 | 2.1.4 |
| 100 | |