[PATCH v2 26/27] build-sys: pass -fvisibility=default for wasm bindgen

marcandre.lureau--- via Devel posted 27 patches 1 week, 3 days ago
There is a newer version of this series
[PATCH v2 26/27] build-sys: pass -fvisibility=default for wasm bindgen
Posted by marcandre.lureau@redhat.com 1 week, 3 days ago
From: Marc-André Lureau <marcandre.lureau@redhat.com>

Otherwise, no functions are generated:
https://github.com/rust-lang/rust-bindgen/issues/2989

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 meson.build                    | 4 ++++
 rust/bql/meson.build           | 1 +
 rust/chardev/meson.build       | 1 +
 rust/hw/char/pl011/meson.build | 1 +
 rust/hw/core/meson.build       | 1 +
 rust/migration/meson.build     | 3 ++-
 rust/qom/meson.build           | 1 +
 rust/system/meson.build        | 1 +
 rust/util/meson.build          | 1 +
 9 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 2f134c9e75..cd2b5fa863 100644
--- a/meson.build
+++ b/meson.build
@@ -4255,6 +4255,10 @@ if have_rust
   else
     bindgen_args_common += ['--merge-extern-blocks']
   endif
+  bindgen_c_args = []
+  if host_arch == 'wasm32'
+    bindgen_c_args += ['-fvisibility=default']
+  endif
   subdir('rust')
 endif
 
diff --git a/rust/bql/meson.build b/rust/bql/meson.build
index f369209dfd..d020a519bf 100644
--- a/rust/bql/meson.build
+++ b/rust/bql/meson.build
@@ -21,6 +21,7 @@ _bql_bindings_inc_rs = rust.bindgen(
   include_directories: bindings_incdir,
   bindgen_version: ['>=0.60.0'],
   args: bindgen_args_common,
+  c_args: bindgen_c_args,
 )
 
 _bql_rs = static_library(
diff --git a/rust/chardev/meson.build b/rust/chardev/meson.build
index 370895c111..e7ce02b3bc 100644
--- a/rust/chardev/meson.build
+++ b/rust/chardev/meson.build
@@ -20,6 +20,7 @@ _chardev_bindings_inc_rs = rust.bindgen(
   include_directories: bindings_incdir,
   bindgen_version: ['>=0.60.0'],
   args: bindgen_args_common + _chardev_bindgen_args,
+  c_args: bindgen_c_args,
 )
 
 _chardev_rs = static_library(
diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build
index ffdc8af53f..a33f32906e 100644
--- a/rust/hw/char/pl011/meson.build
+++ b/rust/hw/char/pl011/meson.build
@@ -12,6 +12,7 @@ _libpl011_bindings_inc_rs = rust.bindgen(
   include_directories: bindings_incdir,
   bindgen_version: ['>=0.60.0'],
   args: bindgen_args_common,
+  c_args: bindgen_c_args,
 )
 
 _libpl011_rs = static_library(
diff --git a/rust/hw/core/meson.build b/rust/hw/core/meson.build
index 81d8c77f9a..e1ae95ed61 100644
--- a/rust/hw/core/meson.build
+++ b/rust/hw/core/meson.build
@@ -41,6 +41,7 @@ _hwcore_bindings_inc_rs = rust.bindgen(
   include_directories: bindings_incdir,
   bindgen_version: ['>=0.60.0'],
   args: bindgen_args_common + _hwcore_bindgen_args,
+  c_args: bindgen_c_args,
 )
 
 _hwcore_rs = static_library(
diff --git a/rust/migration/meson.build b/rust/migration/meson.build
index 5e820d43f5..4f8e4ec9d3 100644
--- a/rust/migration/meson.build
+++ b/rust/migration/meson.build
@@ -22,7 +22,8 @@ _migration_bindings_inc_rs = rust.bindgen(
   include_directories: bindings_incdir,
   bindgen_version: ['>=0.60.0'],
   args: bindgen_args_common + _migration_bindgen_args,
-  )
+  c_args: bindgen_c_args,
+)
 
 _migration_rs = static_library(
   'migration',
diff --git a/rust/qom/meson.build b/rust/qom/meson.build
index 40c51b71b2..9df09f62b4 100644
--- a/rust/qom/meson.build
+++ b/rust/qom/meson.build
@@ -12,6 +12,7 @@ _qom_bindings_inc_rs = rust.bindgen(
   include_directories: bindings_incdir,
   bindgen_version: ['>=0.60.0'],
   args: bindgen_args_common,
+  c_args: bindgen_c_args,
 )
 
 _qom_rs = static_library(
diff --git a/rust/system/meson.build b/rust/system/meson.build
index 3ec140de01..0859f39745 100644
--- a/rust/system/meson.build
+++ b/rust/system/meson.build
@@ -20,6 +20,7 @@ _system_bindings_inc_rs = rust.bindgen(
   include_directories: bindings_incdir,
   bindgen_version: ['>=0.60.0'],
   args: bindgen_args_common + _system_bindgen_args,
+  c_args: bindgen_c_args,
 )
 
 _system_rs = static_library(
diff --git a/rust/util/meson.build b/rust/util/meson.build
index 87a893673d..9dcde4fae0 100644
--- a/rust/util/meson.build
+++ b/rust/util/meson.build
@@ -22,6 +22,7 @@ _util_bindings_inc_rs = rust.bindgen(
   include_directories: bindings_incdir,
   bindgen_version: ['>=0.60.0'],
   args: bindgen_args_common + _util_bindgen_args,
+  c_args: bindgen_c_args,
 )
 
 _util_rs = static_library(
-- 
2.51.0


Re: [PATCH v2 26/27] build-sys: pass -fvisibility=default for wasm bindgen
Posted by Kohei Tokunaga 5 days, 15 hours ago
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> Otherwise, no functions are generated:
> https://github.com/rust-lang/rust-bindgen/issues/2989
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  meson.build                    | 4 ++++
>  rust/bql/meson.build           | 1 +
>  rust/chardev/meson.build       | 1 +
>  rust/hw/char/pl011/meson.build | 1 +
>  rust/hw/core/meson.build       | 1 +
>  rust/migration/meson.build     | 3 ++-
>  rust/qom/meson.build           | 1 +
>  rust/system/meson.build        | 1 +
>  rust/util/meson.build          | 1 +
>  9 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/meson.build b/meson.build
> index 2f134c9e75..cd2b5fa863 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -4255,6 +4255,10 @@ if have_rust
>    else
>      bindgen_args_common += ['--merge-extern-blocks']
>    endif
> +  bindgen_c_args = []
> +  if host_arch == 'wasm32'
> +    bindgen_c_args += ['-fvisibility=default']
> +  endif
>    subdir('rust')
>  endif
>
> diff --git a/rust/bql/meson.build b/rust/bql/meson.build
> index f369209dfd..d020a519bf 100644
> --- a/rust/bql/meson.build
> +++ b/rust/bql/meson.build
> @@ -21,6 +21,7 @@ _bql_bindings_inc_rs = rust.bindgen(
>    include_directories: bindings_incdir,
>    bindgen_version: ['>=0.60.0'],
>    args: bindgen_args_common,
> +  c_args: bindgen_c_args,
>  )
>
>  _bql_rs = static_library(
> diff --git a/rust/chardev/meson.build b/rust/chardev/meson.build
> index 370895c111..e7ce02b3bc 100644
> --- a/rust/chardev/meson.build
> +++ b/rust/chardev/meson.build
> @@ -20,6 +20,7 @@ _chardev_bindings_inc_rs = rust.bindgen(
>    include_directories: bindings_incdir,
>    bindgen_version: ['>=0.60.0'],
>    args: bindgen_args_common + _chardev_bindgen_args,
> +  c_args: bindgen_c_args,
>  )
>
>  _chardev_rs = static_library(
> diff --git a/rust/hw/char/pl011/meson.build
b/rust/hw/char/pl011/meson.build
> index ffdc8af53f..a33f32906e 100644
> --- a/rust/hw/char/pl011/meson.build
> +++ b/rust/hw/char/pl011/meson.build
> @@ -12,6 +12,7 @@ _libpl011_bindings_inc_rs = rust.bindgen(
>    include_directories: bindings_incdir,
>    bindgen_version: ['>=0.60.0'],
>    args: bindgen_args_common,
> +  c_args: bindgen_c_args,
>  )
>
>  _libpl011_rs = static_library(
> diff --git a/rust/hw/core/meson.build b/rust/hw/core/meson.build
> index 81d8c77f9a..e1ae95ed61 100644
> --- a/rust/hw/core/meson.build
> +++ b/rust/hw/core/meson.build
> @@ -41,6 +41,7 @@ _hwcore_bindings_inc_rs = rust.bindgen(
>    include_directories: bindings_incdir,
>    bindgen_version: ['>=0.60.0'],
>    args: bindgen_args_common + _hwcore_bindgen_args,
> +  c_args: bindgen_c_args,
>  )
>
>  _hwcore_rs = static_library(
> diff --git a/rust/migration/meson.build b/rust/migration/meson.build
> index 5e820d43f5..4f8e4ec9d3 100644
> --- a/rust/migration/meson.build
> +++ b/rust/migration/meson.build
> @@ -22,7 +22,8 @@ _migration_bindings_inc_rs = rust.bindgen(
>    include_directories: bindings_incdir,
>    bindgen_version: ['>=0.60.0'],
>    args: bindgen_args_common + _migration_bindgen_args,
> -  )
> +  c_args: bindgen_c_args,
> +)
>
>  _migration_rs = static_library(
>    'migration',
> diff --git a/rust/qom/meson.build b/rust/qom/meson.build
> index 40c51b71b2..9df09f62b4 100644
> --- a/rust/qom/meson.build
> +++ b/rust/qom/meson.build
> @@ -12,6 +12,7 @@ _qom_bindings_inc_rs = rust.bindgen(
>    include_directories: bindings_incdir,
>    bindgen_version: ['>=0.60.0'],
>    args: bindgen_args_common,
> +  c_args: bindgen_c_args,
>  )
>
>  _qom_rs = static_library(
> diff --git a/rust/system/meson.build b/rust/system/meson.build
> index 3ec140de01..0859f39745 100644
> --- a/rust/system/meson.build
> +++ b/rust/system/meson.build
> @@ -20,6 +20,7 @@ _system_bindings_inc_rs = rust.bindgen(
>    include_directories: bindings_incdir,
>    bindgen_version: ['>=0.60.0'],
>    args: bindgen_args_common + _system_bindgen_args,
> +  c_args: bindgen_c_args,
>  )
>
>  _system_rs = static_library(
> diff --git a/rust/util/meson.build b/rust/util/meson.build
> index 87a893673d..9dcde4fae0 100644
> --- a/rust/util/meson.build
> +++ b/rust/util/meson.build
> @@ -22,6 +22,7 @@ _util_bindings_inc_rs = rust.bindgen(
>    include_directories: bindings_incdir,
>    bindgen_version: ['>=0.60.0'],
>    args: bindgen_args_common + _util_bindgen_args,
> +  c_args: bindgen_c_args,
>  )
>
>  _util_rs = static_library(

Reviewed-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>

Regards,
Kohei Tokunaga