summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/hitexdir/am/hitex.am
blob: 94070a158614c4581c5621f228433d379f0e2e3f (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
134
135
136
## $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

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

# At the moment, these are the only man pages handled in the
# conglomerated web2c/Makefile[.am]. (All the others are in man/.)
# If that changes, have to set at top level and use +=.
man1_MANS = hitexdir/man/hishrink.man hitexdir/man/histretch.man \
            hitexdir/man/hitex.man
endif HITEX

## 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 drops into an interactive debugging session.
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)