Files
glibc/Makefile
T

327 lines
11 KiB
Makefile
Raw Normal View History

2000-01-12 12:08:13 +00:00
# Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc.
1995-02-18 01:27:10 +00:00
# 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.
# 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.
# You should have received a copy of the GNU Library General Public
1996-11-06 04:24:40 +00:00
# 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.
1995-02-18 01:27:10 +00:00
#
# Master Makefile for the GNU C library
#
ifneq (,)
This makefile requires GNU Make.
endif
1998-04-14 17:14:55 +00:00
include Makeconfig
1995-02-18 01:27:10 +00:00
# This is the default target; it makes everything except the tests.
.PHONY: all
1996-09-07 04:10:57 +00:00
all: lib others
1995-02-18 01:27:10 +00:00
1998-01-31 12:11:10 +00:00
ifeq ($(with-cvs),yes)
1995-02-18 01:27:10 +00:00
define autoconf-it
@-rm -f $@.new
1995-02-18 01:27:10 +00:00
autoconf $(ACFLAGS) $< > $@.new
chmod a-w,a+x $@.new
1995-02-18 01:27:10 +00:00
mv -f $@.new $@
1998-01-30 14:44:06 +00:00
test ! -d CVS || cvs $(CVSOPTS) commit -m'Regenerated: autoconf $(ACFLAGS) $<' $@
1995-02-18 01:27:10 +00:00
endef
1998-01-31 12:11:10 +00:00
else
define autoconf-it
@-rm -f $@.new
autoconf $(ACFLAGS) $< > $@.new
chmod a-w,a+x $@.new
mv -f $@.new $@
endef
endif
1995-02-18 01:27:10 +00:00
configure: configure.in aclocal.m4; $(autoconf-it)
%/configure: %/configure.in aclocal.m4; $(autoconf-it)
1995-02-18 01:27:10 +00:00
# These are the targets that are made by making them in each subdirectory.
1996-09-07 04:10:57 +00:00
+subdir_targets := subdir_lib objects objs others subdir_mostlyclean \
subdir_clean subdir_distclean subdir_realclean \
tests subdir_lint.out \
subdir_distinfo \
1995-02-18 01:27:10 +00:00
subdir_echo-headers subdir_echo-distinfo \
1996-09-05 02:49:18 +00:00
subdir_install \
1999-01-04 12:33:59 +00:00
subdir_testclean \
1996-09-05 02:49:18 +00:00
$(addprefix install-, no-libc.a bin lib data headers others)
1995-02-18 01:27:10 +00:00
1997-06-21 02:59:26 +00:00
headers := errno.h sys/errno.h bits/errno.h limits.h values.h \
1998-02-13 17:54:15 +00:00
features.h gnu-versions.h bits/libc-lock.h bits/xopen_lim.h \
gnu/libc-version.h
1995-02-18 01:27:10 +00:00
echo-headers: subdir_echo-headers
1997-07-06 22:02:42 +00:00
# The headers are in the include directory.
subdir-dirs = include
vpath %.h $(subdir-dirs)
1995-02-18 01:27:10 +00:00
# What to install.
1997-01-23 04:24:20 +00:00
install-others = $(inst_includedir)/gnu/stubs.h
1997-01-06 22:07:28 +00:00
install-bin = glibcbug
1995-02-18 01:27:10 +00:00
1997-01-29 03:50:12 +00:00
ifeq (yes,$(build-shared))
1997-02-02 01:50:11 +00:00
install-others += $(inst_includedir)/gnu/lib-names.h
1997-01-29 03:50:12 +00:00
endif
1995-02-18 01:27:10 +00:00
include Makerules
1998-06-05 20:59:11 +00:00
ifeq ($(build-programs),yes)
others: $(addprefix $(objpfx),$(install-bin))
endif
1995-02-18 01:27:10 +00:00
# Install from subdirectories too.
install: subdir_install
1997-01-23 04:24:20 +00:00
1998-08-21 17:22:56 +00:00
# Make sure that the dynamic linker is installed before libc.
$(inst_slibdir)/libc-$(version).so: elf/ldso_install
.PHONY: elf/ldso_install
elf/ldso_install:
$(MAKE) -C $(@D) $(@F)
1999-12-04 18:05:55 +00:00
# Create links for shared libraries using the `ldconfig' program if possible.
1997-02-10 03:19:57 +00:00
# Ignore the error if we cannot update /etc/ld.so.cache.
1997-01-22 05:26:05 +00:00
ifeq (no,$(cross-compiling))
ifeq (yes,$(build-shared))
1998-08-15 02:40:04 +00:00
install: install-symbolic-link
.PHONY: install-symbolic-link
install-symbolic-link: subdir_install
1998-08-13 19:44:05 +00:00
$(symbolic-link-prog) $(symbolic-link-list)
1998-09-14 11:43:26 +00:00
rm -f $(symbolic-link-list)
1998-08-13 19:44:05 +00:00
1997-01-23 04:24:20 +00:00
install:
1997-02-10 03:19:57 +00:00
-test ! -x $(common-objpfx)elf/ldconfig || \
2000-01-12 12:08:13 +00:00
$(common-objpfx)elf/ldconfig $(addprefix -r ,$(install_root)) \
2000-04-18 06:35:08 +00:00
$(slibdir) $(libdir)
1997-11-12 00:06:02 +00:00
ifneq (no,$(PERL))
ifeq (/usr,$(prefix))
ifeq (,$(install_root))
1998-05-08 20:56:30 +00:00
CC="$(CC)" $(PERL) scripts/test-installation.pl $(common-objpfx)
1997-11-12 00:06:02 +00:00
endif
endif
endif
1997-01-22 05:26:05 +00:00
endif
endif
1995-02-18 01:27:10 +00:00
# Build subdirectory lib objects.
lib-noranlib: subdir_lib
1995-02-18 01:27:10 +00:00
ifeq (yes,$(build-shared))
# Build the shared object from the PIC object library.
lib: $(common-objpfx)libc.so
endif
1995-02-18 01:27:10 +00:00
1998-05-01 22:04:20 +00:00
# Makerules creates a file `stubs' in each subdirectory, which
# contains `#define __stub_FUNCTION' for each function defined in that
# directory which is a stub.
1997-01-01 15:28:18 +00:00
# Here we paste all of these together into <gnu/stubs.h>.
1995-02-18 01:27:10 +00:00
1998-05-01 22:04:20 +00:00
subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)$(dir)/stubs)
1995-02-18 01:27:10 +00:00
# Since stubs.h is never needed when building the library, we simplify the
# hairy installation process by producing it in place only as the last part
1997-12-28 16:01:53 +00:00
# of the top-level `make install'. It depends on subdir_install, which
# iterates over all the subdirs; subdir_install in each subdir depends on
# the subdir's stubs file. Having more direct dependencies would result in
# extra iterations over the list for subdirs and many recursive makes.
$(inst_includedir)/gnu/stubs.h: subdir_install
1997-06-21 02:59:26 +00:00
$(make-target-directory)
1995-02-18 01:27:10 +00:00
@rm -f $(objpfx)stubs.h
(echo '/* This file is automatically generated.';\
echo ' It defines a symbol `__stub_FUNCTION'\'' for each function';\
echo ' in the C library which is a stub, meaning it will fail';\
echo ' every time called, usually setting errno to ENOSYS. */';\
1997-12-28 16:01:53 +00:00
sort $(subdir-stubs)) > $(objpfx)stubs.h
if test -r $@ && cmp -s $(objpfx)stubs.h $@; \
1996-10-31 02:57:12 +00:00
then echo 'stubs.h unchanged'; \
else $(INSTALL_DATA) $(objpfx)stubs.h $@; fi
1995-02-18 01:27:10 +00:00
rm -f $(objpfx)stubs.h
1996-11-27 06:13:15 +00:00
ifeq (yes,$(build-shared))
1996-11-17 03:15:52 +00:00
1998-04-09 10:14:17 +00:00
$(inst_includedir)/gnu/lib-names.h: $(common-objpfx)gnu/lib-names.h $(+force)
1998-09-25 21:55:47 +00:00
$(do-install)
1996-11-17 03:15:52 +00:00
endif
1996-10-31 02:57:12 +00:00
1997-01-06 22:07:28 +00:00
# The `glibcbug' script contains the version number and it shall be rebuild
# whenever this changes or the `glibcbug.in' file.
1997-01-19 04:54:28 +00:00
$(objpfx)glibcbug: $(common-objpfx)config.status glibcbug.in
cd $(<D) && CONFIG_FILES=$(@F) CONFIG_HEADERS= $(SHELL) $(<F)
1997-01-06 22:07:28 +00:00
1995-02-18 01:27:10 +00:00
# This makes the Info or DVI file of the documentation from the Texinfo source.
1999-11-01 00:30:17 +00:00
.PHONY: info dvi pdf
info dvi pdf:
1997-02-02 01:50:11 +00:00
$(MAKE) $(PARALLELMFLAGS) -C manual $@
1995-02-18 01:27:10 +00:00
# This makes all the subdirectory targets.
# For each target, make it depend on DIR/target for each subdirectory DIR.
$(+subdir_targets): %: $(addsuffix /%,$(subdirs))
# Compute a list of all those targets.
all-subdirs-targets := $(foreach dir,$(subdirs),\
$(addprefix $(dir)/,$(+subdir_targets)))
# The action for each of those is to cd into the directory and make the
# target there.
$(all-subdirs-targets):
1997-02-02 01:50:11 +00:00
$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
1995-02-18 01:27:10 +00:00
.PHONY: $(+subdir_targets) $(all-subdirs-targets)
# Targets to clean things up to various degrees.
1999-01-04 12:33:59 +00:00
.PHONY: clean realclean distclean distclean-1 parent-clean parent-mostlyclean \
tests-clean
1995-02-18 01:27:10 +00:00
# Subroutines of all cleaning targets.
parent-mostlyclean: common-mostlyclean # common-mostlyclean is in Makerules.
1998-03-30 13:32:03 +00:00
-rm -f $(foreach o,$(object-suffixes-for-libc),\
$(common-objpfx)$(patsubst %,$(libtype$o),c)) \
$(addprefix $(objpfx),$(install-lib))
1995-02-18 01:27:10 +00:00
parent-clean: parent-mostlyclean common-clean
1998-02-10 20:06:30 +00:00
postclean = $(addprefix $(common-objpfx),$(postclean-generated)) \
1998-03-30 13:32:03 +00:00
$(addprefix $(objpfx),sysd-Makefile sysd-dirs sysd-rules) \
2000-03-26 18:48:26 +00:00
$(addprefix $(objpfx),sysd-sorted soversions.mk soversions.i)
1995-02-18 01:27:10 +00:00
clean: parent-clean
# This is done this way rather than having `subdir_clean' be a
# dependency of this target so that libc.a will be removed before the
# subdirectories are dealt with and so they won't try to remove object
# files from it when it's going to be removed anyway.
@$(MAKE) subdir_clean no_deps=t
1999-09-20 02:18:14 +00:00
-rm -f $(postclean)
1995-02-18 01:27:10 +00:00
mostlyclean: parent-mostlyclean
@$(MAKE) subdir_mostlyclean no_deps=t
1998-02-10 20:06:30 +00:00
-rm -f $(postclean)
1995-02-18 01:27:10 +00:00
1999-01-04 12:33:59 +00:00
tests-clean:
@$(MAKE) subdir_testclean no_deps=t
1995-02-18 01:27:10 +00:00
# The realclean target is just like distclean for the parent, but we want
# the subdirs to know the difference in case they care.
realclean distclean: parent-clean
# This is done this way rather than having `subdir_distclean' be a
# dependency of this target so that libc.a will be removed before the
# subdirectories are dealt with and so they won't try to remove object
# files from it when it's going to be removed anyway.
1998-02-10 20:06:30 +00:00
@$(MAKE) distclean-1 no_deps=t distclean-1=$@ avoid-generated=yes \
sysdep-subdirs="$(sysdep-subdirs)"
-rm -f $(postclean)
1995-02-18 01:27:10 +00:00
# Subroutine of distclean and realclean.
distclean-1: subdir_$(distclean-1)
-rm -f $(config-generated)
-rm -f $(addprefix $(objpfx),config.status config.cache config.log)
-rm -f $(addprefix $(objpfx),config.make config-name.h config.h)
1997-09-11 12:09:10 +00:00
-rm -f $(addprefix $(objpfx),glibcbug)
1995-02-18 01:27:10 +00:00
ifdef objdir
-rm -f $(objpfx)Makefile
endif
-rm -f $(sysdep-$(distclean-1))
.PHONY: echo_subdirs
echo_subdirs:;@echo '$(subdirs)'
.PHONY: echo-distinfo parent_echo-distinfo
echo-distinfo: parent_echo-distinfo subdir_echo-distinfo
parent_echo-distinfo:
@echo $(addprefix +header+,$(headers)) \
$(addprefix +nodist+,$(generated))
1997-02-25 05:18:05 +00:00
1995-02-18 01:27:10 +00:00
# Make the distribution tarfile.
1998-05-20 10:50:03 +00:00
distribute := README README.libm INSTALL FAQ FAQ.in NOTES NEWS BUGS \
PROJECTS COPYING.LIB COPYING ChangeLog ChangeLog.[0-9] \
1998-05-08 20:56:30 +00:00
Makefile Makeconfig Makerules Rules Make-dist MakeTAGS \
1998-07-02 22:51:40 +00:00
extra-lib.mk o-iterator.mk configure configure.in \
aclocal.m4 config.h.in config.make.in config-name.in \
Makefile.in sysdep.h set-hooks.h libc-symbols.h \
version.h shlib-versions rpm/Makefile rpm/template \
rpm/rpmrc glibcbug.in abi-tags stub-tag.h \
1998-07-08 22:53:56 +00:00
test-skeleton.c include/des.h Versions.def \
1999-08-21 04:13:24 +00:00
INTERFACE CONFORMANCE NAMESPACE \
1998-05-08 20:56:30 +00:00
$(addprefix scripts/, \
1998-05-20 10:50:03 +00:00
rellns-sh config.sub config.guess \
mkinstalldirs move-if-change install-sh \
1998-11-20 17:27:07 +00:00
test-installation.pl gen-FAQ.pl versions.awk\
2000-04-06 04:58:34 +00:00
gen-sorted.awk abi-versions.awk \
firstversions.awk)
1995-02-18 01:27:10 +00:00
distribute := $(strip $(distribute))
1998-05-08 20:42:23 +00:00
generated := $(generated) stubs.h
1995-02-18 01:27:10 +00:00
1997-01-23 04:24:20 +00:00
README: README.template version.h ; # Make-dist should update README.
1995-02-18 01:27:10 +00:00
define format-me
@rm -f $@
makeinfo --no-validate --no-warn --no-headers $< -o $@
-chmod a-w $@
endef
1998-03-26 18:01:01 +00:00
INSTALL: manual/install.texi; $(format-me)
1995-02-18 01:27:10 +00:00
NOTES: manual/creature.texi; $(format-me)
1997-06-12 21:38:55 +00:00
manual/dir-add.texi manual/dir-add.info: FORCE
1997-04-02 22:06:24 +00:00
$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
1998-05-08 20:56:30 +00:00
FAQ: scripts/gen-FAQ.pl FAQ.in
1997-12-05 00:40:29 +00:00
$(PERL) $^ > $@.new && rm -f $@ && mv $@.new $@ && chmod a-w $@
1998-03-26 18:01:01 +00:00
ifeq ($(with-cvs),yes)
test ! -d CVS || cvs $(CVSOPTS) commit -m'Regenerated: $(PERL) $^' $@
endif
1997-05-31 00:47:04 +00:00
FORCE:
rpm/%: subdir_distinfo
1998-05-20 10:50:03 +00:00
$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
1997-01-26 05:33:35 +00:00
1999-02-08 12:14:21 +00:00
iconvdata/% localedata/% po/%:
1997-11-26 04:23:08 +00:00
$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
1997-01-26 05:33:35 +00:00
# This is a special goal for people making binary distributions. Normally
# everybody uses the DES based crypt library but for the distribution we
# need the only-MD5 based one as well.
md5-crypt/libmd5crypt:
1997-02-02 01:50:11 +00:00
$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
1998-06-22 17:08:51 +00:00
# glibc 2.0 contains some header files which aren't used with glibc 2.1
# anymore.
# These rules should remove those headers
ifeq (,$(install_root))
ifeq ($(old-glibc-headers),yes)
install: remove-old-headers
endif
endif
headers2_0 := __math.h bytesex.h confname.h direntry.h elfclass.h \
errnos.h fcntlbits.h huge_val.h ioctl-types.h \
ioctls.h iovec.h jmp_buf.h libc-lock.h local_lim.h \
mathcalls.h mpool.h nan.h ndbm.h posix1_lim.h \
posix2_lim.h posix_opt.h resourcebits.h schedbits.h \
selectbits.h semaphorebits.h sigaction.h sigcontext.h \
signum.h sigset.h sockaddrcom.h socketbits.h stab.def \
statbuf.h statfsbuf.h stdio-lock.h stdio_lim.h \
syscall-list.h termbits.h timebits.h ustatbits.h \
utmpbits.h utsnamelen.h waitflags.h waitstatus.h \
xopen_lim.h gnu/types.h sys/ipc_buf.h \
sys/kernel_termios.h sys/msq_buf.h sys/sem_buf.h \
1998-07-22 16:54:32 +00:00
sys/shm_buf.h sys/socketcall.h sigstack.h
1998-06-22 17:08:51 +00:00
1998-06-26 10:03:25 +00:00
.PHONY: remove-old-headers
1998-06-22 17:08:51 +00:00
remove-old-headers:
rm -f $(addprefix $(inst_includedir)/, $(headers2_0))