Open allsey87 opened 2 years ago
Note: Emscripten does support dynamic linking (with so
or wasm
as the recommended extension), however, it is still a bit strange that shared_library.c
is getting compiled at all when BUILD_SHARED_LIBS=OFF
...
Just for reference - since WASM is a separate virtual ISA, it might be helpful to look at what was done for other platforms (like QNX): https://github.com/ros2/ros2/issues/988.
For point 1, as you alluded, another condition can be added to https://github.com/ros2/rcutils/blob/67095577eaf39977f30f7db1ae92f7b0b2ec48d0/src/shared_library.c#L297
For point 2, rcutils_strerror
does have a conditional branch that deals with the XSI-compliant strerror_r
signature (second signature), but I think conditional compilation went down the wrong path here too.
https://github.com/ros2/rcutils/blob/67095577eaf39977f30f7db1ae92f7b0b2ec48d0/src/strerror.c#L37-L44
Hi! I am working on compiling ROS2 nodes to WebAssembly using Emscripten so that I can simulate robot control software in the browser. For the most part, this is going smoothly so far but there are a couple warnings that I think should be addressed:
rcutils_get_platform_library_name
It seems when I compile using Clang/Emscripten, none of the
#ifdef
s are matching my configuration inrcutils_get_platform_library_name
, which is a bit unusual since I was under the impression that Emscripten defines__LINUX__
(uppercase). I will investigate this, however, there is also the possibility of checking whether__EMSCRIPTEN__
has been defined.rcutils_strerror
This warning seems very similar to the previous one. It seems again that conditional compilation has gone down the wrong path since the version
strerror_r
that comes with Emscripten's C standard library returns anint
instead of achar*
.For reference, I am using the Emscripten 3.1.0 (Clang 14.0.0) with the following colcon mixin: