Improve meson build.

-Add all required packages as wrap dependencies
-Move source lsitnings to separate files
-Proper dependencies declarations
-Set global D compiler arguments
-Add few asserts
-Add test exe
-Other small improvements

Tested with dmd with betterC, demos executable has to be run from 'demos' directory to properly load assets.
This commit is contained in:
mmcomando 2021-02-21 20:44:58 +01:00
parent 00386ed529
commit 66b5807368
16 changed files with 314 additions and 104 deletions

View file

@ -1,42 +1,29 @@
project('DECS', 'd')
src = [
'source/bubel/ecs/atomic.d',
'source/bubel/ecs/attributes.d',
'source/bubel/ecs/block_allocator.d',
'source/bubel/ecs/core.d',
'source/bubel/ecs/entity.d',
'source/bubel/ecs/events.d',
'source/bubel/ecs/hash_map.d',
'source/bubel/ecs/id_manager.d',
'source/bubel/ecs/manager.d',
'source/bubel/ecs/package.d',
'source/bubel/ecs/simple_vector.d',
'source/bubel/ecs/std.d',
'source/bubel/ecs/system.d',
'source/bubel/ecs/traits.d',
'source/bubel/ecs/vector.d'
]
tests_src = [
'tests/tests.d'
]
project('decs', 'd', version : '0.5.0')
# Options
betterC_opt = get_option('betterC')
BuildDemos_opt = get_option('BuildDemos')
LTO_otp = get_option('LTO')
comp = meson.get_compiler('d')
summary('betterC enabled', betterC_opt)
summary('build demos', BuildDemos_opt)
summary('LTO enabled', LTO_otp)
comp_id = comp.get_id()
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 = []
if comp_id == 'gcc'
args += '-pthread'
link_args += '-pthread'
endif
comp = meson.get_compiler('d')
comp_id = comp.get_id()
if LTO_otp
if comp_id == 'gcc'
@ -46,7 +33,7 @@ if LTO_otp
args += '-flto=thin'
link_args += '-flto=thin'
else
message('LTO don\'t work with DMD')
assert(false, 'Compiler "@0@" doesn\'t support LTO'.format(comp_id))
endif
endif
@ -60,16 +47,27 @@ if betterC_opt
endif
endif
inc = include_directories('source/')
tests_inc = include_directories('source/')
add_global_arguments(args, language : 'd')
add_global_link_arguments(link_args, language : 'd')
ecs_lib = library('ecs', src, include_directories : [tests_inc, inc], d_args: args, link_args: link_args)
# Dependencies
threads_dep = dependency('threads')
executable('tests', tests_src, include_directories : [tests_inc, inc], d_args: args, link_args: link_args, link_with: ecs_lib)
ecs_lib = library('decs',
src,
include_directories : [inc],
)
bubel_ecs_dep = declare_dependency(include_directories : [inc], link_with : ecs_lib)
decs_dep = declare_dependency(
include_directories : [inc],
link_with : ecs_lib,
dependencies : threads_dep,
)
# Tests
subdir('tests')
# Demos
if BuildDemos_opt
subdir('demos/utils')
subdir('demos')
endif