]>
Commit | Line | Data |
---|---|---|
9de06f3c RM |
1 | # Copyright (C) 1991-2000,2002,2003,2004,2005,2006 |
2 | # Free Software Foundation, Inc. | |
28f540f4 RM |
3 | # This file is part of the GNU C Library. |
4 | ||
5 | # The GNU C Library is free software; you can redistribute it and/or | |
41bdb6e2 AJ |
6 | # modify it under the terms of the GNU Lesser General Public |
7 | # License as published by the Free Software Foundation; either | |
8 | # version 2.1 of the License, or (at your option) any later version. | |
28f540f4 RM |
9 | |
10 | # The GNU C Library is distributed in the hope that it will be useful, | |
11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 | 13 | # Lesser General Public License for more details. |
28f540f4 | 14 | |
41bdb6e2 AJ |
15 | # You should have received a copy of the GNU Lesser General Public |
16 | # License along with the GNU C Library; if not, write to the Free | |
17 | # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | |
18 | # 02111-1307 USA. | |
28f540f4 RM |
19 | |
20 | # | |
21 | # Rules for making a subdirectory in the GNU C library. | |
22 | # Each subdirectory Makefile defines some variables and includes this. | |
23 | # | |
24 | ifneq (,) | |
25 | This makefile requires GNU Make. | |
26 | endif | |
27 | ||
28 | all: # Don't let the default goal come from Makeconfig. | |
29 | ||
a334319f | 30 | include ../Makeconfig |
28f540f4 RM |
31 | |
32 | ifndef subdir | |
33 | Each subdirectory makefile must define the `subdir' variable. | |
34 | endif | |
c7562c74 | 35 | # This ` unconfuses emacs. |
28f540f4 RM |
36 | # This is benign and useless in GNU make before 3.63. |
37 | export subdir := $(subdir) | |
38 | \f | |
39 | # This is the default target; it makes the library and auxiliary programs. | |
40 | .PHONY: all | |
96f873b9 | 41 | all: objs lib others |
28f540f4 | 42 | |
0413b54c | 43 | ifeq ($(build-programs),yes) |
a182affd | 44 | others: $(addprefix $(objpfx),$(extra-objs) \ |
6c3ebebd UD |
45 | $(install-lib) \ |
46 | $(install-bin) $(install-bin-script) \ | |
1ef32c3d | 47 | $(install-rootsbin) $(install-sbin)) |
0413b54c UD |
48 | else |
49 | others: $(addprefix $(objpfx),$(extra-objs) \ | |
50 | $(install-lib)) | |
51 | endif | |
a182affd | 52 | |
28f540f4 RM |
53 | ifneq "$(findstring env,$(origin headers))" "" |
54 | headers := | |
55 | endif | |
56 | ||
57 | ifneq "$(findstring env,$(origin generated))" "" | |
58 | generated := | |
59 | endif | |
60 | ||
924840c5 TBB |
61 | ifneq "$(findstring env,$(origin common-generated))" "" |
62 | common-generated := | |
63 | endif | |
64 | ||
adee0e1f RM |
65 | # See below. This must be set before Makerules processes it. |
66 | before-compile += $(common-objpfx)bits/stdio_lim.h | |
67 | ||
a334319f | 68 | include ../Makerules |
28f540f4 RM |
69 | |
70 | .PHONY: subdir_lib | |
3bbceb12 | 71 | subdir_lib: lib-noranlib |
28f540f4 RM |
72 | |
73 | # Some subdirs need to install a dummy library. | |
74 | # They can use "$(objpfx)libfnord.a: $(dep-dummy-lib); $(make-dummy-lib)". | |
6e953631 | 75 | dep-dummy-lib = $(common-objpfx)dummy.o |
28f540f4 RM |
76 | define make-dummy-lib |
77 | $(AR) cr$(verbose) $@ $< | |
78 | endef | |
74015205 | 79 | |
6e953631 | 80 | $(common-objpfx)dummy.c: |
f0097fa0 | 81 | rm -f $@ |
27ee0a55 AJ |
82 | (echo 'extern void __dummy__ (void);'; \ |
83 | echo 'void __dummy__ (void) { }') > $@ | |
464d646f | 84 | common-generated += dummy.o dummy.c |
28f540f4 | 85 | \f |
6d52618b | 86 | # This makes all the auxiliary and test programs. |
28f540f4 RM |
87 | |
88 | .PHONY: others tests | |
0413b54c | 89 | ifeq ($(build-programs),yes) |
414fd335 | 90 | others: $(addprefix $(objpfx),$(others) $(sysdep-others) $(extra-objs)) |
0413b54c UD |
91 | else |
92 | others: $(addprefix $(objpfx),$(extra-objs)) | |
93 | endif | |
28f540f4 | 94 | ifeq ($(cross-compiling),yes) |
7cabd57c | 95 | tests: $(addprefix $(objpfx),$(tests) $(test-srcs)) |
c238ecf7 | 96 | xtests: tests |
28f540f4 | 97 | else |
ac556388 GM |
98 | ifeq ($(build-bounded),yes) |
99 | tests-bp.out = $(tests:%=$(objpfx)%-bp.out) | |
cc24242d | 100 | xtests-bp.out = $(xtests:%=$(objpfx)%-bp.out) |
ac556388 GM |
101 | endif |
102 | tests: $(tests:%=$(objpfx)%.out) $(tests-bp.out) | |
cc24242d | 103 | xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-bp.out) |
786a5421 | 104 | endif |
28f540f4 | 105 | |
0413b54c | 106 | ifeq ($(build-programs),yes) |
c238ecf7 | 107 | binaries-all = $(others) $(sysdep-others) $(tests) $(xtests) $(test-srcs) |
ccd8de9a | 108 | binaries-static = $(others-static) $(tests-static) $(xtests-static) |
0413b54c | 109 | else |
c238ecf7 | 110 | binaries-all = $(tests) $(xtests) $(test-srcs) |
3c5edd4d | 111 | binaries-static = |
e1586792 UD |
112 | endif |
113 | ||
114 | binaries-shared = $(filter-out $(binaries-static), $(binaries-all)) | |
115 | ||
116 | ifneq "$(strip $(binaries-shared))" "" | |
117 | $(addprefix $(objpfx),$(binaries-shared)): %: %.o \ | |
9992e360 | 118 | $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \ |
0413b54c UD |
119 | $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) |
120 | $(+link) | |
121 | endif | |
e1586792 UD |
122 | |
123 | ifneq "$(strip $(binaries-static))" "" | |
124 | $(addprefix $(objpfx),$(binaries-static)): %: %.o \ | |
9992e360 | 125 | $(sort $(filter $(common-objpfx)lib%,$(link-libc-static))) \ |
e1586792 UD |
126 | $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) |
127 | $(+link-static) | |
0413b54c | 128 | endif |
28f540f4 | 129 | |
ac556388 | 130 | ifeq ($(build-bounded),yes) |
c238ecf7 | 131 | binaries-bounded = $(addsuffix -bp,$(tests) $(xtests) $(test-srcs)) |
ac556388 GM |
132 | $(addprefix $(objpfx),$(binaries-bounded)): %-bp: %.ob \ |
133 | $(sort $(filter $(common-objpfx)lib%,$(link-libc-bounded))) \ | |
134 | $(addprefix $(csu-objpfx),start.ob) $(+preinit) $(+postinit) | |
135 | $(+link-bounded) | |
136 | endif | |
137 | ||
c238ecf7 | 138 | ifneq "$(strip $(tests) $(xtests) $(test-srcs))" "" |
28f540f4 RM |
139 | # These are the implicit rules for making test outputs |
140 | # from the test programs and whatever input files are present. | |
41d998a6 GM |
141 | |
142 | make-test-out = GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ | |
143 | $($*-ENV) $(built-program-cmd) $($*-ARGS) | |
144 | $(objpfx)%-bp.out: %.input $(objpfx)%-bp | |
145 | $(make-test-out) > $@ < $(word 1,$^) | |
196980f5 | 146 | $(objpfx)%.out: %.input $(objpfx)% |
41d998a6 | 147 | $(make-test-out) > $@ < $(word 1,$^) |
196980f5 | 148 | $(objpfx)%.out: /dev/null $(objpfx)% # Make it 2nd arg for canned sequence. |
41d998a6 GM |
149 | $(make-test-out) > $@ |
150 | ||
28f540f4 RM |
151 | endif # tests |
152 | \f | |
153 | .PHONY: distclean realclean subdir_distclean subdir_realclean \ | |
3c5edd4d | 154 | subdir_clean subdir_mostlyclean subdir_testclean |
28f540f4 RM |
155 | subdir_mostlyclean: mostlyclean |
156 | subdir_clean: clean | |
157 | subdir_distclean: distclean | |
158 | subdir_realclean: realclean | |
3c5edd4d | 159 | subdir_testclean: do-tests-clean |
28f540f4 RM |
160 | realclean: distclean |
161 | distclean: clean | |
162 | ||
28f540f4 RM |
163 | # We want to install everything except the library itself, but update all |
164 | # our portions of the library because the parent make will install it later | |
165 | # (likewise the stubs file). | |
166 | .PHONY: subdir_install | |
613a76ff | 167 | subdir_install: install-no-libc.a lib-noranlib stubs |
28f540f4 | 168 | |
9de06f3c | 169 | .PHONY: subdir_objs subdir_stubs |
5d9e8991 RM |
170 | subdir_objs: objs |
171 | subdir_stubs: stubs | |
28f540f4 | 172 | |
bd78530f UD |
173 | # Target required by the Hurd to ensure that all the MiG-generated |
174 | # headers are in place before building a subdirectory. | |
175 | .PHONY: before-compile | |
176 | before-compile: $(before-compile) | |
177 | ||
3c5edd4d UD |
178 | $(common-objpfx)dummy.o: $(common-objpfx)dummy.c $(before-compile); |
179 | $(compile-command.c) | |
7ef90c15 | 180 | |
c238ecf7 UD |
181 | # Local Variables: |
182 | # mode: makefile | |
183 | # End: |