Closed rezzeted closed 1 month ago
Basically it uses windows code because it doesn't see pthreads.
Sorry but the library does not support emscriptem and it's not tested in that platform.
It seems that Emscriptem wronly defines "_POSIX_THREADS " as -1, since POSIX defines that meaning quite well:
If a symbolic constant is defined with the value -1, the option is not supported. Headers, data types, and function interfaces required only for the option need not be supplied. An application that attempts to use anything associated only with the option is considered to be requiring an extension.
The _POSIX_THREADS
value on emscripten changes with -pthread
which is the official way to enable it.
https://emscripten.org/docs/porting/pthreads.html#compiling-with-pthreads-enabled
However, even cmake's
set(THREADS_PREFER_PTHREAD_FLAG 1)
find_package(Threads REQUIRED)
doesn't add the flag, so it has to be done explicitly.
The other point is that the (CMake) build behaviour is misleading: If it doesn't find POSIX threads, it immediately uses Windows code, even on non-Windows platforms. This leads to unexpected error messages which do not point to the lack of POSIX threads.
Package: boost-container:wasm32-emscripten@1.85.0
Host Environment
To Reproduce
vcpkg install
Failure logs
D:\sandbox\sandbox\toolchain\vcpkg\buildtrees\boost-container\install-wasm32-emscripten-dbg-out.log
``` Change Dir: 'D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/wasm32-emscripten-dbg' Run Build Command(s): D:/sandbox/sandbox/toolchain/vcpkg/downloads/tools/ninja/1.10.2-windows/ninja.exe -v -v -j33 install [1/9] D:\_compilers\emsdk\upstream\emscripten\em++.bat -DBOOST_CONTAINER_NO_LIB -DBOOST_CONTAINER_STATIC_LINK -ID:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include -isystem D:/sandbox/sandbox/_obj-lib-etc-em/vcpkg_installed/wasm32-emscripten/include -g -fvisibility=hidden -fvisibility-inlines-hidden -MD -MT libs/container/CMakeFiles/boost_container.dir/src/dlmalloc.cpp.o -MF libs\container\CMakeFiles\boost_container.dir\src\dlmalloc.cpp.o.d -o libs/container/CMakeFiles/boost_container.dir/src/dlmalloc.cpp.o -c D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/src/dlmalloc.cpp [2/9] D:\_compilers\emsdk\upstream\emscripten\em++.bat -DBOOST_CONTAINER_NO_LIB -DBOOST_CONTAINER_STATIC_LINK -ID:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include -isystem D:/sandbox/sandbox/_obj-lib-etc-em/vcpkg_installed/wasm32-emscripten/include -g -fvisibility=hidden -fvisibility-inlines-hidden -MD -MT libs/container/CMakeFiles/boost_container.dir/src/synchronized_pool_resource.cpp.o -MF libs\container\CMakeFiles\boost_container.dir\src\synchronized_pool_resource.cpp.o.d -o libs/container/CMakeFiles/boost_container.dir/src/synchronized_pool_resource.cpp.o -c D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/src/synchronized_pool_resource.cpp FAILED: libs/container/CMakeFiles/boost_container.dir/src/synchronized_pool_resource.cpp.o D:\_compilers\emsdk\upstream\emscripten\em++.bat -DBOOST_CONTAINER_NO_LIB -DBOOST_CONTAINER_STATIC_LINK -ID:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include -isystem D:/sandbox/sandbox/_obj-lib-etc-em/vcpkg_installed/wasm32-emscripten/include -g -fvisibility=hidden -fvisibility-inlines-hidden -MD -MT libs/container/CMakeFiles/boost_container.dir/src/synchronized_pool_resource.cpp.o -MF libs\container\CMakeFiles\boost_container.dir\src\synchronized_pool_resource.cpp.o.d -o libs/container/CMakeFiles/boost_container.dir/src/synchronized_pool_resource.cpp.o -c D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/src/synchronized_pool_resource.cpp In file included from D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/src/synchronized_pool_resource.cpp:14: D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include\boost/container/detail/thread_mutex.hpp:109:12: error: '__declspec' attributes are not enabled; use '-fdeclspec' or '-fms-extensions' to enable support for __declspec attributes 109 | extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(::_RTL_CRITICAL_SECTION *); | ^ D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include\boost/container/detail/thread_mutex.hpp:109:39: warning: '__stdcall' calling convention is not supported for this target [-Wignored-attributes] 109 | extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(::_RTL_CRITICAL_SECTION *); | ^ D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include\boost/container/detail/thread_mutex.hpp:111:12: error: '__declspec' attributes are not enabled; use '-fdeclspec' or '-fms-extensions' to enable support for __declspec attributes 111 | extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(::_RTL_CRITICAL_SECTION *); | ^ D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include\boost/container/detail/thread_mutex.hpp:111:39: warning: '__stdcall' calling convention is not supported for this target [-Wignored-attributes] 111 | extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(::_RTL_CRITICAL_SECTION *); | ^ D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include\boost/container/detail/thread_mutex.hpp:112:12: error: '__declspec' attributes are not enabled; use '-fdeclspec' or '-fms-extensions' to enable support for __declspec attributes 112 | extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(::_RTL_CRITICAL_SECTION *); | ^ D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include\boost/container/detail/thread_mutex.hpp:112:39: warning: '__stdcall' calling convention is not supported for this target [-Wignored-attributes] 112 | extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(::_RTL_CRITICAL_SECTION *); | ^ D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include\boost/container/detail/thread_mutex.hpp:113:12: error: '__declspec' attributes are not enabled; use '-fdeclspec' or '-fms-extensions' to enable support for __declspec attributes 113 | extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(::_RTL_CRITICAL_SECTION *); | ^ D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include\boost/container/detail/thread_mutex.hpp:113:39: warning: '__stdcall' calling convention is not supported for this target [-Wignored-attributes] 113 | extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(::_RTL_CRITICAL_SECTION *); | ^ 4 warnings and 4 errors generated. [3/9] D:\_compilers\emsdk\upstream\emscripten\em++.bat -DBOOST_CONTAINER_NO_LIB -DBOOST_CONTAINER_STATIC_LINK -ID:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include -isystem D:/sandbox/sandbox/_obj-lib-etc-em/vcpkg_installed/wasm32-emscripten/include -g -fvisibility=hidden -fvisibility-inlines-hidden -MD -MT libs/container/CMakeFiles/boost_container.dir/src/unsynchronized_pool_resource.cpp.o -MF libs\container\CMakeFiles\boost_container.dir\src\unsynchronized_pool_resource.cpp.o.d -o libs/container/CMakeFiles/boost_container.dir/src/unsynchronized_pool_resource.cpp.o -c D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/src/unsynchronized_pool_resource.cpp [4/9] D:\_compilers\emsdk\upstream\emscripten\em++.bat -DBOOST_CONTAINER_NO_LIB -DBOOST_CONTAINER_STATIC_LINK -ID:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include -isystem D:/sandbox/sandbox/_obj-lib-etc-em/vcpkg_installed/wasm32-emscripten/include -g -fvisibility=hidden -fvisibility-inlines-hidden -MD -MT libs/container/CMakeFiles/boost_container.dir/src/monotonic_buffer_resource.cpp.o -MF libs\container\CMakeFiles\boost_container.dir\src\monotonic_buffer_resource.cpp.o.d -o libs/container/CMakeFiles/boost_container.dir/src/monotonic_buffer_resource.cpp.o -c D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/src/monotonic_buffer_resource.cpp [5/9] D:\_compilers\emsdk\upstream\emscripten\em++.bat -DBOOST_CONTAINER_NO_LIB -DBOOST_CONTAINER_STATIC_LINK -ID:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include -isystem D:/sandbox/sandbox/_obj-lib-etc-em/vcpkg_installed/wasm32-emscripten/include -g -fvisibility=hidden -fvisibility-inlines-hidden -MD -MT libs/container/CMakeFiles/boost_container.dir/src/pool_resource.cpp.o -MF libs\container\CMakeFiles\boost_container.dir\src\pool_resource.cpp.o.d -o libs/container/CMakeFiles/boost_container.dir/src/pool_resource.cpp.o -c D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/src/pool_resource.cpp [6/9] D:\_compilers\emsdk\upstream\emscripten\em++.bat -DBOOST_CONTAINER_NO_LIB -DBOOST_CONTAINER_STATIC_LINK -ID:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include -isystem D:/sandbox/sandbox/_obj-lib-etc-em/vcpkg_installed/wasm32-emscripten/include -g -fvisibility=hidden -fvisibility-inlines-hidden -MD -MT libs/container/CMakeFiles/boost_container.dir/src/global_resource.cpp.o -MF libs\container\CMakeFiles\boost_container.dir\src\global_resource.cpp.o.d -o libs/container/CMakeFiles/boost_container.dir/src/global_resource.cpp.o -c D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/src/global_resource.cpp [7/9] D:\_compilers\emsdk\upstream\emscripten\emcc.bat -DBOOST_CONTAINER_NO_LIB -DBOOST_CONTAINER_STATIC_LINK -ID:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/include -isystem D:/sandbox/sandbox/_obj-lib-etc-em/vcpkg_installed/wasm32-emscripten/include -g -fvisibility=hidden -MD -MT libs/container/CMakeFiles/boost_container.dir/src/alloc_lib.c.o -MF libs\container\CMakeFiles\boost_container.dir\src\alloc_lib.c.o.d -o libs/container/CMakeFiles/boost_container.dir/src/alloc_lib.c.o -c D:/sandbox/sandbox/toolchain/vcpkg/buildtrees/boost-container/src/ost-1.85.0-b589bd4c0b.clean/libs/container/src/alloc_lib.c ninja: build stopped: subcommand failed. ```Additional context
vcpkg.json