-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmeson.build
76 lines (62 loc) · 2.51 KB
/
meson.build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
project('reach', 'c', 'cpp')
cmake = import('cmake')
# shader
shader_make = find_program('ShaderMake', dirs : [join_paths(meson.current_source_dir(), 'tools/ShaderMake')], required : true)
shader_make_target = custom_target(
'shader_make',
build_always: true,
output : ['unlit_main_ps.dxbc', 'unlit_main_vs.dxbc', 'immediate_main_ps.dxbc', 'immediate_main_vs.dxbc'],
command : [shader_make, '--compiler', '@CURRENT_SOURCE_DIR@/tools/ShaderMake/fxc.exe', '-c', '@CURRENT_SOURCE_DIR@/src/shader/shader.cfg', '-o', '@BUILD_ROOT@', '--header', '-p', 'DXBC'])
# main executable
nvrhi = cmake.subproject('nvrhi')
deps = [
cmake.subproject('expected').dependency('expected'),
cmake.subproject('GSL').dependency('GSL'),
cmake.subproject('spdlog').dependency('spdlog'),
cmake.subproject('concurrentqueue').dependency('concurrentqueue'),
cmake.subproject('glm').dependency('glm'),
cmake.subproject('entt').dependency('EnTT'),
nvrhi.dependency('nvrhi'),
nvrhi.dependency('nvrhi_d3d11'),
subproject('cgltf').get_variable('cgltf_dep'),
subproject('rjm').get_variable('rjm_dep'),
subproject('JoltPhysics').get_variable('jolt_dep')
]
# if not meson.is_cross_build()
deps += cmake.subproject('glfw').dependency('glfw')
# endif
if build_machine.system() == 'linux'
deps += dependency('gl')
elif build_machine.system() == 'windows'
cpp = meson.get_compiler('cpp')
deps += cpp.find_library('d3d11')
deps += cpp.find_library('dxguid')
endif
src = [
'src/main.cpp',
'src/impl.cpp',
'src/app.cpp',
'src/world.cpp',
'src/manager/input_manager.cpp',
'src/manager/window_manager.cpp',
'src/manager/physics_manager.cpp',
'src/manager/device_manager.cpp',
'src/manager/material_manager.cpp',
'src/manager/model_manager.cpp',
'src/manager/ui_manager.cpp',
'src/systems/transform_system.cpp',
'src/systems/render_system.cpp',
'src/systems/player_system.cpp',
'src/systems/terrain_system.cpp'
]
reach_link_args = []
# if meson.is_cross_build()
# reach_link_args += ['-sUSE_GLFW=3', '-sFULL_ES3']
# endif
executable('reach',
src + shader_make_target,
dependencies: deps,
include_directories: ['src/'],
override_options : ['cpp_std=c++20', 'cpp_eh=none', 'cpp_rtti=false', 'werror=true', 'warning_level=3'],
cpp_args : ['-D_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING', '-D_HAS_EXCEPTIONS=0', '-DGLFW_INCLUDE_NONE', '-DGLM_ENABLE_EXPERIMENTAL', '-DSPDLOG_NO_EXCEPTIONS', '-DENTT_NOEXCEPTION'],
link_args : reach_link_args)