@@ -79,73 +79,50 @@ RUN ls -la /root/.rustup/toolchains/*/lib/rustlib/ | grep -E "(aarch64|armv7|x86
7979# Verify core libraries exist
8080RUN find /root/.rustup -name "libcore*.rlib" -path "*android*" -ls
8181
82- # Set up the Rust configuration for Android cross-compilation (with sysroot )
83- RUN echo "=== SETTING UP CARGO CONFIG WITH SYSROOT ===" && \
82+ # Set up the Rust configuration for Android cross-compilation (simplified approach )
83+ RUN echo "=== SETTING UP SIMPLIFIED CARGO CONFIG ===" && \
8484 AARCH64_CLANG=$(find ${ANDROID_NDK_HOME} -name "*aarch64*android*clang" -type f | head -1) && \
85- ARMV7_CLANG=$(find ${ANDROID_NDK_HOME} -name "*armv7*android*clang" -o -name "*arm*android*eabi*clang" -type f | head -1) && \
86- X86_64_CLANG=$(find ${ANDROID_NDK_HOME} -name "*x86_64*android*clang" -type f | head -1) && \
87- I686_CLANG=$(find ${ANDROID_NDK_HOME} -name "*i686*android*clang" -type f | head -1) && \
8885 LLVM_AR=$(find ${ANDROID_NDK_HOME} -name "llvm-ar" -type f | head -1) && \
89- NDK_SYSROOT=$(find ${ANDROID_NDK_HOME} -name "sysroot" -type d | head -1) && \
9086 echo "Found binaries:" && \
9187 echo " aarch64: $AARCH64_CLANG" && \
92- echo " sysroot: $NDK_SYSROOT" && \
9388 echo " llvm-ar: $LLVM_AR" && \
9489 mkdir -p /root/.cargo && \
9590 echo '[target.aarch64-linux-android]' > /root/.cargo/config.toml && \
9691 echo "linker = \" $AARCH64_CLANG\" " >> /root/.cargo/config.toml && \
9792 echo "ar = \" $LLVM_AR\" " >> /root/.cargo/config.toml && \
9893 echo '' >> /root/.cargo/config.toml && \
99- echo '[target.armv7-linux-androideabi]' >> /root/.cargo/config.toml && \
100- echo "linker = \" $ARMV7_CLANG\" " >> /root/.cargo/config.toml && \
101- echo "ar = \" $LLVM_AR\" " >> /root/.cargo/config.toml && \
102- echo '' >> /root/.cargo/config.toml && \
103- echo '[target.x86_64-linux-android]' >> /root/.cargo/config.toml && \
104- echo "linker = \" $X86_64_CLANG\" " >> /root/.cargo/config.toml && \
105- echo "ar = \" $LLVM_AR\" " >> /root/.cargo/config.toml && \
106- echo '' >> /root/.cargo/config.toml && \
107- echo '[target.i686-linux-android]' >> /root/.cargo/config.toml && \
108- echo "linker = \" $I686_CLANG\" " >> /root/.cargo/config.toml && \
109- echo "ar = \" $LLVM_AR\" " >> /root/.cargo/config.toml
110-
111- # Add rustflags for sysroot to cargo config
112- RUN NDK_SYSROOT=$(find ${ANDROID_NDK_HOME} -name "sysroot" -type d | head -1) && \
113- echo "" >> /root/.cargo/config.toml && \
114- echo "[target.aarch64-linux-android]" >> /root/.cargo/config.toml && \
115- echo "rustflags = [\" -C\" , \" link-arg=--sysroot=$NDK_SYSROOT\" ]" >> /root/.cargo/config.toml
116-
117- # Set environment variables with the found paths
118- RUN AARCH64_CLANG=$(find ${ANDROID_NDK_HOME} -name "*aarch64*android*clang" -type f | head -1) && \
119- AARCH64_CLANGXX=$(find ${ANDROID_NDK_HOME} -name "*aarch64*android*clang++" -type f | head -1) && \
120- LLVM_AR=$(find ${ANDROID_NDK_HOME} -name "llvm-ar" -type f | head -1) && \
121- NDK_SYSROOT=$(find ${ANDROID_NDK_HOME} -name "sysroot" -type d | head -1) && \
122- echo "export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=\" $AARCH64_CLANG\" " >> /root/.android_env && \
123- echo "export CC_aarch64_linux_android=\" $AARCH64_CLANG\" " >> /root/.android_env && \
124- echo "export CXX_aarch64_linux_android=\" $AARCH64_CLANGXX\" " >> /root/.android_env && \
125- echo "export AR_aarch64_linux_android=\" $LLVM_AR\" " >> /root/.android_env && \
126- echo "export CFLAGS_aarch64_linux_android=\" --sysroot=$NDK_SYSROOT -D__ANDROID_API__=22\" " >> /root/.android_env && \
127- echo "export CXXFLAGS_aarch64_linux_android=\" --sysroot=$NDK_SYSROOT -D__ANDROID_API__=22\" " >> /root/.android_env && \
128- cat /root/.android_env
129-
130- # Source the environment
131- RUN . /root/.android_env
94+ echo '# Let the NDK clang handle sysroot automatically' >> /root/.cargo/config.toml
95+
96+ # Test with cargo instead of direct rustc
97+ RUN echo "=== TESTING WITH CARGO ===" && \
98+ echo 'fn main() { println!("Hello Android!"); }' > src/main.rs && \
99+ echo '[package]' > Cargo.toml && \
100+ echo 'name = "test"' >> Cargo.toml && \
101+ echo 'version = "0.1.0"' >> Cargo.toml && \
102+ echo 'edition = "2021"' >> Cargo.toml && \
103+ mkdir -p src && \
104+ echo 'fn main() { println!("Hello Android!"); }' > src/main.rs && \
105+ echo "Cargo config:" && \
106+ cat /root/.cargo/config.toml && \
107+ echo "Attempting cargo build..." && \
108+ cargo build --target aarch64-linux-android --verbose 2>&1 || echo "Cargo build failed, but we got debug info"
132109
133110# Debug: Verify the NDK files exist
134111RUN echo "=== NDK DEBUG ==="
135112RUN ls -la ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/ | head -10
136- RUN ls -la ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android22 -clang || echo "Linker not found!"
113+ RUN ls -la ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android27 -clang || echo "Linker not found!"
137114RUN ls -la ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar || echo "AR not found!"
138115
139116# Test that our NDK linker works
140- RUN ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android22 -clang --version || echo "Cannot run clang!"
117+ RUN ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android27 -clang --version || echo "Cannot run clang!"
141118
142119# Test simple compilation with proper linker
143120RUN echo 'fn main() {}' > test.rs
144121
145122# Test compilation with explicit linker (this should work now)
146123RUN rustc --target aarch64-linux-android --edition 2021 test.rs \
147124 --sysroot $(rustc --print sysroot) \
148- -C linker=${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android22 -clang
125+ -C linker=${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android27 -clang
149126
150127RUN echo "Test compilation successful!"
151128
0 commit comments