emscripten-core / emscripten-core/emscripten
CMake emscripten flags -s with no space not working on Windows
- Dominant language
- C++
- Stars
- 27.6k
- Forks
- 3.6k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 105
Description
## Issue
I experienced an issue building an emscripten project using CMake on Windows. There is no problem on Mac.
Briefly, inside CMakeLists.txt,
```cmake
# This works, on Mac and Windows.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s MODULARIZE -s EXPORT_ES6 -s USE_SDL=2")
# But having no space between -s and the name is broken on Windows.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -sMODULARIZE -sEXPORT_ES6 -sUSE_SDL=2")
```
But perhaps this was the intended behavior.
## Expected
Successful compilation, the emscripten specific options being removed before any other calls.
## Actual
Result of calling `emmake make -Cbuild`:
```
make: C:\Program Files\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin\mingw32-make.exe -Cbuild
mingw32-make: Entering directory 'G:/Documents/CppProjects/noise_thing/build'
-- Configuring done
-- Generating done
-- Build files have been written to: G:/Documents/CppProjects/noise_thing/build
mingw32-make[2]: Entering directory 'G:/Documents/CppProjects/noise_thing/build'
[ 50%] Building CXX object CMakeFiles/MyProject_MAIN.dir/src/audio_callback.cpp.o
clang++: error: unknown argument: '-sMODULARIZE'
clang++: error: unknown argument: '-sEXPORT_ES6'
clang++: error: unknown argument: '-sUSE_SDL=2'
em++: error: 'G:/Program Source/emscripten/upstream/bin\clang++.exe -target wasm32-unknown-emscripten -D__EMSCRIPTEN_major__=1 -D__EMSCRIPTEN_minor__=39 -D__EMSCRIPTEN_tiny__=13 -D_LIBCPP_ABI_VERSION=2 -Dunix -D__unix -D__unix__ -Werror=implicit-function-declaration -Xclang -nostdsysteminc -Xclang -isystemG:\Program Source\emscripten\upstream\emscripten\system\include\libcxx -Xclang -isystemG:\Program Source\emscripten\upstream\emscripten\system\lib\libcxxabi\include -Xclang -isystemG:\Program Source\emscripten\upstream\emscripten\system\lib\libunwind\include -Xclang -isystemG:\Program Source\emscripten\upstream\emscripten\system\include\compat -Xclang -isystemG:\Program Source\emscripten\upstream\emscripten\system\include -Xclang -isystemG:\Program Source\emscripten\upstream\emscripten\system\include\libc -Xclang -isystemG:\Program Source\emscripten\upstream\emscripten\system\lib\libc\musl\arch\emscripten -Xclang -isystemG:\Program Source\emscripten\upstream\emscripten\system\local\include -Xclang -isystemC:\Users\David\.emscripten_cache\wasm\include -Wall -Wextra -Wpedantic -sMODULARIZE -sEXPORT_ES6 -sUSE_SDL=2 -g -O -g -fdebug-compilation-dir=.. -std=gnu++2a -c -DEMSCRIPTEN -fignore-exceptions G:\Documents\CppProjects\noise_thing\src\audio_callback.cpp -Xclang -isystemG:\Program Source\emscripten\upstream\emscripten\system\include\SDL -c -o CMakeFiles\MyProject_MAIN.dir\src\audio_callback.cpp.o -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr' failed (1)
mingw32-make[2]: *** [CMakeFiles\MyProject_MAIN.dir\build.make:79: CMakeFiles/MyProject_MAIN.dir/src/audio_callback.cpp.o] Error 1
mingw32-make[2]: Leaving directory 'G:/Documents/CppProjects/noise_thing/build'
mingw32-make[1]: *** [CMakeFiles\Makefile2:95: CMakeFiles/MyProject_MAIN.dir/all] Error 2
mingw32-make[1]: Leaving directory 'G:/Documents/CppProjects/noise_thing/build'
mingw32-make: *** [Makefile:100: all] Error 2
mingw32-make: Leaving directory 'G:/Documents/CppProjects/noise_thing/build'
```
Contributor guide
Assessment
This issue has not been assessed yet.