57e58c3aa7
things fixed in here, including the '-ko' vs. -A problem with remote cvs which caused all files with -ko to be resent each time (which is damn painful over a modem, I can tell you). It also found a heap of stray empty directories that should have been pruned with the -P flag to cvs update but were not for some reason. It also has the fully integrated rcs and diff, so no more fork/exec overheads for rcs,ci,patch,diff,etc. This means that it parses the control data in the rcs files only once rather than twice or more. If the 'cvs diff' vs. Index thing is going to be fixed for future patch compatability, this is the place to do it.
285 lines
7.9 KiB
Makefile
285 lines
7.9 KiB
Makefile
# Master Makefile for the GNU Concurrent Versions System.
|
|
# Copyright (C) 1986, 1988-1992, 1994 Free Software Foundation, Inc.
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2, or (at your option)
|
|
# any later version.
|
|
|
|
# This program 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 General Public License for more details.
|
|
|
|
SHELL = /bin/sh
|
|
|
|
#### Start of system configuration section. ####
|
|
|
|
srcdir = @srcdir@
|
|
top_srcdir = @top_srcdir@
|
|
VPATH = @srcdir@
|
|
|
|
# If you use gcc, you should either run the fixincludes script that
|
|
# comes with it or else use gcc with the -traditional option. Otherwise
|
|
# ioctl calls will be compiled incorrectly on some systems.
|
|
CC = @CC@
|
|
AR = ar
|
|
|
|
@SET_MAKE@
|
|
|
|
# Set RANLIB = echo if your system doesn't have or need ranlib.
|
|
RANLIB = @RANLIB@
|
|
# Set YACC = bison or yacc, depending on which you have on your system
|
|
YACC = @YACC@
|
|
# Use cp if you don't have install.
|
|
INSTALL = @INSTALL@
|
|
INSTALL_DATA = @INSTALL_DATA@
|
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
|
|
DEFS = @DEFS@
|
|
LIBS = @LIBS@
|
|
|
|
INCLUDES = -I. -I../lib @includeopt@
|
|
CFLAGS = @CFLAGS@
|
|
LDFLAGS = @LDFLAGS@
|
|
|
|
MAKEINFO = makeinfo
|
|
TEXI2DVI = texi2dvi
|
|
|
|
prefix = @prefix@
|
|
exec_prefix = @exec_prefix@
|
|
|
|
# Where to install the executables.
|
|
bindir = $(exec_prefix)/bin
|
|
|
|
# Where to put the system-wide .cvsrc file
|
|
libdir = $(prefix)/lib
|
|
|
|
# Where to put the Info files
|
|
infodir = $(prefix)/info
|
|
|
|
# Where to put the manual pages.
|
|
mandir = $(prefix)/man
|
|
|
|
#### End of system configuration section. ####
|
|
|
|
FLAGS_TO_PASS = \
|
|
AR='$(AR)' \
|
|
CC='$(CC)' \
|
|
CFLAGS='$(CFLAGS)' \
|
|
LDFLAGS='$(LDFLAGS)' \
|
|
LIBPROGS='$(LIBPROGS)' \
|
|
LIBS='$(LIBS)' \
|
|
MAKE='$(MAKE)' \
|
|
MAKEINFO='$(MAKEINFO)' \
|
|
RANLIB='$(RANLIB)' \
|
|
TEXI2DVI='$(TEXI2DVI)' \
|
|
YACC='$(YACC)' \
|
|
bindir='$(bindir)' \
|
|
infodir='$(infodir)' \
|
|
libdir='$(libdir)' \
|
|
mandir='$(mandir)' \
|
|
prefix='$(prefix)' \
|
|
exec_prefix='$(exec_prefix)'
|
|
|
|
DISTFILES = \
|
|
COPYING COPYING.LIB INSTALL README TODO PROJECTS \
|
|
BUGS MINOR-BUGS FAQ HACKING DEVEL-CVS TESTS \
|
|
README.VMS build.com \
|
|
ChangeLog NEWS ChangeLog.zoo \
|
|
configure configure.in stamp-h.in config.h.in Makefile.in acconfig.h \
|
|
cvs-format.el mkinstalldirs install-sh \
|
|
cvsnt.mak cvsnt.dsp \
|
|
.cvsignore cvs.spec
|
|
|
|
### Subdirectories to run make in for the primary targets.
|
|
# Unix source subdirs, where we'll want to run lint and etags:
|
|
USOURCE_SUBDIRS = lib zlib diff src
|
|
# All other subdirs:
|
|
SUBDIRS = ${USOURCE_SUBDIRS} man doc contrib tools \
|
|
windows-NT os2 emx macintosh vms
|
|
# Only make TAGS/tags files in these directories.
|
|
TSUBDIRS= src lib
|
|
|
|
# Set default target.
|
|
all:
|
|
|
|
.PHONY: all install uninstall installdirs
|
|
all install uninstall installdirs: config.h Makefile all-local
|
|
@for subdir in $(SUBDIRS); do \
|
|
echo "making $@ in $$subdir"; \
|
|
( cd $$subdir && $(MAKE) $(FLAGS_TO_PASS) $@ ) || exit 1; \
|
|
done
|
|
|
|
installdirs: installdirs-local
|
|
|
|
install: all install-local install-info
|
|
|
|
.PHONY: all-local
|
|
all-local:
|
|
|
|
.PHONY: info dvi clean-info install-info
|
|
info dvi clean-info install-info:
|
|
cd doc && $(MAKE) $(FLAGS_TO_PASS) $@ || exit 1
|
|
|
|
.PHONY: install-local
|
|
install-local: all-local
|
|
@: nothing to do locally
|
|
|
|
.PHONY: installdirs-local
|
|
installdirs-local: all-local
|
|
@: nothing to do locally
|
|
|
|
.PHONY: tags
|
|
tags:
|
|
@for dir in $(TSUBDIRS); do echo making $@ in $$dir; cd $$dir && $(MAKE) $(FLAGS_TO_PASS) $@ || exit 1; cd ..; done
|
|
@echo making $@ in .
|
|
@ctags `for i in \`$(MAKE) SUBDIRS="$(TSUBDIRS)" ls\` ; do echo $(srcdir)/$$i ; done`
|
|
|
|
.PHONY: TAGS
|
|
TAGS:
|
|
@for dir in $(TSUBDIRS); do echo making $@ in $$dir; cd $$dir && $(MAKE) $(FLAGS_TO_PASS) $@ || exit 1; cd ..; done
|
|
@echo making $@ in .
|
|
@etags `for i in \`$(MAKE) SUBDIRS="$(TSUBDIRS)" ls | grep -v 'make\[[0-9]\]'\` ; do echo $(srcdir)/$$i ; done`
|
|
|
|
.PHONY: ls
|
|
ls:
|
|
@echo $(DISTFILES)
|
|
@for dir in $(SUBDIRS); do \
|
|
for i in `cd $$dir && $(MAKE) $(FLAGS_TO_PASS) $@ | grep -v 'make\[[0-9]\]'` ; do \
|
|
echo $$dir/$$i ; \
|
|
done ; \
|
|
done
|
|
|
|
.PHONY: clean
|
|
clean: clean-local
|
|
@for dir in $(SUBDIRS); do echo making $@ in $$dir; cd $$dir && $(MAKE) $(FLAGS_TO_PASS) $@ || exit 1; cd ..; done
|
|
|
|
.PHONY: distclean
|
|
distclean: distclean-local
|
|
@for dir in $(SUBDIRS); do echo making $@ in $$dir; cd $$dir && $(MAKE) $(FLAGS_TO_PASS) $@ || exit 1; cd ..; done
|
|
rm -f config.status
|
|
|
|
.PHONY: realclean
|
|
realclean: realclean-local
|
|
@for dir in $(SUBDIRS); do echo making $@ in $$dir; cd $$dir && $(MAKE) $(FLAGS_TO_PASS) $@ || exit 1; cd ..; done
|
|
rm -f config.status
|
|
|
|
.PHONY: mostlyclean-local
|
|
mostlyclean-local:
|
|
rm -f *~
|
|
|
|
.PHONY: clean-local
|
|
clean-local: mostlyclean-local
|
|
|
|
.PHONY: distclean-local
|
|
distclean-local: clean-local
|
|
rm -f Makefile config.cache config.h config.log stamp-h
|
|
rm -f tags TAGS
|
|
|
|
.PHONY: realclean-local
|
|
realclean-local: distclean-local
|
|
|
|
.PHONY: saber
|
|
saber:
|
|
@for dir in $(SUBDIRS); do cd $$dir && $(MAKE) $(FLAGS_TO_PASS) $@ || exit 1; cd ..; done
|
|
|
|
.PHONY: check
|
|
check:
|
|
cd lib ; $(MAKE) $(FLAGS_TO_PASS)
|
|
cd zlib ; $(MAKE) $(FLAGS_TO_PASS)
|
|
cd diff ; $(MAKE) $(FLAGS_TO_PASS)
|
|
cd src ; $(MAKE) $(FLAGS_TO_PASS) check
|
|
|
|
.PHONY: remotecheck
|
|
remotecheck:
|
|
cd lib ; $(MAKE) $(FLAGS_TO_PASS)
|
|
cd zlib ; $(MAKE) $(FLAGS_TO_PASS)
|
|
cd diff ; $(MAKE) $(FLAGS_TO_PASS)
|
|
cd src ; $(MAKE) $(FLAGS_TO_PASS) remotecheck
|
|
|
|
.PHONY: installcheck
|
|
installcheck:
|
|
cd lib ; $(MAKE) $(FLAGS_TO_PASS)
|
|
cd zlib ; $(MAKE) $(FLAGS_TO_PASS)
|
|
cd diff ; $(MAKE) $(FLAGS_TO_PASS)
|
|
cd src ; $(MAKE) $(FLAGS_TO_PASS) installcheck
|
|
|
|
.PHONY: lint
|
|
lint:
|
|
@for dir in $(USOURCE_SUBDIRS); do cd $$dir && $(MAKE) $(FLAGS_TO_PASS) xlint || exit 1; cd ..; done
|
|
|
|
.PHONY: dist
|
|
GZIP=gzip --best
|
|
GZIP_EXT=.gz
|
|
TAR_VERBOSE=
|
|
dist: spec
|
|
rm -rf `cat .fname`
|
|
${MAKE} dist-dir DISTDIR="`cat .fname`"
|
|
for dir in ${SUBDIRS}; do \
|
|
( DISTDIR="../`cat .fname`/$${dir}"; \
|
|
cd $${dir} && \
|
|
${MAKE} dist-dir DISTDIR="$${DISTDIR}" \
|
|
); \
|
|
done
|
|
tar chf${TAR_VERBOSE} - `cat .fname` | ${GZIP} > "`cat .fname`.tar${GZIP_EXT}"
|
|
rm -rf `cat .fname` .fname .version
|
|
|
|
.PHONY: dist-dir
|
|
dist-dir:
|
|
mkdir ${DISTDIR}
|
|
for i in ${DISTFILES}; do \
|
|
ln $(srcdir)/$${i} ${DISTDIR}; \
|
|
done
|
|
|
|
.PHONY: spec
|
|
spec:
|
|
rm -f .version .fname
|
|
sed < $(srcdir)/src/version.c \
|
|
-e '/version_string/!d' \
|
|
-e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
|
|
-e q > .version
|
|
echo > .fname cvs-`cat .version`
|
|
rm -f `cat .fname`.spec
|
|
sed < $(top_srcdir)/cvs.spec \
|
|
-e 's/@VERSION@/'`cat .version`'/g' \
|
|
> `cat .fname`.spec
|
|
|
|
|
|
# For the justification of the following Makefile rules, see node
|
|
# `Automatic Remaking' in GNU Autoconf documentation.
|
|
Makefile: Makefile.in config.status
|
|
CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
|
|
|
|
# Use @CFLAGS@ not $(CFLAGS) because it would be confusing for "make CFLAGS="
|
|
# to sometimes (i.e., if configure is modified) change the configured CFLAGS,
|
|
# and sometimes not.
|
|
config.status: configure
|
|
CFLAGS="@CFLAGS@" ./config.status --recheck
|
|
|
|
# The rules to run autoconf and autoheader are commented out. This is because
|
|
# when the user unpacks a tarfile, configure.in might end up newer than
|
|
# configure, but the user might not have (and does not need to have) autoconf
|
|
# installed.
|
|
#configure: configure.in #aclocal.m4
|
|
# cd $(srcdir); autoconf
|
|
|
|
config.h: stamp-h
|
|
|
|
# This used to do a ./config.status --recheck, to update config.status with
|
|
# any new #defines from config.h.in. The problem was that the rule itself
|
|
# depends on config.status, so that the --recheck would get run several
|
|
# times, which is bad if the user was trying to specify CFLAGS manually.
|
|
# It was a big pain in the neck.
|
|
stamp-h: config.h.in config.status
|
|
CONFIG_FILES=$@ CONFIG_HEADERS=config.h ./config.status
|
|
|
|
#config.h.in: stamp-h.in
|
|
#stamp-h.in: configure.in #aclocal.m4 acconfig.h
|
|
# cd $(srcdir); autoheader
|
|
# date > $(srcdir)/stamp-h.in
|
|
|
|
# Tell versions [3.59,3.63) of GNU make not to export all variables.
|
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
.NOEXPORT:
|