small3dlib
meson.build
1project(
2 'Magnolia',
3 'c',
4 default_options: [
5 'c_std=c89',
6 'warning_level=3',
7 ],
8)
9
10cc = meson.get_compiler('c')
11math_dep = cc.find_library('m', required: false)
12sdl_dep = dependency('sdl2')
13renderer_backend = get_option('renderer')
14
15sources = [
16 'source/main.c',
17 'source/util.c',
18 'source/client/camera.c',
19 'source/platform/platform.c',
20 'vendor/stb_image_c89.c',
21]
22
23include_dirs = [
24 include_directories('include'),
25]
26
27vendor_inc = [
28 include_directories('vendor'),
29]
30
31mgmath_lib = static_library(
32 'mgmath',
33 'source/mgmath_handmade.c',
34 include_directories: include_dirs + vendor_inc,
35 dependencies: math_dep,
36 c_args: [ '-Wno-pedantic' ],
37 override_options: [ 'c_std=c99' ],
38)
39
40mgmath_dep = declare_dependency(
41 include_directories: include_dirs,
42 link_with: mgmath_lib,
43 dependencies: math_dep,
44)
45
46renderer_c_args = []
47renderer_sources = [
48 'source/renderer/renderer.c',
49]
50if renderer_backend == 'sokol'
51 opengl_dep = dependency('opengl', required: false)
52 if not opengl_dep.found() # fallback (at least for alpine)
53 opengl_dep = dependency('gl')
54 endif
55
56 sokol_gfx_lib = static_library(
57 'sokol_gfx',
58 'vendor/sokol_gfx.c',
59 include_directories: vendor_inc,
60 dependencies: opengl_dep,
61 override_options: [ 'c_std=c99' ],
62 )
63
64 renderer_backend_dep = declare_dependency(
65 include_directories: vendor_inc,
66 link_with: sokol_gfx_lib,
67 dependencies: [ opengl_dep, sdl_dep ],
68 )
69 renderer_sources += [ 'source/renderer/renderer_sokol.c' ]
70 renderer_c_args += [ '-DMG_RENDERER_SOKOL' ]
71else
72 renderer_backend_dep = declare_dependency(
73 include_directories: vendor_inc,
74 dependencies: sdl_dep,
75 )
76 renderer_sources += [ 'source/renderer/renderer_small3dlib.c' ]
77 renderer_c_args += [ '-DMG_RENDERER_SMALL3DLIB' ]
78endif
79
80renderer_lib = static_library(
81 'renderer',
82 renderer_sources,
83 include_directories: include_dirs,
84 dependencies: renderer_backend_dep,
85 c_args: renderer_c_args,
86 override_options: [ 'c_std=c99' ],
87)
88
89renderer_dep = declare_dependency(
90 include_directories: include_dirs,
91 link_with: renderer_lib,
92 dependencies: renderer_backend_dep,
93)
94
95deps = [
96 sdl_dep,
97 mgmath_dep,
98 renderer_dep,
99]
100
101executable(
102 'magnolia',
103 sources,
104 include_directories: include_dirs,
105 dependencies: deps,
106 c_args: renderer_c_args,
107)