* Makerules (compile-mkdep-flags): Add -MT $@.

* Makefile (dist, tag-for-dist): New targets.
	(files-for-dist, tag-of-stem): New variables.
	(glibc-%.tar glibc-linuxthreads-%.tar): New pattern rule.
	Make tar files using cvs export.
	(%.bz2, %.gz, tag-%): New pattern rules.
	(distribute): Variable removed.
	(+subdir_targets): Remove distinfo targets.
	(echo_subdirs, echo-distinfo, parent_echo-distinfo): Targets removed.
	(rpm/%): Pattern rule removed.
	* rpm/Makefile, rpm/rpmrc, rpm/template: Ancient cruft files removed.
	* Rules (subdir_echo-headers, subdir_echo-distinfo, subdir_dist):
	Targets removed.
	* Makerules (dist, subdir_distinfo): Targets removed.
	($(objpfx)distinfo): Depend on $(distribute).
	* Make-dist: File removed.
This commit is contained in:
Roland McGrath 2004-06-20 01:43:43 +00:00
parent b960842876
commit 62780824a0
7 changed files with 47 additions and 467 deletions

View File

@ -8,6 +8,24 @@
2004-06-18 Roland McGrath <roland@frob.com>
* Makerules (compile-mkdep-flags): Add -MT $@.
* Makefile (dist, tag-for-dist): New targets.
(files-for-dist, tag-of-stem): New variables.
(glibc-%.tar glibc-linuxthreads-%.tar): New pattern rule.
Make tar files using cvs export.
(%.bz2, %.gz, tag-%): New pattern rules.
(distribute): Variable removed.
(+subdir_targets): Remove distinfo targets.
(echo_subdirs, echo-distinfo, parent_echo-distinfo): Targets removed.
(rpm/%): Pattern rule removed.
* rpm/Makefile, rpm/rpmrc, rpm/template: Ancient cruft files removed.
* Rules (subdir_echo-headers, subdir_echo-distinfo, subdir_dist):
Targets removed.
* Makerules (dist, subdir_distinfo): Targets removed.
($(objpfx)distinfo): Depend on $(distribute).
* Make-dist: File removed.
* NEWS: Fix a typo. Update bug-reporting instructions.
2004-06-17 Thorsten Kukuk <kukuk@suse.de>

266
Make-dist
View File

@ -1,266 +0,0 @@
# Copyright (C) 1991-2001, 2002, 2003 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 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
# Lesser General Public License for more details.
# 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.
dist:
# Make the value empty so ifdef fails if it's $(-subdir).
subdir := $(subdir)
ifdef subdir
.. := ../
else
.. :=
endif
include $(..)Makeconfig
foo:=$(shell echo 'distribute=$(distribute)'>&2)
foo:=$(shell echo 'dont_distribute=$(dont_distribute)'>&2)
foo:=$(shell echo 'foobar=$(filter %.c %.S %.s %.h,$(distribute))'>&2)
ifndef sysdep_dirs
# Find all sysdep directories.
export sysdep_dirs := $(shell find $(..)sysdeps -type d ! -name bits \
! -name CVS ! -name RCS \
! -name SCCS -print)
else
# Defined by the parent.
sysdep_dirs := $(addprefix $(..),$(sysdep_dirs))
endif
# Don't distribute add-on subdirs.
subdirs := $(filter-out $(add-ons),$(subdirs))
# Make sure both aout and elf get in, whichever is in use.
subdirs += aout elf
sysdep-Subdir-files := $(wildcard $(addsuffix /Subdirs,$(sysdep_dirs)))
ifdef sysdep-Subdir-files
subdirs := $(sort $(subdirs) \
$(shell sed -e 's/\#.*$$//' $(sysdep-Subdir-files)))
endif
# Makefiles can define `source_dirs' to list nonstandard directories
# where source files might be found.
ifdef subdir
all-headers = $(filter-out $(sysdep_headers),$(headers))
else
+distinfo := $(shell MAKEFLAGS= MFLAGS= $(MAKE) -s no_deps=t \
inhibit_interface_rules=t inhibit_mach_syscalls=t \
inhibit_timezone_rules=t generating=t \
subdirs='$(subdirs)' echo-distinfo | grep -v '^make')
foo:=$(shell echo>&2 '+distinfo=$(+distinfo)')
all-headers := $(patsubst +header+%,%,$(filter +header+%,$(+distinfo)))
# Ignore subdir headers without top-level indirections.
all-headers := $(sort $(headers) \
$(patsubst include/%,%,\
$(wildcard $(addprefix include/,\
$(all-headers)))))
# Filter out names like ../conf/portability.h that would point outside
# the source directory.
all-headers := $(filter-out ../%,$(all-headers))
+subdir-nodist := $(patsubst +nodist+%,%,$(filter +nodist+%,$(+distinfo)))
endif
foo:=$(shell echo 'IS THIS WORKING??? all-headers=$(all-headers)' >&2)
sources += $(addsuffix .c,$(elided-routines) \
$(foreach l,$(extra-libs),$($l-routines)))
sources += $(addsuffix .c, $(filter-out $(elided-routines), \
$(tests) $(xtests)))
# Find all sysdep sources and headers.
+maybe-sysdeps := $(sources) $(sources:.c=.s) $(sources:.c=.S) $(all-headers) \
$(filter %.c %.S %.s %.h %.sub,$(distribute))
foo:=$(shell echo '+maybe-sysdeps=$(+maybe-sysdeps)'>&2)
# Find all the files that have a generic version.
generic-dirs = $(..)sysdeps/generic $(..)sysdeps/ieee754 \
$(..)sysdeps/ieee754/flt-32 $(..)sysdeps/ieee754/dbl-64 \
$(..)sysdeps/ieee754/ldbl-96 $(..)sysdeps/ieee754/ldbl-128
try-sysdeps := $(foreach dir,$(generic-dirs),\
$(addprefix $(dir)/,$(+maybe-sysdeps)))
foo:=$(shell echo 'try-sysdeps=$(try-sysdeps)'>&2)
+sysdeps := $(wildcard $(try-sysdeps))
foo:=$(shell echo 'generic +sysdeps=$(+sysdeps)'>&2)
+sysdep-names := $(sort $(foreach dir, $(generic-dirs),\
$(patsubst $(dir)/%,%,\
$(filter $(dir)/%,$(+sysdeps)))))
foo:=$(shell echo '+sysdep-names=$(+sysdep-names)' >&2)
ifdef subdir-dirs
vpath % $(subdir-dirs)
endif
# Now find all the sysdep versions of those files.
+sysdeps := $(foreach dir,$(sysdep_dirs) $(source_dirs),\
$(wildcard $(addprefix $(dir)/, \
$(+sysdep-names) \
$(+sysdep-names:.c=.s) \
$(+sysdep-names:.c=.S) \
)))
# Source and header files to go in the distribution tar file.
.S.s := $(wildcard $(sources:.c=.S) $(sources:.c=.s))
sources := $(filter-out $(addsuffix .c,$(basename $(.S.s))),$(sources)) $(.S.s)
+out := $(patsubst %.S,%.c,$(+sysdep-names:.s=.c)) \
$(addsuffix .c,$(sysdep_routines)) \
$(+subdir-nodist) $(dont_distribute)
foo:=$(shell echo '+out=$(+out)' >&2; echo foofoo >&2)
+tsrcs := $(filter-out $(+out), $(sources) $(all-headers)) $(+sysdeps)
foo:=$(shell echo 'made +tsrcs=$(+tsrcs)'>&2)
foo:=$(shell echo generated='$(generated)' >&2)
#generated := $(sort $(generated) $(generated:.S=.c) $(generated:.s=.c))
#foo:=$(shell echo now generated='$(generated)' >&2)
+tsrcs := $(filter-out $(generated),$(+tsrcs))
+tsrcs := $(sort $(filter-out $(+out),$(+tsrcs) $(distribute)))
foo:=$(shell echo '+tsrcs=$(+tsrcs)'>&2)
foo:=$(shell echo foobie, dammit! >&2)
ifndef tardir
export tardir := glibc-$(version)
endif
$(..)glibc-$(version):
ln -s . $@
#+tsrcs := $(+tsrcs) \
# TAGS
.PHONY: TAGS
TAGS: $(..)MakeTAGS
$(MAKE) -f $< $@ -o subdir_TAGS
ifdef subdir
foo:=$(shell echo subdir foo >&2)
+tsrcs := Makefile $(wildcard Versions) $(wildcard Depend) $(+tsrcs) \
$(addsuffix .c,$(others) $(test-srcs)) \
$(wildcard $(addsuffix .input,$(tests) $(xtests) $(test-srcs)))
+tardeps := $(strip $(+tsrcs))
verbose = v
.PHONY: dist
dist: $(..)$(tardir) $(+tardeps)
@cd ..; if test -f dist.tar; then c=u; else c=c; fi; \
$(+cmdecho) "cd ..; tar $${c}h$(verbose)f dist.tar ..."; \
tar $${c}h$(verbose)f dist.tar \
$(addprefix $(tardir)/$(subdir)/,$(filter-out $< ../%,$^)) \
$(addprefix $(tardir)/,\
$(patsubst ../%,%,$(filter-out $<,$(filter ../%,$^))))
else # Parent makefile.
# Find what other things sysdep directories want to distribute.
foo:=$(shell echo parent foobie>&2)
+sysdep-distfiles := $(wildcard $(addsuffix /Dist,$(sysdep_dirs)))
foo:=$(shell echo +sysdep-distfiles='$(+sysdep-distfiles)'>&2)
+sysdep-dist := $(foreach file,$(+sysdep-distfiles),\
$(addprefix $(dir $(file)), \
$(shell sed -e 's/\#.*$$//' $(file)))) \
$(+sysdep-distfiles) \
$(sysdep-Subdir-files)
foo:=$(shell echo '+sysdep-dist=$(+sysdep-dist)' >&2)
+sysdep-tsrcs := $(wildcard $(foreach file,Makefile Makeconfig Implies \
configure configure.in Versions\
syscalls.list libm-test-ulps,\
$(addsuffix /$(file),$(sysdep_dirs)))) \
$(+sysdep-dist)
+tsrcs := $(+tsrcs) $(+sysdep-tsrcs) $(wildcard $(+sysdep-names:%=include/%))
ifneq ($(AUTOCONF),no)
ifeq ($(with-cvs),yes)
define autoconf-it-cvs
test ! -d CVS || cvs $(CVSOPTS) commit -m'Regenerated: autoconf $(ACFLAGS) $<' $@
endef
else
autoconf-it-cvs =
endif
define autoconf-it
@-rm -f $@.new
$(AUTOCONF) $(ACFLAGS) $< > $@.new
chmod a-w,a+x $@.new
mv -f $@.new $@
$(autoconf-it-cvs)
endef
configure: configure.in aclocal.m4; $(autoconf-it)
%/configure: %/configure.in aclocal.m4; $(autoconf-it)
endif # $(AUTOCONF) = no
dist: $(tardir).tar.bz2
rm $(tardir).tar
subdir_dist: dist.tar
dist.tar: README $(tardir) $(+tsrcs)
tar chvf $@ $(addprefix $(tardir)/,$(filter-out $(tardir),$^))
$(tardir).tar: dist.tar subdir_dist
tar xf $< -C $${TMPDIR-/tmp}
tar covf $@ -C $${TMPDIR-/tmp} $(tardir)
-rm -fr $${TMPDIR-/tmp}/$(tardir) dist.tar &
rm $(tardir)
%.Z: %
compress -c $< > $@
%.gz: %
gzip -9 -v -c $< > $@
%.bz2: %
bzip2 -9 -v -c $< > $@
foo:=$(shell echo subdirs=$(subdirs) >&2)
dist-subdirs := $(addprefix dist-,$(subdirs)) # dist-manual
.PHONY: subdir_dist $(dist-subdirs)
subdir_dist: $(dist-subdirs)
$(dist-subdirs):
$(MAKE) -C $(patsubst dist-%,%,$@) dist
# This is here instead of in Makefile so it can use $(release) and $(version).
README: README.template version.h
-rm -f $@
sed -e 's/RELEASE/$(release)/' -e 's/VERSION/$(version)/' < $< > $@
# Make it unwritable so I won't change it by mistake.
chmod 444 $@
ifeq ($(with-cvs),yes)
test ! -d CVS || cvs $(CVSOPTS) commit -m'Remade for $(release)-$(version)' $@
endif
endif # Subdirectory vs. parent makefile
# Get these things out of the environment because they take up lots of space.
unexport distribute generated
# Fnord.
export inhibit_mach_syscalls=t
export no_deps=t
export inhibit_interface_rules=t
export generating=t

View File

@ -61,8 +61,8 @@ endif # $(AUTOCONF) = no
+subdir_targets := subdir_lib objects objs others subdir_mostlyclean \
subdir_clean subdir_distclean subdir_realclean \
tests xtests subdir_lint.out \
subdir_update-abi subdir_check-abi subdir_distinfo \
subdir_echo-headers subdir_echo-distinfo \
subdir_update-abi subdir_check-abi \
subdir_echo-headers \
subdir_install \
subdir_testclean \
$(addprefix install-, no-libc.a bin lib data headers others)
@ -259,47 +259,9 @@ ifdef objdir
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.
.PHONY: dist tag-for-dist
distribute := README README.libm INSTALL FAQ FAQ.in NOTES NEWS BUGS \
PROJECTS COPYING.LIB COPYING ChangeLog ChangeLog.[0-9] \
ChangeLog.1[0-9] Makefile Makeconfig Makerules Rules \
Make-dist MakeTAGS extra-lib.mk o-iterator.mk configure \
extra-modules.mk \
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 abi-tags stub-tag.h \
test-skeleton.c include/des.h include/libc-internal.h \
include/shlib-compat.h include/pthread.h Versions.def \
cppflags-iterator.mk tls.make.c include/caller.h \
include/stubs-prologue.h include/gnu/stubs.h \
include/atomic.h bits/atomic.h symbol-hacks.h \
INTERFACE CONFORMANCE NAMESPACE LICENSES \
$(addprefix scripts/, \
rellns-sh config.sub config.guess \
mkinstalldirs move-if-change install-sh \
test-installation.pl gen-FAQ.pl versions.awk\
gen-sorted.awk abi-versions.awk abilist.awk \
firstversions.awk documented.sh cpp \
output-format.sed gen-as-const.awk \
merge-abilist.awk extract-abilist.awk \
rpm2dynsym.sh \
) \
$(wildcard scripts/data/*.data) \
$(wildcard abilist/*.abilist)
distribute := $(strip $(distribute))
generated := $(generated) stubs.h
README: README.template version.h
@ -311,6 +273,30 @@ ifeq ($(with-cvs),yes)
test ! -d CVS || cvs $(CVSOPTS) commit -m'Remade for $(release)-$(version)' $@
endif
files-for-dist := README FAQ INSTALL NOTES configure
tag-of-stem = glibc-$(subst .,_,$*)
glibc-%.tar glibc-linuxthreads-%.tar: $(files-for-dist)
@rm -fr glibc-$*
cvs $(CVSOPTS) -Q export -d glibc-$* -r $(tag-of-stem) libc
tar cf glibc-linuxthreads-$*.tar -C glibc-$* \
linuxthreads linuxthreads_db
rm -rf $(addprefix glibc-$*/,linuxthreads linuxthreads_db)
tar cf glibc-$*.tar glibc-$*
rm -fr glibc-$*
%.bz2: %; bzip2 -9vk $<
%.gz: %; gzip -9vnc $< > $@.new && mv -f $@.new $@
dist: $(foreach Z,.bz2 .gz,glibc-$(version).tar$Z \
glibc-linuxthreads-$(version).tar$Z)
md5sum $^
tag-for-dist: tag-$(version)
tag-%: $(files-for-dist)
cvs $(CVSOPTS) -Q tag -c $(tag-of-stem)
define format-me
@rm -f $@
makeinfo --no-validate --no-warn --no-headers $< -o $@
@ -327,9 +313,6 @@ ifeq ($(with-cvs),yes)
endif
FORCE:
rpm/%: subdir_distinfo
$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
iconvdata/% localedata/% po/% manual/%:
$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)

13
Rules
View File

@ -1,4 +1,4 @@
# Copyright (C) 1991-2000,2002,2003 Free Software Foundation, Inc.
# Copyright (C) 1991-2000,2002,2003, 2004 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
@ -159,23 +159,14 @@ 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
.PHONY: subdir_TAGS
subdir_TAGS: TAGS
subdir_dist: dist
# Target required by the Hurd to ensure that all the MiG-generated
# headers are in place before building a subdirectory.

View File

@ -1,102 +0,0 @@
# A start at automated rpm-making for GNU libc.
# Generates an rpm spec file in `CPU-VENDOR-OS' from the list of installed
# files and the `template' file.
all:
subdir := rpm
include ../Makeconfig
include $(common-objpfx)soversions.mk
distinfo := $(common-objpfx)distinfo \
$(wildcard $(subdirs:%=$(common-objpfx)%/distinfo))
-include $(distinfo)
config = $(config-machine)-$(config-vendor)-$(config-os)
headers := $(-headers) $(foreach d,$(subdirs),$($d-headers))
install-lib := $(-install-lib) $(foreach d,$(subdirs),$($d-install-lib))
install-lib.so := $(-install-lib.so) \
$(foreach d,$(subdirs),$(filter-out $($d-versioned),\
$($d-install-lib.so)))
versioned := $(-versioned) $(foreach d,$(subdirs),$($d-versioned))
install-bin := $(-install-bin) $(foreach d,$(subdirs),$($d-install-bin))
install-sbin := $(-install-sbin) $(foreach d,$(subdirs),$($d-install-sbin))
install-data := $(-install-data) $(foreach d,$(subdirs),$($d-install-data))
install-others := $(-install-others) \
$(foreach d,$(subdirs),$($d-install-others))
# Notice things to be installed in /etc. They get specially marked as
# possibly user-modified config files.
install-sysconf := $(filter $(sysconfdir)/%,$(install-others))
install-others := $(filter-out $(sysconfdir)/%,$(install-others))
# Add the unversioned lib*.so's.
install-slib = $(install-lib.so)
# For each versioned lib*.so, add two files:
# lib*-VERSION.so and lib*.so.MAJOR
install-slib += $(foreach lib,$(versioned),\
$(patsubst %.so,%-$(version).so,$(lib)) \
$(lib)$($(lib)-version))
install-lib += $(versioned)
# Add libc.a and libc_p.a.
install-lib += $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\
$(patsubst %,$(libtype$o),c))
ifeq (yes,$(build-shared))
# Add libc.so itself, which is a special case in Makerules.
ifndef libc.so-version
install-slib += libc.so
else
install-lib += libc.so
install-slib += libc-$(version).so libc.so$(libc.so-version)
endif
endif
all: glibc-$(version).$(config).rpm
instvars = include lib slib bin sbin data others
# Generate the rpm spec file for this configuration.
$(config): template $(distinfo) Makefile
rm -f $@.new
(sed -e 's%@VERSION@%$(version)%g' \
-e 's%@prefix@%$(prefix)%g' \
$<; \
($(foreach var,$(instvars),\
list='$(install-$(var))'; \
for f in $$list; do \
echo $(filter-out /,$($(var)dir)/)$$f; \
done;\
)) | sort; \
(list='$(install-sysconf)'; \
for f in $$list; do \
echo %config $$f; \
done) | sort) > $@.new
mv -f $@.new $@
install-include = $(headers)
instfiles := $(sort $(foreach x,$(instvars),\
$(addprefix $(filter-out /,$($xdir)/),\
$(install-$x))))
# Build the binary rpm for this configuration.
glibc-$(version).$(config).rpm: $(config) rpmrc $(instfiles)
# rpm is really lame. You cannot tell it the name of the output file,
# and you can only guess at what the name will turn out to be!
arch=`uname -m | sed -e 's/i.86/i386/' -e 's/alpha/axp/'`; \
rm -f $$arch; ln -s . $$arch; \
rpm --rcfile rpmrc -bb $<; \
rm -f $$arch; \
mv -f glibc-$(version)-1.$${arch}.rpm $@
# Avoid time-consuming implicit rule search.
$(instfiles) : ;
.PHONY: clean
clean:
rm -f $(config) glibc-$(version).$(config).rpm

View File

@ -1,3 +0,0 @@
rpmdir: .
srcrpmdir: .
specdir: .

View File

@ -1,41 +0,0 @@
Name: glibc
Summary: GNU libc
Group: Development/Libraries/Libc
Version: @VERSION@
Release: 1
Copyright: LGPL, GPL
Source: glibc-@VERSION@.tar.gz
BuildRoot: /tmp/libc
%description
The C language provides no built-in facilities for performing such
common operations as input/output, memory management, string
manipulation, and the like. Instead, these facilities are defined in
a standard library, which you compile and link with your programs. The
GNU C library (this package) defines all of the library functions that
are specified by the ISO C standard, as well as additional features
specific to POSIX and other derivatives of the Unix operating system,
and extensions specific to the GNU system.
%prep
%setup
rm -rf $RPM_BUILD_ROOT
mkdir $RPM_BUILD_ROOT
%build
configure --prefix=@prefix@
cat >configparms <<EOF
CFLAGS=$RPM_OPT_FLAGS
install_root=$RPM_BUILD_ROOT
EOF
make
%clean
rm -rf $RPM_BUILD_ROOT
%install
make install
%files
%doc BUGS FAQ NEWS NOTES README INSTALL