4
4
# found in the LICENSE file.
5
5
6
6
import os
7
+ from typing import Dict , Set
7
8
8
9
TAG = 'release-2.8.0'
9
10
HASH = '494ccd74540f74e717f7e4f1dc7f96398c0f4b1883ab00c4a76b0c7239bd2c185cb4358a35ef47819c49e7c14dac7c37b98a29c7b5237478121571f5e7ac4dfc'
16
17
'sdl2_mixer-none-mt' : {'SDL2_MIXER_FORMATS' : [], 'PTHREADS' : 1 },
17
18
}
18
19
20
+ OPTIONS = {
21
+ 'formats' : 'A comma separated list of formats (ex: --use-port=sdl2_mixer:formats=ogg,mp3)'
22
+ }
23
+
24
+ SUPPORTED_FORMATS = {'ogg' , 'mp3' , 'mod' , 'mid' }
25
+
26
+ # user options (from --use-port)
27
+ opts : Dict [str , Set ] = {
28
+ 'formats' : set ()
29
+ }
30
+
19
31
20
32
def needed (settings ):
21
33
return settings .USE_SDL_MIXER == 2
22
34
23
35
36
+ def get_formats (settings ):
37
+ return opts ['formats' ].union (settings .SDL2_MIXER_FORMATS )
38
+
39
+
24
40
def get_lib_name (settings ):
25
- settings .SDL2_MIXER_FORMATS .sort ()
26
- formats = '-' .join (settings .SDL2_MIXER_FORMATS )
41
+ formats = '-' .join (sorted (get_formats (settings )))
27
42
28
43
libname = 'libSDL2_mixer'
29
44
if formats != '' :
@@ -41,30 +56,33 @@ def get(ports, settings, shared):
41
56
42
57
def create (final ):
43
58
source_path = ports .get_dir ('sdl2_mixer' , 'SDL_mixer-' + TAG )
59
+
60
+ formats = get_formats (settings )
61
+
44
62
flags = [
45
63
'-sUSE_SDL=2' ,
46
64
'-DMUSIC_WAV' ,
47
65
]
48
66
49
- if "ogg" in settings . SDL2_MIXER_FORMATS :
67
+ if "ogg" in formats :
50
68
flags += [
51
69
'-sUSE_VORBIS' ,
52
70
'-DMUSIC_OGG' ,
53
71
]
54
72
55
- if "mp3" in settings . SDL2_MIXER_FORMATS :
73
+ if "mp3" in formats :
56
74
flags += [
57
75
'-sUSE_MPG123' ,
58
76
'-DMUSIC_MP3_MPG123' ,
59
77
]
60
78
61
- if "mod" in settings . SDL2_MIXER_FORMATS :
79
+ if "mod" in formats :
62
80
flags += [
63
81
'-sUSE_MODPLUG' ,
64
82
'-DMUSIC_MOD_MODPLUG' ,
65
83
]
66
84
67
- if "mid" in settings . SDL2_MIXER_FORMATS :
85
+ if "mid" in formats :
68
86
flags += [
69
87
'-DMUSIC_MID_TIMIDITY' ,
70
88
]
@@ -107,16 +125,27 @@ def clear(ports, settings, shared):
107
125
108
126
def process_dependencies (settings ):
109
127
settings .USE_SDL = 2
110
- if "ogg" in settings .SDL2_MIXER_FORMATS :
128
+ formats = get_formats (settings )
129
+ if "ogg" in formats :
111
130
deps .append ('vorbis' )
112
131
settings .USE_VORBIS = 1
113
- if "mp3" in settings . SDL2_MIXER_FORMATS :
132
+ if "mp3" in formats :
114
133
deps .append ('mpg123' )
115
134
settings .USE_MPG123 = 1
116
- if "mod" in settings . SDL2_MIXER_FORMATS :
135
+ if "mod" in formats :
117
136
deps .append ('libmodplug' )
118
137
settings .USE_MODPLUG = 1
119
138
120
139
140
+ def handle_options (options , error_handler ):
141
+ formats = options ['formats' ].split (',' )
142
+ for format in formats :
143
+ format = format .lower ().strip ()
144
+ if format not in SUPPORTED_FORMATS :
145
+ error_handler (f'{ format } is not a supported format' )
146
+ else :
147
+ opts ['formats' ].add (format )
148
+
149
+
121
150
def show ():
122
151
return 'sdl2_mixer (-sUSE_SDL_MIXER=2 or --use-port=sdl2_mixer; zlib license)'
0 commit comments