-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.
73 lines
1.5 KiB
Meson
73 lines
1.5 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')
|
|
|
|
# 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
|