summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/hitexdir/am/hitex.am
blob: 1f19c0d305f414a3d62ee499c2fc394d168fd286 (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
## $Id$
## texk/web2c/hitexdir/am/hitex.am: Makefile fragment for HiTeX
##
## Copyright 2021-2022 Martin Ruckert <ruckert@cs.hm.edu>
## You may freely use, modify and/or distribute this file.

if HITEX
bin_PROGRAMS += hitex hishrink histretch
noinst_PROGRAMS += himktables
endif HITEX

# convenience target to build all the programs here.
hiall: hitex hishrink histretch

## Debugging for the parser as usual.
## Except we eschew all lex/yacc steps in the Makefile here; see below.
## AM_YFLAGS = -d -v -Wno-yacc

hitex_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES) 
hitex_CPPFLAGS += -I$(srcdir)/libmd5
hitex_CPPFLAGS += -DINIT -DSTAT -DDEBUG
hitex_LDADD = $(KPATHSEA_LIBS) $(ZLIB_LIBS) libmd5.a
hitex_LDADD += libmd5.a
hitex_DEPENDENCIES = $(KPATHSEA_DEPEND) $(ZLIB_DEPEND) libmd5.a
#
histretch_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES) -I$(srcdir)/hitexdir
histretch_LDADD = $(ZLIB_LIBS)
histretch_DEPENDENCIES = $(ZLIB_DEPEND)
#
# The -I$(srcdir)/hitexdir is so the compiler can find the *parser.h file.
hishrink_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES) -I$(srcdir)/hitexdir
hishrink_LDADD = $(ZLIB_LIBS)
hishrink_DEPENDENCIES = $(ZLIB_DEPEND)

# HiTeX CWEB sources
hitex_web = hitexdir/hiformat.w hitexdir/hitex.w

# Creating several files: need stamp file and two rules with identical recipes
hi_ctangle_sh = CWEBINPUTS=$(srcdir)/hitexdir AM_V_P=$(AM_V_P) $(SHELL) ./tangle-sh $@ $(CTANGLE)

# HiTeX C/yacc/lex sources generated using ctangle.
# For each cweb (.w) source file, list the files generated.
hiformat_c_h_l_y = \
        hibasetypes.h \
        hierror.h \
        hiformat.c hiformat.h \
	higet.c higet.h \
	hilexer.l \
        himktables.c \
	hiparser.y \
	hiput.c hiput.h \
	hishrink.c \
	hiskip.c \
	histretch.c
hitex_c = hitex.c 

$(hiformat_c_h_l_y): hiformat-tangle

#
hiformat-tangle: ctangle$(EXEEXT) hitexdir/hiformat.w tangle-sh
	$(hi_ctangle_sh) hiformat

$(hitex_c): hitex-tangle

#
hitex-tangle: ctangle$(EXEEXT) hitexdir/hitex.w tangle-sh
	$(hi_ctangle_sh) hitex

# Generating hitables.c using himktables.
hitables.c: himktables$(EXEEXT)
	./himktables > $@ || { rm -f hitables.c; exit 1; }

# hitex
nodist_hitex_SOURCES = hitables.c hiput.c $(hitex_c)

# histretch
nodist_histretch_SOURCES = hitables.c histretch.c

# The actual sources for the lexer and parser are in hiformat.w.
# However, to simplify life with Automake (a little), we specify the
# generated .[ch] files here as if they were the sources, and don't try
# to have Automake support the derivation from .w, or even from the .[ly].
#
nodist_hishrink_SOURCES = hitables.c \
  hitexdir/hilexer.c \
  hitexdir/hiparser.c hitexdir/hiparser.h \
  hishrink.c

# hitex, histretch, and hishrink all need (at least) some 
# of the sources generated from hiformat.w.
#
$(hitex_OBJECTS): hiformat-tangle
$(hishrink_OBJECTS): hiformat-tangle
$(histretch_OBJECTS): hiformat-tangle
#
# By the way, the $(BUILT_SOURCES) suggestion in the Automake manual for
# this does not work for us, because we want to be able to invoke
# specific targets (hiall, hitex, hishrink, ...), and $(BUILT_SOURCES)
# is only a dependency on general targets (all, install, ...).

EXTRA_DIST += hitexdir/ChangeLog $(hitex_web)

DISTCLEANFILES += $(nodist_hitex_SOURCES)
DISTCLEANFILES += $(nodist_hishrink_SOURCES) $(nodist_histretch_SOURCES)
DISTCLEANFILES += hiformat-tangle hitex-tangle

## HiTeX tests
#
hitex_tests = hitexdir/tests/hello.test \
  hitexdir/tests/rule.test

hitexdir/tests/hello.log: hitex$(EXEEXT) histretch$(EXEEXT)
hitexdir/tests/rule.log: hitex$(EXEEXT) histretch$(EXEEXT) hishrink$(EXEEXT)

EXTRA_DIST += $(hitex_tests)

if HITEX
TESTS += $(hitex_tests)
endif HITEX

## hello.test
EXTRA_DIST += hitexdir/tests/hello.tex 
DISTCLEANFILES += hello.log

## rule.test
EXTRA_DIST += hitexdir/tests/rule.tex 
DISTCLEANFILES += rule.log

# (end of hitex.am)