Allow specifying a library from the current project as a dependency.
This commit is contained in:
parent
e3b3fd8f7c
commit
2b05834798
19
SConscript
19
SConscript
@ -60,7 +60,7 @@ def _find_recipe(env: Environment, recipe_name: str):
|
||||
source_file = try_source_file
|
||||
break
|
||||
if not source_file:
|
||||
raise Exception(f'Could not find recipe {recipe_name}.')
|
||||
env.Error(f'Could not find recipe for {recipe_name}.')
|
||||
spec = importlib.util.spec_from_file_location(recipe_name, source_file)
|
||||
recipe = importlib.util.module_from_spec(spec)
|
||||
recipe.env = env
|
||||
@ -332,6 +332,14 @@ def _wrap_builder(builder, target_type: TargetType):
|
||||
def _wrapped(env, dependencies = {}, *args, **kwargs):
|
||||
target_dependencies = []
|
||||
for name, version_spec in dependencies.items():
|
||||
if version_spec == {}:
|
||||
dep_target = _find_target(env, name)
|
||||
if dep_target is not None and dep_target.target_type == TargetType.LIBRARY:
|
||||
if 'LIBS' in kwargs:
|
||||
kwargs['LIBS'].append(dep_target)
|
||||
else:
|
||||
kwargs['LIBS'] = [dep_target]
|
||||
continue
|
||||
target_dependencies.append(_add_dependency(env, name, _parse_version_spec(version_spec)))
|
||||
|
||||
if 'CPPPATH' not in kwargs:
|
||||
@ -360,7 +368,7 @@ def _wrap_builder(builder, target_type: TargetType):
|
||||
else:
|
||||
trgt = _target_entry(kwargs.get('target'))
|
||||
if trgt is not None:
|
||||
target.name = str(_target_entry(kwargs['target']).name)
|
||||
target.name = str(trgt.name)
|
||||
else:
|
||||
target.name = 'Unknown target'
|
||||
target.target_type = target_type
|
||||
@ -451,6 +459,12 @@ def _finalize(env: Environment):
|
||||
dependency = dependency.target
|
||||
env.Depends(dependant, dependency)
|
||||
|
||||
def _find_target(env: Environment, target_name: str) -> '_Target|None':
|
||||
for target in env['SPP_TARGETS']:
|
||||
if target.name == target_name:
|
||||
return target
|
||||
return None
|
||||
|
||||
def _get_fallback_cache_dir() -> str:
|
||||
return Dir('#cache').abspath
|
||||
|
||||
@ -893,6 +907,7 @@ env.AddMethod(_wrap_builder(env.UnityStaticLibrary, TargetType.LIBRARY), 'UnityS
|
||||
env.AddMethod(_wrap_builder(env.UnitySharedLibrary, TargetType.LIBRARY), 'UnitySharedLibrary')
|
||||
env.AddMethod(_module, 'Module')
|
||||
env.AddMethod(_finalize, 'Finalize')
|
||||
env.AddMethod(_find_target, 'FindTarget')
|
||||
|
||||
if hasattr(env, 'Gch'):
|
||||
env.AddMethod(_wrap_builder(env.Gch), 'Gch')
|
||||
|
Loading…
x
Reference in New Issue
Block a user