Added imgui and an option to inject source files into dependant projects.
This commit is contained in:
parent
d15baed4c4
commit
30e7e348c6
@ -30,15 +30,17 @@ def _inject_list(kwargs: dict, dependency: dict, list_name: str) -> None:
|
|||||||
kwargs[list_name] = []
|
kwargs[list_name] = []
|
||||||
kwargs[list_name].extend(dependency[list_name]) # TODO: eliminiate duplicates?
|
kwargs[list_name].extend(dependency[list_name]) # TODO: eliminiate duplicates?
|
||||||
|
|
||||||
def _inject_dependency(dependency, kwargs: dict) -> None:
|
def _inject_dependency(dependency, kwargs: dict, add_sources: bool = True) -> None:
|
||||||
if isinstance(dependency, dict):
|
if isinstance(dependency, dict):
|
||||||
_inject_list(kwargs, dependency, 'CPPPATH')
|
_inject_list(kwargs, dependency, 'CPPPATH')
|
||||||
_inject_list(kwargs, dependency, 'CPPDEFINES')
|
_inject_list(kwargs, dependency, 'CPPDEFINES')
|
||||||
_inject_list(kwargs, dependency, 'LIBPATH')
|
_inject_list(kwargs, dependency, 'LIBPATH')
|
||||||
_inject_list(kwargs, dependency, 'LIBS')
|
_inject_list(kwargs, dependency, 'LIBS')
|
||||||
|
if add_sources and 'ADDITIONAL_SOURCES' in dependency:
|
||||||
|
kwargs['source'].extend(dependency['ADDITIONAL_SOURCES'])
|
||||||
if 'DEPENDENCIES' in dependency:
|
if 'DEPENDENCIES' in dependency:
|
||||||
for inner_dependency in dependency['DEPENDENCIES']:
|
for inner_dependency in dependency['DEPENDENCIES']:
|
||||||
_inject_dependency(inner_dependency, kwargs)
|
_inject_dependency(inner_dependency, kwargs, False)
|
||||||
|
|
||||||
def _rglob(env: Environment, root_path: str, pattern: str, **kwargs):
|
def _rglob(env: Environment, root_path: str, pattern: str, **kwargs):
|
||||||
result_nodes = []
|
result_nodes = []
|
||||||
@ -70,6 +72,7 @@ def _wrap_builder(builder, is_lib: bool = False):
|
|||||||
'CPPDEFINES': kwargs.get('CPPDEFINES', []),
|
'CPPDEFINES': kwargs.get('CPPDEFINES', []),
|
||||||
'LIBPATH': kwargs.get('LIBPATH', []),
|
'LIBPATH': kwargs.get('LIBPATH', []),
|
||||||
'LIBS': result + kwargs.get('LIBS', []),
|
'LIBS': result + kwargs.get('LIBS', []),
|
||||||
|
'ADDITIONAL_SOURCES': kwargs.get('add_source', []),
|
||||||
'_target': result
|
'_target': result
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
import os
|
||||||
from SCons.Script import *
|
from SCons.Script import *
|
||||||
|
|
||||||
def cook(env: Environment, git_ref: str = "main") -> dict:
|
def cook(env: Environment, git_ref: str = "main") -> dict:
|
||||||
@ -10,7 +11,7 @@ def cook(env: Environment, git_ref: str = "main") -> dict:
|
|||||||
}.get(env['BUILD_TYPE'], 'SDL2')
|
}.get(env['BUILD_TYPE'], 'SDL2')
|
||||||
return {
|
return {
|
||||||
'LIBPATH': build_result['LIBPATH'],
|
'LIBPATH': build_result['LIBPATH'],
|
||||||
'CPPPATH': build_result['CPPPATH'],
|
'CPPPATH': [os.path.join(build_result['install_dir'], 'include/SDL2')], # SDL is really weird about include paths ...
|
||||||
'LIBS': [lib_name]
|
'LIBS': [lib_name]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
30
recipes/imgui/recipe.py
Normal file
30
recipes/imgui/recipe.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
from SCons.Script import *
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
def cook(env: Environment, backends: list = [], git_ref: str = '') -> dict:
|
||||||
|
repo = env.Cook('GitBranch', repo_name = 'imgui', remote_url = 'https://github.com/ocornut/imgui.git', git_ref = git_ref or 'master')
|
||||||
|
|
||||||
|
imgui_source_files = [
|
||||||
|
os.path.join(repo['checkout_root'], 'imgui.cpp'),
|
||||||
|
os.path.join(repo['checkout_root'], 'imgui_draw.cpp'),
|
||||||
|
os.path.join(repo['checkout_root'], 'imgui_tables.cpp'),
|
||||||
|
os.path.join(repo['checkout_root'], 'imgui_widgets.cpp')
|
||||||
|
]
|
||||||
|
|
||||||
|
imgui_add_sources = []
|
||||||
|
backend_sources = {
|
||||||
|
'vulkan': os.path.join(repo['checkout_root'], 'backends/imgui_impl_vulkan.cpp'),
|
||||||
|
'sdl2': os.path.join(repo['checkout_root'], 'backends/imgui_impl_sdl2.cpp')
|
||||||
|
}
|
||||||
|
for backend in backends:
|
||||||
|
imgui_add_sources.append(backend_sources[backend])
|
||||||
|
|
||||||
|
lib_imgui = env.StaticLibrary(
|
||||||
|
CPPPATH = [repo['checkout_root']],
|
||||||
|
CPPDEFINES = ['IMGUI_IMPL_VULKAN_NO_PROTOTYPES=1'],
|
||||||
|
target = env['LIB_DIR'] + '/imgui',
|
||||||
|
source = imgui_source_files,
|
||||||
|
add_source = imgui_add_sources
|
||||||
|
)
|
||||||
|
return lib_imgui
|
Loading…
x
Reference in New Issue
Block a user