Skip to content

Warnings while compiling to WebAssembly #348

Description

@allsey87

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:

  1. Conditional compilation in rcutils_get_platform_library_name

rcutils/src/shared_library.c:289:16: warning: unused parameter 'buffer_size' [-Wunused-parameter]
rcutils/src/shared_library.c:290:8: warning: unused parameter 'debug' [-Wunused-parameter]

It seems when I compile using Clang/Emscripten, none of the #ifdefs are matching my configuration in rcutils_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.

  1. Conditional compilation in rcutils_strerror

rcutils/src/strerror.c:32:10: warning: incompatible integer to pointer conversion initializing 'char *' with an expression of type 'int' [-Wint-conversion]

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 an int instead of a char*.

For reference, I am using the Emscripten 3.1.0 (Clang 14.0.0) with the following colcon mixin:

{
    "build": {
        "emscripten": {
            "cmake-args": [
                "-DCMAKE_TOOLCHAIN_FILE=/path/to/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake",
                "-DCMAKE_STAGING_PREFIX=/path/to/developer/emsdk/upstream/emscripten/cache/sysroot/usr/",
                "-DBUILD_SHARED_LIBS=OFF",
                "-DBUILD_TESTING=OFF",
                "--no-warn-unused-cli"
            ]
        }
    }
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions