diff --git a/src/SConscript b/src/SConscript index fd5b9f9611..18f7d12918 100644 --- a/src/SConscript +++ b/src/SConscript @@ -645,6 +645,8 @@ PySource('m5', 'python/m5/info.py') # Create all of the SimObject param headers and enum headers # +# Generate all of the SimObject param C++ struct header files + def createSimObjectParamStruct(target, source, env): assert len(target) == 1 and len(source) == 1 @@ -655,54 +657,6 @@ def createSimObjectParamStruct(target, source, env): obj.cxx_param_decl(code) code.write(target[0].abspath) -def createSimObjectCxxConfig(is_header): - def body(target, source, env): - assert len(target) == 1 and len(source) == 1 - - name = source[0].get_contents().decode('utf-8') - obj = sim_objects[name] - - code = code_formatter() - obj.cxx_config_param_file(code, is_header) - code.write(target[0].abspath) - return body - -def createEnumStrings(target, source, env): - assert len(target) == 1 and len(source) == 2 - - name = source[0].get_text_contents() - use_python = source[1].read() - obj = all_enums[name] - - code = code_formatter() - obj.cxx_def(code) - if use_python: - obj.pybind_def(code) - code.write(target[0].abspath) - -def createEnumDecls(target, source, env): - assert len(target) == 1 and len(source) == 1 - - name = source[0].get_text_contents() - obj = all_enums[name] - - code = code_formatter() - obj.cxx_decl(code) - code.write(target[0].abspath) - -def createSimObjectWrappers(target, source, env): - name = source[0].get_text_contents() - obj = sim_objects[name] - - code = code_formatter() - # We want to generate a single .cc file which contains most of the - # SimObject autogenerated code to reduce the number of files to compile and - # link. We need to pass in whether python is enabled so that the pybind - # wrappers are only generated when python is enabled - obj.params_create_decl(code, env['USE_PYTHON']) - code.write(target[0].abspath) - -# Generate all of the SimObject param C++ struct header files params_hh_files = [] for name,simobj in sorted(sim_objects.items()): # If this simobject's source changes, we need to regenerate the header. @@ -724,6 +678,18 @@ for name,simobj in sorted(sim_objects.items()): # C++ parameter description files if GetOption('with_cxx_config'): + def createSimObjectCxxConfig(is_header): + def body(target, source, env): + assert len(target) == 1 and len(source) == 1 + + name = source[0].get_contents().decode('utf-8') + obj = sim_objects[name] + + code = code_formatter() + obj.cxx_config_param_file(code, is_header) + code.write(target[0].abspath) + return body + for name,simobj in sorted(sim_objects.items()): py_source = PySource.modules[simobj.__module__] extra_deps = [ py_source.tnode ] @@ -783,6 +749,29 @@ if GetOption('with_cxx_config'): Source(cxx_config_init_cc_file) # Generate all enum header files +def createEnumStrings(target, source, env): + assert len(target) == 1 and len(source) == 2 + + name = source[0].get_text_contents() + use_python = source[1].read() + obj = all_enums[name] + + code = code_formatter() + obj.cxx_def(code) + if use_python: + obj.pybind_def(code) + code.write(target[0].abspath) + +def createEnumDecls(target, source, env): + assert len(target) == 1 and len(source) == 1 + + name = source[0].get_text_contents() + obj = all_enums[name] + + code = code_formatter() + obj.cxx_decl(code) + code.write(target[0].abspath) + for name,enum in sorted(all_enums.items()): py_source = PySource.modules[enum.__module__] extra_deps = [ py_source.tnode ] @@ -799,6 +788,18 @@ for name,enum in sorted(all_enums.items()): env.Depends(hh_file, depends + extra_deps) # Generate SimObject Python bindings and create method wrapper files +def createSimObjectWrappers(target, source, env): + name = source[0].get_text_contents() + obj = sim_objects[name] + + code = code_formatter() + # We want to generate a single .cc file which contains most of the + # SimObject autogenerated code to reduce the number of files to compile and + # link. We need to pass in whether python is enabled so that the pybind + # wrappers are only generated when python is enabled + obj.params_create_decl(code, env['USE_PYTHON']) + code.write(target[0].abspath) + for name,simobj in sorted(sim_objects.items()): py_source = PySource.modules[simobj.__module__] extra_deps = [ py_source.tnode ]