cc = meson.get_compiler('c')

# Find flex, configure lex generator
flex_cdata = configuration_data()

flex_min_version='2.5.31'
flex = find_program('flex', 'win_flex')

flexversion_res = run_command([flex, '--version'])
if flexversion_res.returncode() != 0
  error('Could not get flex version (@0@)'.format(flexversion_res.stderr()))
endif

flexversion = flexversion_res.stdout().split('\n')[0].split(' ')[1].strip()
if flexversion.version_compare('<' + flex_min_version)
  error('flex version @0@ >= @1@: NO'.format(flexversion, flex_min_version))
else
  message('flex version @0@ >= @1@: YES'.format(flexversion, flex_min_version))
endif

flex_cdata.set('FLEX', flex.path())
if cc.get_id() == 'msvc'
  flex_cdata.set('FLEX_ARGS', '--nounistd')
else
  flex_cdata.set('FLEX_ARGS', '')
endif

gen_lex = configure_file(input : 'gen_lex.py.in',
  output : 'gen_lex.py',
  configuration : flex_cdata)

# Find bison, configure grammar generator
bison_cdata = configuration_data()

bison_min_version='2.4'
bison = find_program('bison', 'win_bison')

bversion_res = run_command([bison, '--version'])
if bversion_res.returncode() != 0
  error('Could not get bison version (@0@)'.format(bversion_res.stderr()))
endif

bversion = bversion_res.stdout().split('\n')[0].split(' ')[-1].strip()
if bversion.version_compare('<' + bison_min_version)
  error('bison version @0@ >= @1@: NO'.format(bversion, bison_min_version))
else
  message('bison version @0@ >= @1@: YES'.format(bversion, bison_min_version))
endif



bison_cdata.set('BISON', bison.path())
bison_cdata.set('BISON_ARGS', '')

gen_grammar = configure_file(input : 'gen_grammar.py.in',
  output : 'gen_grammar.py',
  configuration : bison_cdata)

# Custom targets
parser = custom_target('parselex',
  input : 'parse.l',
  output : ['lex.priv_gst_parse_yy.c', 'parse_lex.h'],
  command : [python3, gen_lex, '@OUTPUT0@', '@OUTPUT1@', '@INPUT@', 'DUMMY']
)

grammar = custom_target('parsegrammar',
  input : 'grammar.y',
  output : ['grammar.tab.c', 'grammar.tab.h'],
  command : [python3, gen_grammar, '@OUTPUT0@', '@OUTPUT1@', '@INPUT@'],
  depends : [parser],
)
