Third party lcl needs name mangling
One of the third party libraries included with the VTK-m source is lcl (the lightweight cell library). The headers of this header-only library are included in the compiler include paths and simply included by VTK-m headers.
This is problematic if VTK-m is used in conjunction with another software product that also includes its own version of lcl. It opens the possibility of including different, possibly incompatible, versions of the lcl. This can be solved in one of two ways:
-
Mangle the symbols to make the includes in VTK-m unique. This typically means adding or changing the namespace. It also means changing the
#include
path to be slightly unique (e.g.vtkmlcl/lcl.h
instead oflcl/lcl.h
). -
Change the CMake to allow VTK-m to optionally include an external lcl rather than the one included in the thirdparty directory. This allows external software to point multiple products to the same library.
This is needed to satisfy the E4S Community Policies. It is also generally a good practice.