OpenAssetIO
OpenAssetIO copied to clipboard
Support external customisation of top-level namespace
What
Support build system customisable top-level namespace(s) of all OpenAssetIO symbols.
Why
There are use cases where multiple (incompatible) copies of OpenAssetIO may coexist in a single application process.
For example, an OpenAssetIO Host application may have its own plugin system, and an application-specific plugin may wish to (privately) make use of a custom build of OpenAssetIO as well as the version exposed by the host application.
Acceptance Criteria
Delete as appropriate based on requirements gathering:
- Expose the existing
inline namespacemacroOPENASSETIO_CORE_ABI_VERSIONas a CMake cache variable. - Add a new
inline namespacewrapper around all symbols, and expose as a new CMake cache variable. - Add a CMake cache variable to enable renaming of the top-level
namespace openassetio. - Encode the customisable namespace(s) in the file names of the binary shared libraries.
- Mirror the customisable namespace(s) in Python (see Python namespace packages)
Notes
Needs requirements gathering to narrow the focus.
We can and probably should endeavour to do this without a break.