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)
|
_run_cook(dependency)
|
||||||
return dependency.cook_result
|
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
|
module_root = env.Dir('#/private').abspath
|
||||||
try:
|
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
|
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):
|
def _module(env: Environment, file: str):
|
||||||
folder = _normalize_module_path(env, env.File(file).dir.abspath)
|
folder = _normalize_module_path(env, env.File(file).dir.abspath)
|
||||||
dirname = os.path.basename(folder)
|
if folder is not None: # only include modules inside the source tree
|
||||||
env.Append(SPP_MODULES = {folder: _Module(
|
dirname = os.path.basename(folder)
|
||||||
name=dirname,
|
env.Append(SPP_MODULES = {folder: _Module(
|
||||||
folder=folder,
|
name=dirname,
|
||||||
description='',
|
folder=folder,
|
||||||
cxx_namespace=dirname
|
description='',
|
||||||
)})
|
cxx_namespace=dirname
|
||||||
|
)})
|
||||||
return SConscript(file, exports = 'env', variant_dir = env['VARIANT_DIR'], src_dir = '.')
|
return SConscript(file, exports = 'env', variant_dir = env['VARIANT_DIR'], src_dir = '.')
|
||||||
|
|
||||||
def _module_config(env: Environment, **kwargs) -> None:
|
def _module_config(env: Environment, **kwargs) -> None:
|
||||||
@ -302,8 +306,7 @@ def _try_merge_dicts(dictA: dict, dictB: dict) -> 'dict|None':
|
|||||||
result[key] = mergedValue
|
result[key] = mergedValue
|
||||||
elif valueA != valueB:
|
elif valueA != valueB:
|
||||||
return None
|
return None
|
||||||
else:
|
result[key] = valueA
|
||||||
result[key] = valueA
|
|
||||||
for key, valueB in dictB.items():
|
for key, valueB in dictB.items():
|
||||||
if key not in result:
|
if key not in result:
|
||||||
result[key] = valueB
|
result[key] = valueB
|
||||||
@ -459,11 +462,12 @@ def _wrap_builder(builder, target_type: TargetType):
|
|||||||
target.kwargs = kwargs
|
target.kwargs = kwargs
|
||||||
target.dependencies = target_dependencies
|
target.dependencies = target_dependencies
|
||||||
module_folder = _normalize_module_path(env, env.Dir('.').abspath)
|
module_folder = _normalize_module_path(env, env.Dir('.').abspath)
|
||||||
module = env['SPP_MODULES'].get(module_folder)
|
if module_folder is not None:
|
||||||
if module is None:
|
module = env['SPP_MODULES'].get(module_folder)
|
||||||
env.Warn(f'No module config found for target {target.name} at {module_folder}')
|
if module is None:
|
||||||
else:
|
env.Warn(f'No module config found for target {target.name} at {module_folder}')
|
||||||
target.module = module
|
else:
|
||||||
|
target.module = module
|
||||||
env.Append(SPP_TARGETS = [target])
|
env.Append(SPP_TARGETS = [target])
|
||||||
if not target.dependencies:
|
if not target.dependencies:
|
||||||
_build_target(target)
|
_build_target(target)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user