Skip to content
Snippets Groups Projects
Select Git revision
  • 4f20b1146e87d7aa1b6961108677d5d288972e2c
  • master default protected
  • pac_composite_target_mce
  • ramsey_k_order
  • 4.6
  • occbin
  • uop
  • rework_pac
  • aux_vars_fix
  • created_preprocessor_repo
10 results

WarningConsolidation.cc

Blame
  • Forked from Dynare / preprocessor
    Source project has a limited visibility.
    meson.build 3.16 KiB
    boost_dep = dependency('boost')
    
    ## Flex stuff
    flex_exe = find_program('flex')
    # The -Ca flag comes from hitting a hard-coded size limit.
    # Partial explanation: https://www.owlfolio.org/possibly-useful/flex-input-scanner-rules-are-too-complicated
    # There is a Debian bug report about this: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=642040
    flex_gen = generator(flex_exe, output : '@BASENAME@.cc',
                         arguments : ['-Ca', '-o', '@OUTPUT@', '@INPUT@'])
    flex_src = flex_gen.process('macro/Tokenizer.ll', 'DynareFlex.ll')
    # If FlexLexer.h is not found by the compiler, copy it to the build directory
    # (adding an include directory could create problems for cross-compilation, because
    # flex is typically provided by the system of the build machine)
    if not cpp_compiler.has_header('FlexLexer.h')
      message('FlexLexer.h cannot be found by the compiler, it will be manually copied to the build directory')
      fs = import('fs')
      flexlexer_h = fs.copyfile(fs.parent(fs.parent(flex_exe.full_path())) / 'include' / 'FlexLexer.h', 'FlexLexer.h')
    else
      flexlexer_h = []
    endif
    
    ## Bison stuff
    bison_exe = find_program('bison')
    # By convention, all our Bison source files define the api.location.file variable
    # so that the generated location file follows the @BASENAME@Location.hh pattern
    bison_gen = generator(bison_exe, output : ['@BASENAME@.cc', '@BASENAME@.hh', '@BASENAME@Location.hh'],
                          arguments : ['-W', '-o', '@OUTPUT0@', '@INPUT@'])
    bison_src = bison_gen.process('macro/Parser.yy', 'DynareBison.yy')
    
    preprocessor_incdir = include_directories('.', 'macro')
    
    preprocessor_src = [ 'ComputingTasks.cc',
    	             'EquationTags.cc',
    	             'ModelTree.cc',
    	             'StaticModel.cc',
    	             'DynamicModel.cc',
    	             'NumericalConstants.cc',
    	             'NumericalInitialization.cc',
    	             'Shocks.cc',
    	             'SymbolTable.cc',
    	             'SymbolList.cc',
    	             'ParsingDriver.cc',
    	             'DataTree.cc',
    	             'ModFile.cc',
    	             'Configuration.cc',
    	             'Statement.cc',
    	             'ExprNode.cc',
    	             'VariableDependencyGraph.cc',
    	             'DynareMain.cc',
    	             'MacroExpandModFile.cc',
    	             'Bytecode.cc',
    	             'ExternalFunctionsTable.cc',
    	             'ModelEquationBlock.cc',
    	             'WarningConsolidation.cc',
    	             'SubModel.cc',
                         'macro/Driver.cc',
    	             'macro/Environment.cc',
    	             'macro/Expressions.cc',
    	             'macro/Directives.cc' ]
    
    if get_option('prefer_static')
      preprocessor_link_args = [ '-static-libgcc', '-static-libstdc++' ]
      if host_machine.system() == 'windows'
        # See comment in rules for MEX files
        preprocessor_link_args += [ '-Wl,-Bstatic', '-lssp', '-Wl,-Bdynamic',
                                    '-Wl,-Bstatic,--whole-archive', '-lwinpthread', '-Wl,-Bdynamic,--no-whole-archive' ]
      endif
    else
      preprocessor_link_args = []
    endif
    
    executable('dynare-preprocessor', preprocessor_src, flex_src, flexlexer_h, bison_src,
               include_directories : preprocessor_incdir, dependencies : boost_dep,
               link_args : preprocessor_link_args,
               install : true)