bubel-ecs/meson.build
2021-03-13 15:04:42 +01:00

79 lines
2.1 KiB
Meson

project('decs', 'd', version : '0.5.0')
# Options
betterC_opt = get_option('betterC')
BuildDemos_opt = get_option('BuildDemos')
LTO_otp = get_option('LTO')
summary('betterC enabled', betterC_opt)
summary('build demos', BuildDemos_opt)
summary('LTO enabled', LTO_otp)
meson_minimum_version = '>=0.57.1'
assert(meson.version().version_compare(meson_minimum_version), 'Newer verson of meson required, current version: @0@, required: @1@'.format(meson.version(), meson_minimum_version))
# Files
src = files()
subdir('source')
inc = include_directories('source/')
# Arguments
args = []
link_args = []
comp = meson.get_compiler('d')
comp_id = comp.get_id()
if LTO_otp
if comp_id == 'gcc'
args += '-flto'
link_args += '-flto'
elif comp_id == 'llvm'
args += '-flto=thin'
link_args += '-flto=thin'
else
assert(false, 'Compiler "@0@" doesn\'t support LTO'.format(comp_id))
endif
endif
if betterC_opt
if comp_id == 'gcc'
args += ['-fno-druntime']
link_args += ['-fno-druntime']
else
args += '-betterC'
link_args += '-betterC'
endif
endif
add_global_arguments(args, language : 'd')
add_global_link_arguments(link_args, language : 'd')
if host_machine.cpu_family() == 'wasm32'
add_global_arguments('--output-bc', language : 'd') # Adding it in cross files breaks linker detection
emcc = find_program('emcc')
args_wasm = ['-O3', '-s', 'FORCE_FILESYSTEM=1', '-s', 'USE_SDL=2', '-s', 'USE_SDL_IMAGE=2', '-s', 'SDL2_IMAGE_FORMATS=["png"]', '-s', 'ERROR_ON_UNDEFINED_SYMBOLS=0', '-s', 'ALLOW_MEMORY_GROWTH=1', '-s', 'WASM_MEM_MAX=1024MB', '-s', 'MALLOC=dlmalloc', '-s', 'WASM=1', '--shell-file', '../demos/emscripten_multi_shell.html', '-s', 'DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1']
endif
# Dependencies
threads_dep = dependency('threads')
ecs_lib = library('decs', src,
include_directories : [inc],
)
decs_dep = declare_dependency(
include_directories : [inc],
link_with : ecs_lib,
dependencies : threads_dep,
)
# Tests
subdir('tests')
# Demos
if BuildDemos_opt
subdir('demos')
endif