]>
Commit | Line | Data |
---|---|---|
28f540f4 RM |
1 | # Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. |
2 | # This file is part of the GNU C Library. | |
3 | ||
4 | # The GNU C Library is free software; you can redistribute it and/or | |
5 | # modify it under the terms of the GNU Library General Public License as | |
6 | # published by the Free Software Foundation; either version 2 of the | |
7 | # License, or (at your option) any later version. | |
8 | ||
9 | # The GNU C Library is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | # Library General Public License for more details. | |
13 | ||
14 | # You should have received a copy of the GNU Library General Public | |
15 | # License along with the GNU C Library; see the file COPYING.LIB. If | |
16 | # not, write to the Free Software Foundation, Inc., 675 Mass Ave, | |
17 | # Cambridge, MA 02139, USA. | |
18 | ||
19 | # | |
20 | # Rules for making a subdirectory in the GNU C library. | |
21 | # Each subdirectory Makefile defines some variables and includes this. | |
22 | # | |
23 | ifneq (,) | |
24 | This makefile requires GNU Make. | |
25 | endif | |
26 | ||
27 | all: # Don't let the default goal come from Makeconfig. | |
28 | ||
29 | include ../Makeconfig | |
30 | ||
31 | ifndef subdir | |
32 | Each subdirectory makefile must define the `subdir' variable. | |
33 | endif | |
34 | # This is benign and useless in GNU make before 3.63. | |
35 | export subdir := $(subdir) | |
36 | \f | |
37 | # This is the default target; it makes the library and auxiliary programs. | |
38 | .PHONY: all | |
96f873b9 | 39 | all: objs lib others |
28f540f4 RM |
40 | |
41 | ifneq "$(findstring env,$(origin headers))" "" | |
42 | headers := | |
43 | endif | |
44 | ||
45 | ifneq "$(findstring env,$(origin generated))" "" | |
46 | generated := | |
47 | endif | |
48 | ||
49 | ifeq "$(strip $(headers))" "" | |
50 | ifneq "$(wildcard $(subdir).h)" "" | |
51 | override headers := $(subdir).h | |
52 | endif | |
53 | endif | |
54 | ||
55 | include ../Makerules | |
56 | ||
57 | .PHONY: subdir_lib | |
96f873b9 | 58 | subdir_lib: objs lib-noranlib |
28f540f4 RM |
59 | |
60 | # Some subdirs need to install a dummy library. | |
61 | # They can use "$(objpfx)libfnord.a: $(dep-dummy-lib); $(make-dummy-lib)". | |
62 | dep-dummy-lib = $(objpfx)dummy.o | |
63 | define make-dummy-lib | |
64 | $(AR) cr$(verbose) $@ $< | |
65 | endef | |
66 | $(objpfx)dummy.o: | |
67 | @rm -f $(@:.o=.c) | |
68 | echo 'void __dummy__ () { }' > $(@:.o=.c) | |
69 | $(CC) -c $(@:.o=.c) -o $@ | |
70 | \f | |
71 | # This makes all the auxilliary and test programs. | |
72 | ||
73 | .PHONY: others tests | |
74 | others: $(addprefix $(objpfx),$(others)) | |
75 | ifeq ($(cross-compiling),yes) | |
76 | tests: $(addprefix $(objpfx),$(tests)) | |
77 | else | |
78 | tests: $(tests:%=$(objpfx)%.out) | |
79 | endif | |
80 | ||
81 | ifneq "$(strip $(others) $(tests))" "" | |
82 | $(addprefix $(objpfx),$(others) $(tests)): %: %.o $(libc.a) | |
83 | $(+link) | |
84 | endif | |
85 | ||
86 | ifneq "$(strip $(tests))" "" | |
87 | # These are the implicit rules for making test outputs | |
88 | # from the test programs and whatever input files are present. | |
89 | $(objpfx)%.out: $(objpfx)% %.args %.input | |
90 | $(dir $<)$(notdir $<) `cat $(word 2,$^)` < $(word 3,$^) > $@ | |
91 | $(objpfx)%.out: $(objpfx)% %.args | |
92 | $(dir $<)$(notdir $<) `cat $(word 2,$^)` > $@ | |
93 | $(objpfx)%.out: $(objpfx)% %.input | |
94 | $(dir $<)$(notdir $<) < $(word 2,$^) > $@ | |
95 | $(objpfx)%.out: $(objpfx)% | |
96 | $(dir $<)$(notdir $<) > $@ | |
97 | endif # tests | |
98 | \f | |
99 | .PHONY: distclean realclean subdir_distclean subdir_realclean \ | |
100 | subdir_clean subdir_mostlyclean | |
101 | subdir_mostlyclean: mostlyclean | |
102 | subdir_clean: clean | |
103 | subdir_distclean: distclean | |
104 | subdir_realclean: realclean | |
105 | realclean: distclean | |
106 | distclean: clean | |
107 | ||
108 | .PHONY: subdir_echo-headers | |
109 | subdir_echo-headers: echo-headers | |
110 | ||
111 | .PHONY: subdir_echo-distinfo | |
112 | subdir_echo-distinfo: | |
113 | @echo $(addprefix +header+,$(headers)) \ | |
114 | $(addprefix +nodist+,$(generated) $(dont_distribute)) | |
115 | ||
116 | # We want to install everything except the library itself, but update all | |
117 | # our portions of the library because the parent make will install it later | |
118 | # (likewise the stubs file). | |
119 | .PHONY: subdir_install | |
120 | subdir_install: install-no-libc.a lib-noranlib stubs | |
121 | ||
122 | .PHONY: subdir_TAGS subdir_dist | |
123 | subdir_TAGS: TAGS | |
124 | subdir_dist: dist | |
125 | ||
126 | # Convenient target to update all the generated source files. | |
127 | .PHONY: generated | |
128 | generated: $(addprefix $(objpfx),$(generated)) |