summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2020-06-07Fix warning introduced in recent objective-c work.Emilio Cobos Álvarez
2020-06-05Document BINDGEN_EXTRA_CLANG_ARGS env variableTravis Finkenauer
Feature was originally introduced in pull-request #1537
2020-05-18add command-line option for disabling untagged unionsNathan Froyd
One more thing that we can configure from the command line.
2020-05-14ir: Fall back to get the cursors from the type if we find no param decls.Emilio Cobos Álvarez
It seems libclang sometimes doesn't expose the right paramdecl cursors. This should be reported upstream, but it's easy enough to workaround. It loses the parameter names which is a bit unfortunate but... Fixes #1778
2020-05-11Added inheritance to objective-c support.Sebastian Imlay
2020-05-04Do not emit Rust method wrapper for blacklisted functionsStephen Crane
We should not emit Rust struct methods corresponding to a C++ method unless we are actually emitting a binding for that method.
2020-04-27Run `cargo fmt`Joshua Nelson
2020-04-27Upgrade to 2018 editionJoshua Nelson
2020-04-27Run `cargo fix --edition`Joshua Nelson
2020-04-26Really minor cleanup.Emilio Cobos Álvarez
2020-04-23Generator docs: add note about clang documentation string optionsMatej Laitl
I believe this should fix #1265.
2020-04-23Generator docs: mention the word docstring(s) for discoverabilityMatej Laitl
That was what I was searching for initially, make life of future me (and others, hopefully) easier.
2020-04-23Generator docs: use rich text link instead of plain url in textMatej Laitl
2020-03-25Indicate undefined behaviour in enum docs and point to alternativeAphek
2020-03-16Added some initial constraints to the objective-c bindgen stuffSebastian Imlay
2020-03-10ir: Remove redundant parenthesis.Emilio Cobos Álvarez
2020-02-24Delay invoking clang version checks until a functional path is takenKent Fredric
This allows avoiding large numbers of system calls to dynaload clang to determine its version, when no action is performed, for example: - When calling --version / -V - When calling --help This improves the raw responsivity from: Before: time bindgen --help # 0.593s strace -cf bindgen --help # 83k syscalls, 64k to statx After: time bindgen --help # 0.004s strace -cf bindgen --help # 90 syscalls However, it does mean that you can no longer obtain the discovered clang version with: RUST_LOG=info bindgen -V But this may be remedied in a future commit. Closes: https://github.com/rust-lang/rust-bindgen/issues/1736
2020-02-21propose adding host v. target architecture mismatch to problem listbunnie
I spent an afternoon scratching my head on this one before I ran into https://github.com/rust-lang/rust-bindgen/issues/1728. Since the error message welcomes PRs...
2020-02-19Update deprecated methods in builder exampleJonas Platte
2020-02-17var: Constant arrays of const elements should not generate `static mut`s.Emilio Cobos Álvarez
Fixes #1727
2020-02-03options: Add an opt-in to recover the size_t behavior removed in 5d38f2ac.Emilio Cobos Álvarez
2020-02-02ir: codegen: Handle too large bitfield units.Emilio Cobos Álvarez
By not generating various code for it. In the future, we could improve on this by splitting contiguous bitfield units, if needed, so that we can implement them without dealing with rust array derive limits. Fixes #1718
2020-02-02ir: Deindent some code trivially.Emilio Cobos Álvarez
2020-01-29ir: Account for packedness when computing bitfield sizes.Emilio Cobos Álvarez
Fixes #1716
2020-01-22Add comments about regex usage in {white|black}list functionsAurora
2020-01-13codegen: Max guaranteed alignment is 8 (with u64), not target pointer width.Emilio Cobos Álvarez
2020-01-13Remove padding for over-aligned structs when we support repr(align).Emilio Cobos Álvarez
Before repr(align), we could only safely guarantee up to 8-bytes of alignment (I think the pointer-width check is a more conservative way of doing that, in practice, because I _think_ u64 is 8-byte aligned even for smaller targets). So when we may generate a potentially-under-aligned struct, we always used to pad it so as to guarantee that at least the size (and thus reads from rust for C-allocated structs) was fine. But if we support repr(align), then the above is always unneeded.
2020-01-05Added non-keyword support to objective-c methods.Sebastian Imlay
2020-01-05An initial implementation of objective-c generics for #1259 (#1702)simlay
2019-12-20Update latest stable rust to 1.40 and give non_exhaustive featureJohn Brandt
2019-12-16Remove deprecated Error::descriptionKornel
2019-12-13Remove size_t to usize conversion ruleConor McAvity
2019-12-11codegen: Minor cleanup after #1691.Emilio Cobos Álvarez
2019-12-11Add support for wasm_import_moduleJasper-Bekkers
2019-11-28Fix warning on rustdocJake Merdich
Rustdoc was treating doc comments containing `#[non_exhaustive]` as links and warning, so mark that as code to avoid the warning.
2019-11-25Move warnings check on the CILuca Barbato
Always building with `deny(warnings)` leads to messups such as https://docs.rs/crate/bindgen/0.52.0/builds/199624
2019-11-14Make rustfmt happyDavid Vo
2019-11-14Add newtype enum styleDavid Vo
This adds an enum style similar to the existing bitfield style, without the bitwise operator impls. Closes: #1669
2019-11-14Warn rather than panic on unknown namespace prefixJon Gjengset
When a #defined token was used before a namespace, like so (#1676): #define nssv_inline_ns inline nssv_inline_ns namespace literals {} bindgen would crash when encountering the unknown token preceding the namespace token. This is because we don't get to see "past" the ifdef to the underlying token. The true fix to this is to find a way to extract ifdef info through clang, but for the time being we simply change the panic into a warning when such a token is encountered, and then proceed as if it were empty. Fixes #1676.
2019-11-09Replace unsafe ref->ptr transmute with 'as' castingElichai Turkel
2019-11-08Option to use #[repr(transparent)] structs instead of type aliasing.Joseph Rafael Ferrer
2019-11-08Add support for MaybeUninitElichai Turkel
2019-11-03Do not generate implementation for clone for FAMDavid Frey
Flexible array members are represented in the generated binding by a struct __IncompleteArrayField<T>. Since such members do not contain any information about how big they are, it is impossible to automatically clone or copy them, either in C or rust. Fixes #1431.
2019-10-28Move rust feature docs into a more useful place.Emilio Cobos Álvarez
2019-10-22Add `disable_nested_struct_naming` option (#1610)oblique
The following structs have different names for C and C++. In case of C they are visible as `foo` and `bar`. In case of C++ they are visible as `foo` and `foo::bar`. By default bindgen follows C++ naming to avoid generating duplicate names. With this option the following structs will be named as `foo` and `bar` instead of `foo` and `foo_bar`. ``` struct foo { struct bar { } b; }; ``` In case of an unnamed definition we build the canonical name from the inner most named definition. For example the following will generate `baz__bindgen_ty_1`: ``` struct foo { struct bar { struct baz { struct { } u; } z; } b; }; ``` This option should be used only for C headers. It is needed in some rare situations where user used another code generator that already mangled nested definitions. A real life example is [asn1c] with `-fcompound-names` option. [asn1c]: https://github.com/vlm/asn1c
2019-10-22codegen: Handle opaque aliases to enums correctly.Emilio Cobos Álvarez
Opaque types don't use the path to their aliased type but an opaque type like an array or primitive with the right alignment. Fixes #1599.
2019-10-21Cargo fmt.Emilio Cobos Álvarez
2019-10-21Allow static and dynamic linkingJeremy Fitzhardinge
Currently bindgen always uses clang-sys with the "runtime" feature - that is, load libclang at runtime with dlopen (or similar) at runtime. This PR keeps this default, but also - adds "static" to statically link libclang - without either "runtime" or "static", link with the shared library Many distributions don't ship with a static libclang, but linking with the dynamic library will use normal ld.so mechanisms to define where the .so file should be found. (Ditto for the Mac and Windows equivalents.)
2019-10-14Rustfmt to account for rebase.Emilio Cobos Álvarez
2019-10-14Run `cargo fmt` on the main crate.Emilio Cobos Álvarez