Clean up emscripten build * Don't use an external premake extension for emscripten; just set up the environment ourselves to build with emscripten. * Delete the spots that turned on the '-pthread' flag for emscripten. * Get the WebGL and WebGPU builds compiling again and add a github workflow for them. * Delete the bubbles example. It didn't compile on android or wasm and caused confusion. It's in the git history if we want it back. Diffs= ac0d97c12 Clean up emscripten build (#6531) Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
diff --git a/.rive_head b/.rive_head index 71b8716..55fcd07 100644 --- a/.rive_head +++ b/.rive_head
@@ -1 +1 @@ -acdaee21fea7a690e2db6d01b8a6d2cd150f1db7 +ac0d97c1243ea3c2e473a319f4eb100fed52e1d5
diff --git a/build/rive_build_config.lua b/build/rive_build_config.lua index 296a235..713af55 100644 --- a/build/rive_build_config.lua +++ b/build/rive_build_config.lua
@@ -362,13 +362,28 @@ end if _OPTIONS['arch'] == 'wasm' or _OPTIONS['arch'] == 'js' then - -- Target emscripten via https://github.com/TurkeyMan/premake-emscripten.git - -- Premake doesn't properly load the _preload.lua for this module, so we load it here manually. - -- BUG: https://github.com/premake/premake-core/issues/1235 - require('premake-emscripten/_preload') - require('premake-emscripten/emscripten') + -- make a new system called "emscripten" so we don't try including host-os-specific files in the + -- web build. + premake.api.addAllowed('system', 'emscripten') + + -- clone the clang toolset into a custom one called "emsdk". + premake.tools.emsdk = {} + for k, v in pairs(premake.tools.clang) do + premake.tools.emsdk[k] = v + end + + -- update the emsdk toolset to use the appropriate binaries. + local emsdk_tools = { + cc = 'emcc', + cxx = 'em++', + ar = 'emar', + } + function premake.tools.emsdk.gettoolname(cfg, tool) + return emsdk_tools[tool] + end + system('emscripten') - toolset('emcc') + toolset('emsdk') linkoptions({ '-sALLOW_MEMORY_GROWTH' })
diff --git a/decoders/premake5_v2.lua b/decoders/premake5_v2.lua index bbf3bc3..7d35ee2 100644 --- a/decoders/premake5_v2.lua +++ b/decoders/premake5_v2.lua
@@ -5,10 +5,12 @@ dofile(rive .. '/dependencies/premake5_libpng_v2.lua') project('rive_decoders') -dependson('libpng') -kind('StaticLib') -flags({ 'FatalWarnings' }) +do + dependson('libpng') + kind('StaticLib') + flags({ 'FatalWarnings' }) -includedirs({ 'include', '../include', libpng }) + includedirs({ 'include', '../include', libpng }) -files({ 'src/**.cpp' }) + files({ 'src/**.cpp' }) +end
diff --git a/dependencies/premake5_harfbuzz_v2.lua b/dependencies/premake5_harfbuzz_v2.lua index 0dbecaa..f5e4179 100644 --- a/dependencies/premake5_harfbuzz_v2.lua +++ b/dependencies/premake5_harfbuzz_v2.lua
@@ -218,12 +218,7 @@ defines({ 'HAVE_OT', 'HB_NO_FALLBACK_SHAPE', 'HB_NO_WIN1256' }) - filter('system:emscripten') - do - buildoptions({ '-pthread' }) - end - - filter('toolset:clang') + filter('toolset:not msc') do flags({ 'FatalWarnings' }) buildoptions({
diff --git a/dependencies/premake5_libpng_v2.lua b/dependencies/premake5_libpng_v2.lua index 325de38..2c44808 100644 --- a/dependencies/premake5_libpng_v2.lua +++ b/dependencies/premake5_libpng_v2.lua
@@ -59,6 +59,15 @@ zlib .. '/inflate.c', }) + filter('toolset:not msc') + do + flags({ 'FatalWarnings' }) + buildoptions({ + '-Wno-unknown-warning-option', + '-Wno-deprecated-non-prototype', + }) + end + filter('system:not windows') do defines({ 'HAVE_UNISTD_H' })
diff --git a/dependencies/premake5_sheenbidi_v2.lua b/dependencies/premake5_sheenbidi_v2.lua index 7f251bb..f741005 100644 --- a/dependencies/premake5_sheenbidi_v2.lua +++ b/dependencies/premake5_sheenbidi_v2.lua
@@ -15,11 +15,6 @@ linkoptions({ '-r' }) - filter('system:emscripten') - do - buildoptions({ '-pthread' }) - end - filter('options:config=debug') do files({
diff --git a/premake5_v2.lua b/premake5_v2.lua index 7a8c270..a188aba 100644 --- a/premake5_v2.lua +++ b/premake5_v2.lua
@@ -104,11 +104,6 @@ architecture('x64') defines({ '_USE_MATH_DEFINES' }) end - - filter('system:emscripten') - do - buildoptions({ '-pthread' }) - end end newoption({
diff --git a/viewer/build/premake5_viewer.lua b/viewer/build/premake5_viewer.lua index 01a5239..1f7b2d9 100644 --- a/viewer/build/premake5_viewer.lua +++ b/viewer/build/premake5_viewer.lua
@@ -1,4 +1,4 @@ -dofile 'rive_build_config.lua' +dofile('rive_build_config.lua') dependencies = os.getenv('DEPENDENCIES')