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.

(cherry picked from commit f712d68ceb)
This commit is contained in:
Andrii Doroshenko (Xrayez) 2021-03-08 18:02:12 +02:00 committed by Rémi Verschelde
parent 5a882a659a
commit a33b0c5319
No known key found for this signature in database
GPG key ID: C3336907360768E1

View file

@ -247,13 +247,16 @@ for path in module_search_paths:
# Built-in modules don't have nested modules,
# so save the time it takes to parse directories.
modules = methods.detect_modules(path, recursive=False)
else: # External.
else: # Custom.
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.
modules_detected.update(modules)
include_path = os.path.dirname(path)
if include_path:
env_base.Prepend(CPPPATH=[include_path])
# Add module options
for name, path in modules_detected.items():