@@ -34,11 +34,7 @@ elif host_machine.system() == 'android'
34
34
' However it may be added in the future' ,
35
35
)
36
36
elif host_machine .system() == ' emscripten'
37
- plat = ' emscripten'
38
- error (
39
- ' The meson buildconfig of pygame-ce does not support emscripten for now. ' ,
40
- ' However it may be added in the future' ,
41
- )
37
+ plat = ' emscripten-@0@' .format(get_option (' emscripten_type' ))
42
38
else
43
39
# here it one of: cygwin, dragonfly, freebsd, gnu, haiku, netbsd, openbsd, sunos
44
40
plat = ' unix'
90
86
91
87
pg_inc_dirs = []
92
88
pg_lib_dirs = []
89
+
90
+ if plat == ' emscripten-pygbag'
91
+ sdl_dep = declare_dependency (
92
+ link_args : [' -lSDL2' ],
93
+ )
94
+ sdl_image_dep = declare_dependency (
95
+ link_args : [' -lSDL2_image' ],
96
+ )
97
+ sdl_mixer_dep = declare_dependency (
98
+ link_args : [' -lSDL2_mixer_ogg' , ' -logg' , ' -lvorbis' ],
99
+ )
100
+ freetype_dep = declare_dependency (
101
+ link_args : [' -lfreetype' , ' -lharfbuzz' ]
102
+ )
103
+ sdl_ttf_dep = declare_dependency (
104
+ link_args : [' -lSDL2_ttf' ],
105
+ dependencies : [freetype_dep]
106
+ )
107
+ elif plat == ' emscripten-pyodide'
108
+ # Check out before-build attribute in [tool.cibuildwheel.pyodide] section
109
+ # of pyproject.toml to see how these dependencies were installed.
110
+ wasm_exceptions = [' -fwasm-exceptions' , ' -sSUPPORT_LONGJMP=wasm' , ' -sRELOCATABLE=1' ]
111
+ add_global_arguments (wasm_exceptions, language : ' c' )
112
+ add_global_link_arguments (wasm_exceptions, language : ' c' )
113
+
114
+ sdl_flags = [' -sUSE_SDL=2' ]
115
+ freetype_flags = [' -sUSE_FREETYPE=1' ]
116
+ sdl_dep = declare_dependency (
117
+ compile_args : sdl_flags,
118
+ link_args : sdl_flags + [' -lSDL2' , ' -lhtml5' ],
119
+ )
120
+ sdl_image_dep = declare_dependency (
121
+ link_args : [
122
+ ' -lSDL2_image-bmp-gif-jpg-lbm-pcx-png-pnm-qoi-svg-tga-xcf-xpm-xv-wasm-sjlj' ,
123
+ ' -ljpeg' ,
124
+ ' -lpng-legacysjlj' ,
125
+ ],
126
+ )
127
+ sdl_mixer_dep = declare_dependency (
128
+ link_args : [
129
+ ' -lSDL2_mixer-mid-mod-mp3-ogg' ,
130
+ ' -lmodplug' ,
131
+ ' -lmpg123' ,
132
+ ' -logg' ,
133
+ ' -lvorbis'
134
+ ],
135
+ )
136
+ freetype_dep = declare_dependency (
137
+ compile_args : freetype_flags,
138
+ link_args : freetype_flags + [' -lfreetype-legacysjlj' , ' -lharfbuzz' ]
139
+ )
140
+ sdl_ttf_dep = declare_dependency (
141
+ link_args : [' -lSDL2_ttf' ],
142
+ dependencies : [freetype_dep]
143
+ )
144
+ else
145
+
93
146
if plat == ' win' and host_machine .cpu_family().startswith(' x86' )
94
147
# yes, this is a bit ugly and hardcoded but it is what it is
95
148
# TODO (middle-term goal) - Should migrate away from this
@@ -311,8 +364,10 @@ if not freetype_dep.found()
311
364
)
312
365
endif
313
366
367
+ endif # emscripten
368
+
314
369
portmidi_dep = dependency (' portmidi' , required : false )
315
- if not portmidi_dep.found()
370
+ if not portmidi_dep.found() and not plat.startswith( ' emscripten ' )
316
371
portmidi_dep = declare_dependency (
317
372
include_directories : pg_inc_dirs,
318
373
dependencies : cc.find_library (
@@ -436,7 +491,7 @@ endif
436
491
subdir (' src_c' )
437
492
subdir (' src_py' )
438
493
439
- if not get_option (' stripped' )
494
+ if not get_option (' stripped' ) and not plat.startswith( ' emscripten ' )
440
495
# run make_docs and make docs
441
496
if not fs.is_dir(' docs/generated' )
442
497
make_docs = files (' buildconfig/make_docs.py' )
0 commit comments