]> begriffs open source - sa-parse/blob - src/meson.build
Track error locations
[sa-parse] / src / meson.build
1 # Lisp Parser build configuration
2
3 # Find required tools
4 bison = find_program('bison', 'yacc', required: true)
5 flex = find_program('flex', required: true)
6
7 # Set up generators for bison and flex
8 bison_gen = generator(bison,
9     output: ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
10     arguments: ['-d', '@INPUT@', '--output=@OUTPUT0@', '--defines=@OUTPUT1@', '--warnings=all'])
11
12 flex_gen = generator(flex,
13     output: ['@BASENAME@.yy.c', '@BASENAME@.lex.h'],
14     arguments: ['--header-file=@OUTPUT1@', '-o', '@OUTPUT0@', '@INPUT@'])
15
16 # Generate parser and lexer files
17 lisp_parser_files = bison_gen.process('lisp.y')
18 lisp_lexer_files = flex_gen.process('lisp.l')
19
20 csv_parser_files = bison_gen.process('csv.y')
21 csv_lexer_files = flex_gen.process('csv.l')
22
23 # Check for yacc/flex libraries that may be needed for linking
24 cc = meson.get_compiler('c')
25 yacc_lib = cc.find_library('y', required: false)
26 flex_lib = cc.find_library('fl', required: false)
27
28 # Collect dependencies
29 lisp_parser_deps = []
30 if yacc_lib.found()
31     lisp_parser_deps += yacc_lib
32 endif
33 if flex_lib.found()
34     lisp_parser_deps += flex_lib
35 endif
36
37 # Build the Lisp parser executable
38 lisp_parser = executable('lisp_parser',
39     sources: [lisp_parser_files, lisp_lexer_files, 'lisp_driver.c'],
40     dependencies: lisp_parser_deps,
41     c_args: ['-D_XOPEN_SOURCE=600'],
42     install: false)
43
44 # Build the CSV parser executable
45 csv_parser = executable('csv_parser',
46     sources: [csv_parser_files, csv_lexer_files, 'csv_driver.c', 'csv_parser.c'],
47     dependencies: lisp_parser_deps,
48     c_args: ['-D_XOPEN_SOURCE=600'],
49     install: false)