I'm trying to compile some rust code that uses the usearch crate to the Android target, but compiling usearch to Android is giving errors. For more context, I'm trying to use the Rust bindings in combination with flutter_rust_bridge to bring usearch to Flutter.
Here are the full error logs:
error: failed to run custom build command for `usearch v2.12.0`
Caused by:
process didn't exit successfully: `/home/laurens/dev/learn_rust/usearch_android_mre/target/release/build/usearch-f807330225ac66b6/build-script-build` (exit status: 101)
--- stdout
cargo:CXXBRIDGE_PREFIX=usearch
cargo:CXXBRIDGE_DIR0=/home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/include
cargo:CXXBRIDGE_DIR1=/home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/crate
TARGET = Some("armv7-linux-androideabi")
OPT_LEVEL = Some("3")
HOST = Some("x86_64-unknown-linux-gnu")
cargo:rerun-if-env-changed=CXX_armv7-linux-androideabi
CXX_armv7-linux-androideabi = Some("/home/laurens/Android/Sdk/ndk/26.0.10792818/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++")
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
DEBUG = Some("false")
cargo:rerun-if-env-changed=CXXFLAGS_armv7-linux-androideabi
CXXFLAGS_armv7-linux-androideabi = Some("--target=armv7a-linux-androideabi21")
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
cargo:rerun-if-env-changed=CXXFLAGS_armv7-linux-androideabi
CXXFLAGS_armv7-linux-androideabi = Some("--target=armv7a-linux-androideabi21")
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
cargo:rerun-if-env-changed=CXXFLAGS_armv7-linux-androideabi
CXXFLAGS_armv7-linux-androideabi = Some("--target=armv7a-linux-androideabi21")
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
cargo:rerun-if-env-changed=CXXFLAGS_armv7-linux-androideabi
CXXFLAGS_armv7-linux-androideabi = Some("--target=armv7a-linux-androideabi21")
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
cargo:rerun-if-env-changed=CXXFLAGS_armv7-linux-androideabi
CXXFLAGS_armv7-linux-androideabi = Some("--target=armv7a-linux-androideabi21")
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
cargo:rerun-if-env-changed=CXXFLAGS_armv7-linux-androideabi
CXXFLAGS_armv7-linux-androideabi = Some("--target=armv7a-linux-androideabi21")
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
cargo:rerun-if-env-changed=CXXFLAGS_armv7-linux-androideabi
CXXFLAGS_armv7-linux-androideabi = Some("--target=armv7a-linux-androideabi21")
cargo:warning=In file included from /home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/sources/usearch/rust/lib.rs.cc:1:
cargo:warning=In file included from rust/lib.hpp:10:
cargo:warning=In file included from include/usearch/index_dense.hpp:16:
cargo:warning=include/usearch/index_plugins.hpp:52:9: warning: 'SIMSIMD_DYNAMIC_DISPATCH' macro redefined [-Wmacro-redefined]
cargo:warning=#define SIMSIMD_DYNAMIC_DISPATCH 0
cargo:warning= ^
cargo:warning=<command line>:5:9: note: previous definition is here
cargo:warning=#define SIMSIMD_DYNAMIC_DISPATCH 1
cargo:warning= ^
cargo:warning=In file included from /home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/sources/usearch/rust/lib.rs.cc:1:
cargo:warning=In file included from rust/lib.hpp:10:
cargo:warning=In file included from include/usearch/index_dense.hpp:16:
cargo:warning=include/usearch/index_plugins.hpp:588:25: error: use of undeclared identifier 'aligned_alloc'
cargo:warning= return (pointer)aligned_alloc(alignment, length_bytes);
cargo:warning= ^
cargo:warning=1 warning and 1 error generated.
cargo:warning=Failed to compile with all SIMD backends...cargo:warning=In file included from /home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/sources/usearch/rust/lib.rs.cc:1:
cargo:warning=In file included from rust/lib.hpp:10:
cargo:warning=In file included from include/usearch/index_dense.hpp:16:
cargo:warning=include/usearch/index_plugins.hpp:52:9: warning: 'SIMSIMD_DYNAMIC_DISPATCH' macro redefined [-Wmacro-redefined]
cargo:warning=#define SIMSIMD_DYNAMIC_DISPATCH 0
cargo:warning= ^
cargo:warning=<command line>:5:9: note: previous definition is here
cargo:warning=#define SIMSIMD_DYNAMIC_DISPATCH 1
cargo:warning= ^
cargo:warning=In file included from /home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/sources/usearch/rust/lib.rs.cc:1:
cargo:warning=In file included from rust/lib.hpp:10:
cargo:warning=In file included from include/usearch/index_dense.hpp:16:
cargo:warning=include/usearch/index_plugins.hpp:588:25: error: use of undeclared identifier 'aligned_alloc'
cargo:warning= return (pointer)aligned_alloc(alignment, length_bytes);
cargo:warning= ^
cargo:warning=1 warning and 1 error generated.
cargo:warning=Failed to compile after disabling SIMSIMD_TARGET_NEON, trying next configuration...
cargo:warning=In file included from /home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/sources/usearch/rust/lib.rs.cc:1:
cargo:warning=In file included from rust/lib.hpp:10:
cargo:warning=In file included from include/usearch/index_dense.hpp:16:
cargo:warning=include/usearch/index_plugins.hpp:52:9: warning: 'SIMSIMD_DYNAMIC_DISPATCH' macro redefined [-Wmacro-redefined]
cargo:warning=#define SIMSIMD_DYNAMIC_DISPATCH 0
cargo:warning= ^
cargo:warning=<command line>:5:9: note: previous definition is here
cargo:warning=#define SIMSIMD_DYNAMIC_DISPATCH 1
cargo:warning= ^
cargo:warning=In file included from /home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/sources/usearch/rust/lib.rs.cc:1:
cargo:warning=In file included from rust/lib.hpp:10:
cargo:warning=In file included from include/usearch/index_dense.hpp:16:
cargo:warning=include/usearch/index_plugins.hpp:588:25: error: use of undeclared identifier 'aligned_alloc'
cargo:warning= return (pointer)aligned_alloc(alignment, length_bytes);
cargo:warning= ^
cargo:warning=1 warning and 1 error generated.
cargo:warning=Failed to compile after disabling SIMSIMD_TARGET_SVE, trying next configuration...
--- stderr
CXX include path:
/home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/include
/home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/crate
thread 'main' panicked at /home/laurens/.cargo/registry/src/index.crates.io-6f17d22bba15001f/usearch-2.12.0/build.rs:89:12:
called `Result::unwrap()` on an `Err` value: Error { kind: ToolExecError, message: "Command \"/home/laurens/Android/Sdk/ndk/26.0.10792818/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++\" \"-O3\" \"-DANDROID\" \"-ffunction-sections\" \"-fdata-sections\" \"-fPIC\" \"--target=armv7-linux-androideabi\" \"-I\" \"/home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/include\" \"-I\" \"/home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/crate\" \"-I\" \"include\" \"-I\" \"rust\" \"-I\" \"fp16/include\" \"-I\" \"simsimd/include\" \"--target=armv7a-linux-androideabi21\" \"-Wno-unknown-pragmas\" \"-std=c++17\" \"-O3\" \"-ffast-math\" \"-fdiagnostics-color=always\" \"-g1\" \"-DUSEARCH_USE_OPENMP=0\" \"-DUSEARCH_USE_FP16LIB=0\" \"-DUSEARCH_USE_SIMSIMD=1\" \"-DSIMSIMD_DYNAMIC_DISPATCH=1\" \"-DSIMSIMD_NATIVE_F16=0\" \"-DSIMSIMD_TARGET_NEON=0\" \"-DSIMSIMD_TARGET_SVE=0\" \"-o\" \"/home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/7fed01e8e2471f05-lib.rs.o\" \"-c\" \"/home/laurens/dev/learn_rust/usearch_android_mre/target/armv7-linux-androideabi/release/build/usearch-c1d06054759bde79/out/cxxbridge/sources/usearch/rust/lib.rs.cc\" with args clang++ did not execute successfully (status code exit status: 1)." }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Steps to reproduce
Run cargo build --target=armv7-linux-androideabi --release in any rust project that uses usearch. I've created this repo as an mre.
Expected behavior
The code actually compiles without errors.
USearch version
v2.12.0
Operating System
Ubuntu 22.04
Hardware architecture
x86
Which interface are you using?
Other bindings
Contact Details
laurens@priem.email
Are you open to being tagged as a contributor?
[X] I am open to being mentioned in the project .git history as a contributor
Is there an existing issue for this?
[X] I have searched the existing issues
Code of Conduct
[X] I agree to follow this project's Code of Conduct
Describe the bug
I'm trying to compile some rust code that uses the usearch crate to the Android target, but compiling usearch to Android is giving errors. For more context, I'm trying to use the Rust bindings in combination with flutter_rust_bridge to bring usearch to Flutter.
Here are the full error logs:
Steps to reproduce
Run
cargo build --target=armv7-linux-androideabi --release
in any rust project that uses usearch. I've created this repo as an mre.Expected behavior
The code actually compiles without errors.
USearch version
v2.12.0
Operating System
Ubuntu 22.04
Hardware architecture
x86
Which interface are you using?
Other bindings
Contact Details
laurens@priem.email
Are you open to being tagged as a contributor?
.git
history as a contributorIs there an existing issue for this?
Code of Conduct