fzyzcjy / flutter_rust_bridge

Flutter/Dart <-> Rust binding generator, feature-rich, but seamless and simple.
https://fzyzcjy.github.io/flutter_rust_bridge/
MIT License
4.09k stars 278 forks source link

Incorrect types in bridged Dart code, because of `fatal error: 'stdbool.h' file not found` #650

Closed TheLumbee closed 2 years ago

TheLumbee commented 2 years ago

Describe the bug

Getting the following error:

ERROR: lib/bridged_increment.dart:109:9: Error: The parameter 'ptr' of the method 'NativeIncrementWire.store_dart_post_cobject' has type 'int', which does not match the corresponding type, 'Pointer<NativeFunction<Bool Function(Int64, Pointer<Void>)>>', in the overridden method, 'FlutterRustBridgeWireBase.store_dart_post_cobject'.
ERROR:  - 'Pointer' is from 'dart:ffi'.
ERROR:  - 'NativeFunction' is from 'dart:ffi'.
ERROR:  - 'Bool' is from 'dart:ffi'.
ERROR:  - 'Int64' is from 'dart:ffi'.
ERROR:  - 'Void' is from 'dart:ffi'.
ERROR: Change to a supertype of 'Pointer<NativeFunction<Bool Function(Int64, Pointer<Void>)>>', or, for a covariant parameter, a subtype.
ERROR:     int ptr,
ERROR:         ^
ERROR: /opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_rust_bridge-1.41.2/lib/src/basic.dart:153:8: Context: This is the overridden method ('store_dart_post_cobject').
ERROR:   void store_dart_post_cobject(
ERROR:        ^
ERROR: lib/bridged_multiply.dart:95:9: Error: The parameter 'ptr' of the method 'NativeMultiplyWire.store_dart_post_cobject' has type 'int', which does not match the corresponding type, 'Pointer<NativeFunction<Bool Function(Int64, Pointer<Void>)>>', in the overridden method, 'FlutterRustBridgeWireBase.store_dart_post_cobject'.
ERROR:  - 'Pointer' is from 'dart:ffi'.
ERROR:  - 'NativeFunction' is from 'dart:ffi'.
ERROR:  - 'Bool' is from 'dart:ffi'.
ERROR:  - 'Int64' is from 'dart:ffi'.
ERROR:  - 'Void' is from 'dart:ffi'.
ERROR: Change to a supertype of 'Pointer<NativeFunction<Bool Function(Int64, Pointer<Void>)>>', or, for a covariant parameter, a subtype.
ERROR:     int ptr,
ERROR:         ^
ERROR: /opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_rust_bridge-1.41.2/lib/src/basic.dart:153:8: Context: This is the overridden method ('store_dart_post_cobject').
ERROR:   void store_dart_post_cobject(
ERROR:   
``
[rust_source_code.zip](https://github.com/fzyzcjy/flutter_rust_bridge/files/9429965/rust_source_code.zip)`

### Codegen logs with `RUST_LOG=debug` environment variable

```shell
[2022-08-25T23:01:08Z DEBUG flutter_rust_bridge_codegen] configs=[Opts { rust_input_path: "/home/user/Documents/frb_practice/native/src/increment.rs", dart_output_path: "/home/user/Documents/frb_practice/lib/bridged_increment.dart", dart_decl_output_path: None, c_output_path: ["/tmp/.tmpnlPopa.h"], rust_crate_dir: "/home/user/Documents/frb_practice/native", rust_output_path: "/home/user/Documents/frb_practice/native/src/bridged_increment.rs", class_name: "NativeIncrement", dart_format_line_length: 80, skip_add_mod_to_lib: false, llvm_path: ["/opt/homebrew/opt/llvm", "/usr/local/opt/llvm", "/usr/lib/llvm-9", "/usr/lib/llvm-10", "/usr/lib/llvm-11", "/usr/lib/llvm-12", "/usr/lib/llvm-13", "/usr/lib/llvm-14", "/usr/lib/", "/usr/lib64/", "C:/Program Files/llvm", "C:/Program Files/LLVM", "C:/msys64/mingw64"], llvm_compiler_opts: "", manifest_path: "/home/user/Documents/frb_practice/native/Cargo.toml", dart_root: Some("/home/user/Documents/frb_practice"), build_runner: true, block_index: BlockIndex(0), skip_deps_check: false }, Opts { rust_input_path: "/home/user/Documents/frb_practice/native/src/multiply.rs", dart_output_path: "/home/user/Documents/frb_practice/lib/bridged_multiply.dart", dart_decl_output_path: None, c_output_path: ["/tmp/.tmpnlPopa.h"], rust_crate_dir: "/home/user/Documents/frb_practice/native", rust_output_path: "/home/user/Documents/frb_practice/native/src/bridged_multiply.rs", class_name: "NativeMultiply", dart_format_line_length: 80, skip_add_mod_to_lib: false, llvm_path: ["/opt/homebrew/opt/llvm", "/usr/local/opt/llvm", "/usr/lib/llvm-9", "/usr/lib/llvm-10", "/usr/lib/llvm-11", "/usr/lib/llvm-12", "/usr/lib/llvm-13", "/usr/lib/llvm-14", "/usr/lib/", "/usr/lib64/", "C:/Program Files/llvm", "C:/Program Files/LLVM", "C:/msys64/mingw64"], llvm_compiler_opts: "", manifest_path: "/home/user/Documents/frb_practice/native/Cargo.toml", dart_root: Some("/home/user/Documents/frb_practice"), build_runner: true, block_index: BlockIndex(1), skip_deps_check: false }]
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/bridged_multiply.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/bridged_increment.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/increment.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/multiply.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::parser] parse_function function name: Ident(increment)
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/bridged_multiply.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/bridged_increment.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/increment.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/multiply.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::parser] parse_function function name: Ident(multiply)
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::tools] Guessing toolchain the runner is run into
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute command: bin=sh args=["-c", "flutter --version"] current_dir=None cmd="sh" "-c" "flutter --version"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::commands] command="sh" "-c" "flutter --version" stdout=Flutter 3.0.5 • channel stable • https://github.com/flutter/flutter.git
    Framework • revision f1875d570e (6 weeks ago) • 2022-07-13 11:24:16 -0700
    Engine • revision e85ea0e79c
    Tools • Dart 2.17.6 • DevTools 2.12.2
     stderr=
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::tools] Checking presence of ffi in dependencies at /home/user/Documents/frb_practice
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::tools] Checking presence of ffi in dependencies at /home/user/Documents/frb_practice
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::tools] Checking presence of ffigen in dev_dependencies at /home/user/Documents/frb_practice
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::tools] Checking presence of ffigen in dev_dependencies at /home/user/Documents/frb_practice
[2022-08-25T23:01:08Z INFO  lib_flutter_rust_bridge_codegen] Picked config: Opts { rust_input_path: "/home/user/Documents/frb_practice/native/src/increment.rs", dart_output_path: "/home/user/Documents/frb_practice/lib/bridged_increment.dart", dart_decl_output_path: None, c_output_path: ["/tmp/.tmpnlPopa.h"], rust_crate_dir: "/home/user/Documents/frb_practice/native", rust_output_path: "/home/user/Documents/frb_practice/native/src/bridged_increment.rs", class_name: "NativeIncrement", dart_format_line_length: 80, skip_add_mod_to_lib: false, llvm_path: ["/opt/homebrew/opt/llvm", "/usr/local/opt/llvm", "/usr/lib/llvm-9", "/usr/lib/llvm-10", "/usr/lib/llvm-11", "/usr/lib/llvm-12", "/usr/lib/llvm-13", "/usr/lib/llvm-14", "/usr/lib/", "/usr/lib64/", "C:/Program Files/llvm", "C:/Program Files/LLVM", "C:/msys64/mingw64"], llvm_compiler_opts: "", manifest_path: "/home/user/Documents/frb_practice/native/Cargo.toml", dart_root: Some("/home/user/Documents/frb_practice"), build_runner: true, block_index: BlockIndex(0), skip_deps_check: false }
[2022-08-25T23:01:08Z INFO  lib_flutter_rust_bridge_codegen] Phase: Parse source code to AST, then to IR
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/bridged_multiply.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/bridged_increment.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/increment.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/multiply.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::parser] parse_function function name: Ident(increment)
[2022-08-25T23:01:08Z INFO  lib_flutter_rust_bridge_codegen] Phase: Transform IR
[2022-08-25T23:01:08Z INFO  lib_flutter_rust_bridge_codegen] Phase: Generate Rust code
[2022-08-25T23:01:08Z INFO  lib_flutter_rust_bridge_codegen] Phase: Generate Dart code
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::generator::dart] distinct_input_types=[Primitive(U32)]
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::generator::dart] distinct_output_types=[Primitive(U32)]
[2022-08-25T23:01:08Z INFO  lib_flutter_rust_bridge_codegen] Phase: Other things
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute format_rust path=/home/user/Documents/frb_practice/native/src/bridged_increment.rs
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute command: bin=rustfmt args=["/home/user/Documents/frb_practice/native/src/bridged_increment.rs"] current_dir=None cmd="rustfmt" "/home/user/Documents/frb_practice/native/src/bridged_increment.rs"
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::commands] command="rustfmt" "/home/user/Documents/frb_practice/native/src/bridged_increment.rs" stdout= stderr=
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute cbindgen rust_crate_dir=/home/user/Documents/frb_practice/native c_output_path=/tmp/.tmp4sx9gm.h
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::commands] cbindgen config: Config { header: None, includes: [], sys_includes: ["stdbool.h", "stdint.h", "stdlib.h"], after_includes: None, trailer: None, include_guard: None, pragma_once: false, no_includes: true, autogen_warning: None, include_version: false, namespace: None, namespaces: None, using_namespaces: None, braces: SameLine, line_length: 100, tab_width: 2, line_endings: LF, language: C, cpp_compat: false, style: Both, sort_by: None, usize_is_size_t: false, parse: ParseConfig { parse_deps: false, include: None, exclude: [], expand: ParseExpandConfig { crates: [], all_features: false, default_features: true, features: None, profile: Debug }, clean: false, extra_bindings: [] }, export: ExportConfig { include: [], exclude: ["wire_multiply"], rename: {}, pre_body: {}, body: {}, prefix: None, item_types: [], renaming_overrides_prefixing: false, mangle: MangleConfig { rename_types: None, remove_underscores: false } }, macro_expansion: MacroExpansionConfig { bitflags: false }, layout: LayoutConfig { packed: None, aligned_n: None }, function: FunctionConfig { prefix: None, postfix: None, must_use: None, args: Auto, rename_args: None, swift_name_macro: None, sort_by: None, no_return: None }, structure: StructConfig { rename_fields: None, derive_constructor: false, derive_eq: false, derive_neq: false, derive_lt: false, derive_lte: false, derive_gt: false, derive_gte: false, derive_ostream: false, associated_constants_in_body: false, must_use: None }, enumeration: EnumConfig { rename_variants: None, rename_variant_name_fields: SnakeCase, add_sentinel: false, prefix_with_name: false, derive_helper_methods: false, derive_const_casts: false, derive_mut_casts: false, cast_assert_name: None, must_use: None, derive_tagged_enum_destructor: false, derive_tagged_enum_copy_constructor: false, derive_tagged_enum_copy_assignment: false, derive_ostream: false, enum_class: true, private_default_tagged_enum_constructor: false }, constant: ConstantConfig { allow_static_const: true, allow_constexpr: true, sort_by: None }, defines: {}, documentation: true, documentation_style: Auto, documentation_length: Full, pointer: PtrConfig { non_null_attribute: None }, only_target_dependencies: false, cython: CythonConfig { header: None, cimports: {} } }
[2022-08-25T23:01:08Z DEBUG cbindgen::bindgen::parser] Parsing crate native
[2022-08-25T23:01:08Z INFO  cbindgen::bindgen::parser] Take native::wire_multiply.
[2022-08-25T23:01:08Z INFO  cbindgen::bindgen::parser] Take native::wire_increment.
[2022-08-25T23:01:08Z INFO  cbindgen::bindgen::parser] Take native::free_WireSyncReturnStruct.
[2022-08-25T23:01:08Z INFO  cbindgen::bindgen::parser] Take native::DartPort.
[2022-08-25T23:01:08Z INFO  cbindgen::bindgen::parser] Take native::DartPostCObjectFnType.
[2022-08-25T23:01:08Z INFO  cbindgen::bindgen::parser] Take native::store_dart_post_cobject.
[2022-08-25T23:01:08Z INFO  cbindgen::bindgen::parser] Take native::WireSyncReturnStruct.
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute ffigen c_path=/tmp/.tmp4sx9gm.h dart_path=/tmp/.tmpHNKOPX llvm_path=["/opt/homebrew/opt/llvm", "/usr/local/opt/llvm", "/usr/lib/llvm-9", "/usr/lib/llvm-10", "/usr/lib/llvm-11", "/usr/lib/llvm-12", "/usr/lib/llvm-13", "/usr/lib/llvm-14", "/usr/lib/", "/usr/lib64/", "C:/Program Files/llvm", "C:/Program Files/LLVM", "C:/msys64/mingw64"]
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::commands] ffigen config: 
            output: '/tmp/.tmpHNKOPX'
            name: 'NativeIncrementWire'
            description: 'generated by flutter_rust_bridge'
            headers:
              entry-points:
                - '/tmp/.tmp4sx9gm.h'
              include-directives:
                - '/tmp/.tmp4sx9gm.h'
            comments: false
            preamble: |
              // ignore_for_file: camel_case_types, non_constant_identifier_names, avoid_positional_boolean_parameters, annotate_overrides, constant_identifier_names

            llvm-path:
               - '/opt/homebrew/opt/llvm'
               - '/usr/local/opt/llvm'
               - '/usr/lib/llvm-9'
               - '/usr/lib/llvm-10'
               - '/usr/lib/llvm-11'
               - '/usr/lib/llvm-12'
               - '/usr/lib/llvm-13'
               - '/usr/lib/llvm-14'
               - '/usr/lib/'
               - '/usr/lib64/'
               - 'C:/Program Files/llvm'
               - 'C:/Program Files/LLVM'
               - 'C:/msys64/mingw64'

[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::commands] ffigen config_file: NamedTempFile("/tmp/.tmpde4UNj")
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::tools] Guessing toolchain the runner is run into
[2022-08-25T23:01:08Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute command: bin=sh args=["-c", "cd /home/user/Documents/frb_practice && flutter pub run ffigen --config \"/tmp/.tmpde4UNj\""] current_dir=None cmd="sh" "-c" "cd /home/user/Documents/frb_practice && flutter pub run ffigen --config \"/tmp/.tmpde4UNj\""
[2022-08-25T23:01:10Z DEBUG lib_flutter_rust_bridge_codegen::commands] command="sh" "-c" "cd /home/user/Documents/frb_practice && flutter pub run ffigen --config \"/tmp/.tmpde4UNj\"" stdout=Running in Directory: '/home/user/Documents/frb_practice'
    Input Headers: [/tmp/.tmp4sx9gm.h]
    [SEVERE] : Header /tmp/.tmp4sx9gm.h: Total errors/warnings: 1.
    [SEVERE] :     /tmp/.tmp4sx9gm.h:1:10: fatal error: 'stdbool.h' file not found [Lexical or Preprocessor Issue]
    Finished, Bindings generated in /tmp/.tmpHNKOPX
     stderr=
[2022-08-25T23:01:10Z WARN  lib_flutter_rust_bridge_codegen::commands] See keywords such as `error` in command output. Maybe there is a problem? command="sh" "-c" "cd /home/user/Documents/frb_practice && flutter pub run ffigen --config \"/tmp/.tmpde4UNj\"" output=Output { status: ExitStatus(unix_wait_status(0)), stdout: "Running in Directory: '/home/user/Documents/frb_practice'\nInput Headers: [/tmp/.tmp4sx9gm.h]\n[SEVERE] : Header /tmp/.tmp4sx9gm.h: Total errors/warnings: 1.\n[SEVERE] :     /tmp/.tmp4sx9gm.h:1:10: fatal error: 'stdbool.h' file not found [Lexical or Preprocessor Issue]\nFinished, Bindings generated in /tmp/.tmpHNKOPX\n", stderr: "" }
[2022-08-25T23:01:10Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute format_dart path=/home/user/Documents/frb_practice/lib/bridged_increment.dart line_length=80
[2022-08-25T23:01:10Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute command: bin=sh args=["-c", "dart format /home/user/Documents/frb_practice/lib/bridged_increment.dart --line-length 80"] current_dir=None cmd="sh" "-c" "dart format /home/user/Documents/frb_practice/lib/bridged_increment.dart --line-length 80"
[2022-08-25T23:01:10Z DEBUG lib_flutter_rust_bridge_codegen::commands] command="sh" "-c" "dart format /home/user/Documents/frb_practice/lib/bridged_increment.dart --line-length 80" stdout=Formatted /home/user/Documents/frb_practice/lib/bridged_increment.dart
    Formatted 1 file (1 changed) in 0.19 seconds.
     stderr=
[2022-08-25T23:01:10Z INFO  lib_flutter_rust_bridge_codegen] Success!
[2022-08-25T23:01:10Z DEBUG lib_flutter_rust_bridge_codegen::tools] Guessing toolchain the runner is run into
[2022-08-25T23:01:10Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute command: bin=sh args=["-c", "flutter --version"] current_dir=None cmd="sh" "-c" "flutter --version"
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::commands] command="sh" "-c" "flutter --version" stdout=Flutter 3.0.5 • channel stable • https://github.com/flutter/flutter.git
    Framework • revision f1875d570e (6 weeks ago) • 2022-07-13 11:24:16 -0700
    Engine • revision e85ea0e79c
    Tools • Dart 2.17.6 • DevTools 2.12.2
     stderr=
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::tools] Checking presence of ffi in dependencies at /home/user/Documents/frb_practice
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::tools] Checking presence of ffi in dependencies at /home/user/Documents/frb_practice
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::tools] Checking presence of ffigen in dev_dependencies at /home/user/Documents/frb_practice
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::tools] Checking presence of ffigen in dev_dependencies at /home/user/Documents/frb_practice
[2022-08-25T23:01:11Z INFO  lib_flutter_rust_bridge_codegen] Picked config: Opts { rust_input_path: "/home/user/Documents/frb_practice/native/src/multiply.rs", dart_output_path: "/home/user/Documents/frb_practice/lib/bridged_multiply.dart", dart_decl_output_path: None, c_output_path: ["/tmp/.tmpnlPopa.h"], rust_crate_dir: "/home/user/Documents/frb_practice/native", rust_output_path: "/home/user/Documents/frb_practice/native/src/bridged_multiply.rs", class_name: "NativeMultiply", dart_format_line_length: 80, skip_add_mod_to_lib: false, llvm_path: ["/opt/homebrew/opt/llvm", "/usr/local/opt/llvm", "/usr/lib/llvm-9", "/usr/lib/llvm-10", "/usr/lib/llvm-11", "/usr/lib/llvm-12", "/usr/lib/llvm-13", "/usr/lib/llvm-14", "/usr/lib/", "/usr/lib64/", "C:/Program Files/llvm", "C:/Program Files/LLVM", "C:/msys64/mingw64"], llvm_compiler_opts: "", manifest_path: "/home/user/Documents/frb_practice/native/Cargo.toml", dart_root: Some("/home/user/Documents/frb_practice"), build_runner: true, block_index: BlockIndex(1), skip_deps_check: false }
[2022-08-25T23:01:11Z INFO  lib_flutter_rust_bridge_codegen] Phase: Parse source code to AST, then to IR
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/bridged_multiply.rs"
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/bridged_increment.rs"
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/increment.rs"
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::source_graph] Trying to parse "/home/user/Documents/frb_practice/native/src/multiply.rs"
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::parser] parse_function function name: Ident(multiply)
[2022-08-25T23:01:11Z INFO  lib_flutter_rust_bridge_codegen] Phase: Transform IR
[2022-08-25T23:01:11Z INFO  lib_flutter_rust_bridge_codegen] Phase: Generate Rust code
[2022-08-25T23:01:11Z INFO  lib_flutter_rust_bridge_codegen] Phase: Generate Dart code
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::generator::dart] distinct_input_types=[Primitive(U64)]
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::generator::dart] distinct_output_types=[Primitive(U64)]
[2022-08-25T23:01:11Z INFO  lib_flutter_rust_bridge_codegen] Phase: Other things
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute format_rust path=/home/user/Documents/frb_practice/native/src/bridged_multiply.rs
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute command: bin=rustfmt args=["/home/user/Documents/frb_practice/native/src/bridged_multiply.rs"] current_dir=None cmd="rustfmt" "/home/user/Documents/frb_practice/native/src/bridged_multiply.rs"
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::commands] command="rustfmt" "/home/user/Documents/frb_practice/native/src/bridged_multiply.rs" stdout= stderr=
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute cbindgen rust_crate_dir=/home/user/Documents/frb_practice/native c_output_path=/tmp/.tmpdEkqcQ.h
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::commands] cbindgen config: Config { header: None, includes: [], sys_includes: ["stdbool.h", "stdint.h", "stdlib.h"], after_includes: None, trailer: None, include_guard: None, pragma_once: false, no_includes: true, autogen_warning: None, include_version: false, namespace: None, namespaces: None, using_namespaces: None, braces: SameLine, line_length: 100, tab_width: 2, line_endings: LF, language: C, cpp_compat: false, style: Both, sort_by: None, usize_is_size_t: false, parse: ParseConfig { parse_deps: false, include: None, exclude: [], expand: ParseExpandConfig { crates: [], all_features: false, default_features: true, features: None, profile: Debug }, clean: false, extra_bindings: [] }, export: ExportConfig { include: [], exclude: ["wire_increment"], rename: {}, pre_body: {}, body: {}, prefix: None, item_types: [], renaming_overrides_prefixing: false, mangle: MangleConfig { rename_types: None, remove_underscores: false } }, macro_expansion: MacroExpansionConfig { bitflags: false }, layout: LayoutConfig { packed: None, aligned_n: None }, function: FunctionConfig { prefix: None, postfix: None, must_use: None, args: Auto, rename_args: None, swift_name_macro: None, sort_by: None, no_return: None }, structure: StructConfig { rename_fields: None, derive_constructor: false, derive_eq: false, derive_neq: false, derive_lt: false, derive_lte: false, derive_gt: false, derive_gte: false, derive_ostream: false, associated_constants_in_body: false, must_use: None }, enumeration: EnumConfig { rename_variants: None, rename_variant_name_fields: SnakeCase, add_sentinel: false, prefix_with_name: false, derive_helper_methods: false, derive_const_casts: false, derive_mut_casts: false, cast_assert_name: None, must_use: None, derive_tagged_enum_destructor: false, derive_tagged_enum_copy_constructor: false, derive_tagged_enum_copy_assignment: false, derive_ostream: false, enum_class: true, private_default_tagged_enum_constructor: false }, constant: ConstantConfig { allow_static_const: true, allow_constexpr: true, sort_by: None }, defines: {}, documentation: true, documentation_style: Auto, documentation_length: Full, pointer: PtrConfig { non_null_attribute: None }, only_target_dependencies: false, cython: CythonConfig { header: None, cimports: {} } }
[2022-08-25T23:01:11Z DEBUG cbindgen::bindgen::parser] Parsing crate native
[2022-08-25T23:01:11Z INFO  cbindgen::bindgen::parser] Take native::wire_multiply.
[2022-08-25T23:01:11Z INFO  cbindgen::bindgen::parser] Take native::DartPort.
[2022-08-25T23:01:11Z INFO  cbindgen::bindgen::parser] Take native::DartPostCObjectFnType.
[2022-08-25T23:01:11Z INFO  cbindgen::bindgen::parser] Take native::store_dart_post_cobject.
[2022-08-25T23:01:11Z INFO  cbindgen::bindgen::parser] Take native::WireSyncReturnStruct.
[2022-08-25T23:01:11Z INFO  cbindgen::bindgen::parser] Take native::wire_increment.
[2022-08-25T23:01:11Z INFO  cbindgen::bindgen::parser] Take native::free_WireSyncReturnStruct.
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute ffigen c_path=/tmp/.tmpdEkqcQ.h dart_path=/tmp/.tmpPilXiM llvm_path=["/opt/homebrew/opt/llvm", "/usr/local/opt/llvm", "/usr/lib/llvm-9", "/usr/lib/llvm-10", "/usr/lib/llvm-11", "/usr/lib/llvm-12", "/usr/lib/llvm-13", "/usr/lib/llvm-14", "/usr/lib/", "/usr/lib64/", "C:/Program Files/llvm", "C:/Program Files/LLVM", "C:/msys64/mingw64"]
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::commands] ffigen config: 
            output: '/tmp/.tmpPilXiM'
            name: 'NativeMultiplyWire'
            description: 'generated by flutter_rust_bridge'
            headers:
              entry-points:
                - '/tmp/.tmpdEkqcQ.h'
              include-directives:
                - '/tmp/.tmpdEkqcQ.h'
            comments: false
            preamble: |
              // ignore_for_file: camel_case_types, non_constant_identifier_names, avoid_positional_boolean_parameters, annotate_overrides, constant_identifier_names

            llvm-path:
               - '/opt/homebrew/opt/llvm'
               - '/usr/local/opt/llvm'
               - '/usr/lib/llvm-9'
               - '/usr/lib/llvm-10'
               - '/usr/lib/llvm-11'
               - '/usr/lib/llvm-12'
               - '/usr/lib/llvm-13'
               - '/usr/lib/llvm-14'
               - '/usr/lib/'
               - '/usr/lib64/'
               - 'C:/Program Files/llvm'
               - 'C:/Program Files/LLVM'
               - 'C:/msys64/mingw64'

[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::commands] ffigen config_file: NamedTempFile("/tmp/.tmpfekHTs")
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::tools] Guessing toolchain the runner is run into
[2022-08-25T23:01:11Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute command: bin=sh args=["-c", "cd /home/user/Documents/frb_practice && flutter pub run ffigen --config \"/tmp/.tmpfekHTs\""] current_dir=None cmd="sh" "-c" "cd /home/user/Documents/frb_practice && flutter pub run ffigen --config \"/tmp/.tmpfekHTs\""
[2022-08-25T23:01:12Z DEBUG lib_flutter_rust_bridge_codegen::commands] command="sh" "-c" "cd /home/user/Documents/frb_practice && flutter pub run ffigen --config \"/tmp/.tmpfekHTs\"" stdout=Running in Directory: '/home/user/Documents/frb_practice'
    Input Headers: [/tmp/.tmpdEkqcQ.h]
    [SEVERE] : Header /tmp/.tmpdEkqcQ.h: Total errors/warnings: 1.
    [SEVERE] :     /tmp/.tmpdEkqcQ.h:1:10: fatal error: 'stdbool.h' file not found [Lexical or Preprocessor Issue]
    Finished, Bindings generated in /tmp/.tmpPilXiM
     stderr=
[2022-08-25T23:01:12Z WARN  lib_flutter_rust_bridge_codegen::commands] See keywords such as `error` in command output. Maybe there is a problem? command="sh" "-c" "cd /home/user/Documents/frb_practice && flutter pub run ffigen --config \"/tmp/.tmpfekHTs\"" output=Output { status: ExitStatus(unix_wait_status(0)), stdout: "Running in Directory: '/home/user/Documents/frb_practice'\nInput Headers: [/tmp/.tmpdEkqcQ.h]\n[SEVERE] : Header /tmp/.tmpdEkqcQ.h: Total errors/warnings: 1.\n[SEVERE] :     /tmp/.tmpdEkqcQ.h:1:10: fatal error: 'stdbool.h' file not found [Lexical or Preprocessor Issue]\nFinished, Bindings generated in /tmp/.tmpPilXiM\n", stderr: "" }
[2022-08-25T23:01:12Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute format_dart path=/home/user/Documents/frb_practice/lib/bridged_multiply.dart line_length=80
[2022-08-25T23:01:12Z DEBUG lib_flutter_rust_bridge_codegen::commands] execute command: bin=sh args=["-c", "dart format /home/user/Documents/frb_practice/lib/bridged_multiply.dart --line-length 80"] current_dir=None cmd="sh" "-c" "dart format /home/user/Documents/frb_practice/lib/bridged_multiply.dart --line-length 80"
[2022-08-25T23:01:12Z DEBUG lib_flutter_rust_bridge_codegen::commands] command="sh" "-c" "dart format /home/user/Documents/frb_practice/lib/bridged_multiply.dart --line-length 80" stdout=Formatted /home/user/Documents/frb_practice/lib/bridged_multiply.dart
    Formatted 1 file (1 changed) in 0.18 seconds.
     stderr=
[2022-08-25T23:01:12Z INFO  lib_flutter_rust_bridge_codegen] Success!
[2022-08-25T23:01:12Z INFO  flutter_rust_bridge_codegen] Now go and use it :)

To Reproduce

No response

Expected behavior

No response

Generated binding code

bridged_multiply.dart

// AUTO GENERATED FILE, DO NOT EDIT.
// Generated by `flutter_rust_bridge`.

// ignore_for_file: non_constant_identifier_names, unused_element, duplicate_ignore, directives_ordering, curly_braces_in_flow_control_structures, unnecessary_lambdas, slash_for_doc_comments, prefer_const_literals_to_create_immutables, implicit_dynamic_list_literal, duplicate_import, unused_import, prefer_single_quotes, prefer_const_constructors, use_super_parameters, always_use_package_imports

import 'dart:convert';
import 'dart:typed_data';

import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter_rust_bridge/flutter_rust_bridge.dart';
import 'dart:ffi' as ffi;

abstract class NativeMultiply {
  Future<int> multiply({required int num, dynamic hint});

  FlutterRustBridgeTaskConstMeta get kMultiplyConstMeta;
}

class NativeMultiplyImpl extends FlutterRustBridgeBase<NativeMultiplyWire>
    implements NativeMultiply {
  factory NativeMultiplyImpl(ffi.DynamicLibrary dylib) =>
      NativeMultiplyImpl.raw(NativeMultiplyWire(dylib));

  NativeMultiplyImpl.raw(NativeMultiplyWire inner) : super(inner);

  Future<int> multiply({required int num, dynamic hint}) =>
      executeNormal(FlutterRustBridgeTask(
        callFfi: (port_) => inner.wire_multiply(port_, _api2wire_u64(num)),
        parseSuccessData: _wire2api_u64,
        constMeta: kMultiplyConstMeta,
        argValues: [num],
        hint: hint,
      ));

  FlutterRustBridgeTaskConstMeta get kMultiplyConstMeta =>
      const FlutterRustBridgeTaskConstMeta(
        debugName: "multiply",
        argNames: ["num"],
      );

  // Section: api2wire
  int _api2wire_u64(int raw) {
    return raw;
  }

  // Section: api_fill_to_wire

}

// Section: wire2api
int _wire2api_u64(dynamic raw) {
  return raw as int;
}

// ignore_for_file: camel_case_types, non_constant_identifier_names, avoid_positional_boolean_parameters, annotate_overrides, constant_identifier_names

// AUTO GENERATED FILE, DO NOT EDIT.
//
// Generated by `package:ffigen`.

/// generated by flutter_rust_bridge
class NativeMultiplyWire implements FlutterRustBridgeWireBase {
  /// Holds the symbol lookup function.
  final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
      _lookup;

  /// The symbols are looked up in [dynamicLibrary].
  NativeMultiplyWire(ffi.DynamicLibrary dynamicLibrary)
      : _lookup = dynamicLibrary.lookup;

  /// The symbols are looked up with [lookup].
  NativeMultiplyWire.fromLookup(
      ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
          lookup)
      : _lookup = lookup;

  void wire_multiply(
    int port_,
    int num,
  ) {
    return _wire_multiply(
      port_,
      num,
    );
  }

  late final _wire_multiplyPtr =
      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Int64, ffi.Uint64)>>(
          'wire_multiply');
  late final _wire_multiply =
      _wire_multiplyPtr.asFunction<void Function(int, int)>();

  void store_dart_post_cobject(
    int ptr,
  ) {
    return _store_dart_post_cobject(
      ptr,
    );
  }

  late final _store_dart_post_cobjectPtr =
      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Int)>>(
          'store_dart_post_cobject');
  late final _store_dart_post_cobject =
      _store_dart_post_cobjectPtr.asFunction<void Function(int)>();

  void free_WireSyncReturnStruct(
    WireSyncReturnStruct val,
  ) {
    return _free_WireSyncReturnStruct(
      val,
    );
  }

  late final _free_WireSyncReturnStructPtr =
      _lookup<ffi.NativeFunction<ffi.Void Function(WireSyncReturnStruct)>>(
          'free_WireSyncReturnStruct');
  late final _free_WireSyncReturnStruct = _free_WireSyncReturnStructPtr
      .asFunction<void Function(WireSyncReturnStruct)>();
}

typedef bool = ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ffi.Int>)>;

bridged_increment.dart

// AUTO GENERATED FILE, DO NOT EDIT.
// Generated by `flutter_rust_bridge`.

// ignore_for_file: non_constant_identifier_names, unused_element, duplicate_ignore, directives_ordering, curly_braces_in_flow_control_structures, unnecessary_lambdas, slash_for_doc_comments, prefer_const_literals_to_create_immutables, implicit_dynamic_list_literal, duplicate_import, unused_import, prefer_single_quotes, prefer_const_constructors, use_super_parameters, always_use_package_imports

import 'dart:convert';
import 'dart:typed_data';

import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter_rust_bridge/flutter_rust_bridge.dart';
import 'dart:ffi' as ffi;

abstract class NativeIncrement {
  Future<int> increment({required int num, dynamic hint});

  FlutterRustBridgeTaskConstMeta get kIncrementConstMeta;
}

class NativeIncrementImpl extends FlutterRustBridgeBase<NativeIncrementWire>
    implements NativeIncrement {
  factory NativeIncrementImpl(ffi.DynamicLibrary dylib) =>
      NativeIncrementImpl.raw(NativeIncrementWire(dylib));

  NativeIncrementImpl.raw(NativeIncrementWire inner) : super(inner);

  Future<int> increment({required int num, dynamic hint}) =>
      executeNormal(FlutterRustBridgeTask(
        callFfi: (port_) => inner.wire_increment(port_, _api2wire_u32(num)),
        parseSuccessData: _wire2api_u32,
        constMeta: kIncrementConstMeta,
        argValues: [num],
        hint: hint,
      ));

  FlutterRustBridgeTaskConstMeta get kIncrementConstMeta =>
      const FlutterRustBridgeTaskConstMeta(
        debugName: "increment",
        argNames: ["num"],
      );

  // Section: api2wire
  int _api2wire_u32(int raw) {
    return raw;
  }

  // Section: api_fill_to_wire

}

// Section: wire2api
int _wire2api_u32(dynamic raw) {
  return raw as int;
}

// ignore_for_file: camel_case_types, non_constant_identifier_names, avoid_positional_boolean_parameters, annotate_overrides, constant_identifier_names

// AUTO GENERATED FILE, DO NOT EDIT.
//
// Generated by `package:ffigen`.

/// generated by flutter_rust_bridge
class NativeIncrementWire implements FlutterRustBridgeWireBase {
  /// Holds the symbol lookup function.
  final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
      _lookup;

  /// The symbols are looked up in [dynamicLibrary].
  NativeIncrementWire(ffi.DynamicLibrary dynamicLibrary)
      : _lookup = dynamicLibrary.lookup;

  /// The symbols are looked up with [lookup].
  NativeIncrementWire.fromLookup(
      ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
          lookup)
      : _lookup = lookup;

  void wire_increment(
    int port_,
    int num,
  ) {
    return _wire_increment(
      port_,
      num,
    );
  }

  late final _wire_incrementPtr =
      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Int64, ffi.Uint32)>>(
          'wire_increment');
  late final _wire_increment =
      _wire_incrementPtr.asFunction<void Function(int, int)>();

  void free_WireSyncReturnStruct(
    WireSyncReturnStruct val,
  ) {
    return _free_WireSyncReturnStruct(
      val,
    );
  }

  late final _free_WireSyncReturnStructPtr =
      _lookup<ffi.NativeFunction<ffi.Void Function(WireSyncReturnStruct)>>(
          'free_WireSyncReturnStruct');
  late final _free_WireSyncReturnStruct = _free_WireSyncReturnStructPtr
      .asFunction<void Function(WireSyncReturnStruct)>();

  void store_dart_post_cobject(
    int ptr,
  ) {
    return _store_dart_post_cobject(
      ptr,
    );
  }

  late final _store_dart_post_cobjectPtr =
      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Int)>>(
          'store_dart_post_cobject');
  late final _store_dart_post_cobject =
      _store_dart_post_cobjectPtr.asFunction<void Function(int)>();
}

### OS

Linux - ArchLinux

### Version of `flutter_rust_bridge_codegen`

1.41.2

### Flutter info

```shell
[✓] Flutter (Channel stable, 3.0.5, on Arch Linux 5.15.62-1-lts, locale en_US.UTF-8)
    • Flutter version 3.0.5 at /opt/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f1875d570e (6 weeks ago), 2022-07-13 11:24:16 -0700
    • Engine revision e85ea0e79c
    • Dart version 2.17.6
    • DevTools version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /home/zachary/Android/Sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: /opt/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✗] Chrome - develop for the web (Cannot find Chrome executable at google-chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.

[✓] Linux toolchain - develop for Linux desktop
    • clang version 14.0.6
    • cmake version 3.24.1
    • ninja version 1.11.0
    • pkg-config version 1.8.0

[✓] Android Studio (version 2021.2)
    • Android Studio at /opt/android-studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

[✓] Connected device (1 available)
    • Linux (desktop) • linux • linux-x64 • Arch Linux 5.15.62-1-lts

[✓] HTTP Host Availability
    • All required HTTP hosts are available

Version of clang++

No response

Version of ffigen

6.1.2

Additional context

No response

welcome[bot] commented 2 years ago

Hi! Thanks for opening your first issue here! :smile:

fzyzcjy commented 2 years ago

fatal error: 'stdbool.h' file not found

fzyzcjy commented 2 years ago

Duplicate of #108

TheLumbee commented 2 years ago

@fzyzcjy Thanks for the quick reply. I'll close the issue and test it tomorrow.

github-actions[bot] commented 1 year ago

This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new issue.