diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2023-06-21 12:15:07 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2023-06-27 11:53:18 -0700 |
commit | c5b16ab8b957d53b75c73bb24144a4f61c86234d (patch) | |
tree | d4ada77ecd56f09ea3996a39a60cae4dd6b156f4 /docs | |
parent | 43f24060f3e0065b44b1909d88bcc8e2882e9e5e (diff) | |
download | meson-c5b16ab8b957d53b75c73bb24144a4f61c86234d.zip meson-c5b16ab8b957d53b75c73bb24144a4f61c86234d.tar.gz meson-c5b16ab8b957d53b75c73bb24144a4f61c86234d.tar.bz2 |
modules/rust: Add a machine file property for extra clang args with bindgen
It's currently impossible to inject extra clang arguments when using
bindgen, which is problematic when cross compiling since you may need
critical arguments like `--target=...`. Because such arguments must be
passed after the `--` it's impossible to inject them currently without
going to something like a wrapper script.
Fixes: #11805
Diffstat (limited to 'docs')
-rw-r--r-- | docs/markdown/Machine-files.md | 2 | ||||
-rw-r--r-- | docs/markdown/Rust-module.md | 9 | ||||
-rw-r--r-- | docs/markdown/snippets/rust_extra_clang_bindgen_arguments.md | 8 |
3 files changed, 18 insertions, 1 deletions
diff --git a/docs/markdown/Machine-files.md b/docs/markdown/Machine-files.md index ecdb8b4..9e4b0c2 100644 --- a/docs/markdown/Machine-files.md +++ b/docs/markdown/Machine-files.md @@ -237,6 +237,8 @@ section. subprojects. This setting has no effect if the `exe_wrapper` was not specified. The default value is `true`. (*new in 0.56.0*) - `java_home` is an absolute path pointing to the root of a Java installation. +- `bindgen_clang_arguments` an array of extra arguments to pass to clang when + calling bindgen ### CMake variables diff --git a/docs/markdown/Rust-module.md b/docs/markdown/Rust-module.md index 512c4ec..30a6345 100644 --- a/docs/markdown/Rust-module.md +++ b/docs/markdown/Rust-module.md @@ -86,10 +86,17 @@ r1 = rust.bindgen( ) ``` - *Since 1.1.0* Meson will synchronize assertions for Rust and C/C++ when the `b_ndebug` option is set (via `-DNDEBUG` for C/C++, and `-C debug-assertions=on` for Rust), and will pass `-DNDEBUG` as an extra argument to clang. This allows for reliable wrapping of `-DNDEBUG` controlled behavior with `#[cfg(debug_asserions)]` and or `cfg!()`. Before 1.1.0, assertions for Rust were never turned on by Meson. + +*Since 1.2.0* Additional arguments to pass to clang may be specified in a +*machine file in the properties section: + +```ini +[properties] +bindgen_clang_arguments = ['--target', 'x86_64-linux-gnu'] +``` diff --git a/docs/markdown/snippets/rust_extra_clang_bindgen_arguments.md b/docs/markdown/snippets/rust_extra_clang_bindgen_arguments.md new file mode 100644 index 0000000..71268d4 --- /dev/null +++ b/docs/markdown/snippets/rust_extra_clang_bindgen_arguments.md @@ -0,0 +1,8 @@ +## A machine file may be used to pass extra arguments to clang in a bindgen call + +Because of the way that bindgen proxies arguments to clang the only choice to +add extra arguments currently is to wrap bindgen in a script, since the +arguments must come after a `--`. This is inelegant, and not very portable. Now +a `bindgen_clang_arguments` field may be placed in the machine file for the host +machine, and these arguments will be added to every bindgen call for clang. This +is intended to be useful for things like injecting `--target` arguments. |