bubel-ecs/meson.build

109 lines
2.2 KiB
Meson

project('decs', 'd', version : '0.1.0')
# Options
betterC_opt = get_option('betterC')
BuildDemos_opt = get_option('BuildDemos')
BuildTests_opt = get_option('BuildTests')
LTO_otp = get_option('LTO')
C_API_opt = get_option('C-API')
summary('betterC enabled', betterC_opt)
summary('build demos', BuildDemos_opt)
summary('build tests', BuildTests_opt)
summary('LTO enabled', LTO_otp)
summary('C-API enabled', C_API_opt)
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/')]
#C API files
if C_API_opt
c_src = files()
subdir('c-api')
inc += include_directories('c-api/')
endif
# 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
if comp_id == 'gcc'
args+='-pthread'
link_args+='-pthread'
endif
add_project_arguments(args, language : 'd')
add_project_link_arguments(link_args, language : 'd')
# 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
if BuildTests_opt
subdir('tests')
executable('d-api-tests',
['tests/tests.d'],
include_directories : [inc],
d_args : args,
link_args : link_args,
dependencies : decs_dep,
)
if C_API_opt
add_languages('c')
executable('c-api-tests',
['c-api/test.c'],
include_directories : [inc],
dependencies : decs_dep,
)
endif
endif
# Demos
if BuildDemos_opt
subdir('demos')
endif