mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 10:50:07 +00:00
57ba7bb471
Thu Sep 5 03:20:42 1996 Ulrich Drepper <drepper@cygnus.com> Change configuration and Makefiles to allow add-ons to have a sysdeps/ directory hierachy. * configure.in: Test for sysdeps/ directory in add-ons. Before all test and searches in these hierachies, too. * Makeconfig (full-config-subdirs): Define based on $(config-sysdirs). Extend with $(..) if not absolute path. Use $(full-config-subdirs) where $(config-sysdirs) was used. * Makefile ($(objpfx)sysd-dirs): Use config-sysdirs. * MakeTAGS: Use $(full-config-subdirs). * Makerules: Change comment to libc.so link script. (sysdirs): Define based on $(full-config-subdirs). (sysd-Makefile): Define using config-sysdirs. (sysd-rules): Likewise. * sysdeps/unix/Makefile (sysd-syscalls): Define based on +sysdep-dirs. * sysdeps/unix/make-syscalls.sh: Remove basedir argument. Wed Sep 4 01:32:21 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/fpu/k_cos.c: Rewritten for better accuracy. * sysdeps/m68k/fpu/k_sin.c: Likewise. * sysdeps/m68k/fpu/k_tan.c: Likewise. Thu Sep 5 01:06:09 1996 Richard Henderson <rth@tamu.edu> * malloc/free.c (free): Protect by using __libc_malloc_lock. * malloc/malloc-find.c (malloc_find_object_address): Likewise. * malloc/malloc-size.c (malloc_usable_size): Likewise. * malloc/malloc-walk.c (malloc_walk): Likewise. * malloc/memalign.c (memalign): Likewise. * malloc/realloc.c (realloc): Likewise. * malloc/malloc.c: Define __libc_malloc_lock. (_malloc_internal): Don't use `malloc'. Instead look for `__malloc_hook' or call `_malloc_internal'. (malloc): Protect by using `__libc_malloc_lock'. * malloc/malloc.h: Declare `__libc_malloc_lock'. Mon Sep 2 22:42:59 1996 Richard Henderson <rth@tamu.edu> * sysdeps/alpha/elf/start.S: Use weak_alias for __start instead of the hard definition. * sysdeps/alpha/dl-machine.h (RTLD_START): Add type info for _start and _dl_start_user. * sysdeps/unix/sysv/linux/alpha/init-first.h (SYSDEP_CALL_INIT): Make _dl_starting_up weak. Add type info for NAME. Mon Sep 2 22:15:14 1996 Richard Henderson <rth@tamu.edu> * Makefile (all): Add extra_solibs pass. (+subdir_targets): Same. * Rules (extra_solibs): New phony empty target for subdirs without extra libs. * extra-lib.mk: Build lib*.so* in extra_solibs not lib-noranlib. * manual/Makefile: Add dummy extra_solibs target. Sun Sep 1 15:41:22 1996 Richard Henderson <rth@tamu.edu> * Makeconfig (+link): Add $(link-extra-libs). (link-extra-libs): New variable which expands to the full paths of the other libraries needed by a program, as controled by LDLIBS-$(@F). * db/Makefile: Use LDLIBS-makedb to link libdb not a dependency, as the later attempts to install the library before linking it. * sysdeps/unix/alpha/sysdep.S: Align errno. * sysdeps/unix/sysv/linux/alpha/ioperm.c (struct platform): Add hae_shift entry. (io): Move bus_memory_base and sparse_bus_memory_base into struct. (_hae_shift): New function. * sysdeps/unix/sysv/linux/alpha/sys/io.h: New file. Prototypes for the bus query functions. Sat Aug 31 18:14:54 1996 Richard Henderson <rth@tamu.edu> * elf/dl-close.c (_dl_close): In static executables, map->l_prev can be NULL when unloading a library. * elf/dl-open.c (_dl_open): Pass __environ instead of __libc_envp to the library .init function. * sysdeps/alpha/dl-machine.h (elf_machine_rela): Since we omitted part of the COPY reloc processing earlier, omit the rest now -- we'll get into less trouble later when some fool does use a COPY. * sysdeps/unix/sysv/linux/init-first.c (init): Accept argc et al as parameters. Move all argc and __libc_multiple_libcs calculation out to init-first.h. Use __environ not __libc_envp. * sysdeps/unix/sysv/linux/alpha/init-first.h: Rewrite. * sysdeps/unix/sysv/linux/i386/init-first.h: Rewrite. Thu Aug 29 20:26:40 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/posix/profil.c (profil): Don't clobber saved timer and signal settings when profiling was already turned on. * csu/gmon-start.c (__gmon_start__) [HAVE_INITFINI]: Protect from being called twice. Wed Sep 4 01:31:50 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/mmap.S: Test for 0 < return value < -4096 and not < 0 to decide about failure. Reported by Andreas Jaeger. Tue Sep 3 19:04:05 1996 Ulrich Drepper <drepper@cygnus.com> * stdio-common/vfscanf.c (__vfscanf): Don't count EOF char in %c format. Sat Aug 31 18:10:51 1996 Ulrich Drepper <drepper@cygnus.com> * wcsmbs/wchar.h: Define prototypes for wcstoq and wcstouq only #ifdef __USE_GNU. Sat Aug 31 12:34:29 1996 Ulrich Drepper <drepper@cygnus.com> * version.c: Add missing newline character in banner. * sysdeps/unix/sysv/linux/alpha/Dist: Correct typo. * sysdeps/unix/sysv/linux/i386/Dist: Likewise. Sat Aug 31 03:07:39 1996 Ulrich Drepper <drepper@cygnus.com> * intl/l10nflist.c (_nl_normalize_codeset): We convert to lower case, so don't prepend uppercase `ISO' for only numeric arg.
256 lines
9.0 KiB
Makefile
256 lines
9.0 KiB
Makefile
# Copyright (C) 1991, 92, 93, 94, 95, 96 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.
|
||
|
||
# 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
|
||
# License along with the GNU C Library; see the file COPYING.LIB. If
|
||
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||
# Cambridge, MA 02139, USA.
|
||
|
||
#
|
||
# Master Makefile for the GNU C library
|
||
#
|
||
ifneq (,)
|
||
This makefile requires GNU Make.
|
||
endif
|
||
|
||
|
||
# This is the default target; it makes everything except the tests.
|
||
.PHONY: all
|
||
all: lib extra_solibs others
|
||
|
||
define autoconf-it
|
||
@-rm -f $@.new
|
||
autoconf $(ACFLAGS) $< > $@.new
|
||
chmod a-w,a+x $@.new
|
||
mv -f $@.new $@
|
||
test ! -d CVS || cvs commit -m'Regenerated: autoconf $(ACFLAGS) $<' $@
|
||
endef
|
||
|
||
configure: configure.in aclocal.m4; $(autoconf-it)
|
||
%/configure: %/configure.in aclocal.m4; $(autoconf-it)
|
||
|
||
include Makeconfig
|
||
|
||
ifndef avoid-generated
|
||
-include $(objpfx)sysd-dirs
|
||
define \n
|
||
|
||
|
||
endef
|
||
sysdep-subdirs := $(subst $(\n), ,$(sysdep-subdirs))
|
||
endif
|
||
|
||
# These are the subdirectories containing the library source.
|
||
subdirs = csu assert ctype db locale intl catgets math setjmp signal stdlib \
|
||
stdio-common $(stdio) malloc string wcsmbs time dirent grp pwd\
|
||
posix io termios resource misc login socket sysvipc gmon gnulib \
|
||
wctype manual shadow $(sysdep-subdirs) nss elf po $(add-ons)
|
||
export subdirs := $(subdirs) # Benign, useless in GNU make before 3.63.
|
||
|
||
# The mach and hurd subdirectories have many generated header files which
|
||
# much of the rest of the library depends on, so it is best to build them
|
||
# first (and mach before hurd, at that). The before-compile additions in
|
||
# sysdeps/{mach,hurd}/Makefile should make it reliably work for these files
|
||
# not to exist when making in other directories, but it will be slower that
|
||
# way with more somewhat expensive `make' invocations.
|
||
subdirs := $(filter mach,$(subdirs)) $(filter hurd,$(subdirs)) \
|
||
$(filter-out mach hurd,$(subdirs))
|
||
|
||
# All initialization source files.
|
||
+subdir_inits := $(wildcard $(foreach dir,$(subdirs),$(dir)/init-$(dir).c))
|
||
# All subdirectories containing initialization source files.
|
||
+init_subdirs := $(patsubst %/,%,$(dir $(+subdir_inits)))
|
||
|
||
|
||
# These are the targets that are made by making them in each subdirectory.
|
||
+subdir_targets := subdir_lib extra_solibs objects objs others \
|
||
subdir_mostlyclean subdir_clean subdir_distclean \
|
||
subdir_realclean tests subdir_lint.out \
|
||
subdir_distinfo \
|
||
subdir_echo-headers subdir_echo-distinfo \
|
||
subdir_install \
|
||
$(addprefix install-, no-libc.a bin lib data headers others)
|
||
|
||
headers := errno.h sys/errno.h errnos.h limits.h values.h \
|
||
features.h gnu-versions.h libc-lock.h
|
||
aux = sysdep $(libc-init) version
|
||
|
||
echo-headers: subdir_echo-headers
|
||
|
||
# What to install.
|
||
install-others = $(includedir)/stubs.h
|
||
|
||
ifeq (yes,$(gnu-ld))
|
||
libc-init = set-init
|
||
else
|
||
libc-init = munch-init
|
||
$(objpfx)munch-init.c: munch.awk munch-tmpl.c $(+subdir_inits)
|
||
awk -f $< subdirs='$(+init_subdirs)' $(word 2,$^) > $@-t
|
||
mv -f $@-t $@
|
||
generated := $(generated) munch-init.c
|
||
endif
|
||
|
||
|
||
include Makerules
|
||
|
||
# Install from subdirectories too.
|
||
install: subdir_install
|
||
|
||
# Build subdirectory lib objects.
|
||
lib-noranlib: subdir_lib
|
||
|
||
ifeq (yes,$(build-shared))
|
||
# Build the shared object from the PIC object library.
|
||
lib: $(common-objpfx)libc.so
|
||
endif
|
||
|
||
$(objpfx)sysd-dirs: $(+sysdir_pfx)config.make
|
||
(echo define sysdep-subdirs; \
|
||
for sysdir in $(config-sysdirs); do \
|
||
case $$sysdir in \
|
||
/*) dir=$$sysdir ;; \
|
||
*) dir=$(..)$$sysdir ;; \
|
||
esac; \
|
||
if [ -r $$dir/Subdirs ]; then \
|
||
sed 's/#.*$$//' $$dir/Subdirs; \
|
||
else true; \
|
||
fi; \
|
||
done; \
|
||
echo endef) > $@-tmp
|
||
mv -f $@-tmp $@
|
||
|
||
# Makerules creates a file `stub-$(subdir)' for each subdirectory, which
|
||
# contains `#define __stub_FUNCTION' for each function which is a stub.
|
||
# Here we paste all of these together into <stubs.h>.
|
||
|
||
subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)stub-$(dir))
|
||
|
||
# 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
|
||
# 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.
|
||
$(includedir)/stubs.h: subdir_install
|
||
@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. */';\
|
||
sort $(subdir-stubs)) > $(objpfx)stubs.h
|
||
if test -r $@ && cmp -s $(objpfx)stubs.h $@; \
|
||
then echo stubs.h unchanged ; \
|
||
else $(INSTALL_DATA) $(objpfx)stubs.h $@; fi
|
||
rm -f $(objpfx)stubs.h
|
||
|
||
# This makes the Info or DVI file of the documentation from the Texinfo source.
|
||
.PHONY: info dvi
|
||
info dvi:
|
||
$(MAKE) -C manual $@
|
||
|
||
# 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):
|
||
$(MAKE) -C $(@D) $(@F)
|
||
|
||
.PHONY: $(+subdir_targets) $(all-subdirs-targets)
|
||
|
||
# Targets to clean things up to various degrees.
|
||
|
||
.PHONY: clean realclean distclean distclean-1 parent-clean parent-mostlyclean
|
||
|
||
# Subroutines of all cleaning targets.
|
||
parent-mostlyclean: common-mostlyclean # common-mostlyclean is in Makerules.
|
||
-rm -f $(foreach o,$(object-suffixes),\
|
||
$(common-objpfx)$(patsubst %,$(libtype$o),c)) \
|
||
$(addprefix $(objpfx),$(install-lib))
|
||
parent-clean: parent-mostlyclean common-clean
|
||
-rm -f $(addprefix $(common-objpfx),$(common-generated))
|
||
-rm -f $(addprefix $(objpfx),sysd-Makefile sysd-dirs sysd-rules)
|
||
|
||
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
|
||
mostlyclean: parent-mostlyclean
|
||
@$(MAKE) subdir_mostlyclean no_deps=t
|
||
|
||
# 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.
|
||
@$(MAKE) distclean-1 no_deps=t distclean-1=$@ avoid-generated=yes
|
||
|
||
# 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)
|
||
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))
|
||
|
||
|
||
# Make the distribution tarfile.
|
||
|
||
distribute := README INSTALL FAQ NOTES NEWS PROJECTS \
|
||
COPYING.LIB COPYING ChangeLog ChangeLog.[0-9] \
|
||
Makefile Makeconfig Makerules Rules Make-dist MakeTAGS \
|
||
extra-lib.mk o-iterator.mk \
|
||
ansidecl.h mkinstalldirs move-if-change install-sh \
|
||
configure configure.in aclocal.m4 config.sub config.guess\
|
||
config.h.in config.make.in config-name.in Makefile.in \
|
||
autolock.sh munch-tmpl.c munch.awk \
|
||
sysdep.h set-hooks.h libc-symbols.h version.h shlib-versions \
|
||
rpm/Makefile rpm/template rpm/rpmrc
|
||
|
||
distribute := $(strip $(distribute))
|
||
generated := $(generated) stubs.h
|
||
|
||
README: README.template version.c ; # Make-dist should update README.
|
||
|
||
define format-me
|
||
@rm -f $@
|
||
makeinfo --no-validate --no-warn --no-headers $< -o $@
|
||
-chmod a-w $@
|
||
endef
|
||
INSTALL: manual/maint.texi; $(format-me)
|
||
NOTES: manual/creature.texi; $(format-me)
|
||
|
||
rpm/%: subdir_distinfo
|
||
$(MAKE) -C $(@D) subdirs='$(subdirs)' $(@F)
|