diff --git a/python/dune/perftool/file.py b/python/dune/perftool/file.py index d1b566595abb175dfbfa75867d94149ce235c4f1..187f32dbe24f4d00cf6b76581e7b55434298d236 100644 --- a/python/dune/perftool/file.py +++ b/python/dune/perftool/file.py @@ -59,6 +59,11 @@ def generate_file(filename, tag, content, headerguard=True): f.write(line) f.write('\n\n') + # Add end of file code + for eof in retrieve_cache_items('{} and end_of_file'.format(tag)): + for line in eof: + f.write(line) + # Close headerguard if headerguard: f.write("\n\n#endif //{}\n".format(macro)) diff --git a/python/dune/perftool/generation/__init__.py b/python/dune/perftool/generation/__init__.py index c819772e874a6264a05276873d7ff553fb41188b..c8c085c178d7dc2224d1efd1d76efaacf9da5259 100644 --- a/python/dune/perftool/generation/__init__.py +++ b/python/dune/perftool/generation/__init__.py @@ -22,6 +22,7 @@ from dune.perftool.generation.cpp import (base_class, class_member, constructor_parameter, dump_accumulate_timer, + end_of_file, include_file, initializer_list, pre_include, diff --git a/python/dune/perftool/generation/cpp.py b/python/dune/perftool/generation/cpp.py index 57dd91c850779284f875df204cfc21414f9ae592..0db90171a584a2237314fbf399e89656c7154a21 100644 --- a/python/dune/perftool/generation/cpp.py +++ b/python/dune/perftool/generation/cpp.py @@ -12,6 +12,7 @@ import cgen preamble = generator_factory(item_tags=("preamble",), counted=True, context_tags="kernel") pre_include = generator_factory(item_tags=("file", "pre_include"), context_tags=("filetag",), no_deco=True) post_include = generator_factory(item_tags=("file", "post_include"), context_tags=("filetag",), no_deco=True) +end_of_file = generator_factory(item_tags=("file", "end_of_file"), context_tags=("filetag",), no_deco=True) class_member = generator_factory(item_tags=("member",), context_tags=("classtag",), on_store=lambda m: ClassMember(m), counted=True) template_parameter = generator_factory(item_tags=("template_param",), context_tags=("classtag",), counted=True) class_basename = generator_factory(item_tags=("basename",), context_tags=("classtag",)) diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index 90b320db0cfb13fabfc2ab31f7389042145ea46e..fcbeadc21fc4dfa7a8f4d06029eb3c938de50b61 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -12,6 +12,7 @@ from dune.perftool.generation import (backend, constructor_parameter, domain, dump_accumulate_timer, + end_of_file, generator_factory, get_backend, get_global_context_value, @@ -688,6 +689,11 @@ def generate_localoperator_kernels(formdata, data): include_file('dune/pdelab/localoperator/flags.hh', filetag="operatorfile") include_file('dune/pdelab/localoperator/pattern.hh', filetag="operatorfile") + post_include("#pragma GCC diagnostic push", filetag="operatorfile") + post_include("#pragma GCC diagnostic ignored \"-Wsign-compare\"", filetag="operatorfile") + post_include("#pragma GCC diagnostic ignored \"-Wunused-variable\"", filetag="operatorfile") + end_of_file("#pragma GCC diagnostic pop", filetag="operatorfile") + # Trigger this one once early on to assure that template # parameters are set in the right order localoperator_basename(formdata, data)