Skip to content

Commit d63666c

Browse files
committed
chore(git): add android cargo build
1 parent d9e518b commit d63666c

1 file changed

Lines changed: 20 additions & 43 deletions

File tree

Dockerfile

Lines changed: 20 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -79,73 +79,50 @@ RUN ls -la /root/.rustup/toolchains/*/lib/rustlib/ | grep -E "(aarch64|armv7|x86
7979
# Verify core libraries exist
8080
RUN 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
134111
RUN echo "=== NDK DEBUG ==="
135112
RUN 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!"
137114
RUN 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
143120
RUN echo 'fn main() {}' > test.rs
144121

145122
# Test compilation with explicit linker (this should work now)
146123
RUN 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

150127
RUN echo "Test compilation successful!"
151128

0 commit comments

Comments
 (0)