summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/mfluajitdir/am/mfluajit.am
blob: 180b6617e249766f2e5eaa9f747f41756f513dab (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
137
138
## $Id$
## texk/web2c/mfluajitdir/am/mfluajit.am: Makefile fragment for MFLuaJIT.
##
## Copyright 2016-2022 Karl Berry <tex-live@tug.org>
## Copyright 2015 Peter Breitenlohner <tex-live@tug.org>
## You may freely use, modify and/or distribute this file.

## MFLuaJIT
##
if MFLUAJIT
bin_PROGRAMS += mfluajit
if MFLUAJITN
bin_PROGRAMS += mfluajit-nowin
endif MFLUAJITN
if WIN32
noinst_PROGRAMS += call_mfluajit
install_exe_links += install-mfluajit-links
uninstall_exe_links += uninstall-mfluajit-links
else !WIN32
if !MFLUAJITN
bin_links += mfluajit$(EXEEXT):mfluajit-nowin
endif !MFLUAJITN
endif !WIN32
endif MFLUAJIT
EXTRA_PROGRAMS += mfluajit mfluajit-nowin
DISTCLEANFILES += mfluajittrap.diffs

call_mfluajit_CPPFLAGS = -DEXEPROG=\"mfluajit.exe\"
nodist_call_mfluajit_SOURCES = callexe.c
call_mfluajit_LDADD =

.PHONY: install-mfluajit-links uninstall-mfluajit-links
if WIN32
install-mfluajit-links: call_mfluajit$(EXEEXT)
if !MFLUAJITN
	$(INSTALL_PROGRAM) call_mfluajit$(EXEEXT) $(DESTDIR)$(bindir)/mfluajit-nowin$(EXEEXT)
endif !MFLUAJITN
uninstall-mfluajit-links:
if !MFLUAJITN
	rm -f $(DESTDIR)$(bindir)/mfluajit-nowin$(EXEEXT)
endif !MFLUAJITN
endif WIN32

dist_mfluajit_SOURCES = mfluajitdir/mfluajitextra.c mfluajitdir/mfluajitextra.h mfluadir/mflua_version.h
mfluajit_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS) $(LUAJIT_INCLUDES) $(LUAJIT_DEFINES)
mfluajit_LDADD = libmfluajit.a libmfluaotfcc.a $(LDADD) $(windowlib) $(mf_x_libs) $(LUAJIT_LIBS)
mfluajit_LDFLAGS = -export-dynamic $(LUAJIT_LDEXTRA)
nodist_mfluajit_nowin_SOURCES = $(dist_mfluajit_SOURCES)
mfluajit_nowin_CPPFLAGS = $(mfluajit_CPPFLAGS) -DMFNOWIN $(LUAJIT_INCLUDES) $(LUAJIT_DEFINES)
mfluajit_nowin_LDADD = libmfluajit.a libmfluaotfcc.a $(LDADD) $(windowlib) $(LUAJIT_LIBS)
mfluajit_nowin_LDFLAGS = -export-dynamic $(LUAJIT_LDEXTRA)

# We must create mfluajitd.h and mfluadir/mflua_version.h before compiling mfluajitextra.c.
$(mfluajit_OBJECTS) $(mfluajit_nowin_OBJECTS): mfluajitd.h mfluadir/mflua_version.h

## mfluajit and mfluajit-nowin compile mfluajitextra.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 += libmfluajit.a libmfluaotfcc.a

# MFLuaJIT C sources
mfluajit_c_h = mfluajitini.c mfluajit0.c mfluajitcoerce.h mfluajitd.h
dist_libmfluajit_a_SOURCES = luatexdir/lua/lkpselib.c mfluadir/mfluac.c mfluadir/mfluac.h
nodist_libmfluajit_a_SOURCES = $(mfluajit_c_h) mfluajit-pool.c
libmfluajit_a_CPPFLAGS = $(AM_CPPFLAGS) $(LUAJIT_INCLUDES) -DMF_LUA -DJIT

# We must create mfluajitd.h before building the libmfluajit_a_OBJECTS.
$(libmfluajit_a_OBJECTS): mfluajitd.h

$(mfluajit_c_h): mfluajit-web2c
	@$(web2c) mfluajit
mfluajit-web2c: mfluajit.p $(web2c_texmf) web2c/cvtmf1.sed web2c/cvtmf2.sed mfluajitdir/mfluajit.defines $(LUAJIT_DEPEND)
	@$(web2c) mfluajit

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

# Tangling MFLuaJIT
mfluajit.p mfluajit.pool: mfluajit-tangle
	$(texmf_tangle) mfluajit mfluajit
mfluajit-tangle: tangle$(EXEEXT) mfluajit.web mfluajit.ch tangle-sh
	$(texmf_tangle) mfluajit mfluajit

# Generate mfluajit.web
mfluajit.web: tie$(EXEEXT) $(mfluajit_web_srcs)
	$(tie_m) $(mfluajit_web_srcs)
mfluajit_web_srcs = \
	mf.web \
	mfluadir/mf-lua.ch \
	mfluajitdir/mf-luajit.ch

# Generate mfluajit.ch
mfluajit.ch: tie$(EXEEXT) mfluajit.web $(mfluajit_ch_src)
	$(tie_c) mfluajit.web $(mfluajit_ch_src)
mfluajit_ch_src = \
	mf.ch \
	mfluadir/mflua-m.ch \
	mf-binpool.ch
##
EXTRA_DIST += $(mfluajit_web_srcs) $(mfluajit_ch_src) mfluajitdir/mfluajit.defines

DISTCLEANFILES += $(nodist_libmfluajit_a_SOURCES) mfluajit.web mfluajit.ch mfluajit-web2c \
	mfluajit.p mfluajit.pool mfluajit-tangle

EXTRA_DIST += \
	mfluajitdir/ChangeLog

# MFLuaJIT tests
#
mfluajit_tests = mfluajitdir/mfluajittraptest.test
mfluajitdir/mfluajittraptest.log: mfluajit$(EXEEXT) gftype$(EXEEXT) tftopl$(EXEEXT)
EXTRA_DIST += $(mfluajit_tests)

if MFLUAJIT
TESTS += $(mfluajit_tests)
TRIPTRAP += mfluajittrap.diffs
TRIPTRAP_CLEAN += mfluajittrap-clean
endif MFLUAJIT
DISTCLEANFILES += mfluajittrap.diffs

## mfluajitdir/mfluajittraptest
mfluajittrap.diffs: mfluajit$(EXEEXT) gftype$(EXEEXT) tftopl$(EXEEXT)
	$(triptrap_diffs) $@
.PHONY: mfluajittrap-clean
mfluajittrap-clean:
	rm -rf mfluajittrapdir


## Test data 
##
EXTRA_DIST += \
        mfluadir/mfluatrap/mflua.lua \
        mfluadir/mfluatrap/mflua_svg_backend.lua \
        mfluadir/mfluatrap/mflua_ttx_backend.lua \
        mfluadir/mfluatrap/texmf.cnf \
        mfluadir/mfluatrap/mfluatrap.diffs

# (end of mfluajit.am)