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
|
source_file = try_source_file
|
||||||
break
|
break
|
||||||
if not source_file:
|
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)
|
spec = importlib.util.spec_from_file_location(recipe_name, source_file)
|
||||||
recipe = importlib.util.module_from_spec(spec)
|
recipe = importlib.util.module_from_spec(spec)
|
||||||
recipe.env = env
|
recipe.env = env
|
||||||
@ -332,6 +332,14 @@ def _wrap_builder(builder, target_type: TargetType):
|
|||||||
def _wrapped(env, dependencies = {}, *args, **kwargs):
|
def _wrapped(env, dependencies = {}, *args, **kwargs):
|
||||||
target_dependencies = []
|
target_dependencies = []
|
||||||
for name, version_spec in dependencies.items():
|
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)))
|
target_dependencies.append(_add_dependency(env, name, _parse_version_spec(version_spec)))
|
||||||
|
|
||||||
if 'CPPPATH' not in kwargs:
|
if 'CPPPATH' not in kwargs:
|
||||||
@ -360,7 +368,7 @@ def _wrap_builder(builder, target_type: TargetType):
|
|||||||
else:
|
else:
|
||||||
trgt = _target_entry(kwargs.get('target'))
|
trgt = _target_entry(kwargs.get('target'))
|
||||||
if trgt is not None:
|
if trgt is not None:
|
||||||
target.name = str(_target_entry(kwargs['target']).name)
|
target.name = str(trgt.name)
|
||||||
else:
|
else:
|
||||||
target.name = 'Unknown target'
|
target.name = 'Unknown target'
|
||||||
target.target_type = target_type
|
target.target_type = target_type
|
||||||
@ -451,6 +459,12 @@ def _finalize(env: Environment):
|
|||||||
dependency = dependency.target
|
dependency = dependency.target
|
||||||
env.Depends(dependant, dependency)
|
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:
|
def _get_fallback_cache_dir() -> str:
|
||||||
return Dir('#cache').abspath
|
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(_wrap_builder(env.UnitySharedLibrary, TargetType.LIBRARY), 'UnitySharedLibrary')
|
||||||
env.AddMethod(_module, 'Module')
|
env.AddMethod(_module, 'Module')
|
||||||
env.AddMethod(_finalize, 'Finalize')
|
env.AddMethod(_finalize, 'Finalize')
|
||||||
|
env.AddMethod(_find_target, 'FindTarget')
|
||||||
|
|
||||||
if hasattr(env, 'Gch'):
|
if hasattr(env, 'Gch'):
|
||||||
env.AddMethod(_wrap_builder(env.Gch), 'Gch')
|
env.AddMethod(_wrap_builder(env.Gch), 'Gch')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user