bubel-ecs/demos/meson.build

68 lines
2 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
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,
)
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: ['game.html'],
build_by_default: true,
)
summary('decs-demoswasm-index', wasm_web.full_path())
endif