tfmicro icon indicating copy to clipboard operation
tfmicro copied to clipboard

Possible error due to C complier requirement for 'tensorflow/lite/experimental/microfrontend/lib' instead of C++ compiler

Open tallamjr opened this issue 5 years ago • 0 comments

After pulling in most recent changes as of today (tfmicro@6d4a771 with tensorflow@33689c4 on macOS.10.15.5) and running:

$ cargo clean --verbose && cargo test --verbose

I get one of the (all similar) errors shown below:

warning: /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tensorflow/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.c:164:22: error: assigning to 'int16_t *' (aka 'short *') from incompatible type 'void *'
warning:   state->unweights = calloc(weight_index_start, sizeof(*state->unweights));
warning:                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This occurs for both CC=clang and CC=gcc which gives similar messages, indicating that the reason might be down to needing to compile the code from tensorflow/tensorflow/lite/experimental/microfrontend/lib with a C compiler instead of C++.

Refs:

  • https://stackoverflow.com/a/34286385/4521950
  • https://stackoverflow.com/a/34375805/4521950

The full output from using clang is shown here, and a trimmed gcc version of the message is below that. I tried myself to modify build.rs, but it got to a point where I had to admit to myself I am too much of a newbie to be able to know really what to fix. CC=clang:

     Running `/Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-4b1014e20b828738/build-script-build`
The following warnings were emitted during compilation:

warning: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
warning: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
warning: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
warning: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
warning: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
warning: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
warning: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
warning: /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tensorflow/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.c:69:7: error: assigning to 'int16_t *' (aka 'short *') from incompatible type 'void *'
warning:       malloc(num_channels_plus_1 * sizeof(*state->channel_frequency_starts));
warning:       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tensorflow/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.c:71:7: error: assigning to 'int16_t *' (aka 'short *') from incompatible type 'void *'
warning:       malloc(num_channels_plus_1 * sizeof(*state->channel_weight_starts));
warning:       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tensorflow/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.c:73:7: error: assigning to 'int16_t *' (aka 'short *') from incompatible type 'void *'
warning:       malloc(num_channels_plus_1 * sizeof(*state->channel_widths));
warning:       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tensorflow/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.c:74:17: error: assigning to 'uint64_t *' (aka 'unsigned long long *') from incompatible type 'void *'
warning:   state->work = malloc(num_channels_plus_1 * sizeof(*state->work));
warning:                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tensorflow/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.c:76:10: error: cannot initialize a variable of type 'float *' with an rvalue of type 'void *'
warning:   float* center_mel_freqs =
warning:          ^
warning: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
warning: /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tensorflow/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.c:78:12: error: cannot initialize a variable of type 'int16_t *' (aka 'short *') with an rvalue of type 'void *'
warning:   int16_t* actual_channel_starts =
warning:            ^
warning: /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tensorflow/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.c:80:12: error: cannot initialize a variable of type 'int16_t *' (aka 'short *') with an rvalue of type 'void *'
warning:   int16_t* actual_channel_widths =
warning:            ^
warning: /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tensorflow/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.c:163:20: error: assigning to 'int16_t *' (aka 'short *') from incompatible type 'void *'
warning:   state->weights = calloc(weight_index_start, sizeof(*state->weights));
warning:                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tensorflow/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.c:164:22: error: assigning to 'int16_t *' (aka 'short *') from incompatible type 'void *'
warning:   state->unweights = calloc(weight_index_start, sizeof(*state->unweights));
warning:                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
warning: 9 errors generated.
warning: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
warning: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]

error: failed to run custom build command for `tfmicro v0.1.0 (/Users/tallamjr/github/EDGE22/forks/tfmicro)`

CC=gcc:

error[E0658]: unions with non-`Copy` fields are unstable
   --> /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tflite_types.rs:386:9
    |
386 | /         pub union basic_string___short__bindgen_ty_1<_CharT> {
387 | |             pub __size_: cty::c_uchar,
388 | |             pub __lx: root::std::basic_string_value_type<_CharT>,
389 | |             _bindgen_union_align: u8,
390 | |             pub _phantom_0:
391 | |                 ::core::marker::PhantomData<::core::cell::UnsafeCell<_CharT>>,
392 | |         }
    | |_________^
    |
    = note: see issue #55149 <https://github.com/rust-lang/rust/issues/55149> for more information

error[E0658]: unions with non-`Copy` fields are unstable
   --> /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tflite_types.rs:386:9
    |
386 | /         pub union basic_string___short__bindgen_ty_1<_CharT> {
387 | |             pub __size_: cty::c_uchar,
388 | |             pub __lx: root::std::basic_string_value_type<_CharT>,
389 | |             _bindgen_union_align: u8,
390 | |             pub _phantom_0:
391 | |                 ::core::marker::PhantomData<::core::cell::UnsafeCell<_CharT>>,
392 | |         }
    | |_________^
    |
    = note: see issue #55149 <https://github.com/rust-lang/rust/issues/55149> for more information

error[E0740]: unions may not contain fields that need dropping
   --> /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tflite_types.rs:388:13
    |
388 |             pub __lx: root::std::basic_string_value_type<_CharT>,
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
note: `std::mem::ManuallyDrop` can be used to wrap the type
   --> /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tflite_types.rs:388:13
    |
388 |             pub __lx: root::std::basic_string_value_type<_CharT>,
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0740]: unions may not contain fields that need dropping
   --> /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tflite_types.rs:388:13
    |
388 |             pub __lx: root::std::basic_string_value_type<_CharT>,
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
note: `std::mem::ManuallyDrop` can be used to wrap the type
   --> /Users/tallamjr/github/EDGE22/forks/tfmicro/target/debug/build/tfmicro-950f68498590f496/out/tflite_types.rs:388:13
    |
388 |             pub __lx: root::std::basic_string_value_type<_CharT>,
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 2 previous errors

Some errors have detailed explanations: E0658, E0740.
For more information about an error, try `rustc --explain E0658`.
error: aborting due to 2 previous errors

Some errors have detailed explanations: E0658, E0740.
For more information about an error, try `rustc --explain E0658`.

Please do let me know if there is more information that would be useful.

tallamjr avatar Oct 27 '20 11:10 tallamjr