home *** CD-ROM | disk | FTP | other *** search
Makefile | 1996-09-28 | 14.0 KB | 482 lines |
- # Makefile for web2c, a port of TeX, Metafont, and friends --karl@cs.umb.edu.
- version = 6.1
-
- # The following make definitions (down to `end of installation
- # directories') are repeated in several Makefiles, because different
- # installations like to change them at different levels. If you edit the
- # top-level Makefile, the changes should propagate, however.
- #
- # The following define installation directories. The default paths are
- # defined in kpathsea/paths.h, which is built from kpathsea/paths.h.in.
- # See kpathsea/INSTALL for a description of how the various path-related
- # files are used and created.
-
- # Generic installation directories.
- prefix = @prefix@
- exec_prefix = @exec_prefix@
- bindir = $(exec_prefix)/bin
- scriptdir = $(bindir)
- libdir = $(exec_prefix)/lib
- datadir = $(prefix)/lib
- infodir = $(prefix)/info
- includedir = $(prefix)/include
- manext = 1
- mandir = $(prefix)/man/man$(manext)
-
- # TeX & MF-specific directories. Not all of the following are relevant
- # for all programs, but it seems cleaner to collect everything in one place.
-
- # The default paths are now in kpathsea/Makefile.in. Passing all the
- # paths to sub-makes can make the arg list too long on system V.
-
- # The root of the tree.
- texmf_prefix = $(datadir)/texmf
-
- # TeX and MF source files.
- texinputdir = $(texmf_prefix)/tex
- mfinputdir = $(texmf_prefix)/mf
-
- # The top-level font directory.
- fontdir = $(texmf_prefix)/fonts
-
- # Where memory dumps are installed.
- fmtdir = $(texmf_prefix)/ini
- basedir = $(fmtdir)
-
- # Pool files.
- texpooldir = $(texmf_prefix)/ini
- mfpooldir = $(texpooldir)
-
- # The PostScript TFM and VF files get installed in subdirectories of
- # this directory, named for the typeface families of these directories.
- psfontdir = $(fontdir)/adobe
-
- # Where the configuration files get installed.
- dvips_prefix = $(texmf_prefix)/dvips
- configdir = $(dvips_prefix)
-
- # Where the PostScript prologues go.
- headerdir = $(configdir)
-
- # Where dvips' TeX macro files get installed.
- psmacrodir = $(texinputdir)/dvips
-
- # If a font can't be found close enough to its stated size, we look for
- # each of these sizes in the order given. This colon-separated list is
- # overridden by the envvar TEXSIZES, and by a program-specific variable
- # (e.g., XDVISIZES), and perhaps by a config file (e.g., in dvips).
- default_texsizes = 300:600
-
- # End of installation directory definitions.
-
- # These lines define the format and base files that `make fmts' and
- # `make bases' will try to make, and `make install-fmts' and `make
- # install-bases' will try to install. See `README' for a brief
- # description of each of these formats.
- bases = mf.base cmmf.base
- fmts = tex.fmt latex.fmt
- # slitex.fmt etex.fmt amslatex.fmt amstex.fmt texinfo.fmt
- # inrstex.fmt picplus.fmt
-
- # The name of the file that defines your local devices, for use with
- # Metafont. (Only relevant during `make bases'.) I urge you to get the
- # file `modes.mf', which defines all known modes, plus useful
- # definitions for all fonts. It's available from ftp.cs.umb.edu as
- # pub/tex/modes.mf, among other places.
- localmodes = modes
-
-
- # Compilation options.
- DEFS = $(XDEFS)
-
- # CFLAGS is used for both compilation and linking.
- CFLAGS = $(XCFLAGS)
-
- # Do not override CPPFLAGS; change CFLAGS or DEFS instead.
- CPPFLAGS = $(XCPPFLAGS) -I. -I$(srcdir) -I$(kpathsea_parent) \
- $(x_include_flags) $(DEFS)
- .c.o:
- $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
-
- # Linking.
- LDFLAGS = $(CFLAGS) $(XLDFLAGS)
- LOADLIBES = $(kpathsea) $(x_libs) $(LIBS) -lm $(x_extra_libs)
-
- # 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_srcdir_parent = $(srcdir)/..
- kpathsea_srcdir = $(kpathsea_srcdir_parent)/kpathsea
- kpathsea = $(kpathsea_dir)/kpathsea.a
-
- CC = @CC@
-
- LEX = @LEX@
- LEXLIB = @LEXLIB@
- YACC = @YACC@
-
- # Command to link an executable.
- CCLD = $(CC)
- RANLIB = @RANLIB@
- LN = @LN_S@
-
- # Make `#include <X11/...>' and `-lX...' work.
- # wlibs is substituted by web2c's configure, LIBS by general configure
- # routines, and the others by AC_PATH_XTRA.
- x_include_flags = @X_CFLAGS@
- x_lib_flags = @X_LIBS@
- x_extra_libs = @X_EXTRA_LIBS@
- wlibs = @wlibs@
- LIBS = @LIBS@ $(extralibs)
-
- INSTALL = @INSTALL@
- INSTALL_PROGRAM = @INSTALL_PROGRAM@
- INSTALL_DATA = @INSTALL_DATA@
-
- SHELL = /bin/sh
- srcdir = @srcdir@
- VPATH = @srcdir@
-
-
- #
- # Things below here not changed by configure.
-
- # What to do by default.
- default: programs
- .PHONY: default
-
- # Where we need to make things.
- #
- triptrapdirs = dviutil fontutil
- progdirs = $(triptrapdirs) tex mf bibtex web
- alldirs = $(progdirs) lib man web2c
-
- # What to pass to subdirectories when making various things.
- # $(MAKEARGS) is for the user.
- makeargs=$(MFLAGS) SHELL='$(SHELL)' CC='$(CC)' CFLAGS='$(CFLAGS)' \
- RANLIB='$(RANLIB)' LN='$(LN)' DEFS='$(DEFS)' \
- CCLD='$(CCLD)' LDFLAGS='$(LDFLAGS)' LIBS='$(LIBS)' \
- x_extra_libs='$(x_extra_libs)' x_include_flags='$(x_include_flags)' \
- x_lib_flags='$(x_lib_flags)' $(MAKEARGS)
- web2cmakeargs=$(makeargs) YACC='$(YACC)' LEX='$(LEX)' LEXLIB='$(LEXLIB)'
- installargs=$(makeargs) \
- INSTALL_DATA='$(INSTALL_DATA)' \
- INSTALL_PROGRAM='$(INSTALL_PROGRAM)' \
- bindir=$(bindir) \
- fontdir=$(fontdir) \
- texpooldir=$(texpooldir) \
- mfpooldir=$(mfpooldir)
-
-
- # The TeX and Metafont torture tests.
- triptrap: trip trap
- .PHONY: triptrap
-
- common-trip: do-tangle
- for name in $(triptrapdirs); do \
- (cd $${name}; $(MAKE) $(makeargs) triptrap); done
-
- check run-triptrap: run-trip run-trap
- .PHONY: check run-triptrap
-
- clean-triptrap: clean-trip clean-trap
- .PHONY: clean-triptrap
-
-
- run-trip: trip
- cd tex; $(MAKE) $(makeargs) run-trip
- .PHONY: run-trip
-
- trip: common-trip
- cd tex; $(MAKE) $(makeargs) triptrap
- .PHONY: trip
-
- clean-trip:
- cd tex; $(MAKE) clean-trip
- .PHONY: clean-trip
-
-
- run-trap: trap
- cd mf; $(MAKE) $(makeargs) run-trap
- .PHONY: run-trap
-
- trap: common-trip
- cd mf; $(MAKE) $(makeargs) triptrap
- .PHONY: trap
-
- clean-trap:
- cd mf; $(MAKE) clean-trap
- .PHONY: clean-trap
-
-
- #
- # The following targets build production TeX and MF.
-
- all: programs manpages formats
- .PHONY: all
-
- programs: do-tangle
- for d in $(progdirs); do (cd $$d; $(MAKE) $(makeargs) all); done
- .PHONY: programs
-
- TeX: do-tangle
- cd tex; $(MAKE) $(makeargs) all
- .PHONY: TeX
-
- MF: do-tangle
- cd mf; $(MAKE) $(makeargs) all
- .PHONY: MF
-
- BibTeX: do-tangle
- cd bibtex; $(MAKE) $(makeargs) all
- .PHONY: BibTeX
-
-
- do-tangle: do-web2c
- cd web; $(MAKE) $(makeargs) tangle
- .PHONY: do-tangle
-
- do-web2c: do-kpathsea do-lib
- cd web2c; $(MAKE) $(web2cmakeargs) all
- .PHONY: do-web2c
-
- do-kpathsea: $(kpathsea_srcdir)/*.c $(kpathsea_srcdir)/*.h
- cd $(kpathsea_dir); $(MAKE) $(makeargs)
- .PHONY: do-kpathsea
-
- do-lib: $(srcdir)/lib/*.c
- cd lib; $(MAKE) $(makeargs) all
- .PHONY: do-lib
-
-
- c-sources: do-tangle
- for d in $(progdirs); do (cd $$d; $(MAKE) $(makeargs) c-sources); done
- .PHONY: c-sources
-
- manpages: $(kpathsea_dir)/paths.h
- cd man; $(MAKE) bindir=$(bindir) texdatadir=$(texdatadir) \
- texpooldir=$(texpooldir) fmtdir=$(fmtdir) \
- texinputdir=$(texinputdir) fontdir=$(fontdir) \
- mfdatadir=$(mfdatadir) mfpooldir=$(mfpooldir) \
- basedir=$(basedir) mfinputdir=$(mfinputdir) \
- localmodes='$(localmodes)' \
- all
- .PHONY: manpages
-
- formats: bases fmts
- .PHONY: formats
-
- bases: MF
- cd mf; \
- $(MAKE) $(makeargs) bases="$(bases)" localmodes='$(localmodes)' bases
- .PHONY: bases
-
- fmts: TeX
- cd tex; $(MAKE) $(makeargs) fmts="$(fmts)" fmts
- .PHONY: fmts
-
-
- #
- # Installation targets.
-
- install: install-exec install-data
- .PHONY: install
- install-data: install-fmts install-bases install-manpages
- for name in $(progdirs); do \
- (cd $${name}; $(MAKE) $(installargs) install-data); \
- done
- .PHONY: install-data
-
- install-exec: programs
- $(SHELL) $(srcdir)/../mkdirchain $(bindir)
- for name in $(progdirs); do \
- (cd $${name}; $(MAKE) $(installargs) install-exec); \
- done
- for f in $(fmts); do \
- rm -f $(bindir)/`basename $$f .fmt`; \
- cp -p $(bindir)/virtex $(bindir)/`basename $$f .fmt`; \
- done
- for f in $(bases); do \
- rm -f $(bindir)/`basename $$f .base`; \
- cp -p $(bindir)/virmf $(bindir)/`basename $$f .base`; \
- done
- .PHONY: install-exec
-
- install-fmts: fmts
- $(SHELL) $(srcdir)/../mkdirchain $(fmtdir)
- for f in $(fmts); do \
- $(INSTALL_DATA) tex/$$f $(fmtdir)/$$f; \
- done
- cd $(fmtdir); rm -f plain.fmt; cp -p tex.fmt plain.fmt
- .PHONY: install-fmts
-
- install-bases: bases
- $(SHELL) $(srcdir)/../mkdirchain $(basedir)
- for f in $(bases); do \
- $(INSTALL_DATA) mf/$$f $(basedir)/$$f; \
- done
- cd $(basedir); rm -f plain.base; cp -p mf.base plain.base
- .PHONY: install-bases
-
- install-manpages: manpages
- cd man; $(MAKE) $(installargs) \
- mandir=$(mandir) manext=$(manext) install
- .PHONY: install-manpages
-
-
- #
- # Other targets.
-
-
- # We can't make useful tags files out of the web sources, more's the pity.
- TAGS:
-
- # Prevent GNU make 3 from overflowing arg limit on system V.
- .NOEXPORT:
-
- # Need GNU tar for this.
- distname = web2c
- program_files = PROBLEMS
- program_rm = */Makefile
- version_files = lib/version.c
-
- pre-dist-$(distname):
- cd lib; $(MAKE) c-auto.h.in
- cd web2c; $(MAKE) lex.yy.c y.tab.c
- cd web; $(MAKE) tangleboot.c
- # Save the subdir list for the next command.
- find * -type d -print | sed '/$(top_distdir)/d' >/tmp/subdir
-
- post-dist-$(distname):
- # Make the subdirectories.
- for d in `cat /tmp/subdir`; do \
- mkdir -p $(top_distdir)/$(distname)/$$d; done
- #
- # Link files in subdirectories.
- dirs="`grep -v / /tmp/subdir`"; \
- for f in `find $$dirs \
- \( -name README \
- -o -name .gdbinit \
- -o -name ChangeLog \
- -o -name MakeTeX\* \
- -o -name convert \
- -o -name tr\*penv \
- -o -name \*.add \
- -o -name \*.ch \
- -o -name \*.defines \
- -o -name \*.in \
- -o -name \*.lex \
- -o -name \*.man \
- -o -name \*.map \
- -o -name \*.sed \
- -o -name \*.sok \
- -o -name \*.start \
- -o -name \*.yacc \
- \) -print`; do \
- cp -p $$f $(distdir)/`dirname $$f`; \
- done
- cp -p lib/*.c lib/*.h $(distdir)/lib
- rm -f lib/c-auto.h
- cp -p mf/MFwindow/*.c $(distdir)/mf/MFwindow
- rm -f mf/MFwindow/x11.c mf/MFwindow/sun.c
- cp -p mf/MFtrap/trap.* mf/MFtrap/trapin.log mf/MFtrap/trapman.tex \
- $(distdir)/mf/MFtrap
- cp -p fontutil/gftodmem.h $(distdir)/fontutil
- cp -p tex/TeXtrip/trip.* tex/TeXtrip/tripin.log \
- tex/TeXtrip/tripman.tex tex/TeXtrip/tripos.tex \
- $(distdir)/tex/TeXtrip
- for d in tex mf bibtex; do rm -f $(distdir)/$$d/c$$d.ch; done
- cp -p web/tangleboot.* $(distdir)/web
- rm -f $(distdir)/web/tangleboot.o
- cp -p web2c/*.c web2c/*.h $(distdir)/web2c
- (cd $(distdir)/web2c; mv y.tab.c y.tab.c-dist; \
- mv y.tab.h y.tab.h-dist; \
- mv lex.yy.c lex.yy.c-dist)
- cd $(distdir); ungnumake */Makefile.in */*/Makefile.in
- top_distdir = $(distname)-$(version)
- top_files = ChangeLog Makefile.in configure configure.in README \
- $(HOME)/gnu/gnuorg/COPYING* $(HOME)/bin/mkdirchain \
- $(plain)/texinfo.tex
- distdir = $(top_distdir)/$(distname)
- kpathsea_distdir = ../$(distname)/$(top_distdir)/kpathsea
- ln_files = AUTHORS ChangeLog INSTALL MACHINES NEWS README TAGS *.in *.h *.c \
- configure *.make .gdbinit
-
- dist: pre-dist-$(distname)
- rm -rf $(top_distdir)*
- mkdir -p $(distdir)
- cd ..; cp -p $(top_files) $(distname)/$(top_distdir)
- cd ..; echo >>$(distname)/$(top_distdir)/ChangeLog
- cd ..; cat kutil/ChangeLog >>$(distname)/$(top_distdir)/ChangeLog
- -cp -p $(ln_files) $(distdir)
- cp -p $(program_files) $(distdir)
- cd $(kpathsea_dir); $(MAKE) distdir=$(kpathsea_distdir) \
- ln_files='$(ln_files)' distdir
- ungnumake $(distdir)/Makefile.in $(kpathsea_distdir)/Makefile.in \
- $(top_distdir)/Makefile.in
- # *.make gets us depend.make.
- rm -f $(distdir)/*.make $(kpathsea_distdir)/*.make
- cd $(distdir); rm -f c-auto.h $(program_rm)
- $(MAKE) post-dist-$(distname)
- cd $(distdir); add-version $(version) $(version_files)
- chmod -R a+rw $(top_distdir)
- GZIP=-9 tar czf $(top_distdir). $(top_distdir)
- rm -rf $(top_distdir)
-
-
-
- # I define $(autoconf) to acgeneral.m4 and the other Autoconf files, so
- # configure automatically gets remade with a new Autoconf release. But
- # since some people do not have AC installed, I take out the variable
- # $(autoconf) definition before release.
- configure_in = $(srcdir)/configure.in $(srcdir)/../kpathsea/common.ac
- $(srcdir)/configure: $(configure_in) $(autoconf)
- cd $(srcdir); autoconf
-
- config.status: $(srcdir)/configure
- $(SHELL) $(srcdir)/configure --no-create --verbose
-
- Makefile: $(srcdir)/Makefile.in config.status
- $(SHELL) config.status
-
- # This rule isn't used for web2c or the top-level Makefile, but it
- # doesn't hurt. We don't depend on config.status because configure
- # always rewrites config.status, even when it doesn't change. Thus it
- # might be newer than c-auto.h when we don't need to remake the latter.
- c-auto.h: $(srcdir)/c-auto.h.in
- $(SHELL) config.status
-
- web-dist:
- rm -rf $(top_distdir)
- mkdir -p $(top_distdir)/$(distname)
- cd $(top_distdir)/$(distname); \
- mkdir `cd ../..; find -name \*.web -exec dirname '{}' \; | uniq`
- for d in `find . -name $(distdir) -prune -o -name \*.web -print` ; do\
- cp -p $$d $(distdir)/`dirname $$d`; \
- done
- GZIP=-9 tar czf web-$(version). $(top_distdir)
- rm -rf $(top_distdir)
-
- web/tangleboot.c:
- cd web; $(MAKE) tangleboot.c
-
-
- mostlyclean clean distclean extraclean realclean::
- for name in $(alldirs); do (cd $${name}; $(MAKE) $@); done
-
- realclean distclean::
- rm -f Makefile config.status config.log config.cache
-
- extraclean::
- rm -f *~ *\#* patch* *.orig *.rej core a.out *.i *.s
- rm -f *log *gf *pk *.tfm *.pl *.dvi
-
- configclean:
- rm -f configure lib/c-auto.h.in lib/c-auto.h
-
- #
- # Local variables:
- # page-delimiter: "^# \f"
- # End:
-