1 # CSV Parser build configuration
4 bison = find_program('bison', 'yacc', required: true)
5 flex = find_program('flex', required: true)
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'])
12 flex_gen = generator(flex,
13 output: ['@BASENAME@.yy.c', '@BASENAME@.lex.h'],
14 arguments: ['--header-file=@OUTPUT1@', '-o', '@OUTPUT0@', '@INPUT@'])
16 # Generate parser and lexer files
17 csv_parser_files = bison_gen.process('csv.y')
18 csv_lexer_files = flex_gen.process('csv.l')
20 # Check for yacc/flex libraries that may be needed for linking
21 cc = meson.get_compiler('c')
22 yacc_lib = cc.find_library('y', required: false)
23 flex_lib = cc.find_library('fl', required: false)
25 # Collect dependencies
28 csv_parser_deps += yacc_lib
31 csv_parser_deps += flex_lib
34 # Build the CSV parser executable
35 csv_parser = executable('csv_parser',
36 sources: [csv_parser_files, csv_lexer_files, 'csv_driver.c', 'csv_parser.c'],
37 dependencies: csv_parser_deps,
38 c_args: ['-D_XOPEN_SOURCE=600'],