## texk/web2c/am/texmf.am: Makefile fragment for TeX and MF.
##
## Copyright (C) 2009-2013 Peter Breitenlohner <tex-live@tug.org>
## You may freely use, modify and/or distribute this file.

## Common for MF and TeX
EXTRA_DIST += \
	lib/mfmpi386.asm \
	lib/mfmpw32.c \
	lib/texmfmp.c \
	texmfmem.h \
	texmfmp-help.h \
	texmfmp.h

## TeX
##
if TEX
bin_PROGRAMS += tex
if WIN32
bin_PROGRAMS += initex
else !WIN32
bin_links += tex$(EXEEXT):initex
endif !WIN32
endif TEX
EXTRA_PROGRAMS += tex

initex_CPPFLAGS = -DEXEPROG=\"tex.exe\"
nodist_initex_SOURCES = callexe.c
initex_LDADD =

tex_CPPFLAGS = $(AM_CPPFLAGS)

# With --enable-ipc, TeX may need to link with -lsocket.
tex_LDADD = $(LDADD) $(ipc_socketlibs)

# TeX C sources
tex_c_h = texini.c tex0.c texcoerce.h texd.h
nodist_tex_SOURCES = $(tex_c_h) tex-pool.c
dist_tex_SOURCES = texextra.c

# We must create texd.h before building the tex_OBJECTS.
tex_prereq = texd.h
$(tex_OBJECTS): $(tex_prereq)

$(tex_c_h): tex-web2c
	@$(web2c) tex
tex-web2c: tex.p $(web2c_texmf)
	@$(web2c) tex

tex-pool.c: tex.pool texd.h $(makecpool_stamp)
	$(makecpool) tex >$@ || rm -f $@

# Tangling TeX
tex.p tex.pool: tex-tangle
	@$(texmf_tangle) tex tex-final
tex-tangle: tangle$(EXEEXT) tex.web tex-final.ch tangle-sh
	@$(texmf_tangle) tex tex-final

# Generate tex-final.ch
tex-final.ch: tie$(EXEEXT) $(tex_ch_srcs)
	$(tie) -c $@ $(tex_ch_srcs)
tex_ch_srcs = \
	tex.web \
	tex.ch \
	enctex.ch \
	$(tex_ch_synctex) \
	tex-binpool.ch
##
EXTRA_DIST += $(tex_ch_srcs)

DISTCLEANFILES += $(nodist_tex_SOURCES) tex-final.ch tex-web2c \
	tex.p tex.pool tex-tangle

# TeX tests
#
tex_tests = trip.test tests/write18-quote-test.pl
EXTRA_DIST += $(tex_tests)
EXTRA_DIST += tests/write18-quote.tex
if TEX
TESTS += $(tex_tests)
check_PROGRAMS += dvitype pltotf tftopl
TRIPTRAP += trip.diffs
TRIPTRAP_CLEAN += trip-clean
endif TEX
DISTCLEANFILES += trip.diffs

## tests/write18-quote-test.pl
DISTCLEANFILES += write18-quote.log

## trip.test
trip.diffs: tex$(EXEEXT)
	$(triptrap_diffs) $@
.PHONY: trip-clean
trip-clean:
	rm -rf tripdir

## Metafont
##
if MF
bin_PROGRAMS += mf
if MFN
bin_PROGRAMS += mf-nowin
endif MFN
if WIN32
bin_PROGRAMS += inimf
else !WIN32
bin_links += mf$(EXEEXT):inimf
endif !WIN32
endif MF
EXTRA_PROGRAMS += mf mf-nowin
DISTCLEANFILES += mftrap.diffs

inimf_CPPFLAGS = -DEXEPROG=\"mf.exe\"
nodist_inimf_SOURCES = callexe.c
inimf_LDADD =

dist_mf_SOURCES = mfextra.c
mf_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS)
mf_LDADD = libmf.a $(LDADD) $(windowlib) $(mf_x_libs)
dist_mf_nowin_SOURCES = mfextra.c
mf_nowin_CPPFLAGS = $(mf_CPPFLAGS) -DMFNOWIN
mf_nowin_LDADD = libmf.a $(LDADD) $(windowlib)

# We must create mfd.h before compiling mfextra.c.
$(mf_OBJECTS) $(mf_nowin_OBJECTS): mfd.h

windowlib = window/libwindow.a
$(windowlib): mfd.h $(srcdir)/window/*.c
	cd window && $(MAKE) $(AM_MAKEFLAGS) libwindow.a
if WIN32
mf_x_libs = -lgdi32
else !WIN32
# Make `#include <X11/...>' and `-lX...' work.
# This matches xdvik.
# wlibs is substituted by web2c's configure, LIBS by general configure
# routines, and the others by AC_PATH_XTRA.
# All the x_... and X_... variables will be empty if we aren't supporting X.
# Follow the library order used in X11R6 itself:
#   -lXaw -lXmu -lXt -lSM -lICE -lXext -lX11 (some may not be present).
mf_x_libs = $(X_LIBS) $(x_tool_libs) $(X_PRE_LIBS) $(x_ext_lib) $(wlibs) $(X_EXTRA_LIBS)
endif !WIN32

## mf and mf-nowin compile mfextra.c with different CPPFLAGS.
## Automake, however, does not support CPPFLAGS for individual source files.
## To avoid compiling everything twice, the common objects are in a library.
EXTRA_LIBRARIES += libmf.a

# Metafont C sources
mf_c_h = mfini.c mf0.c mfcoerce.h mfd.h
nodist_libmf_a_SOURCES = $(mf_c_h) mf-pool.c

# We must create mfd.h before building the libmf_a_OBJECTS.
$(libmf_a_OBJECTS): mfd.h

$(mf_c_h): mf-web2c
	@$(web2c) mf
mf-web2c: mf.p $(web2c_texmf) web2c/cvtmf1.sed web2c/cvtmf2.sed
	@$(web2c) mf

mf-pool.c: mf.pool mfd.h $(makecpool_stamp)
	$(makecpool) mf >$@ || rm -f $@

# Tangling Metafont
mf.p mf.pool: mf-tangle
	@$(texmf_tangle) mf mf-final
mf-tangle: tangle$(EXEEXT) mf.web mf-final.ch tangle-sh
	@$(texmf_tangle) mf mf-final

# Generate mf-final.ch
mf-final.ch: tie$(EXEEXT) $(mf_ch_src)
	$(tie) -c $@ $(mf_ch_src)
mf_ch_src = \
	mf.web \
	mf.ch \
	mf-binpool.ch
##
EXTRA_DIST += $(mf_ch_src) mftalk.h

DISTCLEANFILES += $(nodist_libmf_a_SOURCES) mf-final.ch mf-web2c \
	mf.p mf.pool mf-tangle

# Metafont tests
#
mf_tests = trap.test
EXTRA_DIST += $(mf_tests)
if MF
TESTS += $(mf_tests)
check_PROGRAMS += gftype tftopl
TRIPTRAP += mftrap.diffs
TRIPTRAP_CLEAN += trap-clean
endif MF

## trap.test
mftrap.diffs: mf$(EXEEXT)
	$(triptrap_diffs) $@
.PHONY: trap-clean
trap-clean:
	rm -rf trapdir

## Test data
##
EXTRA_DIST += \
	triptrap/README \
	triptrap/mftrap.diffs \
	triptrap/mftrap.fot \
	triptrap/mftrap.log \
	triptrap/mftrap.pl \
	triptrap/mftrap1.in \
	triptrap/mftrap2.in \
	triptrap/mftrapin.log \
	triptrap/mptrap.diffs \
	triptrap/mptrap.fot \
	triptrap/mptrap.log \
	triptrap/mptrap.pl \
	triptrap/mptrap.readme \
	triptrap/mptrap1.in \
	triptrap/mptrap2.in \
	triptrap/mptrapin.log \
	triptrap/mtrap.0 \
	triptrap/mtrap.1 \
	triptrap/mtrap.log \
	triptrap/mtrap.mp \
	triptrap/texmf.cnf \
	triptrap/trap.148 \
	triptrap/trap.149 \
	triptrap/trap.150 \
	triptrap/trap.151 \
	triptrap/trap.197 \
	triptrap/trap.200 \
	triptrap/trap.5 \
	triptrap/trap.6 \
	triptrap/trap.mf \
	triptrap/trap.mp \
	triptrap/trap.mpx \
	triptrap/trap.typ \
	triptrap/trapf.pl \
	triptrap/trapman.tex \
	triptrap/trip.diffs \
	triptrap/trip.fot \
	triptrap/trip.log \
	triptrap/trip.pl \
	triptrap/trip.tex \
	triptrap/trip.typ \
	triptrap/trip1.in \
	triptrap/trip2.in \
	triptrap/tripin.log \
	triptrap/tripman.tex \
	triptrap/tripos.tex \
	triptrap/writeo \
	triptrap/writeo.2

