Skip to content

Commit 841f0b7

Browse files
authored
Merge pull request #8704 from FirebirdSQL/work/android-16kb
Fix #8695 - Increase Android page size to 16KB
2 parents 6441f08 + 26059be commit 841f0b7

File tree

20 files changed

+211
-184
lines changed

20 files changed

+211
-184
lines changed

.github/workflows/main.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -473,9 +473,9 @@ jobs:
473473
run: |
474474
mkdir downloads
475475
pushd downloads
476-
curl -OL https://dl.google.com/android/repository/android-ndk-r25b-linux.zip
476+
curl -OL https://dl.google.com/android/repository/android-ndk-r28c-linux.zip
477477
mkdir -p $NDK
478-
unzip android-ndk-r25b-linux.zip -d $NDK && f=("$NDK"/*) && mv "$NDK"/*/* "$NDK" && rmdir "${f[@]}"
478+
unzip android-ndk-r28c-linux.zip -d $NDK && f=("$NDK"/*) && mv "$NDK"/*/* "$NDK" && rmdir "${f[@]}"
479479
480480
- name: Build
481481
run: |
@@ -546,7 +546,7 @@ jobs:
546546
arch: x86_64
547547
api-level: 30
548548
target: google_apis
549-
ndk: 25.1.8937393
549+
ndk: 28.2.13676358
550550
emulator-options: -no-window -noaudio -no-boot-anim -camera-back none -port 5554
551551
emulator-boot-timeout: 900
552552
script: |
@@ -559,13 +559,13 @@ jobs:
559559
arch: x86_64
560560
api-level: 30
561561
target: google_apis
562-
ndk: 25.1.8937393
562+
ndk: 28.2.13676358
563563
emulator-options: -no-snapshot-save -no-window -noaudio -no-boot-anim -camera-back none -port 5554
564564
emulator-boot-timeout: 900
565565
script: |
566566
adb wait-for-device
567567
adb root
568-
NDK=/usr/local/lib/android/sdk/ndk/25.1.8937393 builds/install/arch-specific/android/BuildFinalPackage.sh $ARCH
568+
NDK=/usr/local/lib/android/sdk/ndk/28.2.13676358 builds/install/arch-specific/android/BuildFinalPackage.sh $ARCH
569569
570570
- name: Upload installer
571571
uses: actions/upload-artifact@v4

builds/posix/make.android.arm64

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ endif
66

77
NDK_TOOLCHAIN ?= $(NDK)/toolchains/llvm/prebuilt/linux-x86_64
88

9-
CROSS_PREFIX24:=$(NDK_TOOLCHAIN)/bin/aarch64-linux-android24-
9+
CROSS_PREFIX29:=$(NDK_TOOLCHAIN)/bin/aarch64-linux-android29-
1010
CROSS_PREFIX:=$(NDK_TOOLCHAIN)/bin/llvm-
1111

1212
CROSS_FLAGS:=-I$(ROOT)/gen/cross
1313

14-
CXX:=$(CROSS_PREFIX24)clang++
15-
CC:=$(CROSS_PREFIX24)clang
14+
CXX:=$(CROSS_PREFIX29)clang++
15+
CC:=$(CROSS_PREFIX29)clang
1616
AR:=$(CROSS_PREFIX)ar
1717
AS:=$(CROSS_PREFIX)as
1818
LD:=$(CROSS_PREFIX)ld
@@ -49,7 +49,7 @@ DEV_FLAGS=$(COMMON_FLAGS) $(WARN_FLAGS)
4949

5050
CROSS_CONFIG=android.arm64
5151

52-
LDFLAGS += -static-libstdc++
52+
LDFLAGS += -static-libstdc++ -Wl,-z,max-page-size=16384
5353
DroidLibs := -lm -ldl -llog $(DECLIB) $(I128LIB)
5454
UDR_SUPPORT_LIBS :=
5555

builds/posix/make.android.arme

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ endif
66

77
NDK_TOOLCHAIN ?= $(NDK)/toolchains/llvm/prebuilt/linux-x86_64
88

9-
CROSS_PREFIX24:=$(NDK_TOOLCHAIN)/bin/armv7a-linux-androideabi24-
9+
CROSS_PREFIX29:=$(NDK_TOOLCHAIN)/bin/armv7a-linux-androideabi29-
1010
CROSS_PREFIX:=$(NDK_TOOLCHAIN)/bin/llvm-
1111

1212
CROSS_FLAGS:=-I$(ROOT)/gen/cross
1313

14-
CXX:=$(CROSS_PREFIX24)clang++
15-
CC:=$(CROSS_PREFIX24)clang
14+
CXX:=$(CROSS_PREFIX29)clang++
15+
CC:=$(CROSS_PREFIX29)clang
1616
AR:=$(CROSS_PREFIX)ar
1717
AS:=$(CROSS_PREFIX)as
1818
LD:=$(CROSS_PREFIX)ld
@@ -49,7 +49,7 @@ DEV_FLAGS=$(COMMON_FLAGS) $(WARN_FLAGS)
4949

5050
CROSS_CONFIG=android.arme
5151

52-
LDFLAGS += -static-libstdc++
52+
LDFLAGS += -static-libstdc++ -Wl,-z,max-page-size=16384
5353
DroidLibs := -lm -ldl -llog $(DECLIB) $(I128LIB)
5454
UDR_SUPPORT_LIBS :=
5555

builds/posix/make.android.x86

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ endif
66

77
NDK_TOOLCHAIN ?= $(NDK)/toolchains/llvm/prebuilt/linux-x86_64
88

9-
CROSS_PREFIX24:=$(NDK_TOOLCHAIN)/bin/i686-linux-android24-
9+
CROSS_PREFIX29:=$(NDK_TOOLCHAIN)/bin/i686-linux-android29-
1010
CROSS_PREFIX:=$(NDK_TOOLCHAIN)/bin/llvm-
1111

1212
CROSS_FLAGS:=-I$(ROOT)/gen/cross
1313

14-
CXX:=$(CROSS_PREFIX24)clang++
15-
CC:=$(CROSS_PREFIX24)clang
14+
CXX:=$(CROSS_PREFIX29)clang++
15+
CC:=$(CROSS_PREFIX29)clang
1616
AR:=$(CROSS_PREFIX)ar
1717
AS:=$(CROSS_PREFIX)as
1818
LD:=$(CROSS_PREFIX)ld
@@ -49,7 +49,7 @@ DEV_FLAGS=$(COMMON_FLAGS) $(WARN_FLAGS)
4949

5050
CROSS_CONFIG=android.x86
5151

52-
LDFLAGS += -static-libstdc++
52+
LDFLAGS += -static-libstdc++ -Wl,-z,max-page-size=16384
5353
DroidLibs := -lm -ldl -llog $(DECLIB) $(I128LIB)
5454
UDR_SUPPORT_LIBS :=
5555

builds/posix/make.android.x86_64

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ endif
66

77
NDK_TOOLCHAIN ?= $(NDK)/toolchains/llvm/prebuilt/linux-x86_64
88

9-
CROSS_PREFIX24:=$(NDK_TOOLCHAIN)/bin/x86_64-linux-android24-
9+
CROSS_PREFIX29:=$(NDK_TOOLCHAIN)/bin/x86_64-linux-android29-
1010
CROSS_PREFIX:=$(NDK_TOOLCHAIN)/bin/llvm-
1111

1212
CROSS_FLAGS:=-I$(ROOT)/gen/cross
1313

14-
CXX:=$(CROSS_PREFIX24)clang++
15-
CC:=$(CROSS_PREFIX24)clang
14+
CXX:=$(CROSS_PREFIX29)clang++
15+
CC:=$(CROSS_PREFIX29)clang
1616
AR:=$(CROSS_PREFIX)ar
1717
AS:=$(CROSS_PREFIX)as
1818
LD:=$(CROSS_PREFIX)ld
@@ -49,7 +49,7 @@ DEV_FLAGS=$(COMMON_FLAGS) $(WARN_FLAGS)
4949

5050
CROSS_CONFIG=android.x86_64
5151

52-
LDFLAGS += -static-libstdc++
52+
LDFLAGS += -static-libstdc++ -Wl,-z,max-page-size=16384
5353
DroidLibs := -lm -ldl -llog $(DECLIB) $(I128LIB)
5454
UDR_SUPPORT_LIBS :=
5555

extern/icu/android/Dockerfile

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

0 commit comments

Comments
 (0)