78
78
79
79
pg_dir = py.get_install_dir() / pg
80
80
81
+ sdl_api = get_option (' sdl_api' )
82
+ sdl = ' SDL@0@' .format(sdl_api)
83
+ sdl_mixer = ' @0@_mixer' .format(sdl)
84
+ sdl_ttf = ' @0@_ttf' .format(sdl)
85
+ sdl_image = ' @0@_image' .format(sdl)
86
+
87
+ if sdl_api == 3
88
+ add_global_arguments (' -DPG_SDL3=1' , language : ' c' )
89
+ endif
90
+
81
91
pg_inc_dirs = []
82
92
pg_lib_dirs = []
83
93
if plat == ' win' and host_machine .cpu_family().startswith(' x86' )
@@ -99,60 +109,68 @@ if plat == 'win' and host_machine.cpu_family().startswith('x86')
99
109
)
100
110
endif
101
111
102
- sdl_ver = ' 2.30.7'
112
+ sdl_ver = (sdl_api == 3 ) ? ' 3.1.3 ' : ' 2.30.7'
103
113
sdl_image_ver = ' 2.8.2'
104
114
sdl_mixer_ver = ' 2.8.0'
105
115
sdl_ttf_ver = ' 2.22.0'
106
116
107
117
dlls = []
108
118
109
- # SDL2
110
- sdl_dir = prebuilt_dir / ' SDL2- @0@' .format(sdl_ver)
119
+ # SDL
120
+ sdl_dir = prebuilt_dir / ' @0@-@1@ ' .format(sdl, sdl_ver)
111
121
sdl_lib_dir = sdl_dir / ' lib' / arch_suffix
112
122
pg_inc_dirs += fs.relative_to(sdl_dir / ' include' , base_dir)
113
123
pg_lib_dirs += sdl_lib_dir
114
- dlls += sdl_lib_dir / ' SDL2.dll'
115
-
116
- # SDL2_image
117
- sdl_image_dir = prebuilt_dir / ' SDL2_image-@0@' .format(sdl_image_ver)
118
- sdl_image_lib_dir = sdl_image_dir / ' lib' / arch_suffix
119
- pg_inc_dirs += fs.relative_to(sdl_image_dir / ' include' , base_dir)
120
- pg_lib_dirs += sdl_image_lib_dir
121
- dlls += [
122
- sdl_image_lib_dir / ' SDL2_image.dll' ,
123
- sdl_image_lib_dir / ' optional' / ' libjpeg-62.dll' ,
124
- sdl_image_lib_dir / ' optional' / ' libpng16-16.dll' ,
125
- sdl_image_lib_dir / ' optional' / ' libtiff-5.dll' ,
126
- sdl_image_lib_dir / ' optional' / ' libwebp-7.dll' ,
127
- sdl_image_lib_dir / ' optional' / ' libwebpdemux-2.dll' ,
128
- ]
129
-
130
- # SDL2_mixer
131
- sdl_mixer_dir = prebuilt_dir / ' SDL2_mixer-@0@' .format(sdl_mixer_ver)
132
- sdl_mixer_lib_dir = sdl_mixer_dir / ' lib' / arch_suffix
133
- pg_inc_dirs += fs.relative_to(sdl_mixer_dir / ' include' , base_dir)
134
- pg_lib_dirs += sdl_mixer_lib_dir
135
- dlls += [
136
- sdl_mixer_lib_dir / ' SDL2_mixer.dll' ,
137
- sdl_mixer_lib_dir / ' optional' / ' libogg-0.dll' ,
138
- sdl_mixer_lib_dir / ' optional' / ' libopus-0.dll' ,
139
- sdl_mixer_lib_dir / ' optional' / ' libopusfile-0.dll' ,
140
- sdl_mixer_lib_dir / ' optional' / ' libwavpack-1.dll' ,
141
- sdl_mixer_lib_dir / ' optional' / ' libxmp.dll' ,
142
- ]
143
-
144
- # SDL2_ttf
145
- sdl_ttf_dir = prebuilt_dir / ' SDL2_ttf-@0@' .format(sdl_ttf_ver)
146
- sdl_ttf_lib_dir = sdl_ttf_dir / ' lib' / arch_suffix
147
- pg_inc_dirs += fs.relative_to(sdl_ttf_dir / ' include' , base_dir)
148
- pg_lib_dirs += sdl_ttf_lib_dir
149
- dlls += sdl_ttf_lib_dir / ' SDL2_ttf.dll'
124
+ dlls += sdl_lib_dir / ' @0@.dll' .format(sdl)
125
+
126
+ # SDL_image
127
+ if get_option (' image' ).enabled()
128
+ sdl_image_dir = prebuilt_dir / ' @0@-@1@' .format(sdl_image, sdl_image_ver)
129
+ sdl_image_lib_dir = sdl_image_dir / ' lib' / arch_suffix
130
+ pg_inc_dirs += fs.relative_to(sdl_image_dir / ' include' , base_dir)
131
+ pg_lib_dirs += sdl_image_lib_dir
132
+ dlls += [
133
+ sdl_image_lib_dir / ' @0@.dll' .format(sdl_image),
134
+ sdl_image_lib_dir / ' optional' / ' libjpeg-62.dll' ,
135
+ sdl_image_lib_dir / ' optional' / ' libpng16-16.dll' ,
136
+ sdl_image_lib_dir / ' optional' / ' libtiff-5.dll' ,
137
+ sdl_image_lib_dir / ' optional' / ' libwebp-7.dll' ,
138
+ sdl_image_lib_dir / ' optional' / ' libwebpdemux-2.dll' ,
139
+ ]
140
+ endif
141
+
142
+ # SDL_mixer
143
+ if get_option (' mixer' ).enabled()
144
+ sdl_mixer_dir = prebuilt_dir / ' @0@-@1@' .format(sdl_mixer, sdl_mixer_ver)
145
+ sdl_mixer_lib_dir = sdl_mixer_dir / ' lib' / arch_suffix
146
+ pg_inc_dirs += fs.relative_to(sdl_mixer_dir / ' include' , base_dir)
147
+ pg_lib_dirs += sdl_mixer_lib_dir
148
+ dlls += [
149
+ sdl_mixer_lib_dir / ' @0@.dll' .format(sdl_mixer),
150
+ sdl_mixer_lib_dir / ' optional' / ' libogg-0.dll' ,
151
+ sdl_mixer_lib_dir / ' optional' / ' libopus-0.dll' ,
152
+ sdl_mixer_lib_dir / ' optional' / ' libopusfile-0.dll' ,
153
+ sdl_mixer_lib_dir / ' optional' / ' libwavpack-1.dll' ,
154
+ sdl_mixer_lib_dir / ' optional' / ' libxmp.dll' ,
155
+ ]
156
+ endif
157
+
158
+ # SDL_ttf
159
+ if get_option (' font' ).enabled()
160
+ sdl_ttf_dir = prebuilt_dir / ' @0@-@1@' .format(sdl_ttf, sdl_ttf_ver)
161
+ sdl_ttf_lib_dir = sdl_ttf_dir / ' lib' / arch_suffix
162
+ pg_inc_dirs += fs.relative_to(sdl_ttf_dir / ' include' , base_dir)
163
+ pg_lib_dirs += sdl_ttf_lib_dir
164
+ dlls += sdl_ttf_lib_dir / ' @0@.dll' .format(sdl_ttf)
165
+ endif
150
166
151
167
# freetype, portmidi and porttime
152
- common_lib_dir = prebuilt_dir / ' lib'
153
- pg_inc_dirs += fs.relative_to(prebuilt_dir / ' include' , base_dir)
154
- pg_lib_dirs += common_lib_dir
155
- dlls += [common_lib_dir / ' freetype.dll' , common_lib_dir / ' portmidi.dll' ]
168
+ if get_option (' freetype' ).enabled() and get_option (' midi' ).enabled()
169
+ common_lib_dir = prebuilt_dir / ' lib'
170
+ pg_inc_dirs += fs.relative_to(prebuilt_dir / ' include' , base_dir)
171
+ pg_lib_dirs += common_lib_dir
172
+ dlls += [common_lib_dir / ' freetype.dll' , common_lib_dir / ' portmidi.dll' ]
173
+ endif
156
174
157
175
# clean unneeded file that causes build issues
158
176
unneeded_file = common_lib_dir / ' libportmidi.dll.a'
183
201
foreach inc_dir : bases
184
202
foreach sub_inc : [
185
203
'' ,
186
- ' /SDL2 ' ,
204
+ ' /@0@ ' .format(sdl) ,
187
205
' /freetype2' ,
188
206
]
189
207
full_inc = inc_dir / ' include' + sub_inc
@@ -204,45 +222,45 @@ else
204
222
endif
205
223
206
224
# TODO: add version constraints?
207
- sdl_dep = dependency (' sdl2 ' , required : false )
225
+ sdl_dep = dependency (sdl , required : false )
208
226
if not sdl_dep.found()
209
227
sdl_dep = declare_dependency (
210
228
include_directories : pg_inc_dirs,
211
- dependencies : cc.find_library (' SDL2 ' , dirs : pg_lib_dirs),
229
+ dependencies : cc.find_library (sdl , dirs : pg_lib_dirs),
212
230
)
213
231
endif
214
232
215
233
# optional
216
- sdl_image_dep = dependency (' SDL2_image ' , required : false )
234
+ sdl_image_dep = dependency (sdl_image , required : false )
217
235
if not sdl_image_dep.found()
218
236
sdl_image_dep = declare_dependency (
219
237
include_directories : pg_inc_dirs,
220
238
dependencies : cc.find_library (
221
- ' SDL2_image ' ,
239
+ sdl_image ,
222
240
dirs : pg_lib_dirs,
223
241
required : get_option (' image' ),
224
242
),
225
243
)
226
244
endif
227
245
228
- sdl_mixer_dep = dependency (' SDL2_mixer ' , required : false )
246
+ sdl_mixer_dep = dependency (sdl_mixer , required : false )
229
247
if not sdl_mixer_dep.found()
230
248
sdl_mixer_dep = declare_dependency (
231
249
include_directories : pg_inc_dirs,
232
250
dependencies : cc.find_library (
233
- ' SDL2_mixer ' ,
251
+ sdl_mixer ,
234
252
dirs : pg_lib_dirs,
235
253
required : get_option (' mixer' ),
236
254
),
237
255
)
238
256
endif
239
257
240
- sdl_ttf_dep = dependency (' SDL2_ttf ' , required : false )
258
+ sdl_ttf_dep = dependency (sdl_ttf , required : false )
241
259
if not sdl_ttf_dep.found()
242
260
sdl_ttf_dep = declare_dependency (
243
261
include_directories : pg_inc_dirs,
244
262
dependencies : cc.find_library (
245
- ' SDL2_ttf ' ,
263
+ sdl_ttf ,
246
264
dirs : pg_lib_dirs,
247
265
required : get_option (' font' ),
248
266
),
@@ -296,10 +314,10 @@ pg_base_deps = [sdl_dep, py_dep]
296
314
297
315
summary (
298
316
{
299
- ' SDL2 ' : sdl_dep.found(),
300
- ' SDL2_image ' : sdl_image_dep.found(),
301
- ' SDL2_mixer ' : sdl_mixer_dep.found(),
302
- ' SDL2_ttf ' : sdl_ttf_dep.found(),
317
+ sdl : sdl_dep.found(),
318
+ sdl_image : sdl_image_dep.found(),
319
+ sdl_mixer : sdl_mixer_dep.found(),
320
+ sdl_ttf : sdl_ttf_dep.found(),
303
321
' freetype2' : freetype_dep.found(),
304
322
' portmidi' : portmidi_dep.found(),
305
323
' porttime' : portmidi_dep.found() ? porttime_dep.found() : false ,
0 commit comments