mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-11-25 04:35:44 +00:00
6374309c6d
enable the automake ansi2knr capability. Right now this doesn't quite build using a K&R compiler because of a problem with the loadavg test program, but the rest of the code works. I'm asking the automake list about this problem.
228 lines
6.2 KiB
Text
228 lines
6.2 KiB
Text
# Maintainer-only makefile segment. This contains things that are relevant
|
|
# only if you have the full copy of the GNU make sources from the CVS
|
|
# tree, not a dist copy.
|
|
#
|
|
|
|
# Find the glob source files... this might be dangerous, but we're maintainers!
|
|
#
|
|
globsrc := $(wildcard glob/*.c)
|
|
globhdr := $(wildcard glob/*.h)
|
|
|
|
TEMPLATES = README README.DOS README.W32 \
|
|
config.ami configh.dos config.h.W32 config.h-vms
|
|
MTEMPLATES = Makefile.DOS SMakefile
|
|
|
|
all-am: $(TEMPLATES) $(MTEMPLATES) build.sh.in
|
|
|
|
# We need this to ensure that README and build.sh.in are created on time to
|
|
# avoid errors by automake.
|
|
#
|
|
#Makefile.in: README build.sh.in
|
|
|
|
# General rule for turning a .template into a regular file.
|
|
#
|
|
$(TEMPLATES) : % : %.template Makefile
|
|
rm -f $@
|
|
sed -e 's@%VERSION%@$(VERSION)@g' \
|
|
-e 's@%PACKAGE%@$(PACKAGE)@g' \
|
|
$< > $@
|
|
chmod a-w $@
|
|
|
|
# Construct Makefiles by adding on dependencies, etc.
|
|
#
|
|
$(MTEMPLATES) : % : %.template .dep_segment Makefile
|
|
rm -f $@
|
|
sed -e 's@%VERSION%@$(VERSION)@g' \
|
|
-e 's@%PROGRAMS%@$(bin_PROGRAMS)@g' \
|
|
-e 's@%SOURCES%@$(filter-out remote-%,$(make_SOURCES)) remote-$$(REMOTE).c@g' \
|
|
-e 's@%OBJECTS%@$(filter-out remote-%,$(make_OBJECTS)) remote-$$(REMOTE).o@g' \
|
|
-e 's@%GLOB_SOURCES%@$(globsrc) $(globhdr)@g' \
|
|
-e 's@%GLOB_OBJECTS%@$(globsrc:glob/%.c=%.o)@g' \
|
|
$< > $@
|
|
echo >>$@; echo '# --------------- DEPENDENCIES' >>$@; echo '#' >>$@; \
|
|
cat $(word 2,$^) >>$@
|
|
chmod a-w $@
|
|
|
|
NMakefile: NMakefile.template .dep_segment Makefile
|
|
rm -f $@
|
|
cp $< $@
|
|
echo >>$@; echo '# --------------- DEPENDENCIES' >>$@; echo '#' >>$@; \
|
|
sed 's/^\([^ ]*\)\.o:/$$(OUTDIR)\/\1.obj:/' $(word 2,$^) >>$@
|
|
chmod a-w $@
|
|
|
|
# Construct build.sh.in
|
|
#
|
|
build.sh.in: build.template Makefile
|
|
rm -f $@
|
|
sed -e 's@%objs%@$(filter-out remote-%,$(make_OBJECTS)@g' \
|
|
-e 's@%globobjs%@$(patsubst %.c,%.o,$(globsrc)))@g' \
|
|
$< > $@
|
|
chmod a-w+x $@
|
|
|
|
|
|
# Use automake to build a dependency list file, for "foreign" makefiles like
|
|
# Makefile.DOS.
|
|
#
|
|
# Automake used to have a --generate-deps flag, but it's gone now, so we have
|
|
# to do it ourselves.
|
|
#
|
|
.dep_segment: Makefile.am maintMakefile $(DEP_FILES)
|
|
cat $(DEP_FILES) \
|
|
| sed -e '/^[^:]*\.[ch] *:/d' \
|
|
-e 's, /usr/[^ ]*,,g' \
|
|
-e 's, $(srcdir)/, ,g' \
|
|
-e '/^ \\$$/d' \
|
|
> $@
|
|
|
|
# Get rid of everything "else".
|
|
#
|
|
maintFILES = configure aclocal.m4 config.h.in Makefile.in stamp-h.in
|
|
|
|
CVS-CLEAN-FILES += $(maintFILES) $(TEMPLATES) $(MTEMPLATES) NMakefile \
|
|
missing build.sh.in .dep_segment po-check-?
|
|
|
|
# This rule tries to clean the tree right down to how it looks when you do a
|
|
# virgin CVS checkout.
|
|
|
|
.PHONY: cvs-clean
|
|
cvs-clean: maintainer-clean
|
|
-rm -f *~
|
|
-rm -f config/*~ config/Makefile.in config/[a-z]*
|
|
-rm -f po/*~ po/Makefile.in.in po/Rules-quot po/[a-z]*
|
|
-rm -f doc/*~ doc/Makefile.in doc/fdl.texi doc/make-stds.texi \
|
|
doc/texinfo.tex
|
|
-rm -f glob/*~ glob/Makefile.in
|
|
-rm -f ABOUT-NLS $(CVS-CLEAN-FILES)
|
|
|
|
|
|
# ----------------------------------------------------------------------
|
|
#
|
|
# The sections below were stolen from the Makefile.maint used by fileutils,
|
|
# sh-utils, textutils, CPPI, Bison, and Autoconf.
|
|
|
|
|
|
## ---------------- ##
|
|
## Updating files. ##
|
|
## ---------------- ##
|
|
|
|
WGET = wget --passive-ftp --non-verbose
|
|
ftp-gnu = ftp://ftp.gnu.org/gnu
|
|
|
|
move_if_change = if test -r $(target) && cmp -s $(target).t $(target); then \
|
|
echo $(target) is unchanged; rm -f $(target).t; \
|
|
else \
|
|
mv $(target).t $(target); \
|
|
fi
|
|
|
|
# ------------------- #
|
|
# Updating PO files. #
|
|
# ------------------- #
|
|
|
|
po_repo = http://www.iro.umontreal.ca/contrib/po/maint/$(PACKAGE)
|
|
.PHONY: do-po-update po-update
|
|
do-po-update:
|
|
tmppo=/tmp/$(PACKAGE)-$(VERSION)-po &&\
|
|
rm -rf $$tmppo && \
|
|
mkdir $$tmppo && \
|
|
(cd $$tmppo && $(WGET) -r -l1 -nd --no-parent -A '*.po' $(po_repo)) &&\
|
|
cp $$tmppo/*.po po
|
|
cd po && $(MAKE) update-po
|
|
$(MAKE) po-check
|
|
|
|
po-update:
|
|
if test -d "po"; then \
|
|
$(MAKE) do-po-update; \
|
|
fi
|
|
|
|
# -------------------------- #
|
|
# Updating GNU build tools. #
|
|
# -------------------------- #
|
|
|
|
# The following pseudo table associates a local directory and a URL
|
|
# with each of the files that belongs to some other package and is
|
|
# regularly updated from the specified URL.
|
|
# $(srcdir)/src/ansi2knr.c
|
|
|
|
|
|
wget_files ?= $(srcdir)/config/config.guess $(srcdir)/config/config.sub \
|
|
$(srcdir)/doc/texinfo.tex $(srcdir)/doc/make-stds.texi \
|
|
$(srcdir)/doc/fdl.texi
|
|
|
|
wget-targets = $(patsubst %, get-%, $(wget_files))
|
|
|
|
config.guess-url_prefix = $(ftp-gnu)/config/
|
|
config.sub-url_prefix = $(ftp-gnu)/config/
|
|
|
|
ansi2knr.c-url_prefix = ftp://ftp.cs.wisc.edu/ghost/
|
|
|
|
texinfo.tex-url_prefix = $(ftp-gnu)/texinfo/
|
|
|
|
standards.texi-url_prefix = $(ftp-gnu)/GNUinfo/
|
|
make-stds.texi-url_prefix = $(ftp-gnu)/GNUinfo/
|
|
fdl.texi-url_prefix = $(ftp-gnu)/GNUinfo/
|
|
|
|
target = $(patsubst get-%,%,$@)
|
|
url = $($(notdir $(target))-url_prefix)$(notdir $(target))
|
|
|
|
.PHONY: $(wget-targets)
|
|
$(wget-targets):
|
|
@echo $(WGET) $(url) -O $(target) \
|
|
&& $(WGET) $(url) -O $(target).t \
|
|
&& $(move_if_change)
|
|
|
|
.PHONY: wget-update
|
|
wget-update: $(wget-targets)
|
|
|
|
|
|
# Updating tools via CVS.
|
|
cvs_files ?= depcomp missing
|
|
cvs-targets = $(patsubst %, get-%, $(cvs_files))
|
|
|
|
automake_repo = :pserver:anoncvs@anoncvs.cygnus.com:/cvs/automake
|
|
.PHONY: $(cvs-targets)
|
|
$(cvs-targets):
|
|
$(CVS) -d $(automake_repo) co -p automake/lib/$(notdir $(target)) \
|
|
>$(target).t \
|
|
&& $(move_if_change)
|
|
|
|
.PHONY: cvs-update
|
|
cvs-update: $(cvs-targets)
|
|
|
|
|
|
# --------------------- #
|
|
# Updating everything. #
|
|
# --------------------- #
|
|
|
|
.PHONY: update
|
|
update: wget-update po-update
|
|
|
|
# cvs-update
|
|
|
|
|
|
## --------------- ##
|
|
## Sanity checks. ##
|
|
## --------------- ##
|
|
|
|
# Checks that don't require cvs. Run `changelog-check' last as
|
|
# previous test may reveal problems requiring new ChangeLog entries.
|
|
local-check: po-check changelog-check
|
|
|
|
# copyright-check writable-files
|
|
|
|
changelog-check:
|
|
if head ChangeLog | grep 'Version $(VERSION)' >/dev/null; then \
|
|
:; \
|
|
else \
|
|
echo "$(VERSION) not in ChangeLog" 1>&2; \
|
|
exit 1; \
|
|
fi
|
|
|
|
# Verify that all source files using _() are listed in po/POTFILES.in.
|
|
# Ignore make.h; it defines _().
|
|
po-check:
|
|
if test -f po/POTFILES.in; then \
|
|
grep -E -v '^(#|$$)' po/POTFILES.in | sort > $@-1; \
|
|
grep -E -l '\b_\(' *.c *.h | grep -v make.h | sort > $@-2; \
|
|
diff -u $@-1 $@-2 || exit 1; \
|
|
rm -f $@-1 $@-2; \
|
|
fi
|