Don't create module configuration for dependencies.
This commit is contained in:
parent
45b4d164d0
commit
9b82fb87c0
38
SConscript
38
SConscript
@ -100,22 +100,26 @@ def _cook(env: Environment, recipe_name: str):
|
||||
_run_cook(dependency)
|
||||
return dependency.cook_result
|
||||
|
||||
def _normalize_module_path(env: Environment, path: str) -> str:
|
||||
def _normalize_module_path(env: Environment, path: str) -> str|None:
|
||||
module_root = env.Dir('#/private').abspath
|
||||
try:
|
||||
return os.path.relpath(path, module_root)
|
||||
relative = os.path.relpath(path, module_root)
|
||||
if relative[:2] == '..':
|
||||
return None
|
||||
return relative
|
||||
except ValueError: # may be thrown on Windows if the module is on a different drive than the project
|
||||
return os.path.normpath(path) # just use the absolute path then
|
||||
return None
|
||||
|
||||
def _module(env: Environment, file: str):
|
||||
folder = _normalize_module_path(env, env.File(file).dir.abspath)
|
||||
dirname = os.path.basename(folder)
|
||||
env.Append(SPP_MODULES = {folder: _Module(
|
||||
name=dirname,
|
||||
folder=folder,
|
||||
description='',
|
||||
cxx_namespace=dirname
|
||||
)})
|
||||
if folder is not None: # only include modules inside the source tree
|
||||
dirname = os.path.basename(folder)
|
||||
env.Append(SPP_MODULES = {folder: _Module(
|
||||
name=dirname,
|
||||
folder=folder,
|
||||
description='',
|
||||
cxx_namespace=dirname
|
||||
)})
|
||||
return SConscript(file, exports = 'env', variant_dir = env['VARIANT_DIR'], src_dir = '.')
|
||||
|
||||
def _module_config(env: Environment, **kwargs) -> None:
|
||||
@ -302,8 +306,7 @@ def _try_merge_dicts(dictA: dict, dictB: dict) -> 'dict|None':
|
||||
result[key] = mergedValue
|
||||
elif valueA != valueB:
|
||||
return None
|
||||
else:
|
||||
result[key] = valueA
|
||||
result[key] = valueA
|
||||
for key, valueB in dictB.items():
|
||||
if key not in result:
|
||||
result[key] = valueB
|
||||
@ -459,11 +462,12 @@ def _wrap_builder(builder, target_type: TargetType):
|
||||
target.kwargs = kwargs
|
||||
target.dependencies = target_dependencies
|
||||
module_folder = _normalize_module_path(env, env.Dir('.').abspath)
|
||||
module = env['SPP_MODULES'].get(module_folder)
|
||||
if module is None:
|
||||
env.Warn(f'No module config found for target {target.name} at {module_folder}')
|
||||
else:
|
||||
target.module = module
|
||||
if module_folder is not None:
|
||||
module = env['SPP_MODULES'].get(module_folder)
|
||||
if module is None:
|
||||
env.Warn(f'No module config found for target {target.name} at {module_folder}')
|
||||
else:
|
||||
target.module = module
|
||||
env.Append(SPP_TARGETS = [target])
|
||||
if not target.dependencies:
|
||||
_build_target(target)
|
||||
|
Loading…
x
Reference in New Issue
Block a user