]> granicus.if.org Git - re2c/blob - Makefile.am
Added option --input-encoding <ascii | utf8> that allows to use UTF-8 literals in...
[re2c] / Makefile.am
1 # flags
2 # do *not* add CXXFLAGS here, add them in configure.ac
3 AM_CXXFLAGS = $(CXXFLAGSDEFAULT)
4 if DEBUG
5 AM_CXXFLAGS += -DRE2C_DEBUG
6 endif
7 RE2CFLAGS = -br -W
8
9 # binary
10 bin_PROGRAMS = re2c
11 RE2C = re2c$(EXEEXT)
12
13 # sources
14 re2c_HDR = \
15         src/codegen/bitmap.h \
16         src/codegen/emit.h \
17         src/codegen/go.h \
18         src/codegen/input_api.h \
19         src/codegen/label.h \
20         src/codegen/output.h \
21         src/codegen/print.h \
22         src/options/opt.h \
23         src/adfa/action.h \
24         src/adfa/adfa.h \
25         src/cfg/cfg.h \
26         src/dfa/closure_leftmost.h \
27         src/dfa/closure_posix.h \
28         src/dfa/determinization.h \
29         src/dfa/dfa.h \
30         src/dfa/posix_precedence.h \
31         src/dfa/tag_history.h \
32         src/dfa/tagver_table.h \
33         src/dfa/tcmd.h \
34         src/nfa/nfa.h \
35         src/encoding/case.h \
36         src/encoding/ebcdic/ebcdic.h \
37         src/encoding/ebcdic/ebcdic_regexp.h \
38         src/encoding/enc.h \
39         src/encoding/range_suffix.h \
40         src/encoding/utf8/utf8.h \
41         src/encoding/utf8/utf8_regexp.h \
42         src/encoding/utf16/utf16_regexp.h \
43         src/encoding/utf16/utf16.h \
44         src/msg/location.h \
45         src/msg/msg.h \
46         src/msg/ver_to_vernum.h \
47         src/msg/warn.h \
48         src/regexp/empty_class_policy.h \
49         src/regexp/re.h \
50         src/regexp/rule.h \
51         src/regexp/tag.h \
52         src/compile.h \
53         src/skeleton/path.h \
54         src/skeleton/skeleton.h \
55         src/parse/ast.h \
56         src/parse/input.h \
57         src/parse/parse.h \
58         src/parse/scanner.h \
59         src/parse/unescape.h \
60         src/debug/debug.h \
61         src/util/allocate.h \
62         src/util/attribute.h \
63         src/util/c99_stdint.h \
64         src/util/counter.h \
65         src/util/fixed_allocator.h \
66         src/util/forbid_copy.h \
67         src/util/free_list.h \
68         src/util/get_dir.h \
69         src/util/hash32.h \
70         src/util/local_increment.h \
71         src/util/lookup.h \
72         src/util/range.h \
73         src/util/s_to_n32_unsafe.h \
74         src/util/slab_allocator.h \
75         src/util/smart_ptr.h \
76         src/util/static_assert.h \
77         src/util/string_utils.h \
78         src/util/temp_file.h \
79         src/util/u32lim.h \
80         src/util/uniq_vector.h \
81         src/util/wrap_iter.h
82 re2c_SRC = \
83         src/codegen/bitmap.cc \
84         src/codegen/emit_action.cc \
85         src/codegen/emit_dfa.cc \
86         src/codegen/label.cc \
87         src/codegen/go_construct.cc \
88         src/codegen/go_destruct.cc \
89         src/codegen/go_emit.cc \
90         src/codegen/go_used_labels.cc \
91         src/codegen/input_api.cc \
92         src/codegen/output.cc \
93         src/codegen/print.cc \
94         src/options/opt.cc \
95         src/nfa/estimate_size.cc \
96         src/nfa/re_to_nfa.cc \
97         src/adfa/adfa.cc \
98         src/adfa/prepare.cc \
99         src/debug/dump_adfa.cc \
100         src/debug/dump_cfg.cc \
101         src/debug/dump_dfa.cc \
102         src/debug/dump_interf.cc \
103         src/debug/dump_nfa.cc \
104         src/cfg/cfg.cc \
105         src/cfg/compact.cc \
106         src/cfg/dce.cc \
107         src/cfg/freeze.cc \
108         src/cfg/interfere.cc \
109         src/cfg/liveanal.cc \
110         src/cfg/normalize.cc \
111         src/cfg/optimize.cc \
112         src/cfg/rename.cc \
113         src/cfg/varalloc.cc \
114         src/dfa/closure.cc \
115         src/dfa/dead_rules.cc \
116         src/dfa/determinization.cc \
117         src/dfa/fallback_tags.cc \
118         src/dfa/fillpoints.cc \
119         src/dfa/find_state.cc \
120         src/dfa/minimization.cc \
121         src/dfa/tagver_table.cc \
122         src/dfa/tcmd.cc \
123         src/encoding/ebcdic/ebcdic_regexp.cc \
124         src/encoding/enc.cc \
125         src/encoding/range_suffix.cc \
126         src/encoding/utf8/utf8_regexp.cc \
127         src/encoding/utf8/utf8.cc \
128         src/encoding/utf16/utf16_regexp.cc \
129         src/encoding/utf16/utf16.cc \
130         src/msg/msg.cc \
131         src/msg/warn.cc \
132         src/regexp/ast_to_re.cc \
133         src/regexp/default_tags.cc \
134         src/regexp/fixed_tags.cc \
135         src/regexp/nullable.cc \
136         src/regexp/rule.cc \
137         src/regexp/split_charset.cc \
138         src/regexp/tag.cc \
139         src/compile.cc \
140         src/skeleton/control_flow.cc \
141         src/skeleton/generate_code.cc \
142         src/skeleton/generate_data.cc \
143         src/skeleton/maxpath.cc \
144         src/skeleton/skeleton.cc \
145         src/parse/ast.cc \
146         src/parse/input.cc \
147         src/parse/normalize.cc \
148         src/parse/scanner.cc \
149         src/parse/unescape.cc \
150         src/parse/validate.cc \
151         src/util/get_dir.cc \
152         src/util/s_to_n32_unsafe.cc \
153         src/util/temp_file.cc \
154         src/util/range.cc
155 re2c_SOURCES = \
156         src/main.cc \
157         $(re2c_HDR) \
158         $(re2c_SRC)
159
160 # autogenerated sources
161 re2c_GEN_HELP = src/msg/help.cc
162 re2c_GEN_LEX = src/parse/lex.cc
163 re2c_GEN_PARSER = src/parse/parser.cc
164 re2c_GEN_PARSER_HDR = src/parse/parser.h
165 re2c_GEN_VER_TO_VERNUM = src/msg/ver_to_vernum.cc
166 re2c_GEN_SRC = \
167         $(re2c_GEN_HELP) \
168         $(re2c_GEN_LEX) \
169         $(re2c_GEN_PARSER) \
170         $(re2c_GEN_VER_TO_VERNUM) \
171         src/parse/lex_conf.cc \
172         src/options/parse_opts.cc
173 re2c_GEN_HDR = \
174         src/parse/lex.h \
175         $(re2c_GEN_PARSER_HDR)
176 re2c_GEN = \
177         $(re2c_GEN_SRC) \
178         $(re2c_GEN_HDR)
179 nodist_re2c_SOURCES = $(re2c_GEN)
180
181 # custom rules create headers and must go before normal rules
182 BUILT_SOURCES = $(re2c_GEN_SRC)
183
184 # bootstrap sources
185 re2c_BOOT_PARSER = bootstrap/src/parse/parser.cc
186 re2c_BOOT_PARSER_HDR = bootstrap/src/parse/parser.h
187 re2c_BOOT_DOC = bootstrap/doc/re2c.1
188 re2c_BOOT_HELP = bootstrap/src/msg/help.cc
189 re2c_BOOT = \
190         $(re2c_BOOT_DOC) \
191         $(re2c_BOOT_HELP) \
192         $(re2c_BOOT_PARSER) \
193         $(re2c_BOOT_PARSER_HDR) \
194         bootstrap/src/parse/lex.cc \
195         bootstrap/src/parse/lex.h \
196         bootstrap/src/parse/lex_conf.cc \
197         bootstrap/src/options/parse_opts.cc \
198         bootstrap/src/msg/ver_to_vernum.cc
199
200 # custom sources
201 re2c_CUSTOM_PARSER = src/parse/parser.ypp
202 re2c_CUSTOM_HELP = doc/help.rst
203 re2c_CUSTOM = \
204         $(re2c_CUSTOM_PARSER) \
205         $(re2c_CUSTOM_HELP) \
206         src/parse/lex.re \
207         src/parse/lex_conf.re \
208         src/options/parse_opts.re \
209         src/msg/ver_to_vernum.re
210
211 # docs
212 re2c_SRC_DOC = doc/manpage.rst
213 re2c_SRC_DOC_EXT = \
214         doc/manual/contributors.rst_ \
215         doc/manual/syntax/rules.rst_ \
216         doc/manual/syntax/interface.rst_ \
217         doc/manual/syntax/configurations.rst_ \
218         doc/manual/syntax/named_definitions.rst_ \
219         doc/manual/syntax/regular_expressions.rst_ \
220         doc/manual/warnings/warnings_list.rst \
221         doc/manual/warnings/warnings_general.rst \
222         doc/manual/features/generic_api/generic_api.rst_ \
223         doc/manual/features/conditions/conditions.rst_ \
224         doc/manual/features/state/state.rst_ \
225         doc/manual/features/submatch/submatch.rst_ \
226         doc/manual/features/encodings/encodings.rst_ \
227         doc/manual/options/options_list.rst
228 DOC = doc/re2c.1
229 man_MANS = $(DOC)
230
231 EXTRA_DIST = \
232         $(re2c_BOOT) \
233         $(re2c_CUSTOM) \
234         $(re2c_SRC_DOC_EXT) \
235         CHANGELOG \
236         NO_WARRANTY \
237         README.md \
238         autogen.sh \
239         genhelp.sh \
240         doc/loplas.ps \
241         doc/sample.bib \
242         doc/tdfa/tdfa.pdf \
243         examples \
244         test
245
246 CLEANFILES = \
247         $(re2c_GEN) \
248         $(DOC)
249
250 .re.cc:
251         $(AM_V_at)$(MKDIR_P) $(@D)
252         $(AM_V_GEN) if test -x $(RE2C); \
253         then \
254                 $(top_builddir)/$(RE2C) $(RE2CFLAGS) -o $@ $< && \
255                 cp $(@:cc=[ch]*) $(top_srcdir)/bootstrap/$(@D); \
256         else \
257                 cp $(top_srcdir)/bootstrap/$(@:cc=*) $(@D); \
258         fi
259
260 # cannot update bootstrap with distcheck (it makes srcdir readonly),
261 # so we update bootstrap only on incremental build (if re2c binary exists)
262 .ypp.cc:
263         $(AM_V_at)$(MKDIR_P) $(@D)
264         $(AM_V_GEN) if test $(BISON) = "no"; \
265         then \
266                 cp $(top_srcdir)/bootstrap/$(@:cc=*) $(@D); \
267         else \
268                 $(BISON) --output=$@ --defines=$(@:cc=h) $< && \
269                 if test -x $(RE2C); then \
270                         cp $@ $(@:cc=h) $(top_srcdir)/bootstrap/$(@D); \
271                 fi; \
272         fi
273
274 # lexer depends on bison-generated header
275 $(re2c_GEN_LEX): $(re2c_GEN_PARSER)
276
277 # rebuild all re2c sources using newly built re2c
278 .PHONY: bootstrap
279 bootstrap: all
280         rm $(re2c_GEN)
281         $(MAKE) all
282
283 .PHONY: docs
284 if REBUILD_DOCS
285 docs: $(DOC) $(re2c_GEN_HELP)
286 $(DOC): $(re2c_SRC_DOC) $(re2c_SRC_DOC_EXT)
287         $(AM_V_at)$(MKDIR_P) $(@D)
288         $(RST2MAN) $(top_builddir)/$(re2c_SRC_DOC) > $@
289         cp $@ $(top_srcdir)/$(re2c_BOOT_DOC)
290 $(re2c_GEN_HELP): $(re2c_CUSTOM_HELP)
291         $(AM_V_at)$(MKDIR_P) $(@D)
292         $(RST2MAN) $(top_builddir)/$(re2c_CUSTOM_HELP) > $@.1
293         $(top_srcdir)/genhelp.sh $@.1 $@
294         cp $@ $(top_srcdir)/$(re2c_BOOT_HELP)
295 else
296 docs: $(DOC) $(re2c_GEN_HELP)
297         @echo "Reconfigure to rebuild docs: ./configure --enable-docs"
298 $(DOC): $(re2c_BOOT_DOC)
299         $(AM_V_at)$(MKDIR_P) $(@D)
300         cp $(top_srcdir)/$(re2c_BOOT_DOC) $@
301 $(re2c_GEN_HELP): $(re2c_BOOT_HELP)
302         $(AM_V_at)$(MKDIR_P) $(@D)
303         cp $(top_srcdir)/$(re2c_BOOT_HELP) $@
304 endif
305
306 all-local: docs $(re2c_BOOT_PARSER)
307
308 # tests
309 re2c_TESTSUITE = run_tests.sh
310 .PHONY: tests
311 tests: all $(re2c_TESTSUITE)
312         $(top_builddir)/$(re2c_TESTSUITE)
313 .PHONY: vtests
314 vtests: all $(re2c_TESTSUITE)
315         $(top_builddir)/$(re2c_TESTSUITE) --valgrind
316 .PHONY: wtests
317 wtests: all $(re2c_TESTSUITE)
318         $(top_builddir)/$(re2c_TESTSUITE) --wine -j1
319
320 re2c_test_range_SOURCES = \
321         src/test/range/test-impl.h \
322         src/test/range/test.cc \
323         src/test/range/test.h \
324         src/util/range.cc\
325         src/util/range.h \
326         src/util/static_assert.h
327
328 re2c_test_s_to_n32_unsafe_SOURCES = \
329         src/test/s_to_n32_unsafe/test.cc \
330         src/util/s_to_n32_unsafe.cc
331
332 re2c_test_ver_to_vernum_SOURCES = \
333         src/test/ver_to_vernum/test.cc \
334         $(re2c_GEN_VER_TO_VERNUM)
335
336 check_PROGRAMS = \
337         re2c_test_range \
338         re2c_test_s_to_n32_unsafe \
339         re2c_test_ver_to_vernum
340
341 TESTS = \
342         $(re2c_TESTSUITE) \
343         $(check_PROGRAMS)
344
345 # libraries go here (in included .am files)
346 if WITH_LIBS
347 ACLOCAL_AMFLAGS = -I m4
348 lib_LTLIBRARIES =
349 include $(top_srcdir)/Makefile.lib.am
350 endif
351