| # Tests whether fortran sources files created during configuration are properly |
| # scanned for dependency information |
| |
| project('generated', 'fortran', |
| default_options : ['default_library=static']) |
| |
| conf_data = configuration_data() |
| conf_data.set('ONE', 1) |
| conf_data.set('TWO', 2) |
| |
| mod3_f = custom_target( |
| 'mod3.f', |
| input : 'mod3.f90', |
| output : 'mod3.f90', |
| # We need a platform agnostic way to do a copy a file, using a custom_target |
| # and we need to use the @OUTDIR@, not @OUTPUT@ in order to exercise |
| # https://github.com/mesonbuild/meson/issues/9258 |
| command : [ |
| find_program('python', 'python3'), '-c', |
| 'import sys, shutil; shutil.copy(sys.argv[1], sys.argv[2])', |
| '@INPUT@', '@OUTDIR@', |
| ], |
| ) |
| |
| three = library('mod3', mod3_f) |
| |
| templates_basenames = ['mod2', 'mod1'] |
| generated_sources = [] |
| foreach template_basename : templates_basenames |
| infilename = '@0@.fpp'.format(template_basename) |
| outfilename = '@0@.f90'.format(template_basename) |
| outfile = configure_file( |
| input : infilename, output : outfilename, configuration : conf_data) |
| generated_sources += [outfile] |
| endforeach |
| |
| sources = ['prog.f90'] + generated_sources |
| exe = executable('generated', sources, link_with: three) |
| test('generated', exe) |