Skip to content

Commit 9ed801f

Browse files
committed
Android ICU build: replace manual scripts by automated script with docker
1 parent 7837059 commit 9ed801f

File tree

13 files changed

+185
-159
lines changed

13 files changed

+185
-159
lines changed

extern/icu/android/Dockerfile

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
FROM debian:bookworm AS builder
2+
3+
ENV NDK=/opt/android-ndk
4+
ENV NDK_TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
5+
ENV PATH=$NDK_TOOLCHAIN/bin:$PATH
6+
7+
ADD https://dl.google.com/android/repository/android-ndk-r28c-linux.zip /tmp/android-ndk.zip
8+
ADD https://github.com/unicode-org/icu/releases/download/release-77-1/icu4c-77_1-src.tgz /tmp/icu4c-77_1-src.tgz
9+
10+
RUN apt-get update && \
11+
apt-get install -y \
12+
unzip \
13+
build-essential \
14+
cmake && \
15+
rm -rf /var/cache/apt/archives /var/lib/apt/lists/* && \
16+
\
17+
unzip /tmp/android-ndk.zip -d $NDK && for d in "$NDK"/*; do mv "$d"/* "$NDK"/; rmdir "$d"; done && \
18+
mkdir -p /src && \
19+
tar -xzf /tmp/icu4c-77_1-src.tgz -C /src && \
20+
rm /tmp/android-ndk.zip /tmp/icu4c-77_1-src.tgz && \
21+
\
22+
cd /src/icu/source && \
23+
./runConfigureICU Linux --prefix=$PWD/prebuilt \
24+
CFLAGS="-Os" \
25+
CXXFLAGS="--std=c++20" \
26+
--enable-static \
27+
--enable-shared=no \
28+
--enable-extras=no \
29+
--enable-strict=no \
30+
--enable-icuio=no \
31+
--enable-layout=no \
32+
--enable-layoutex=no \
33+
--enable-tools \
34+
--enable-tests=no \
35+
--enable-samples=no \
36+
--enable-dyload \
37+
--with-data-packaging=archive && \
38+
make -j15 && \
39+
make install && \
40+
\
41+
cd /src/icu/source && \
42+
./configure --prefix=/build/x86 \
43+
--host=i686-android-linux \
44+
--enable-static=no \
45+
--enable-shared \
46+
--enable-extras=no \
47+
--enable-strict=no \
48+
--enable-icuio=no \
49+
--enable-layout=no \
50+
--enable-layoutex=no \
51+
--enable-tools=no \
52+
--enable-tests=no \
53+
--enable-samples=no \
54+
--enable-renaming \
55+
--enable-dyload \
56+
--with-cross-build=/src/icu/source \
57+
CFLAGS='-Os' \
58+
CXXFLAGS='--std=c++20' \
59+
LDFLAGS='-static-libstdc++ -Wl,-z,max-page-size=16384 -Wl,-rpath=\$$ORIGIN' \
60+
CC=i686-linux-android29-clang \
61+
CXX=i686-linux-android29-clang++ \
62+
AR=llvm-ar \
63+
RANLIB=llvm-ranlib \
64+
--with-data-packaging=archive && \
65+
make -j15 && \
66+
make install && \
67+
\
68+
cd /src/icu/source && \
69+
./configure --prefix=/build/x64 \
70+
--host=x86_64-android-linux \
71+
--enable-static=no \
72+
--enable-shared \
73+
--enable-extras=no \
74+
--enable-strict=no \
75+
--enable-icuio=no \
76+
--enable-layout=no \
77+
--enable-layoutex=no \
78+
--enable-tools=no \
79+
--enable-tests=no \
80+
--enable-samples=no \
81+
--enable-renaming \
82+
--enable-dyload \
83+
--with-cross-build=/src/icu/source \
84+
CFLAGS='-Os' \
85+
CXXFLAGS='--std=c++20' \
86+
LDFLAGS='-static-libstdc++ -Wl,-z,max-page-size=16384 -Wl,-rpath=\$$ORIGIN' \
87+
CC=x86_64-linux-android29-clang \
88+
CXX=x86_64-linux-android29-clang++ \
89+
AR=llvm-ar \
90+
RANLIB=llvm-ranlib \
91+
--with-data-packaging=archive && \
92+
make -j15 && \
93+
make install && \
94+
\
95+
cd /src/icu/source && \
96+
./configure --prefix=/build/arm32 \
97+
--host=arm-linux-androideabi \
98+
--enable-static=no \
99+
--enable-shared \
100+
--enable-extras=no \
101+
--enable-strict=no \
102+
--enable-icuio=no \
103+
--enable-layout=no \
104+
--enable-layoutex=no \
105+
--enable-tools=no \
106+
--enable-tests=no \
107+
--enable-samples=no \
108+
--enable-renaming \
109+
--enable-dyload \
110+
--with-cross-build=/src/icu/source \
111+
CFLAGS='-Os -march=armv7-a -mfloat-abi=softfp -mfpu=neon' \
112+
CXXFLAGS='--std=c++20 -march=armv7-a -mfloat-abi=softfp -mfpu=neon' \
113+
LDFLAGS='-static-libstdc++ -Wl,-z,max-page-size=16384 -march=armv7-a -Wl,--fix-cortex-a8 -Wl,-rpath=\$$ORIGIN' \
114+
CC=armv7a-linux-androideabi29-clang \
115+
CXX=armv7a-linux-androideabi29-clang++ \
116+
AR=llvm-ar \
117+
RANLIB=llvm-ranlib \
118+
--with-data-packaging=archive && \
119+
make -j15 && \
120+
make install && \
121+
\
122+
cd /src/icu/source && \
123+
./configure --prefix=/build/arm64 \
124+
--host=aarch64-android-linux \
125+
--enable-static=no \
126+
--enable-shared \
127+
--enable-extras=no \
128+
--enable-strict=no \
129+
--enable-icuio=no \
130+
--enable-layout=no \
131+
--enable-layoutex=no \
132+
--enable-tools=no \
133+
--enable-tests=no \
134+
--enable-samples=no \
135+
--enable-renaming \
136+
--enable-dyload \
137+
--with-cross-build=/src/icu/source \
138+
CFLAGS='-Os' \
139+
CXXFLAGS='--std=c++20' \
140+
LDFLAGS='-static-libstdc++ -Wl,-z,max-page-size=16384 -Wl,-rpath=\$$ORIGIN' \
141+
CC=aarch64-linux-android29-clang \
142+
CXX=aarch64-linux-android29-clang++ \
143+
AR=llvm-ar \
144+
RANLIB=llvm-ranlib \
145+
--with-data-packaging=archive && \
146+
make -j15 && \
147+
make install && \
148+
\
149+
mkdir -p /out/x86 /out/x64 /out/arm32 /out/arm64 && \
150+
cd /out && \
151+
\
152+
cp /build/x86/lib/libicudata.so.77.1 x86/libicudata.77.1.so && \
153+
cp /build/x86/lib/libicui18n.so.77.1 x86/libicui18n.77.1.so && \
154+
cp /build/x86/lib/libicuuc.so.77.1 x86/libicuuc.77.1.so && \
155+
\
156+
cp /build/x64/lib/libicudata.so.77.1 x64/libicudata.77.1.so && \
157+
cp /build/x64/lib/libicui18n.so.77.1 x64/libicui18n.77.1.so && \
158+
cp /build/x64/lib/libicuuc.so.77.1 x64/libicuuc.77.1.so && \
159+
\
160+
cp /build/arm32/lib/libicudata.so.77.1 arm32/libicudata.77.1.so && \
161+
cp /build/arm32/lib/libicui18n.so.77.1 arm32/libicui18n.77.1.so && \
162+
cp /build/arm32/lib/libicuuc.so.77.1 arm32/libicuuc.77.1.so && \
163+
\
164+
cp /build/arm64/lib/libicudata.so.77.1 arm64/libicudata.77.1.so && \
165+
cp /build/arm64/lib/libicui18n.so.77.1 arm64/libicui18n.77.1.so && \
166+
cp /build/arm64/lib/libicuuc.so.77.1 arm64/libicuuc.77.1.so && \
167+
\
168+
tar cfJ /out/icu-android.tar.xz x86 x64 arm32 arm64 && \
169+
\
170+
rm -rf x86 x64 arm32 arm64 /src /build
171+
172+
173+
FROM scratch
174+
175+
COPY --from=builder /out/icu-android.tar.xz /out/icu-android.tar.xz

extern/icu/android/aarch64/config.sh

Lines changed: 0 additions & 27 deletions
This file was deleted.

extern/icu/android/aarch64/mk.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

extern/icu/android/armv7a/config.sh

Lines changed: 0 additions & 27 deletions
This file was deleted.

extern/icu/android/armv7a/mk.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

extern/icu/android/build.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/sh
2+
set -e
3+
4+
docker build -t fb-icu-android .
5+
6+
cid=$(docker create fb-icu-android true)
7+
docker cp $cid:/out/icu-android.tar.xz ../icu_android.tar.xz
8+
docker rm $cid
9+
10+
docker image rm fb-icu-android

extern/icu/android/i686/config.sh

Lines changed: 0 additions & 27 deletions
This file was deleted.

extern/icu/android/i686/mk.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

extern/icu/android/linux/config.sh

Lines changed: 0 additions & 16 deletions
This file was deleted.

extern/icu/android/linux/mk.sh

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)