Skip to content

Update Emscripten example to work with the new 4.0 API. #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

kblaschke
Copy link
Member

Basically replaced everything which was renewed with the API update and used the emscripten main loop with argument to pass in the static app object.

projectm_set_aspect_correction(app.projectM, true);
projectm_set_easter_egg(app.projectM, 0);

projectm_set_preset_switch_failed_event_callback(app.projectM, &presetSwitchFailedEvent, nullptr);
Copy link
Member Author

@kblaschke kblaschke Jul 28, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now I'm redirecting the preset switch failed event to the app itself to prevent the playlist from spamming preset switches. The playlist manager will then only handle preset switch requests once.
A similar thing could be done by setting retries to 0, but can't properly log the failure then.

@nzoschke
Copy link

nzoschke commented Aug 5, 2023

Having some trouble building this branch.

I followed the install steps here https://emscripten.org/docs/getting_started/downloads.html

./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh

Then followed the build steps in the Readme here

cd projectm
mkdir cmake-build-emscripten
cd cmake-build-emscripten
emcmake ..
emmake

I think the Readme needs to be updated. Those commands are missing cmake and make args.

% emcmake cmake ..                                                                                                                       master
configure: cmake .. -DCMAKE_TOOLCHAIN_FILE=/Users/noah/src/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CROSSCOMPILING_EMULATOR=/Users/noah/src/emsdk/node/16.20.0_64bit/bin/node
-- Found Git: /usr/bin/git (found version "2.39.2 (Apple Git-143)") 
-- Git revision: f9d55a3470f4af4f6717f2e8a4ee23cb48eb96f2
-- /Users/noah/src/emsdk/upstream/emscripten/emcc on Emscripten
-- Looking for __EMSCRIPTEN__
-- Looking for __EMSCRIPTEN__ - found
-- Performing Test CXXFLAG_-Wall_SUPPORTED
-- Performing Test CXXFLAG_-Wall_SUPPORTED - Success
-- Performing Test CXXFLAG_-Wchar-subscripts_SUPPORTED
-- Performing Test CXXFLAG_-Wchar-subscripts_SUPPORTED - Success
-- Performing Test CXXFLAG_-Wformat-security_SUPPORTED
-- Performing Test CXXFLAG_-Wformat-security_SUPPORTED - Success
-- Performing Test CXXFLAG_-Wpointer-arith_SUPPORTED
-- Performing Test CXXFLAG_-Wpointer-arith_SUPPORTED - Success
-- Performing Test CXXFLAG_-Wshadow_SUPPORTED
-- Performing Test CXXFLAG_-Wshadow_SUPPORTED - Success
-- Performing Test CXXFLAG_-Wsign-compare_SUPPORTED
-- Performing Test CXXFLAG_-Wsign-compare_SUPPORTED - Success
-- Performing Test CXXFLAG_-Wtype-limits_SUPPORTED
-- Performing Test CXXFLAG_-Wtype-limits_SUPPORTED - Success
-- Looking for aligned_alloc
-- Looking for aligned_alloc - found
-- Looking for C++ include dlfcn.h
-- Looking for C++ include dlfcn.h - found
-- Looking for C++ include fts.h
-- Looking for C++ include fts.h - not found
-- Looking for C++ include GL/gl.h
-- Looking for C++ include GL/gl.h - found
-- Looking for C++ include inttypes.h
-- Looking for C++ include inttypes.h - found
-- Looking for C++ include memory.h
-- Looking for C++ include memory.h - found
-- Looking for posix_memalign
-- Looking for posix_memalign - found
-- Looking for enum value PTHREAD_PRIO_INHERIT
-- Looking for enum value PTHREAD_PRIO_INHERIT - found
-- Looking for C++ include stdint.h
-- Looking for C++ include stdint.h - found
-- Looking for C++ include stdlib.h
-- Looking for C++ include stdlib.h - found
-- Looking for C++ include strings.h
-- Looking for C++ include strings.h - found
-- Looking for C++ include string.h
-- Looking for C++ include string.h - found
-- Looking for C++ include sys/stat.h
-- Looking for C++ include sys/stat.h - found
-- Looking for C++ include sys/types.h
-- Looking for C++ include sys/types.h - found
-- Looking for C++ include unistd.h
-- Looking for C++ include unistd.h - found
-- Looking for C++ include windows.h
-- Looking for C++ include windows.h - not found
-- Looking for 23 include files assert.h, ..., tgmath.h
-- Looking for 23 include files assert.h, ..., tgmath.h - found
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Performing Test STD_FILESYSTEM_EXISTS
-- Performing Test STD_FILESYSTEM_EXISTS - Success
-- Building playlist library using C++17 and std::filesystem.
-- 
-- libprojectM v4.0.0
-- ==============================================
-- 
--     prefix:                  /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot
--     libdir:                  lib
--     includedir:              include
--     bindir:                  bin
-- 
--     compiler:                /Users/noah/src/emsdk/upstream/emscripten/em++
--     cflags:                  
--     cxxflags:                
--     ldflags:                 
-- 
-- Features:
-- ==============================================
-- 
--     Build shared libraries:  OFF
--     Threading:               OFF
--     SDL2:                    OFF
--     OpenGL ES:               ON
--     OpenMP:                  OFF
--     Emscripten:              ON
--     LLVM JIT:                OFF
--     Use system GLM:          OFF
--     Link UI with shared lib: 
-- 
-- Targets and applications:
-- ==============================================
-- 
--     libprojectM:             (always built)
--     Playlist library:        ON
--     SDL2 Test UI:            OFF
--     Tests:                   OFF
-- 
-- Configuring done (18.2s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/noah/src/projectM/projectm/cmake-build-emscripten
% emmake make                                                                                                                            master
make: make
[  1%] Building CXX object vendor/hlslparser/CMakeFiles/hlslparser.dir/src/CodeWriter.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[  3%] Building CXX object vendor/hlslparser/CMakeFiles/hlslparser.dir/src/Engine.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[  4%] Building CXX object vendor/hlslparser/CMakeFiles/hlslparser.dir/src/GLSLGenerator.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[  6%] Building CXX object vendor/hlslparser/CMakeFiles/hlslparser.dir/src/HLSLParser.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[  7%] Building CXX object vendor/hlslparser/CMakeFiles/hlslparser.dir/src/HLSLTokenizer.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[  9%] Building CXX object vendor/hlslparser/CMakeFiles/hlslparser.dir/src/HLSLTree.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[  9%] Built target hlslparser
[ 10%] Building C object vendor/SOIL2/CMakeFiles/SOIL2.dir/etc1_utils.c.o
emcc: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
emcc: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
emcc: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 12%] Building C object vendor/SOIL2/CMakeFiles/SOIL2.dir/image_DXT.c.o
emcc: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
emcc: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
emcc: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
/Users/noah/src/projectM/projectm/vendor/SOIL2/image_DXT.c:111:6: warning: variable 'block_count' set but not used [-Wunused-but-set-variable]
  111 |         int block_count = 0;
      |             ^
/Users/noah/src/projectM/projectm/vendor/SOIL2/image_DXT.c:192:6: warning: variable 'block_count' set but not used [-Wunused-but-set-variable]
  192 |         int block_count = 0, has_alpha;
      |             ^
2 warnings generated.
[ 13%] Building C object vendor/SOIL2/CMakeFiles/SOIL2.dir/image_helper.c.o
emcc: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
emcc: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
emcc: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 15%] Building C object vendor/SOIL2/CMakeFiles/SOIL2.dir/SOIL2.c.o
emcc: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
emcc: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
emcc: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 15%] Built target SOIL2
[ 15%] Built target projectM_api
[ 16%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/BeatDetect.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/BeatDetect.cpp:35:
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/BeatDetect.hpp:34:
/Users/noah/src/projectM/projectm/src/libprojectM/Renderer/../PCM.hpp:50:1: warning: attribute 'visibility' is ignored, place it after "class" to apply attribute to type declaration [-Wignored-attributes]
   50 | PROJECTM_EXPORT class Pcm
      | ^
/Users/noah/src/projectM/projectm/cmake-build-emscripten/src/api/include/projectM-4/projectM_export.h:15:46: note: expanded from macro 'PROJECTM_EXPORT'
   15 | #      define PROJECTM_EXPORT __attribute__((visibility("default")))
      |                                              ^
1 warning generated.
[ 18%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/Border.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 20%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/DarkenCenter.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 21%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/FileScanner.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 23%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/Filters.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/Filters.cpp:10:
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/ShaderEngine.hpp:17:
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/BeatDetect.hpp:34:
/Users/noah/src/projectM/projectm/src/libprojectM/Renderer/../PCM.hpp:50:1: warning: attribute 'visibility' is ignored, place it after "class" to apply attribute to type declaration [-Wignored-attributes]
   50 | PROJECTM_EXPORT class Pcm
      | ^
/Users/noah/src/projectM/projectm/cmake-build-emscripten/src/api/include/projectM-4/projectM_export.h:15:46: note: expanded from macro 'PROJECTM_EXPORT'
   15 | #      define PROJECTM_EXPORT __attribute__((visibility("default")))
      |                                              ^
1 warning generated.
[ 24%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/MilkdropNoise.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 26%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/MilkdropWaveform.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/MilkdropWaveform.cpp:9:
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/BeatDetect.hpp:34:
/Users/noah/src/projectM/projectm/src/libprojectM/Renderer/../PCM.hpp:50:1: warning: attribute 'visibility' is ignored, place it after "class" to apply attribute to type declaration [-Wignored-attributes]
   50 | PROJECTM_EXPORT class Pcm
      | ^
/Users/noah/src/projectM/projectm/cmake-build-emscripten/src/api/include/projectM-4/projectM_export.h:15:46: note: expanded from macro 'PROJECTM_EXPORT'
   15 | #      define PROJECTM_EXPORT __attribute__((visibility("default")))
      |                                              ^
1 warning generated.
[ 27%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/MotionVectors.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 29%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/PerPixelMesh.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 30%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/Pipeline.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 32%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/PipelineContext.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 33%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/RenderItem.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 35%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/Renderer.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/Renderer.cpp:1:
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/Renderer.hpp:4:
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/BeatDetect.hpp:34:
/Users/noah/src/projectM/projectm/src/libprojectM/Renderer/../PCM.hpp:50:1: warning: attribute 'visibility' is ignored, place it after "class" to apply attribute to type declaration [-Wignored-attributes]
   50 | PROJECTM_EXPORT class Pcm
      | ^
/Users/noah/src/projectM/projectm/cmake-build-emscripten/src/api/include/projectM-4/projectM_export.h:15:46: note: expanded from macro 'PROJECTM_EXPORT'
   15 | #      define PROJECTM_EXPORT __attribute__((visibility("default")))
      |                                              ^
1 warning generated.
[ 36%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/Shader.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 38%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/ShaderEngine.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/ShaderEngine.cpp:9:
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/ShaderEngine.hpp:17:
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/BeatDetect.hpp:34:
/Users/noah/src/projectM/projectm/src/libprojectM/Renderer/../PCM.hpp:50:1: warning: attribute 'visibility' is ignored, place it after "class" to apply attribute to type declaration [-Wignored-attributes]
   50 | PROJECTM_EXPORT class Pcm
      | ^
/Users/noah/src/projectM/projectm/cmake-build-emscripten/src/api/include/projectM-4/projectM_export.h:15:46: note: expanded from macro 'PROJECTM_EXPORT'
   15 | #      define PROJECTM_EXPORT __attribute__((visibility("default")))
      |                                              ^
1 warning generated.
[ 40%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/Shape.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 41%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/StaticGlShaders.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 43%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/Texture.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 44%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/TextureManager.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 46%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/VideoEcho.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/VideoEcho.cpp:9:
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/ShaderEngine.hpp:17:
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/BeatDetect.hpp:34:
/Users/noah/src/projectM/projectm/src/libprojectM/Renderer/../PCM.hpp:50:1: warning: attribute 'visibility' is ignored, place it after "class" to apply attribute to type declaration [-Wignored-attributes]
   50 | PROJECTM_EXPORT class Pcm
      | ^
/Users/noah/src/projectM/projectm/cmake-build-emscripten/src/api/include/projectM-4/projectM_export.h:15:46: note: expanded from macro 'PROJECTM_EXPORT'
   15 | #      define PROJECTM_EXPORT __attribute__((visibility("default")))
      |                                              ^
1 warning generated.
[ 47%] Building CXX object src/libprojectM/Renderer/CMakeFiles/Renderer.dir/Waveform.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/Waveform.cpp:5:
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/Renderer/BeatDetect.hpp:34:
/Users/noah/src/projectM/projectm/src/libprojectM/Renderer/../PCM.hpp:50:1: warning: attribute 'visibility' is ignored, place it after "class" to apply attribute to type declaration [-Wignored-attributes]
   50 | PROJECTM_EXPORT class Pcm
      | ^
/Users/noah/src/projectM/projectm/cmake-build-emscripten/src/api/include/projectM-4/projectM_export.h:15:46: note: expanded from macro 'PROJECTM_EXPORT'
   15 | #      define PROJECTM_EXPORT __attribute__((visibility("default")))
      |                                              ^
1 warning generated.
[ 47%] Built target Renderer
[ 49%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/BuiltinFuncs.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 50%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/BuiltinParams.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 52%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/CustomShape.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 53%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/CustomWave.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 55%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/Eval.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 56%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/Expr.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 58%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/Func.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 60%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/IdlePreset.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 61%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/InitCond.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 63%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/MilkdropPreset.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 64%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/MilkdropPresetFactory.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 66%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/Param.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 67%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/Parser.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 69%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/PerFrameEqn.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 70%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/PerPixelEqn.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 72%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/PerPointEqn.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 73%] Building CXX object src/libprojectM/MilkdropPresetFactory/CMakeFiles/MilkdropPresetFactory.dir/PresetFrameIO.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/MilkdropPresetFactory/PresetFrameIO.cpp:7:
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/MilkdropPresetFactory/../Renderer/BeatDetect.hpp:34:
/Users/noah/src/projectM/projectm/src/libprojectM/MilkdropPresetFactory/../Renderer/../PCM.hpp:50:1: warning: attribute 'visibility' is ignored, place it after "class" to apply attribute to type declaration [-Wignored-attributes]
   50 | PROJECTM_EXPORT class Pcm
      | ^
/Users/noah/src/projectM/projectm/cmake-build-emscripten/src/api/include/projectM-4/projectM_export.h:15:46: note: expanded from macro 'PROJECTM_EXPORT'
   15 | #      define PROJECTM_EXPORT __attribute__((visibility("default")))
      |                                              ^
1 warning generated.
[ 73%] Built target MilkdropPresetFactory
[ 75%] Building CXX object src/libprojectM/CMakeFiles/projectM_main.dir/PCM.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 76%] Building CXX object src/libprojectM/CMakeFiles/projectM_main.dir/PipelineMerger.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 78%] Building CXX object src/libprojectM/CMakeFiles/projectM_main.dir/PresetFactory.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 80%] Building CXX object src/libprojectM/CMakeFiles/projectM_main.dir/PresetFactoryManager.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
In file included from /Users/noah/src/projectM/projectm/src/libprojectM/PresetFactoryManager.cpp:12:
/Users/noah/src/projectM/projectm/src/libprojectM/PresetFactoryManager.hpp:88:10: warning: private field 'm_initialized' is not used [-Wunused-private-field]
   88 |     bool m_initialized{false}; //!< True if the factory maps are already initialized.
      |          ^
1 warning generated.
[ 81%] Building CXX object src/libprojectM/CMakeFiles/projectM_main.dir/ProjectM.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 83%] Building CXX object src/libprojectM/CMakeFiles/projectM_main.dir/ProjectMCWrapper.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 84%] Building CXX object src/libprojectM/CMakeFiles/projectM_main.dir/TimeKeeper.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 86%] Building CXX object src/libprojectM/CMakeFiles/projectM_main.dir/fftsg.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 87%] Building CXX object src/libprojectM/CMakeFiles/projectM_main.dir/wipemalloc.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 87%] Built target projectM_main
[ 89%] Building CXX object src/libprojectM/CMakeFiles/projectM.dir/__/__/dummy.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 90%] Linking CXX static library libprojectM.a
[ 90%] Built target projectM
[ 92%] Building CXX object src/playlist/CMakeFiles/projectM_playlist_main.dir/Filter.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 93%] Building CXX object src/playlist/CMakeFiles/projectM_playlist_main.dir/Item.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 95%] Building CXX object src/playlist/CMakeFiles/projectM_playlist_main.dir/Playlist.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 96%] Building CXX object src/playlist/CMakeFiles/projectM_playlist_main.dir/PlaylistCWrapper.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[ 96%] Built target projectM_playlist_main
[ 98%] Building CXX object src/playlist/CMakeFiles/projectM_playlist.dir/__/__/dummy.cpp.o
em++: warning: linker setting ignored during compilation: 'MIN_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'MAX_WEBGL_VERSION' [-Wunused-command-line-argument]
em++: warning: linker setting ignored during compilation: 'ALLOW_MEMORY_GROWTH' [-Wunused-command-line-argument]
[100%] Linking CXX static library libprojectM_playlist.a
[100%] Built target projectM_playlist

If the build was successful, you will find the projectM_SDL_emscripten.html, .data, .js and .wasm files in
the cmake-build-emscripten/src/projectM-emscriptendirectory.

I am not seeing these artifacts.

Should I make install?

% emmake make install                                                                                                                    master
make: make install
[  9%] Built target hlslparser
[ 15%] Built target SOIL2
[ 15%] Built target projectM_api
[ 47%] Built target Renderer
[ 73%] Built target MilkdropPresetFactory
[ 87%] Built target projectM_main
[ 90%] Built target projectM
[ 96%] Built target projectM_playlist_main
[100%] Built target projectM_playlist
Install the project...
-- Install configuration: ""
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/projectM_export.h
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/version.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/projectM.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/render_opengl.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/debug.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/core.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/types.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/callbacks.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/touch.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/audio.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/parameters.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/memory.h
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/lib/libprojectM.a
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/lib/cmake/projectM4/projectM4ConfigVersion.cmake
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/lib/cmake/projectM4/projectM4Config.cmake
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/lib/cmake/projectM4/projectM4Targets.cmake
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/lib/cmake/projectM4/projectM4Targets-noconfig.cmake
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/lib/libprojectM_playlist.a
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/projectM_playlist_export.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/playlist_types.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/playlist_filter.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/playlist_core.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/playlist_callbacks.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/playlist_memory.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/playlist_playback.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/playlist_items.h
-- Up-to-date: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/include/projectM-4/playlist.h
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/lib/cmake/projectM4Playlist/projectM4PlaylistConfigVersion.cmake
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/lib/cmake/projectM4Playlist/projectM4PlaylistConfig.cmake
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/lib/cmake/projectM4Playlist/projectM4PlaylistTargets.cmake
-- Installing: /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/lib/cmake/projectM4Playlist/projectM4PlaylistTargets-noconfig.cmake

Then should I build the example?

% cd examples-emscripten 
% emcmake cmake .
configure: cmake . -DCMAKE_TOOLCHAIN_FILE=/Users/noah/src/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CROSSCOMPILING_EMULATOR=/Users/noah/src/emsdk/node/16.20.0_64bit/bin/node
-- 
-- Configuring done (0.4s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/noah/src/projectM/examples-emscripten
% emmake make
make: make
[ 50%] Building CXX object CMakeFiles/projectM_SDL_emscripten.dir/projectM_SDL_emscripten.cpp.o
[100%] Linking CXX executable projectM_SDL_emscripten.html
em++: error: response file not found: /presets
make[2]: *** [projectM_SDL_emscripten.html] Error 1
make[1]: *** [CMakeFiles/projectM_SDL_emscripten.dir/all] Error 2
make: *** [all] Error 2
emmake: error: 'make' failed (returned 2)

I tried a few things to for presets in the build but no luck.

@nzoschke
Copy link

nzoschke commented Aug 5, 2023

Also tried against https://github.com/kblaschke/projectm/tree/gles-fixes and same errors...

em++: error: response file not found: /presets

@nzoschke
Copy link

nzoschke commented Aug 5, 2023

Aha! Hardcoding presets got me further

noah@studio build % git diff                                                                                                                                            emscripten
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c5b406d..cd48bc5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -30,5 +30,5 @@ target_link_options(projectM_SDL_emscripten
         "SHELL:-s MAX_WEBGL_VERSION=2"
         "SHELL:-s FULL_ES2=1"
         "SHELL:-s ALLOW_MEMORY_GROWTH=1"
-        "SHELL:--preload-file ${PRESETS_DIR}@/presets"
+        "SHELL:--preload-file /Users/noah/src/projectM/projectm/presets"
         )
% emmake make
make: make
[ 50%] Building CXX object CMakeFiles/projectM_SDL_emscripten.dir/projectM_SDL_emscripten.cpp.o
[100%] Linking CXX executable projectM_SDL_emscripten.html
wasm-ld: warning: function signature mismatch: prjm_eval_error
>>> defined as (i32, i32, i32, i32) -> i32 in /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/lib/libprojectM.a(Compiler.c.o)
>>> defined as (i32, i32, i32, i32) -> void in /Users/noah/src/emsdk/upstream/emscripten/cache/sysroot/lib/libprojectM.a(CompilerFunctions.c.o)
[100%] Built target projectM_SDL_emscripten

% ls
CMakeCache.txt               Makefile                     projectM_SDL_emscripten.data projectM_SDL_emscripten.js
CMakeFiles                   cmake_install.cmake          projectM_SDL_emscripten.html projectM_SDL_emscripten.wasm

@nzoschke
Copy link

nzoschke commented Aug 5, 2023

Now on to debugging errors in the browser.

Screenshot 2023-08-04 at 9 09 43 PM

@nzoschke
Copy link

nzoschke commented Dec 1, 2023

Still not able to get this to work. Builds are going well with

git clone https://github.com/kblaschke/examples-emscripten.git
git checkout -b update-emscripten-project-to-4.0-api origin/update-emscripten-project-to-4.0-api
mkdir build
cd build
emcmake cmake .. -DPRESETS_DIR=/Users/noah/src/projectM/presets-cream-of-the-crop
emmake make
emmake make install

However loading the resulting build is giving errors in the javascript console:

emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.
INFO: SDL renderer initialized.
Aborted(Assertion failed: Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.)
Uncaught RuntimeError: Aborted(Assertion failed: Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.)
    at abort (projectM_SDL_emscripten.js:1082:11)
    at assert (projectM_SDL_emscripten.js:791:5)
    at ___cxa_throw (projectM_SDL_emscripten.js:1805:7)
    at invoke_viii (projectM_SDL_emscripten.js:12236:29)
    at projectM_SDL_emscripten.wasm:0x48b12
    at projectM_SDL_emscripten.wasm:0x48357
    at invoke_viii (projectM_SDL_emscripten.js:12236:29)
    at projectM_SDL_emscripten.wasm:0x1ab175
    at invoke_vii (projectM_SDL_emscripten.js:12214:29)
    at projectM_SDL_emscripten.wasm:0x1aa6a7

I tweaked the html a little bit to wait for user interaction before trying to use the audio context but that hasn't helped.

I did actually get this running once, but I don't recall the exact emscripten or projectm versions.

@nzoschke
Copy link

nzoschke commented Dec 2, 2023

This works against projectm version projectM-visualizer/projectm@8461bb9

So something in projectM-visualizer/projectm#741 broke it

@kblaschke
Copy link
Member Author

There's something going wrong when switching/loading presets as far as I could tell. I sadly didn't found the time yet between Christmas parties and curing a bad flu to look further into it or even merge my other open PRs. Hopefully will get this resolved in early January. If you can find out more until then, that's highly appreciated.

@fucksophie
Copy link

@nzoschke Got further?

@fucksophie
Copy link

On the emcmake command, I modified it to include projectM4_DIR. It looks like this: emcmake cmake .. -DprojectM4_DIR=/usr/local/lib/cmake/projectM4 -DPRESETS_DIR=/opt/projectm/presets/presets-cream-of-the-crop,
but I'm running into
Could not find a configuration file for package "projectM4" that is compatible with requested version "".

@kblaschke
Copy link
Member Author

@fucksophie The proper variable to pass to CMake would be CMAKE_PREFIX_PATH, as projectM uses the more modern configuration packages and the <pkgname>_DIR variable only works with some find scripts. CMake needs to search certain subdirectories to find all required build files, and this logic only works with the prefix path:

emcmake cmake .. -DCMAKE_PREFIX_PATH=/usr/local/ -DPRESETS_DIR=/opt/projectm/presets/presets-cream-of-the-crop

I'm also a bit confused about the /usr/local path here, as I'd not expect emscripten binaries/libraries to be installed in POSIX dirs, which are normally used to store libraries compatible with the host system. I'd suggest installing the emscripten build of libprojectM somewhere else, e.g. in your user/development dir. Just pass CMake the appropriate CMAKE_INSTALL_PREFIX when building libprojectM with emscripten. Then, when building the emscripten example, pass the same path as CMAKE_PREFIX_PATH and it should work.

@kblaschke
Copy link
Member Author

Noticed I had a few changes lying around for a while, pushed them. Build works with latest libprojectM dev versions.

Here's the build result for demonstration purposes.

Audio capturing is still wonky, sometimes it works, sometimes not. Guess this is a browser thing, or some issue with the web audio API and emscripten. @blaquewithaq You expertise with browser audio capturing might come in handy in that regard!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants