# 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 \ .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 src # Documentation directories; special handling INSTALL_MAN=man # All other subdirs: SUBDIRS = ${USOURCE_SUBDIRS} ${INSTALL_MAN} doc contrib tools \ windows-NT os2 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 src ; $(MAKE) $(FLAGS_TO_PASS) check .PHONY: remotecheck remotecheck: cd lib ; $(MAKE) $(FLAGS_TO_PASS) cd zlib ; $(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 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`'/' \ > `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: