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