emscripten-core / emscripten-core/emscripten
Emscripten arm64 > 3.1.26 cannot build certain libboost libraries
- Dominant language
- C++
- Stars
- 27.6k
- Forks
- 3.6k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 105
Description
**Version of emscripten/emsdk:**
Failing: 3.1.27 through 3.1.57
Passing: 3.1.10 through 3.1.26
**Failing command line in full:**
My goal is to build boost single threaded, so as not to require content isolation (COOP and COEP) when running within a browser.
Tested with libboost src from 1.79 through 1.85.
Within boost rootdir:
```export NO_BZIP2=1
./bootstrap.sh \
--with-libraries=system,thread,chrono,serialization,regex```
cat "import os ; \
local EMSCRIPTEN = [ os.environ EMSCRIPTEN ] ; \
\
using clang : emscripten \
: \
emcc -v -s USE_ZLIB=1 -s USE_PTHREADS=0 \
: \
$(EMSCRIPTEN) \
$(EMSCRIPTEN)/emar \
$(EMSCRIPTEN)/emranlib \
$(EMSCRIPTEN)/emlink \
-std=c++11 \
; \
\
\
import type : change-generated-target-suffix ; \
type.change-generated-target-suffix EXE : emscripten : js ;" >> project-config.jam
rm -rf ./output
mkdir -p ./output
./b2 -q -a -j 10 \
toolset=clang-emscripten \
threading=single \
link=static \
optimization=space \
variant=release \
cxxflags=-no-pthread \
stage \
--stagedir=./output
unset NO_BZIP2
```
### Output
```clang-darwin.compile.c++ bin.v2/libs/thread/build/clang-darwin-emscripten/release/link-static/optimization-space/threadapi-pthread/threading-multi/visibility-hidden/pthread/once.o
/Users/user/code/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/Users/user/code/emsdk/upstream/emscripten/cache/sysroot -DEMSCRIPTEN -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -x c++ -fvisibility-inlines-hidden -std=c++11 -Os -Wall -fvisibility=hidden -Wno-inline -Wextra -Wno-long-long -Wno-unused-parameter -Wno-variadic-macros -Wunused-function -no-pthread -DBOOST_ALL_NO_LIB=1 -DBOOST_THREAD_BUILD_LIB=1 -DBOOST_THREAD_DONT_USE_CHRONO -DBOOST_THREAD_POSIX -DNDEBUG -I. -c libs/thread/src/pthread/once.cpp -o bin.v2/libs/thread/build/clang-darwin-emscripten/release/link-static/optimization-space/threadapi-pthread/threading-multi/visibility-hidden/pthread/once.o
clang version 19.0.0git (https:/github.com/llvm/llvm-project ccdebbae4d77d3efc236af92c22941de5d437e01)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/user/code/emsdk/upstream/bin
(in-process)
"/Users/user/code/emsdk/upstream/bin/clang-19" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name once.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/Users/user/code/monero-ts/external/monero-cpp/external/boost-sdk -v -fcoverage-compilation-dir=/Users/user/code/monero-ts/external/monero-cpp/external/boost-sdk -resource-dir /Users/user/code/emsdk/upstream/lib/clang/19 -D EMSCRIPTEN -D BOOST_ALL_NO_LIB=1 -D BOOST_THREAD_BUILD_LIB=1 -D BOOST_THREAD_DONT_USE_CHRONO -D BOOST_THREAD_POSIX -D NDEBUG -I . -isysroot /Users/user/code/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /Users/user/code/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1 -internal-isystem /Users/user/code/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 -internal-isystem /Users/user/code/emsdk/upstream/lib/clang/19/include -internal-isystem /Users/user/code/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /Users/user/code/emsdk/upstream/emscripten/cache/sysroot/include -Os -Wall -Wno-inline -Wextra -Wno-long-long -Wno-unused-parameter -Wno-variadic-macros -Wunused-function -std=c++11 -fdeprecated-macro -ferror-limit 19 -fvisibility=hidden -fvisibility-inlines-hidden -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fignore-exceptions -fexceptions -vectorize-loops -vectorize-slp -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o bin.v2/libs/thread/build/clang-darwin-emscripten/release/link-static/optimization-space/threadapi-pthread/threading-multi/visibility-hidden/pthread/once.o -x c++ libs/thread/src/pthread/once.cpp
clang -cc1 version 19.0.0git based upon LLVM 19.0.0git default target x86_64-apple-darwin22.4.0
ignoring nonexistent directory "/Users/user/code/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/Users/user/code/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
.
/Users/user/code/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
/Users/user/code/emsdk/upstream/emscripten/cache/sysroot/include/compat
/Users/user/code/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
/Users/user/code/emsdk/upstream/lib/clang/19/include
/Users/user/code/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
In file included from libs/thread/src/pthread/once.cpp:6:
In file included from ./boost/thread/detail/config.hpp:13:
In file included from ./boost/thread/detail/platform.hpp:17:
./boost/config/requires_threads.hpp:47:5: error: "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
47 | # error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
| ^
1 error generated.
"emcc" "-v" "-s" "USE_ZLIB=1" "-s" "USE_PTHREADS=0" -x c++ -fvisibility-inlines-hidden -std=c++11 -Os -Wall -fvisibility=hidden -Wno-inline -Wextra -Wno-long-long -Wno-unused-parameter -Wno-variadic-macros -Wunused-function -no-pthread -DBOOST_ALL_NO_LIB=1 -DBOOST_THREAD_BUILD_LIB=1 -DBOOST_THREAD_DONT_USE_CHRONO -DBOOST_THREAD_POSIX -DNDEBUG -I"." -c -o "bin.v2/libs/thread/build/clang-darwin-emscripten/release/link-static/optimization-space/threadapi-pthread/threading-multi/visibility-hidden/pthread/once.o" "libs/thread/src/pthread/once.cpp"
```
Contributor guide
Assessment
This issue has not been assessed yet.