home *** CD-ROM | disk | FTP | other *** search
Makefile | 1991-04-30 | 8.5 KB | 286 lines |
- #Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- # Written by James Clark (jjc@jclark.uucp)
- #
- #This file is part of groff.
- #
- #groff 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 1, or (at your option) any later
- #version.
- #
- #groff 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.
- #
- #You should have received a copy of the GNU General Public License along
- #with groff; see the file LICENSE. If not, write to the Free Software
- #Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
- # Define PAGE to be letter if your PostScript printer uses 8.5x11 paper (USA)
- # and define it to be A4, if it uses A4 paper (rest of the world).
- PAGE=A4
- #PAGE=letter
-
- # BINDIR says where to install executables.
- BINDIR=/usr/local/bin
-
- GROFFLIBDIR=/usr/local/lib/groff
-
- # FONTDIR says where to install dev*/*.
- FONTDIR=$(GROFFLIBDIR)/font
-
- # FONTPATH says where to look for dev*/*.
- FONTPATH=.:$(FONTDIR):/usr/local/lib/font:/usr/lib/font
-
- # MACRODIR says where to install macros.
- MACRODIR=$(GROFFLIBDIR)/tmac
-
- # MACROPATH says where to look for macro files.
- MACROPATH=.:$(MACRODIR):/usr/lib/tmac
-
- # DEVICE is the default device.
- DEVICE=ps
-
- # PSPRINT is the command to use for printing a PostScript file.
- # It must be a simple command, not a pipeline.
- PSPRINT=lpr
-
- # DVIPRINT is the command to use for printing a TeX dvi file.
- # It must be a simple command, not a pipeline.
- DVIPRINT=lpr -d
-
- # HYPHENFILE is the file containing the hyphenation patterns.
- HYPHENFILE=$(GROFFLIBDIR)/hyphen
-
- # MANROOT is the root of the man page directory tree.
- MANROOT=/usr/local/man
-
- # MAN1EXT is the man section for user commands.
- MAN1EXT=1
- MAN1DIR=$(MANROOT)/man$(MAN1EXT)
-
- # MAN5EXT is the man section for file formats.
- MAN5EXT=5
- MAN5DIR=$(MANROOT)/man$(MAN5EXT)
-
- # MAN7EXT is the man section for macros.
- MAN7EXT=7
- MAN7DIR=$(MANROOT)/man$(MAN7EXT)
-
- # The groff ms macros will be available as -m$(TMAC_S).
- # If you use `TMAC_S=s', you can use the Unix ms macros by using
- # groff -ms -M/usr/lib/tmac.
- TMAC_S=gs
-
- # Include -DBROKEN_SPOOLER in CPPDEFINES if you have a PostScript
- # spooler or previewer that is unable to cope with anything after
- # %%EndProlog and before the first page (old versions of TranScript
- # have this problem) or gets confused by included documents (the Sun
- # pageview previewer has this problem), or if you are going to be
- # sharing PostScript documents with others who might be running such a
- # spooler or previewer.
- # Include -DCFRONT_ANSI_BUG if you are using AT&T C++ 2.0 with an ANSI C
- # compiler backend.
- # Include -DHAVE_VFORK if you have vfork().
- # Include -DHAVE_SYS_SIGLIST if you have sys_siglist[].
- # Include -DHAVE_UNION_WAIT if wait() is declared by osfcn.h to take
- # an argument of type union wait * (Sun C++ does this). Don't include
- # it if you're using the libg++ header files.
- CPPDEFINES=-DBROKEN_SPOOLER -DHAVE_VFORK -DHAVE_SYS_SIGLIST # -DHAVE_UNION_WAIT -DCFRONT_ANSI_BUG
-
- # Uncomment the next line if you don't have fmod in your math library.
- # I believe this is needed on Ultrix and BSD 4.3.
- # FMOD=fmod.o
-
- # Uncomment the next line if you don't have strtol in your C library.
- # I believe this is needed on BSD 4.3.
- # STRTOL=strtol.o
-
- # Additional flags needed to compile lib/malloc.c
- # Use this with BSD.
- MALLOCFLAGS=-DBSD
- # Use this with System V
- # MALLOCFLAGS=-DUSG
- # Use this with SunOS 4.1
- # MALLOCFLAGS=-DBSD -DSUNOS_LOCALTIME_BUG
-
- # Comment this out if the GNU malloc gives you problems, or if you would
- # prefer to use the system malloc.
- MALLOC=malloc.o
-
- GROFF=
- # Comment the next line out if groff.c gives problems.
- GROFF=groff
-
- # CC is the C++ compiler
- CC=g++
- # I'm told that -fno-inline is needed on a 68030-based Apollo
- # CC=g++ -fno-inline
-
- # OLDCC is the C compiler.
- OLDCC=gcc
-
- PROFILE_FLAG=
- DEBUG_FLAG=-g
- OPTIMIZE_FLAG=-O
- WARNING_FLAGS=#-Wall -Wcast-qual -Wwrite-strings
-
- # Use this to pass additional flags on the command line.
- XCFLAGS=
-
- # CFLAGS are passed to sub makes
- CFLAGS=$(PROFILE_FLAG) $(DEBUG_FLAG) $(OPTIMIZE_FLAG) $(WARNING_FLAGS) \
- $(CPPDEFINES) $(XCFLAGS)
-
- XOLDCFLAGS=
- # OLDCFLAGS are passed to sub makes
- OLDCFLAGS=$(DEBUG_FLAG) $(PROFILE_FLAG) $(OPTIMIZE_FLAG) $(XOLDCFLAGS)
-
- XLDFLAGS=
- LDFLAGS=$(PROFILE_FLAG) $(DEBUG_FLAG) $(XLDFLAGS)
- # Libraries needed for linking C++ programs.
- LIBS=
- # Libraries needed for linking C++ programs that use libm.a.
- MLIBS=$(LIBS) -lm
-
- AR=ar
-
- # Define RANLIB to be empty if you don't have ranlib.
- RANLIB=ranlib
-
- # YACC can be either yacc or bison -y
- YACC=bison -y
- YACCFLAGS=-v
-
- ETAGS=/usr/local/bin/etags
- # Flag to make etags treat *.[ch] files as C++
- ETAGSFLAGS=-p
-
- SHELL=/bin/sh
-
- SUBDIRS=lib troff pic tbl eqn etc driver ps tty dvi macros man
-
- # SUBFLAGS says what flags to pass to sub makes
- SUBFLAGS="CC=$(CC)" "CFLAGS=$(CFLAGS)" "LDFLAGS=$(LDFLAGS)" \
- "OLDCC=$(OLDCC)" "OLDCFLAGS=$(OLDCFLAGS)" \
- "YACC=$(YACC)" "YACCFLAGS=$(YACCFLAGS)" \
- "DEVICE=$(DEVICE)" "FONTPATH=$(FONTPATH)" "MACROPATH=$(MACROPATH)" \
- "MALLOCFLAGS=$(MALLOCFLAGS)" "MALLOC=$(MALLOC)" \
- "FMOD=$(FMOD)" "STRTOL=$(STRTOL)" \
- "AR=$(AR)" "RANLIB=$(RANLIB)" "LIBS=$(LIBS)" "MLIBS=$(MLIBS)" \
- "FONTDIR=$(FONTDIR)" "BINDIR=$(BINDIR)" "PAGE=$(PAGE)" \
- "MACRODIR=$(MACRODIR)" "HYPHENFILE=$(HYPHENFILE)" \
- "TMAC_S=$(TMAC_S)" "MAN1EXT=$(MAN1EXT)" "MAN1DIR=$(MAN1DIR)" \
- "MAN5EXT=$(MAN5EXT)" "MAN5DIR=$(MAN5DIR)" \
- "MAN7EXT=$(MAN7EXT)" "MAN7DIR=$(MAN7DIR)"
-
- all: $(SUBDIRS) $(GROFF) shgroff
-
- $(SUBDIRS): FORCE
- @cd $@; \
- echo Making all in $@; \
- $(MAKE) $(SUBFLAGS) all
-
- troff pic tbl eqn etc ps tty dvi: lib
- ps tty dvi: driver
-
- TAGS: FORCE
- @for dir in $(SUBDIRS); do \
- echo Making TAGS in $$dir; \
- (cd $$dir; $(MAKE) "ETAGSFLAGS=$(ETAGSFLAGS)" "ETAGS=$(ETAGS)" TAGS); \
- done
-
- topclean: FORCE
- -rm -f shgroff
- -rm -f groff *.o core
-
- clean: topclean FORCE
- @for dir in $(SUBDIRS) doc; do \
- echo Making clean in $$dir; \
- (cd $$dir; $(MAKE) clean); done
-
- distclean: topclean FORCE
- @for dir in $(SUBDIRS) doc; do \
- echo Making distclean in $$dir; \
- (cd $$dir; $(MAKE) distclean); done
-
- # You really don't want to use this target.
- realclean: topclean FORCE
- @for dir in $(SUBDIRS) doc; do \
- echo Making realclean in $$dir; \
- (cd $$dir; $(MAKE) realclean); done
-
- install.nobin: FORCE shgroff
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -[ -d $(GROFFLIBDIR) ] || mkdir $(GROFFLIBDIR)
- -[ -d $(MANROOT) ] || mkdir $(MANROOT)
- @for dir in $(SUBDIRS); do \
- echo Making install.nobin in $$dir; \
- (cd $$dir; $(MAKE) $(SUBFLAGS) install.nobin); done
- if [ -z "$(GROFF)" ] ; then cp shgroff $(BINDIR)/groff ; fi
-
- install.bin: FORCE $(GROFF)
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- @for dir in $(SUBDIRS); do \
- echo Making install.bin in $$dir; \
- (cd $$dir; $(MAKE) $(SUBFLAGS) install.bin); done
- if [ -n "$(GROFF)" ] ; then cp groff $(BINDIR)/groff ; fi
-
- install: install.bin install.nobin
-
- install.mm: FORCE
- -[ -d $(GROFFLIBDIR) ] || mkdir $(GROFFLIBDIR)
- -[ -d $(MACRODIR) ] || mkdir $(MACRODIR)
- sed -f macros/fixmacros.sed -e 's;/usr/lib/tmac;$(MACRODIR);' \
- /usr/lib/macros/mmt >$(MACRODIR)/tmac.m
- sed -f macros/fixmacros.sed /usr/lib/tmac/sys.name \
- >$(MACRODIR)/sys.name
- patch -s $(MACRODIR)/tmac.m macros/mm.diff
-
- shgroff: groff.sh
- @echo Making $@ from groff.sh
- @-rm -f $@
- @sed -e "s;@BINDIR@;$(BINDIR);" \
- -e "s;@DEVICE@;$(DEVICE);" \
- -e "s;@PROG_PREFIX@;$(PROG_PREFIX);" \
- -e "s;@FONTDIR@;$(FONTDIR);" \
- -e "s;@PSPRINT@;$(PSPRINT);" \
- -e "s;@DVIPRINT@;$(DVIPRINT);" \
- groff.sh >$@ || rm -f $@
- @chmod +x $@
-
- groff: groff.o lib/libgroff.a
- $(CC) $(LDFLAGS) -o $@ groff.o lib/libgroff.a $(LIBS)
-
- lib/libgroff.a: lib
-
- groff.o: groff.c stringify
- $(CC) -c -Ilib $(CFLAGS) -DDEVICE=\"$(DEVICE)\" \
- "-DPSPRINT=`$(SHELL) stringify $(PSPRINT)`" \
- "-DDVIPRINT=`$(SHELL) stringify $(DVIPRINT)`" \
- groff.c
-
- groff.o: lib/lib.h lib/errarg.h lib/error.h lib/stringclass.h lib/font.h
-
- bindist: all VERSION Makefile.bd README.bd FORCE
- -[ -d bindist ] || mkdir bindist
- @topdir=`pwd`; \
- for dir in $(SUBDIRS); do \
- (cd $$dir; $(MAKE) "BINDIR=$$topdir/bindist" install.bin); done
- cp README.bd bindist/README
- cp VERSION bindist
- if [ "$(GROFF)" ] ; then cp groff bindist/groff ; fi
- @echo Making bindist/Makefile
- @sed -e "s;@GROFFLIBDIR@;$(GROFFLIBDIR);" \
- -e "s;@FONTDIR@;$(FONTDIR);" \
- -e "s;@FONTPATH@;$(FONTPATH);" \
- -e "s;@MACRODIR@;$(MACRODIR);" \
- -e "s;@MACROPATH@;$(MACROPATH);" \
- -e "s;@HYPHENFILE@;$(HYPHENFILE);" \
- -e "s;@DEVICE@;$(DEVICE);" \
- -e "s;@GROFF@;$(GROFF);" \
- Makefile.bd >bindist/Makefile
-
- FORCE:
-