X-Git-Url: https://sourceware.org/git/?a=blobdiff_plain;f=Rules;h=5ace24cee01bc896944d6e5319a5f3d0ecaab670;hb=d85f8ff66711fd3b1c5753330499c7403fa46d81;hp=b401c3136cb2a9780745b08e57828c59a77664ce;hpb=9992e360c843be03ba037e2084be91a691ba48da;p=glibc.git diff --git a/Rules b/Rules index b401c3136c..5ace24cee0 100644 --- a/Rules +++ b/Rules @@ -1,20 +1,21 @@ -# Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98 Free Software Foundation, Inc. +# Copyright (C) 1991-2000,2002,2003,2004,2005,2006 +# Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Rules for making a subdirectory in the GNU C library. @@ -26,7 +27,7 @@ endif all: # Don't let the default goal come from Makeconfig. -include ../Makeconfig +include $(firstword $(..) ../)Makeconfig ifndef subdir Each subdirectory makefile must define the `subdir' variable. @@ -41,7 +42,8 @@ all: objs lib others ifeq ($(build-programs),yes) others: $(addprefix $(objpfx),$(extra-objs) \ - $(install-lib) $(install-bin) \ + $(install-lib) \ + $(install-bin) $(install-bin-script) \ $(install-rootsbin) $(install-sbin)) else others: $(addprefix $(objpfx),$(extra-objs) \ @@ -60,7 +62,10 @@ ifneq "$(findstring env,$(origin common-generated))" "" common-generated := endif -include ../Makerules +# See below. This must be set before Makerules processes it. +before-compile += $(common-objpfx)bits/stdio_lim.h + +include $(..)Makerules .PHONY: subdir_lib subdir_lib: lib-noranlib @@ -74,11 +79,9 @@ endef $(common-objpfx)dummy.c: rm -f $@ - echo 'void __dummy__ (void) { }' > $@ -$(common-objpfx)empty.c: - cp -f /dev/null $@ -common-generated += dummy.o dummy.c empty.c \ - $(addprefix empty,$(object-suffixes)) + (echo 'extern void __dummy__ (void);'; \ + echo 'void __dummy__ (void) { }') > $@ +common-generated += dummy.o dummy.c # This makes all the auxiliary and test programs. @@ -90,22 +93,22 @@ others: $(addprefix $(objpfx),$(extra-objs)) endif ifeq ($(cross-compiling),yes) tests: $(addprefix $(objpfx),$(tests) $(test-srcs)) -ifeq ($(build-static),yes) -tests: $(addprefix $(objpfx),$(tests-static)) -endif +xtests: tests else -tests: $(tests:%=$(objpfx)%.out) -ifeq ($(build-static),yes) -tests: $(tests-static:%=$(objpfx)%.sout) +ifeq ($(build-bounded),yes) +tests-bp.out = $(tests:%=$(objpfx)%-bp.out) +xtests-bp.out = $(xtests:%=$(objpfx)%-bp.out) endif +tests: $(tests:%=$(objpfx)%.out) $(tests-bp.out) +xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-bp.out) endif ifeq ($(build-programs),yes) -binaries-all = $(others) $(sysdep-others) $(tests) $(test-srcs) -binaries-static = $(others-static) $(tests-static) $(test-srcs-static) +binaries-all = $(others) $(sysdep-others) $(tests) $(xtests) $(test-srcs) +binaries-static = $(others-static) $(tests-static) $(xtests-static) else -binaries-all = $(tests) $(test-srcs) -binaries-static = $(tests-static) $(test-srcs-static) +binaries-all = $(tests) $(xtests) $(test-srcs) +binaries-static = endif binaries-shared = $(filter-out $(binaries-static), $(binaries-all)) @@ -124,79 +127,57 @@ $(addprefix $(objpfx),$(binaries-static)): %: %.o \ $(+link-static) endif -ifneq "$(strip $(tests) $(test-srcs))" "" +ifeq ($(build-bounded),yes) +binaries-bounded = $(addsuffix -bp,$(tests) $(xtests) $(test-srcs)) +$(addprefix $(objpfx),$(binaries-bounded)): %-bp: %.ob \ + $(sort $(filter $(common-objpfx)lib%,$(link-libc-bounded))) \ + $(addprefix $(csu-objpfx),start.ob) $(+preinit) $(+postinit) + $(+link-bounded) +endif + +ifneq "$(strip $(tests) $(xtests) $(test-srcs))" "" # These are the implicit rules for making test outputs # from the test programs and whatever input files are present. -$(objpfx)%.out: %.args $(objpfx)% %.input - $($*-ENV) $(built-program-cmd) `cat $(word 1,$^)` < $(word 3,$^) > $@ -$(objpfx)%.out: %.args $(objpfx)% - $($*-ENV) $(built-program-cmd) `cat $(word 1,$^)` > $@ + +make-test-out = GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ + $($*-ENV) $(built-program-cmd) $($*-ARGS) +$(objpfx)%-bp.out: %.input $(objpfx)%-bp + $(make-test-out) > $@ < $(word 1,$^) $(objpfx)%.out: %.input $(objpfx)% - $($*-ENV) $(built-program-cmd) < $(word 1,$^) > $@ + $(make-test-out) > $@ < $(word 1,$^) $(objpfx)%.out: /dev/null $(objpfx)% # Make it 2nd arg for canned sequence. - $($*-ENV) $(built-program-cmd) > $@ -endif # tests + $(make-test-out) > $@ -ifneq "$(strip $(tests-static) $(test-static-srcs))" "" -# These are the implicit rules for making test outputs -# from the test programs and whatever input files are present. -$(objpfx)%.sout: %.args $(objpfx)% %.input - $($*-ENV) $(built-program-file) `cat $(word 1,$^)` < $(word 3,$^) > $@ -$(objpfx)%.sout: %.args $(objpfx)% - $($*-ENV) $(built-program-file) `cat $(word 1,$^)` > $@ -$(objpfx)%.sout: %.input $(objpfx)% - $($*-ENV) $(built-program-file) < $(word 1,$^) > $@ -$(objpfx)%.sout: /dev/null $(objpfx)% # Make it 2nd arg for canned sequence. - $($*-ENV) $(built-program-file) > $@ endif # tests .PHONY: distclean realclean subdir_distclean subdir_realclean \ - subdir_clean subdir_mostlyclean + subdir_clean subdir_mostlyclean subdir_testclean subdir_mostlyclean: mostlyclean subdir_clean: clean subdir_distclean: distclean subdir_realclean: realclean +subdir_testclean: do-tests-clean realclean: distclean distclean: clean -.PHONY: subdir_echo-headers -subdir_echo-headers: echo-headers - -.PHONY: subdir_echo-distinfo -subdir_echo-distinfo: - @echo $(addprefix +header+,$(headers) $(filter %.h,$(distribute))) \ - $(addprefix +nodist+,$(generated) $(common-generated) $(dont_distribute)) - # We want to install everything except the library itself, but update all # our portions of the library because the parent make will install it later # (likewise the stubs file). .PHONY: subdir_install subdir_install: install-no-libc.a lib-noranlib stubs -.PHONY: subdir_TAGS subdir_dist -subdir_TAGS: TAGS -subdir_dist: dist - -# Convenient target to update all the generated source files. -.PHONY: generated -generated: $(addprefix $(common-objpfx),$(common-generated)) \ - $(addprefix $(objpfx),$(generated)) +.PHONY: subdir_objs subdir_stubs +subdir_objs: objs +subdir_stubs: stubs # Target required by the Hurd to ensure that all the MiG-generated # headers are in place before building a subdirectory. .PHONY: before-compile before-compile: $(before-compile) -define o-iterator-doit -$(common-objpfx)empty$o: $(common-objpfx)empty.c $(before-compile); - $$(compile-command.c) -endef -object-suffixes-left := $(object-suffixes) -include $(o-iterator) +$(common-objpfx)dummy.o: $(common-objpfx)dummy.c $(before-compile); + $(compile-command.c) -define o-iterator-doit -$(common-objpfx)dummy$o: $(common-objpfx)dummy.c $(before-compile); - $$(compile-command.c) -endef -object-suffixes-left := $(object-suffixes) -include $(o-iterator) +# Local Variables: +# mode: makefile +# End: