home *** CD-ROM | disk | FTP | other *** search
Makefile | 1996-09-28 | 6.3 KB | 270 lines |
- # Makefile for Metafont.
-
- SHELL = /bin/sh
- srcdir = @srcdir@
- VPATH = @srcdir@
-
- # This is so kpathsea will get remade automatically if you change
- # something in it and recompile from the package directory.
- kpathsea_parent = ../..
- kpathsea_dir = $(kpathsea_parent)/kpathsea
- kpathsea = $(kpathsea_dir)/kpathsea.a
-
- # Routines used everywhere.
- commondefines = $(srcdir)/../lib/common.defines $(srcdir)/../lib/texmf.defines
- commonh = $(srcdir)/../lib/config.h
- commono = ../lib/lib.a $(kpathsea)
-
- # Routines used in TeX and Metafont.
- extrac = $(srcdir)/../lib/texmf.c
- extrah = $(srcdir)/../lib/texmf.h $(srcdir)/../lib/texmfmem.h mfd.h
-
- # Routines used in TeX, Metafont, and BibTeX.
- fileioc = $(srcdir)/../lib/openinout.c
- fileioo = openinout.o
-
- objs = $(fileioo) mf0.o mf1.o mf2.o mf3.o mf4.o mf5.o mf6.o mf7.o mf8.o \
- mf9.o mf10.o
- iobjs = iextra.o inimf.o
- vobjs = vextra.o imf.o
-
- # Where the test files are.
- mfsrcdir = $(srcdir)/../mf
- trapdir = $(mfsrcdir)/MFtrap
-
- program = inimf virmf
-
- CC = @CC@
- CFLAGS =
- CPPFLAGS = -DMF -I../lib -I$(srcdir)/../lib -I../.. -I$(srcdir)/../..
-
- CCLD = $(CC)
- RANLIB = @RANLIB@
- LN = @LN_S@
-
- LDFLAGS = $(CFLAGS) $(XLDFLAGS)
- libs = $(commono) $(LIBS)
-
- x_include_flags = @X_CFLAGS@
- x_lib_flags = @X_LIBS@
- x_extra_libs = @X_EXTRA_LIBS@
- wlibs = @wlibs@
- LIBS = @LIBS@
-
- windowlib = MFwindow/window.a
- windowlibs = $(x_lib_flags) $(windowlib) $(wlibs) $(x_extra_libs)
-
- INSTALL = @INSTALL@
- INSTALL_PROGRAM = @INSTALL_PROGRAM@
- INSTALL_DATA = @INSTALL_DATA@
-
-
- # The bases we know how to make.
- bases = plain.base cmmf.base
-
- # Name of the file that defines the local devices.
- localmodes = modes.mf
-
- # And how to make them.
- inimf = MFPOOL=. ./inimf
- # For AmigaOS with pre 41.2 ixemul.library, do this:
- #inimf = echo "$(srcdir)" >env:MFPOOL; ./inimf
-
-
- # What to pass to submakes.
- makeargs=SHELL='$(SHELL)' CC='$(CC)' CFLAGS='$(CFLAGS)' \
- LDFLAGS='$(LDFLAGS)' LIBS='$(libs)' RANLIB='$(RANLIB)' LN='$(LN)'
-
-
- .SUFFIXES:
- .SUFFIXES: .o .c
- .c.o:
- $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
-
-
- default: all
- all: $(program)
- triptrap: trapmf
-
-
- # It is a waste of disk space to have window support in inimf.
- inimf: $(iobjs) $(objs) $(commono)
- $(CCLD) -o inimf $(LDFLAGS) $(iobjs) $(objs) $(libs)
-
- virmf: $(vobjs) $(objs) $(windowlib) $(commono)
- $(CCLD) -o virmf $(LDFLAGS) $(vobjs) $(objs) $(windowlibs) $(libs)
-
- check: run-trap
- run-trap: trapmf
- rm -f trap.mf
- -$(LN) $(trapdir)/trap.mf .
- -$(SHELL) -c '. ./trapenv; \
- ./trapmf < $(trapdir)/trap1.in > /dev/null 2>&1'
- -diff $(trapdir)/trapin.log trap.log
- -$(SHELL) -c '. ./trapenv; ./trapmf < $(trapdir)/trap2.in > trap.fot'
- -diff $(trapdir)/trap.log trap.log
- -diff $(trapdir)/trap.fot trap.fot
- ../fontutil/tftopl ./trap.tfm trap.pl
- -diff $(trapdir)/trap.pl trap.pl
- $(SHELL) -c '. ./trapenv; \
- ../fontutil/gftype -m -i ./trap.72270gf > trap.typ'
- -diff $(trapdir)/trap.typ trap.typ
-
-
- # Make base files automatically.
- bases: $(bases)
-
- mf.base: inimf
- $(inimf) 'plain; input $(localmodes); dump'
- mv plain.base mf.base
- mv plain.log mf.log
-
- cmmf.base: mf.base
- $(inimf) \&./mf cmbase dump
- mv cmbase.base cmmf.base
- mv cmbase.log cmmf.log
-
-
- # The `ini_to_trap' script changes mfd.h, instead of the change file, so
- # retangling is not necessary. After changing constants, making a
- # trapmf means making an inimf.
- #
- trapmf: stamp-trap
- $(MAKE) $(makeargs) inimf
- mv inimf trapmf
-
- stamp-trap: mfd.h $(mfsrcdir)/trap.sed
- rm -f *.o temp
- sed -f $(mfsrcdir)/trap.sed < mfd.h > temp
- mv mfd.h mfd.h.bak
- mv temp mfd.h
- touch stamp-trap
-
- clean-trap:
- rm -f *.o mfd.h trapmf stamp-trap
- # Don't reinstall mfd.h with the test constants.
- if grep 'memmax 3000' mfd.h.bak >/dev/null 2>&1; then \
- rm -f mfd.h*; else mv mfd.h.bak mfd.h; fi
-
- mf.p mf.pool: mf.web cmf.ch
- ../web/tangle $(srcdir)/mf.web cmf.ch
- cp $(srcdir)/mf.p mf.p
- cp $(srcdir)/mf.pool mf.pool
- rm -f $(srcdir)/mf.p $(srcdir)/mf.pool
-
- cmf.ch: $(mfsrcdir)/mf.ch
- rm -f cmf.ch
- cp $(mfsrcdir)/mf.ch cmf.ch
-
- # The convert script produces the following files:
- mf0.c mf1.c mf2.c mf3.c mf4.c mf5.c mf6.c mf7.c mf8.c mf9.c \
- imf.c coerce.h mfd.h: mf.p coerce.add $(commondefines)
- $(SHELL) $(mfsrcdir)/convert $(srcdir)
- touch mfd.h
-
- # The (hand-coded) file $(extrac) and the (generated) file itex.c have
- # #ifdefs for INIMF, so we compile them differently.
- iextra.o: iextra.c $(commonh) $(extrah)
- $(CC) $(CPPFLAGS) -DINIMF -DINI $(CFLAGS) -c iextra.c
-
- inimf.o: inimf.c $(commonh) $(extrah)
- $(CC) $(CPPFLAGS) -DINIMF $(CFLAGS) -c inimf.c
-
- # Avoid compiling files in another directory.
- iextra.c: $(extrac)
- rm -f iextra.c
- $(LN) $(extrac) iextra.c
-
- inimf.c: imf.c
- rm -f inimf.c
- $(LN) imf.c inimf.c
-
- vextra.c: $(extrac)
- rm -f vextra.c
- $(LN) $(extrac) vextra.c
-
- openinout.c: $(fileioc)
- rm -f openinout.c
- $(LN) $(fileioc) openinout.c
-
- $(iobjs) $(vobjs) $(objs): $(commonh) $(extrah)
-
- mf0.o: mf0.c
- mf1.o: mf1.c
- mf2.o: mf2.c
- mf3.o: mf3.c
- mf4.o: mf4.c
- mf5.o: mf5.c
- mf6.o: mf6.c
- mf7.o: mf7.c
- mf8.o: mf8.c
- mf9.o: mf9.c
- mf10.o: mf10.c
-
- $(windowlib): mfd.h
- cd MFwindow; $(MAKE) $(makeargs) x_include_flags='$(x_include_flags)'
-
-
- Makefile: Makefile.in ../config.status
- (cd ..; sh config.status)
-
- c-sources: mfd.h
- .PHONY: c-sources
-
- install: install-exec install-data
-
- install-exec: all
- for p in $(program); do $(INSTALL_PROGRAM) $$p $(bindir)/$$p; done
-
- install-data: mf.pool
- $(SHELL) $(srcdir)/../../mkdirchain $(mfpooldir)
- -if test -s mf.pool; then \
- $(INSTALL_DATA) mf.pool $(mfpooldir)/mf.pool; else true; fi
-
- TAGS: *.c *.h
- etags -t *.c *.h
-
-
- mostlyclean::
- rm -f *.o $(program) $(lib) $(programs)
-
- clean:: mostlyclean
- rm -f *.dvi *.pool
-
- distclean:: clean
- rm -f Makefile config.status c-auto.h
-
- # Although we can remake configure and c-auto.h.in, we don't remove
- # them, since many people may lack Autoconf. Use configclean for that.
- realclean:: distclean
- rm -f TAGS *.info*
-
- extraclean::
- rm -f *.aux *.bak *.bbl *.blg *.dvi *.log *.orig *.pl *.rej
- rm -f *.i *.s *.tfm *.vf *.vpl *\#* *gf *pk *~
- rm -f CONTENTS.tex a.out core mfput.* patch* texput.*
-
- configclean:
- rm -f configure c-auto.h.in c-auto.h
-
-
- # Prevent GNU make 3 from overflowing arg limit on system V.
- .NOEXPORT:
-
- mostlyclean::
- rm -f stamp-* trapmf
- rm -f mfd.h mfd.h.bak coerce.h *.log *.base
- rm -f trap.72270gf trap.fot trap.tfm trap.typ trap.pl trap.mf
- cd MFwindow; $(MAKE) mostlyclean
-
- clean::
- rm -f *.c *.p *.h
- cd MFwindow; $(MAKE) clean
-
- distclean::
- rm -f cmf.ch
- cd MFwindow; $(MAKE) distclean
-
- extraclean::
- cd MFwindow; $(MAKE) extraclean
-