Provide additional include paths for custom modules

Allows to use a module as a library, where an include path may start
with module's name itself.
This commit is contained in:
Andrii Doroshenko (Xrayez) 2021-03-08 18:02:12 +02:00
parent 45c6d3c576
commit f712d68ceb

View File

@ -242,13 +242,16 @@ for path in module_search_paths:
# Built-in modules don't have nested modules, # Built-in modules don't have nested modules,
# so save the time it takes to parse directories. # so save the time it takes to parse directories.
modules = methods.detect_modules(path, recursive=False) modules = methods.detect_modules(path, recursive=False)
else: # External. else: # Custom.
modules = methods.detect_modules(path, env_base["custom_modules_recursive"]) modules = methods.detect_modules(path, env_base["custom_modules_recursive"])
# Provide default include path for both the custom module search `path`
# and the base directory containing custom modules, as it may be different
# from the built-in "modules" name (e.g. "custom_modules/summator/summator.h"),
# so it can be referenced simply as `#include "summator/summator.h"`
# independently of where a module is located on user's filesystem.
env_base.Prepend(CPPPATH=[path, os.path.dirname(path)])
# Note: custom modules can override built-in ones. # Note: custom modules can override built-in ones.
modules_detected.update(modules) modules_detected.update(modules)
include_path = os.path.dirname(path)
if include_path:
env_base.Prepend(CPPPATH=[include_path])
# Add module options. # Add module options.
for name, path in modules_detected.items(): for name, path in modules_detected.items():