home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / usr.bin / groff / Makefile.gnu < prev    next >
Encoding:
Makefile  |  1991-04-30  |  8.5 KB  |  286 lines

  1. #Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
  2. #     Written by James Clark (jjc@jclark.uucp)
  3. #
  4. #This file is part of groff.
  5. #
  6. #groff is free software; you can redistribute it and/or modify it under
  7. #the terms of the GNU General Public License as published by the Free
  8. #Software Foundation; either version 1, or (at your option) any later
  9. #version.
  10. #
  11. #groff is distributed in the hope that it will be useful, but WITHOUT ANY
  12. #WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13. #FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14. #for more details.
  15. #
  16. #You should have received a copy of the GNU General Public License along
  17. #with groff; see the file LICENSE.  If not, write to the Free Software
  18. #Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  
  20. # Define PAGE to be letter if your PostScript printer uses 8.5x11 paper (USA)
  21. # and define it to be A4, if it uses A4 paper (rest of the world).
  22. PAGE=A4
  23. #PAGE=letter
  24.  
  25. # BINDIR says where to install executables.
  26. BINDIR=/usr/local/bin
  27.  
  28. GROFFLIBDIR=/usr/local/lib/groff
  29.  
  30. # FONTDIR says where to install dev*/*.
  31. FONTDIR=$(GROFFLIBDIR)/font
  32.  
  33. # FONTPATH says where to look for dev*/*.
  34. FONTPATH=.:$(FONTDIR):/usr/local/lib/font:/usr/lib/font
  35.  
  36. # MACRODIR says where to install macros.
  37. MACRODIR=$(GROFFLIBDIR)/tmac
  38.  
  39. # MACROPATH says where to look for macro files.
  40. MACROPATH=.:$(MACRODIR):/usr/lib/tmac
  41.  
  42. # DEVICE is the default device.
  43. DEVICE=ps
  44.  
  45. # PSPRINT is the command to use for printing a PostScript file.
  46. # It must be a simple command, not a pipeline.
  47. PSPRINT=lpr
  48.  
  49. # DVIPRINT is the command to use for printing a TeX dvi file.
  50. # It must be a simple command, not a pipeline.
  51. DVIPRINT=lpr -d
  52.  
  53. # HYPHENFILE is the file containing the hyphenation patterns.
  54. HYPHENFILE=$(GROFFLIBDIR)/hyphen
  55.  
  56. # MANROOT is the root of the man page directory tree.
  57. MANROOT=/usr/local/man
  58.  
  59. # MAN1EXT is the man section for user commands.
  60. MAN1EXT=1
  61. MAN1DIR=$(MANROOT)/man$(MAN1EXT)
  62.  
  63. # MAN5EXT is the man section for file formats.
  64. MAN5EXT=5
  65. MAN5DIR=$(MANROOT)/man$(MAN5EXT)
  66.  
  67. # MAN7EXT is the man section for macros.
  68. MAN7EXT=7
  69. MAN7DIR=$(MANROOT)/man$(MAN7EXT)
  70.  
  71. # The groff ms macros will be available as -m$(TMAC_S).
  72. # If you use `TMAC_S=s', you can use the Unix ms macros by using
  73. # groff -ms -M/usr/lib/tmac.
  74. TMAC_S=gs
  75.  
  76. # Include -DBROKEN_SPOOLER in CPPDEFINES if you have a PostScript
  77. # spooler or previewer that is unable to cope with anything after
  78. # %%EndProlog and before the first page (old versions of TranScript
  79. # have this problem) or gets confused by included documents (the Sun
  80. # pageview previewer has this problem), or if you are going to be
  81. # sharing PostScript documents with others who might be running such a
  82. # spooler or previewer.
  83. # Include -DCFRONT_ANSI_BUG if you are using AT&T C++ 2.0 with an ANSI C
  84. # compiler backend.
  85. # Include -DHAVE_VFORK if you have vfork().
  86. # Include -DHAVE_SYS_SIGLIST if you have sys_siglist[].
  87. # Include -DHAVE_UNION_WAIT if wait() is declared by osfcn.h to take
  88. # an argument of type union wait * (Sun C++ does this).  Don't include
  89. # it if you're using the libg++ header files.
  90. CPPDEFINES=-DBROKEN_SPOOLER -DHAVE_VFORK -DHAVE_SYS_SIGLIST # -DHAVE_UNION_WAIT -DCFRONT_ANSI_BUG
  91.  
  92. # Uncomment the next line if you don't have fmod in your math library.
  93. # I believe this is needed on Ultrix and BSD 4.3.
  94. # FMOD=fmod.o
  95.  
  96. # Uncomment the next line if you don't have strtol in your C library.
  97. # I believe this is needed on BSD 4.3.
  98. # STRTOL=strtol.o
  99.  
  100. # Additional flags needed to compile lib/malloc.c
  101. # Use this with BSD.
  102. MALLOCFLAGS=-DBSD
  103. # Use this with System V
  104. # MALLOCFLAGS=-DUSG
  105. # Use this with SunOS 4.1
  106. # MALLOCFLAGS=-DBSD -DSUNOS_LOCALTIME_BUG
  107.  
  108. # Comment this out if the GNU malloc gives you problems, or if you would
  109. # prefer to use the system malloc.
  110. MALLOC=malloc.o
  111.  
  112. GROFF=
  113. # Comment the next line out if groff.c gives problems.
  114. GROFF=groff
  115.  
  116. # CC is the C++ compiler
  117. CC=g++
  118. # I'm told that -fno-inline is needed on a 68030-based Apollo
  119. # CC=g++ -fno-inline
  120.  
  121. # OLDCC is the C compiler.
  122. OLDCC=gcc
  123.  
  124. PROFILE_FLAG=
  125. DEBUG_FLAG=-g
  126. OPTIMIZE_FLAG=-O
  127. WARNING_FLAGS=#-Wall -Wcast-qual -Wwrite-strings
  128.  
  129. # Use this to pass additional flags on the command line.
  130. XCFLAGS=
  131.  
  132. # CFLAGS are passed to sub makes
  133. CFLAGS=$(PROFILE_FLAG) $(DEBUG_FLAG) $(OPTIMIZE_FLAG) $(WARNING_FLAGS) \
  134.     $(CPPDEFINES) $(XCFLAGS)
  135.  
  136. XOLDCFLAGS=
  137. # OLDCFLAGS are passed to sub makes
  138. OLDCFLAGS=$(DEBUG_FLAG) $(PROFILE_FLAG) $(OPTIMIZE_FLAG) $(XOLDCFLAGS)
  139.  
  140. XLDFLAGS=
  141. LDFLAGS=$(PROFILE_FLAG) $(DEBUG_FLAG) $(XLDFLAGS)
  142. # Libraries needed for linking C++ programs.
  143. LIBS=
  144. # Libraries needed for linking C++ programs that use libm.a.
  145. MLIBS=$(LIBS) -lm
  146.  
  147. AR=ar
  148.  
  149. # Define RANLIB to be empty if you don't have ranlib.
  150. RANLIB=ranlib
  151.  
  152. # YACC can be either yacc or bison -y
  153. YACC=bison -y
  154. YACCFLAGS=-v
  155.  
  156. ETAGS=/usr/local/bin/etags
  157. # Flag to make etags treat *.[ch] files as C++
  158. ETAGSFLAGS=-p
  159.  
  160. SHELL=/bin/sh
  161.  
  162. SUBDIRS=lib troff pic tbl eqn etc driver ps tty dvi macros man
  163.  
  164. # SUBFLAGS says what flags to pass to sub makes
  165. SUBFLAGS="CC=$(CC)" "CFLAGS=$(CFLAGS)" "LDFLAGS=$(LDFLAGS)" \
  166.     "OLDCC=$(OLDCC)" "OLDCFLAGS=$(OLDCFLAGS)" \
  167.     "YACC=$(YACC)" "YACCFLAGS=$(YACCFLAGS)" \
  168.     "DEVICE=$(DEVICE)" "FONTPATH=$(FONTPATH)" "MACROPATH=$(MACROPATH)" \
  169.     "MALLOCFLAGS=$(MALLOCFLAGS)" "MALLOC=$(MALLOC)" \
  170.     "FMOD=$(FMOD)" "STRTOL=$(STRTOL)" \
  171.     "AR=$(AR)" "RANLIB=$(RANLIB)" "LIBS=$(LIBS)" "MLIBS=$(MLIBS)" \
  172.     "FONTDIR=$(FONTDIR)" "BINDIR=$(BINDIR)" "PAGE=$(PAGE)" \
  173.     "MACRODIR=$(MACRODIR)" "HYPHENFILE=$(HYPHENFILE)" \
  174.     "TMAC_S=$(TMAC_S)" "MAN1EXT=$(MAN1EXT)" "MAN1DIR=$(MAN1DIR)" \
  175.     "MAN5EXT=$(MAN5EXT)" "MAN5DIR=$(MAN5DIR)" \
  176.     "MAN7EXT=$(MAN7EXT)" "MAN7DIR=$(MAN7DIR)"
  177.  
  178. all: $(SUBDIRS) $(GROFF) shgroff
  179.  
  180. $(SUBDIRS): FORCE
  181.     @cd $@; \
  182.     echo Making all in $@; \
  183.     $(MAKE) $(SUBFLAGS) all
  184.  
  185. troff pic tbl eqn etc ps tty dvi: lib
  186. ps tty dvi: driver
  187.  
  188. TAGS: FORCE
  189.     @for dir in $(SUBDIRS); do \
  190.     echo Making TAGS in $$dir; \
  191.     (cd $$dir; $(MAKE) "ETAGSFLAGS=$(ETAGSFLAGS)" "ETAGS=$(ETAGS)" TAGS); \
  192.     done
  193.  
  194. topclean: FORCE
  195.     -rm -f shgroff
  196.     -rm -f groff *.o core
  197.  
  198. clean: topclean FORCE
  199.     @for dir in $(SUBDIRS) doc; do \
  200.     echo Making clean in $$dir; \
  201.     (cd $$dir; $(MAKE) clean); done
  202.  
  203. distclean: topclean FORCE
  204.     @for dir in $(SUBDIRS) doc; do \
  205.     echo Making distclean in $$dir; \
  206.     (cd $$dir; $(MAKE) distclean); done
  207.  
  208. # You really don't want to use this target.
  209. realclean: topclean FORCE
  210.     @for dir in $(SUBDIRS) doc; do \
  211.     echo Making realclean in $$dir; \
  212.     (cd $$dir; $(MAKE) realclean); done
  213.  
  214. install.nobin: FORCE shgroff
  215.     -[ -d $(BINDIR) ] || mkdir $(BINDIR)
  216.     -[ -d $(GROFFLIBDIR) ] || mkdir $(GROFFLIBDIR)
  217.     -[ -d $(MANROOT) ] || mkdir $(MANROOT)
  218.     @for dir in $(SUBDIRS); do \
  219.     echo Making install.nobin in $$dir; \
  220.     (cd $$dir; $(MAKE) $(SUBFLAGS) install.nobin); done
  221.     if [ -z "$(GROFF)" ] ; then cp shgroff $(BINDIR)/groff ; fi
  222.  
  223. install.bin: FORCE $(GROFF)
  224.     -[ -d $(BINDIR) ] || mkdir $(BINDIR)
  225.     @for dir in $(SUBDIRS); do \
  226.     echo Making install.bin in $$dir; \
  227.     (cd $$dir; $(MAKE) $(SUBFLAGS) install.bin); done
  228.     if [ -n "$(GROFF)" ] ; then cp groff $(BINDIR)/groff ; fi
  229.  
  230. install: install.bin install.nobin
  231.  
  232. install.mm: FORCE
  233.     -[ -d $(GROFFLIBDIR) ] || mkdir $(GROFFLIBDIR)
  234.     -[ -d $(MACRODIR) ] || mkdir $(MACRODIR)
  235.     sed -f macros/fixmacros.sed -e 's;/usr/lib/tmac;$(MACRODIR);' \
  236.         /usr/lib/macros/mmt >$(MACRODIR)/tmac.m
  237.     sed -f macros/fixmacros.sed /usr/lib/tmac/sys.name \
  238.         >$(MACRODIR)/sys.name
  239.     patch -s $(MACRODIR)/tmac.m macros/mm.diff
  240.  
  241. shgroff: groff.sh
  242.     @echo Making $@ from groff.sh
  243.     @-rm -f $@
  244.     @sed -e "s;@BINDIR@;$(BINDIR);" \
  245.     -e "s;@DEVICE@;$(DEVICE);" \
  246.     -e "s;@PROG_PREFIX@;$(PROG_PREFIX);" \
  247.     -e "s;@FONTDIR@;$(FONTDIR);" \
  248.     -e "s;@PSPRINT@;$(PSPRINT);" \
  249.     -e "s;@DVIPRINT@;$(DVIPRINT);" \
  250.     groff.sh >$@ || rm -f $@
  251.     @chmod +x $@
  252.  
  253. groff: groff.o lib/libgroff.a
  254.     $(CC) $(LDFLAGS) -o $@ groff.o lib/libgroff.a $(LIBS)
  255.  
  256. lib/libgroff.a: lib
  257.  
  258. groff.o: groff.c stringify
  259.     $(CC) -c -Ilib $(CFLAGS) -DDEVICE=\"$(DEVICE)\" \
  260.     "-DPSPRINT=`$(SHELL) stringify $(PSPRINT)`" \
  261.     "-DDVIPRINT=`$(SHELL) stringify $(DVIPRINT)`" \
  262.     groff.c
  263.  
  264. groff.o: lib/lib.h lib/errarg.h lib/error.h lib/stringclass.h lib/font.h
  265.  
  266. bindist: all VERSION Makefile.bd README.bd FORCE
  267.     -[ -d bindist ] || mkdir bindist
  268.     @topdir=`pwd`; \
  269.     for dir in $(SUBDIRS); do \
  270.     (cd $$dir; $(MAKE) "BINDIR=$$topdir/bindist" install.bin); done
  271.     cp README.bd bindist/README
  272.     cp VERSION bindist
  273.     if [ "$(GROFF)" ] ; then cp groff bindist/groff ; fi
  274.     @echo Making bindist/Makefile
  275.     @sed -e "s;@GROFFLIBDIR@;$(GROFFLIBDIR);" \
  276.     -e "s;@FONTDIR@;$(FONTDIR);" \
  277.     -e "s;@FONTPATH@;$(FONTPATH);" \
  278.     -e "s;@MACRODIR@;$(MACRODIR);" \
  279.     -e "s;@MACROPATH@;$(MACROPATH);" \
  280.     -e "s;@HYPHENFILE@;$(HYPHENFILE);" \
  281.     -e "s;@DEVICE@;$(DEVICE);" \
  282.     -e "s;@GROFF@;$(GROFF);" \
  283.     Makefile.bd >bindist/Makefile
  284.  
  285. FORCE:
  286.