Skip to content
Snippets Groups Projects
Unverified Commit 08c037de authored by Sam Yates's avatar Sam Yates Committed by GitHub
Browse files

Fix ODR violation from geneated mechanisms. (#1220)

* Put generated mechanisms for each built-in catalogue in their own namespace.
parent ff1c06d8
No related branches found
No related tags found
No related merge requests found
......@@ -20,12 +20,12 @@ build_modules(
SOURCE_DIR "${bbp_mod_srcdir}"
DEST_DIR "${mech_dir}"
${external_modcc}
MODCC_FLAGS -t cpu -t gpu ${ARB_MODCC_FLAGS}
MODCC_FLAGS -t cpu -t gpu ${ARB_MODCC_FLAGS} -N arb::bbp_catalogue
GENERATES .hpp _cpu.cpp _gpu.cpp _gpu.cu
TARGET build_catalogue_bbp_mods)
set(bbp_catalogue_source ${CMAKE_CURRENT_BINARY_DIR}/bbp_catalogue.cpp)
set(bbp_catalogue_options -A arbor -I ${mech_dir} -o ${bbp_catalogue_source} -B multicore -C bbp)
set(bbp_catalogue_options -A arbor -I ${mech_dir} -o ${bbp_catalogue_source} -B multicore -C bbp -N arb::bbp_catalogue)
if(ARB_WITH_GPU)
list(APPEND bbp_catalogue_options -B gpu)
endif()
......@@ -60,12 +60,12 @@ build_modules(
SOURCE_DIR "${allen_mod_srcdir}"
DEST_DIR "${mech_dir}"
${external_modcc}
MODCC_FLAGS -t cpu -t gpu ${ARB_MODCC_FLAGS}
MODCC_FLAGS -t cpu -t gpu ${ARB_MODCC_FLAGS} -N arb::allen_catalogue
GENERATES .hpp _cpu.cpp _gpu.cpp _gpu.cu
TARGET build_catalogue_allen_mods)
set(allen_catalogue_source ${CMAKE_CURRENT_BINARY_DIR}/allen_catalogue.cpp)
set(allen_catalogue_options -A arbor -I ${mech_dir} -o ${allen_catalogue_source} -B multicore -C allen)
set(allen_catalogue_options -A arbor -I ${mech_dir} -o ${allen_catalogue_source} -B multicore -C allen -N arb::allen_catalogue)
if(ARB_WITH_GPU)
list(APPEND allen_catalogue_options -B gpu)
endif()
......@@ -100,12 +100,12 @@ build_modules(
SOURCE_DIR "${default_mod_srcdir}"
DEST_DIR "${mech_dir}"
${external_modcc}
MODCC_FLAGS -t cpu -t gpu ${ARB_MODCC_FLAGS}
MODCC_FLAGS -t cpu -t gpu ${ARB_MODCC_FLAGS} -N arb::default_catalogue
GENERATES .hpp _cpu.cpp _gpu.cpp _gpu.cu
TARGET build_catalogue_default_mods)
set(default_catalogue_source ${CMAKE_CURRENT_BINARY_DIR}/default_catalogue.cpp)
set(default_catalogue_options -A arbor -I ${mech_dir} -o ${default_catalogue_source} -B multicore -C default)
set(default_catalogue_options -A arbor -I ${mech_dir} -o ${default_catalogue_source} -B multicore -C default -N arb::default_catalogue)
if(ARB_WITH_GPU)
list(APPEND default_catalogue_options -B gpu)
endif()
......
......@@ -62,6 +62,14 @@ def parse_arguments():
metavar = 'BACKEND',
help = 'register implementations for back-end %(metavar)s')
group.add_argument(
'-N', '--namespace',
default = [],
action = 'append',
dest = 'namespaces',
metavar = 'NAMESPACE',
help = 'add %(metavar)s to list of implicitly included namespaces')
group.add_argument(
'-C', '--catalogue',
default = 'default',
......@@ -83,7 +91,7 @@ def parse_arguments():
return vars(parser.parse_args())
def generate(catalogue, modpfx='', arbpfx='', modules=[], backends=[], **rest):
def generate(catalogue, modpfx='', arbpfx='', modules=[], backends=[], namespaces=[], **rest):
src = string.Template(\
r'''// Automatically generated by:
// $cmdline
......@@ -91,6 +99,7 @@ r'''// Automatically generated by:
#include <${arbpfx}mechcat.hpp>
$backend_includes
$module_includes
$using_namespace
namespace arb {
......@@ -119,6 +128,8 @@ const mechanism_catalogue& global_${catalogue}_catalogue() {
cmdline=" ".join(sys.argv),
arbpfx=arbpfx,
catalogue=catalogue,
using_namespace = indent(0,
['using namespace {};'.format(n) for n in namespaces]),
backend_includes = indent(0,
# ['#include <{}backends/{}/fvm.hpp>'.format(arbpfx, b) for b in backends]),
['#include "backends/{}/fvm.hpp"'.format(b) for b in backends]),
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment