summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/am/texmf.am
blob: 6fb3125c49da26cb1cca5dbcee097361a0fc0b0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
## texk/web2c/am/texmf.am: Makefile fragment for TeX and MF.
##
## Copyright (C) 2009 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
endif TEX
EXTRA_PROGRAMS += tex

tex_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 tex1.c tex2.c texcoerce.h texd.h
nodist_tex_SOURCES = $(tex_c_h) tex-pool.c texextra.c
$(tex_c_h): tex-web2c

tex-web2c: tex.p $(web2c_texmf)
	$(web2c) tex
	: $(synctex_convert_tex)
	echo timestamp >$@
	touch $(tex_c_h)

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

texextra.c: lib/texmfmp.c texd.h
	sed s/TEX-OR-MF-OR-MP/tex/ $(srcdir)/lib/texmfmp.c >$@

# Tangling TeX
tex.p tex.pool: tex-tangle
tex-tangle: tangle$(EXEEXT) tex.web tex-final.ch
	$(tangle) tex.web tex-final.ch
	echo timestamp >$@
	touch tex.p tex.pool

## Generate tex-final.ch
tex-final.ch: tie$(EXEEXT) $(tex_ch_srcs)
	$(tie) -c $@ $(tex_ch_srcs)
tex_ch_srcs = \
	tex.web \
	tex.ch \
	$(tex_ch_synctex) \
	tex-binpool.ch
##
EXTRA_DIST += $(tex_ch_srcs) lib/texmfmp.c tmf-pool.h

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

## Metafont
##
if MF
bin_PROGRAMS += mf
if MFN
bin_PROGRAMS += mf-nowin
endif MFN
endif MF
EXTRA_PROGRAMS += mf mf-nowin

nodist_mf_SOURCES = mfextra.c
mf_CPPFLAGS = $(X_CFLAGS)
mf_LDADD = libmf.a $(LDADD) $(windowlib) $(mf_x_libs)
if MFN
nodist_mf_nowin_SOURCES = mfextra.c
mf_nowin_CPPFLAGS = $(X_CFLAGS) -DMFNOWIN
mf_nowin_LDADD = libmf.a $(LDADD) $(windowlib)
endif MFN

windowlib = window/libwindow.a
$(windowlib): mfd.h $(srcdir)/window/*.c
	cd window && $(MAKE) $(AM_MAKEFLAGS) libwindow.a
## 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)

## 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 mf1.c mfcoerce.h mfd.h
nodist_libmf_a_SOURCES = $(mf_c_h) mf-pool.c
libmf_a_CPPFLAGS = -DMETA_FONT

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

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

mfextra.c: lib/texmfmp.c mfd.h
	sed s/TEX-OR-MF-OR-MP/mf/ $(srcdir)/lib/texmfmp.c >$@

# Tangling Metafont
mf.p mf.pool: mf-tangle
mf-tangle: tangle$(EXEEXT) mf.web mf-final.ch
	$(tangle) mf.web mf-final.ch
	echo timestamp >$@
	touch mf.p mf.pool

# Generate mf-final.ch
mf-final.ch: tie$(EXEEXT) mf.web mf.ch mf-binpool.ch
	$(tie) -c $@ mf.web mf.ch mf-binpool.ch
##
EXTRA_DIST += mf.web mf-binpool.ch mf.ch mftalk.h lib/texmfmp.c tmf-pool.h

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