commit 3fd894c

uint  ·  2026-08-05 02:55:37 +0000 UTC
parents b788836, 4fe2d81
Merge remote-tracking branch 'origin/master' into formatting-and-others

# Conflicts:
#	meson.build
2 files changed,  +148, -119
+138, -109
  1@@ -1,66 +1,108 @@
  2-
  3 project(
  4-	'Magnolia',
  5-	'c',
  6-	default_options: [
  7-		'c_std=c89',
  8-		'warning_level=3',
  9-	],
 10+    'Magnolia',
 11+    'c',
 12+    default_options: [
 13+        'c_std=c89',
 14+        'warning_level=3',
 15+    ],
 16 )
 17 
 18 cc = meson.get_compiler('c')
 19 math_dep = cc.find_library('m', required: false)
 20 zlib_dep = dependency('zlib')
 21-libtls_sp = subproject('libtls-bearssl', default_options: [ 'default_library=static' ])
 22+libtls_sp = subproject('libtls-bearssl', default_options: ['default_library=static'])
 23 tls_dep = libtls_sp.get_variable('libtls_dep')
 24 bearssl_dep = cc.find_library('bearssl')
 25 
 26+requested_renderer = get_option('renderer')
 27+requested_window = get_option('windowing')
 28+
 29+# resolve windowing and renderer combo automatically
 30+sdl_dep = dependency('sdl2', required: false)
 31+opengl_dep = dependency('opengl', required: false)
 32+if not opengl_dep.found()
 33+    opengl_dep = dependency('gl', required: false)
 34+endif
 35 
 36-renderer_backend = get_option('renderer')
 37-window_backend = get_option('windowing')
 38-sdl_dep = dependency('sdl2', required: window_backend == 'sdl' or renderer_backend == 'sokol')
 39+renderer_backend = requested_renderer
 40+window_backend = requested_window
 41+
 42+if renderer_backend == 'auto'
 43+    if window_backend == 'maus'
 44+        renderer_backend = 'small3dlib'
 45+    elif sdl_dep.found() and opengl_dep.found()
 46+        renderer_backend = 'sokol'
 47+    else
 48+        renderer_backend = 'small3dlib'
 49+    endif
 50+endif
 51+
 52+if window_backend == 'auto'
 53+    if renderer_backend == 'sokol'
 54+        window_backend = 'sdl'
 55+    elif sdl_dep.found()
 56+        window_backend = 'sdl'
 57+    else
 58+        window_backend = 'maus'
 59+    endif
 60+endif
 61+
 62+if renderer_backend == 'sokol' and window_backend != 'sdl'
 63+    error('sokol renderer requires -Dwindowing=sdl')
 64+endif
 65+if window_backend == 'sdl' and not sdl_dep.found()
 66+    error('SDL windowing requires the sdl2 dependency')
 67+endif
 68+if renderer_backend == 'sokol' and not opengl_dep.found()
 69+    error(
 70+        'sokol renderer requires an OpenGL development dependency (opengl or gl)',
 71+    )
 72+endif
 73+
 74+message('Selected renderer: ' + renderer_backend)
 75+message('Selected windowing: ' + window_backend)
 76 
 77 sources = [
 78-	'source/main.c',
 79-	'source/mgrandom.c',
 80-	'source/config.c',
 81-	'source/util.c',
 82-	'source/world/block.c',
 83-	'source/world/chunk.c',
 84-	'source/client/camera.c',
 85-	'source/client/player.c',
 86-	'source/client/world.c',
 87-	'source/net/mc_auth.c',
 88-	'source/net/mc_chunk.c',
 89-	'source/net/mc_buffer.c',
 90-	'source/net/mc_client.c',
 91-	'source/net/mc_crypto.c',
 92-	'source/net/packet.c',
 93-	'vendor/stb_image_c89.c',
 94-	'vendor/json.c',
 95+    'source/main.c',
 96+    'source/mgrandom.c',
 97+    'source/config.c',
 98+    'source/util.c',
 99+    'source/world/block.c',
100+    'source/world/chunk.c',
101+    'source/client/camera.c',
102+    'source/client/player.c',
103+    'source/client/world.c',
104+    'source/net/mc_auth.c',
105+    'source/net/mc_chunk.c',
106+    'source/net/mc_buffer.c',
107+    'source/net/mc_client.c',
108+    'source/net/mc_crypto.c',
109+    'source/net/packet.c',
110+    'vendor/stb_image_c89.c',
111+    'vendor/json.c',
112 ]
113 
114 include_dirs = [
115-	include_directories('include', '/usr/local/include'),
116+    include_directories('include', '/usr/local/include'),
117 ]
118 
119 vendor_inc = [
120-	include_directories('vendor'),
121+    include_directories('vendor'),
122 ]
123 
124 mgmath_lib = static_library(
125-	'mgmath',
126-	'source/mgmath_handmade.c',
127-	include_directories: include_dirs + vendor_inc,
128-	dependencies: math_dep,
129-	c_args: [ '-Wno-pedantic' ],
130-	override_options: [ 'c_std=c99' ],
131+    'mgmath',
132+    'source/mgmath_handmade.c',
133+    include_directories: include_dirs + vendor_inc,
134+    dependencies: math_dep,
135+    c_args: ['-Wno-pedantic'],
136+    override_options: ['c_std=c99'],
137 )
138 
139 mgmath_dep = declare_dependency(
140-	include_directories: include_dirs,
141-	link_with: mgmath_lib,
142-	dependencies: math_dep,
143+    include_directories: include_dirs,
144+    link_with: mgmath_lib,
145+    dependencies: math_dep,
146 )
147 
148 renderer_c_args = []
149@@ -68,94 +110,81 @@ platform_c_args = []
150 renderer_sources = []
151 
152 if window_backend == 'sdl'
153-	sources += [ 'source/platform/platform_sdl.c' ]
154-	platform_c_args += [ '-DMG_PLATFORM_SDL' ]
155-	platform_dep = declare_dependency(dependencies: sdl_dep)
156+    sources += ['source/platform/platform_sdl.c']
157+    platform_c_args += ['-DMG_PLATFORM_SDL']
158+    platform_dep = declare_dependency(dependencies: sdl_dep)
159 elif window_backend == 'maus'
160-	if renderer_backend != 'small3dlib'
161-		error('maus windowing requires -Drenderer=small3dlib')
162-	endif
163-	maus_sp = subproject('maus', default_options: [ 'default_library=static' ])
164-	maus_dep = maus_sp.get_variable('maus_dep')
165-	sources += [ 'source/platform/platform_maus.c' ]
166-	platform_c_args += [ '-DMG_PLATFORM_MAUS' ]
167-	platform_dep = maus_dep
168+    if renderer_backend != 'small3dlib'
169+        error('maus windowing requires -Drenderer=small3dlib')
170+    endif
171+    maus_sp = subproject('maus', default_options: ['default_library=static'])
172+    maus_dep = maus_sp.get_variable('maus_dep')
173+    sources += ['source/platform/platform_maus.c']
174+    platform_c_args += ['-DMG_PLATFORM_MAUS']
175+    platform_dep = maus_dep
176 endif
177 
178 if renderer_backend == 'sokol'
179-	opengl_dep = dependency('opengl', required: false)
180-	if not opengl_dep.found() # fallback (at least for alpine)
181-		opengl_dep = dependency('gl')
182-	endif
183-
184-	sokol_gfx_lib = static_library(
185-		'sokol_gfx',
186-		'vendor/sokol_gfx.c',
187-		include_directories: vendor_inc,
188-		dependencies: opengl_dep,
189-		override_options: [ 'c_std=c99' ],
190-	)
191-
192-	renderer_backend_dep = declare_dependency(
193-		include_directories: vendor_inc,
194-		link_with: sokol_gfx_lib,
195-		dependencies: [ opengl_dep, sdl_dep ],
196-	)
197-	renderer_sources += [ 'source/renderer/renderer_sokol.c' ]
198-	renderer_c_args += [ '-DMG_RENDERER_SOKOL' ]
199+    sokol_gfx_lib = static_library(
200+        'sokol_gfx',
201+        'vendor/sokol_gfx.c',
202+        include_directories: vendor_inc,
203+        dependencies: opengl_dep,
204+        override_options: ['c_std=c99'],
205+    )
206+
207+    renderer_backend_dep = declare_dependency(
208+        include_directories: vendor_inc,
209+        link_with: sokol_gfx_lib,
210+        dependencies: [opengl_dep, sdl_dep],
211+    )
212+    renderer_sources += ['source/renderer/renderer_sokol.c']
213+    renderer_c_args += ['-DMG_RENDERER_SOKOL']
214 else
215-	if window_backend == 'maus'
216-		software_window_dep = platform_dep
217-	else
218-		software_window_dep = sdl_dep
219-	endif
220-	renderer_backend_dep = declare_dependency(
221-		include_directories: vendor_inc,
222-		dependencies: software_window_dep,
223-	)
224-	renderer_sources += [ 'source/renderer/renderer_small3dlib.c' ]
225-	renderer_c_args += [ '-DMG_RENDERER_SMALL3DLIB' ]
226+    if window_backend == 'maus'
227+        software_window_dep = platform_dep
228+    else
229+        software_window_dep = sdl_dep
230+    endif
231+    renderer_backend_dep = declare_dependency(
232+        include_directories: vendor_inc,
233+        dependencies: software_window_dep,
234+    )
235+    renderer_sources += ['source/renderer/renderer_small3dlib.c']
236+    renderer_c_args += ['-DMG_RENDERER_SMALL3DLIB']
237 endif
238 
239 renderer_lib = static_library(
240-	'renderer',
241-	renderer_sources,
242-	include_directories: include_dirs,
243-	dependencies: renderer_backend_dep,
244-	c_args: platform_c_args + renderer_c_args,
245-	override_options: [ 'c_std=c99' ],
246+    'renderer',
247+    renderer_sources,
248+    include_directories: include_dirs,
249+    dependencies: renderer_backend_dep,
250+    c_args: platform_c_args + renderer_c_args,
251+    override_options: ['c_std=c99'],
252 )
253 
254 renderer_dep = declare_dependency(
255-	include_directories: include_dirs,
256-	link_with: renderer_lib,
257-	dependencies: renderer_backend_dep,
258-	compile_args: platform_c_args,
259+    include_directories: include_dirs,
260+    link_with: renderer_lib,
261+    dependencies: renderer_backend_dep,
262+    compile_args: platform_c_args,
263 )
264 
265-deps = [
266-	platform_dep,
267-	zlib_dep,
268-	tls_dep,
269-	bearssl_dep,
270-	mgmath_dep,
271-	renderer_dep
272-]
273-
274+deps = [platform_dep, zlib_dep, tls_dep, bearssl_dep, mgmath_dep, renderer_dep]
275 
276 # illumos needs extra libraries before it links
277 if host_machine.system() == 'sunos'
278-  extra_libs = ['-lsocket', '-lnsl']
279+    extra_libs = ['-lsocket', '-lnsl']
280 else
281-  extra_libs = []
282+    extra_libs = []
283 endif
284 
285 executable(
286-	'magnolia',
287-	sources,
288-	include_directories: include_dirs + vendor_inc,
289-	dependencies: deps,
290-	c_args: platform_c_args + renderer_c_args,
291-        link_args: extra_libs,
292-	override_options: [ 'c_std=c99' ],
293+    'magnolia',
294+    sources,
295+    include_directories: include_dirs + vendor_inc,
296+    dependencies: deps,
297+    c_args: platform_c_args + renderer_c_args,
298+    link_args: extra_libs,
299+    override_options: ['c_std=c99'],
300 )
+10, -10
 1@@ -1,15 +1,15 @@
 2 option(
 3-	'renderer',
 4-	type: 'combo',
 5-	choices: [ 'sokol', 'small3dlib' ],
 6-	value: 'sokol',
 7-	description: '3D renderer backend',
 8+    'renderer',
 9+    type: 'combo',
10+    choices: ['auto', 'sokol', 'small3dlib'],
11+    value: 'auto',
12+    description: '3D renderer backend',
13 )
14 
15 option(
16-	'windowing',
17-	type: 'combo',
18-	choices: [ 'sdl', 'maus' ],
19-	value: 'sdl',
20-	description: 'Windowing backend',
21+    'windowing',
22+    type: 'combo',
23+    choices: ['auto', 'sdl', 'maus'],
24+    value: 'auto',
25+    description: 'Windowing backend',
26 )