
1: # Copyright (C) 1991-2000,2002,2003,2004,2005,2006 2: # Free Software Foundation, Inc. 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 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. 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 13: # Lesser General Public License for more details. 14: 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. 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: 30: include $(firstword $(..) ../)Makeconfig 31: 32: ifndef subdir 33: Each subdirectory makefile must define the `subdir' variable. 34: endif 35: # This ` unconfuses emacs. 36: # This is benign and useless in GNU make before 3.63. 37: export subdir := $(subdir) 38: ^L 39: # This is the default target; it makes the library and auxiliary programs. 40: .PHONY: all 41: all: objs lib others 42: 43: ifeq ($(build-programs),yes) 44: others: $(addprefix $(objpfx),$(extra-objs) \ 45: $(install-lib) \ 46: $(install-bin) $(install-bin-script) \ 47: $(install-rootsbin) $(install-sbin)) 48: else 49: others: $(addprefix $(objpfx),$(extra-objs) \ 50: $(install-lib)) 51: endif 52: 53: ifneq "$(findstring env,$(origin headers))" "" 54: headers := 55: endif 56: 57: ifneq "$(findstring env,$(origin generated))" "" 58: generated := 59: endif 60: 61: ifneq "$(findstring env,$(origin common-generated))" "" 62: common-generated := 63: endif 64: 65: # See below. This must be set before Makerules processes it. 66: before-compile += $(common-objpfx)bits/stdio_lim.h 67: 68: include $(..)Makerules 69: 70: .PHONY: subdir_lib 71: subdir_lib: lib-noranlib 72: 73: # Some subdirs need to install a dummy library. 74: # They can use "$(objpfx)libfnord.a: $(dep-dummy-lib); $(make-dummy-lib)". 75: dep-dummy-lib = $(common-objpfx)dummy.o 76: define make-dummy-lib 77: $(AR) cr$(verbose) $@ $< 78: endef 79: 80: $(common-objpfx)dummy.c: 81: rm -f $@ 82: (echo 'extern void __dummy__ (void);'; \ 83: echo 'void __dummy__ (void) { }') > $@ 84: common-generated += dummy.o dummy.c 85: ^L 86: # This makes all the auxiliary and test programs. 87: 88: .PHONY: others tests 89: ifeq ($(build-programs),yes) 90: others: $(addprefix $(objpfx),$(others) $(sysdep-others) $(extra-objs)) 91: else 92: others: $(addprefix $(objpfx),$(extra-objs)) 93: endif 94: ifeq ($(cross-compiling),yes) 95: tests: $(addprefix $(objpfx),$(tests) $(test-srcs)) 96: xtests: tests 97: else 98: ifeq ($(build-bounded),yes) 99: tests-bp.out = $(tests:%=$(objpfx)%-bp.out) 100: xtests-bp.out = $(xtests:%=$(objpfx)%-bp.out) 101: endif 102: tests: $(tests:%=$(objpfx)%.out) $(tests-bp.out) 103: xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-bp.out) 104: endif 105: 106: ifeq ($(build-programs),yes) 107: binaries-all = $(others) $(sysdep-others) $(tests) $(xtests) $(test-srcs) 108: binaries-static = $(others-static) $(tests-static) $(xtests-static) 109: else 110: binaries-all = $(tests) $(xtests) $(test-srcs) 111: binaries-static = 112: endif 113: 114: binaries-shared = $(filter-out $(binaries-static), $(binaries-all)) 115: 116: ifneq "$(strip $(binaries-shared))" "" 117: $(addprefix $(objpfx),$(binaries-shared)): %: %.o \ 118: $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \ 119: $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) 120: $(+link) 121: endif 122: 123: ifneq "$(strip $(binaries-static))" "" 124: $(addprefix $(objpfx),$(binaries-static)): %: %.o \ 125: $(sort $(filter $(common-objpfx)lib%,$(link-libc-static))) \ 126: $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) 127: $(+link-static) 128: endif 129: 130: ifeq ($(build-bounded),yes) 131: binaries-bounded = $(addsuffix -bp,$(tests) $(xtests) $(test-srcs)) 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: 138: ifneq "$(strip $(tests) $(xtests) $(test-srcs))" "" 139: # These are the implicit rules for making test outputs 140: # from the test programs and whatever input files are present. 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,$^) 146: $(objpfx)%.out: %.input $(objpfx)% 147: $(make-test-out) > $@ < $(word 1,$^) 148: $(objpfx)%.out: /dev/null $(objpfx)% # Make it 2nd arg for canned sequence. 149: $(make-test-out) > $@ 150: 151: endif # tests 152: ^L 153: .PHONY: distclean realclean subdir_distclean subdir_realclean \ 154: subdir_clean subdir_mostlyclean subdir_testclean 155: subdir_mostlyclean: mostlyclean 156: subdir_clean: clean 157: subdir_distclean: distclean 158: subdir_realclean: realclean 159: subdir_testclean: do-tests-clean 160: realclean: distclean 161: distclean: clean 162: 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 167: subdir_install: install-no-libc.a lib-noranlib stubs 168: 169: .PHONY: subdir_objs subdir_stubs 170: subdir_objs: objs 171: subdir_stubs: stubs 172: 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: 178: $(common-objpfx)dummy.o: $(common-objpfx)dummy.c $(before-compile); 179: $(compile-command.c) 180: 181: # Local Variables: 182: # mode: makefile 183: # End: