80 lines
2.5 KiB
Meson
80 lines
2.5 KiB
Meson
# Files
|
|
demos_src = files()
|
|
external_src = files()
|
|
subdir('source')
|
|
subdir('external')
|
|
|
|
demos_inc = include_directories('source/')
|
|
external_inc = include_directories('external/sources/')
|
|
|
|
# Argumesnts
|
|
not_wasm = host_machine.cpu_family() != 'wasm32'
|
|
versions = ['BindSDL_Image','SDL_208', 'BindBC_Static', 'BindSDL_Static']
|
|
|
|
# Dependencies
|
|
bindbc_loader_dep = dependency('bindbc-loader')
|
|
bindbc_sdl_dep = dependency('bindbc-sdl')
|
|
cimgui_dep = dependency('cimgui')
|
|
sdl2_dep = dependency('SDL2', required: not_wasm) # On wasm delivered by Emscripten
|
|
sdl2_image_dep = dependency('SDL2_image', required: not_wasm)
|
|
|
|
subdir('utils') # Utils library
|
|
|
|
deps = [
|
|
bindbc_loader_dep,
|
|
bindbc_sdl_dep,
|
|
cimgui_dep,
|
|
decs_dep,
|
|
ecs_utils_dep,
|
|
sdl2_dep,
|
|
sdl2_image_dep,
|
|
]
|
|
|
|
if not_wasm
|
|
exe = executable('decs-demos', [demos_src, external_src],
|
|
include_directories : [demos_inc, external_inc],
|
|
d_module_versions : versions,
|
|
link_with : [ecs_lib, ecs_utils_lib],
|
|
dependencies : deps,
|
|
)
|
|
|
|
test('basic-tests', exe)
|
|
else
|
|
versions += ['MM_USE_POSIX_THREADS', 'ECSEmscripten']
|
|
|
|
decs_demos_lib = library('decs-demos', [demos_src, external_src],
|
|
include_directories : [demos_inc, external_inc],
|
|
d_module_versions : versions,
|
|
dependencies : deps,
|
|
)
|
|
cimgui_lib = subproject('cimgui').get_variable('lib')
|
|
sdl2_lib = subproject('bindbc-sdl').get_variable('lib')
|
|
file_packager = find_program('file_packager')
|
|
|
|
# Pack assets
|
|
assets_path = meson.source_root() / 'demos/assets@assets'
|
|
packed_assets = custom_target('packed-assets-web',
|
|
command: [file_packager, 'demos/assets.data', '--preload', assets_path, '--js-output=@OUTPUT@'],
|
|
output: ['assets.js'],
|
|
build_by_default: true,
|
|
)
|
|
|
|
# build single-threaded demos with HTML output
|
|
wasm_web = custom_target('decs-demos-wasm-web',
|
|
command: [emcc, args_wasm, '--pre-js', packed_assets, '-o', '@OUTPUT@', '@INPUT@'],
|
|
input: [sdl2_lib, ecs_lib, decs_demos_lib, ecs_utils_lib, cimgui_lib],
|
|
output: ['ecs_demo.html'],
|
|
build_by_default: true,
|
|
)
|
|
|
|
# build multi-threded demos with JS output. Custom shellfile detects if web browser threads are enabled and select proper JS and WASM.
|
|
wasm_web_mt = custom_target('decs-demos-wasm-web-mt',
|
|
command: [emcc, args_wasm, '-s', 'USE_PTHREADS=1', '--pre-js', packed_assets, '-o', '@OUTPUT@', '@INPUT@'],
|
|
input: [sdl2_lib, ecs_lib, decs_demos_lib, ecs_utils_lib, cimgui_lib],
|
|
output: ['ecs_demo_mt.js'],
|
|
build_by_default: true,
|
|
)
|
|
|
|
summary('decs-demoswasm-index', wasm_web.full_path())
|
|
endif
|
|
|