Skip to content

Commit a432296

Browse files
committed
pick ndkr23 changes from #169
1 parent ef2df99 commit a432296

File tree

5 files changed

+32
-45
lines changed

5 files changed

+32
-45
lines changed

.github/workflows/build_and_test.yml

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,42 @@
11
name: Build jsc-android and test
22

3-
on: [push, pull_request]
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
47

58
jobs:
69
build:
710
runs-on: ubuntu-latest
8-
container: reactnativecommunity/react-native-android:2019-9-4
11+
container: reactnativecommunity/react-native-android:5.4
912

1013
steps:
1114
- uses: actions/checkout@v1
1215

1316
- name: Install packages
1417
run: |
1518
apt-get update
16-
apt-get install coreutils realpath curl git subversion python3.5 python3.5-dev ruby gperf -y
17-
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
18-
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.1/install.sh | bash
19+
apt-get install coreutils curl git subversion wget python3 ruby gperf -y
20+
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
1921
echo 'export NVM_DIR="$HOME/.nvm"' >> "${HOME}/.bashrc"
2022
echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> "${HOME}/.bashrc"
2123
source "${HOME}/.bashrc"
22-
nvm install 10
23-
nvm use 10
24-
nvm alias default 10
24+
nvm install 16
25+
nvm use 16
26+
nvm alias default 16
2527
shell: bash
2628

2729
- name: Install Android packages
2830
run: |
2931
sdkmanager \
30-
"cmake;3.10.2.4988404"
32+
"cmake;3.10.2.4988404" \
33+
"cmake;3.18.1" \
34+
"ndk;23.2.8568313"
35+
# move out builtin icu headers from ndk and prevent icu build errors
36+
mv "${ANDROID_HOME}/ndk/23.2.8568313/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/unicode" "${ANDROID_HOME}/ndk/23.2.8568313/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/unicode2"
37+
echo "ANDROID_NDK=$ANDROID_HOME/ndk/23.2.8568313" >> $GITHUB_ENV
3138
shell: bash
39+
3240
- name: Build
3341
run: |
3442
yarn clean
@@ -64,7 +72,7 @@ jobs:
6472
- name: Run test
6573
uses: reactivecircus/android-emulator-runner@v2
6674
with:
67-
api-level: 16
68-
arch: x86
75+
api-level: 21
76+
arch: x86_64
6977
disable-animations: false
7078
script: mv archive/dist . && cd test && yarn && cd android && ./gradlew assembleRelease assembleAndroidTest connectedAndroidTest

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package-lock.json
22
/build
33
/dist
4+
/dist.unstripped
45

56
# Created by https://www.gitignore.io/api/node,android,reactnative,intellij+all,androidstudio,visualstudiocode
67

scripts/compile/common.sh

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -49,38 +49,18 @@ TOOLCHAIN_PLATFORM=$(ls -1 $ANDROID_NDK/toolchains/llvm/prebuilt | head -1)
4949
TOOLCHAIN_DIR="$ANDROID_NDK/toolchains/llvm/prebuilt/$TOOLCHAIN_PLATFORM/"
5050

5151
# settings
52-
PLATFORM_CFLAGS_arm=" \
53-
-march=armv7-a \
54-
-mfloat-abi=softfp \
55-
-mfpu=neon \
56-
-mthumb \
57-
"
58-
PLATFORM_LDFLAGS_arm=" \
59-
-march=armv7-a \
60-
-Wl,--fix-cortex-a8 \
61-
"
52+
PLATFORM_CFLAGS_arm=""
53+
PLATFORM_LDFLAGS_arm=""
6254
JNI_ARCH_arm=armeabi-v7a
6355

6456
PLATFORM_LDFLAGS_arm64=""
6557
JNI_ARCH_arm64=arm64-v8a
6658

67-
PLATFORM_CFLAGS_x86=" \
68-
-march=i686 \
69-
-mtune=intel \
70-
-mssse3 \
71-
-mfpmath=sse \
72-
-m32 \
73-
"
59+
PLATFORM_CFLAGS_x86=""
7460
PLATFORM_LDFLAGS_x86=""
7561
JNI_ARCH_x86=x86
7662

77-
PLATFORM_CFLAGS_x86_64=" \
78-
-march=x86-64 \
79-
-msse4.2 \
80-
-mpopcnt \
81-
-m64 \
82-
-mtune=intel \
83-
"
63+
PLATFORM_CFLAGS_x86_64=""
8464
PLATFORM_LDFLAGS_x86_64=""
8565
JNI_ARCH_x86_64=x86_64
8666

@@ -119,7 +99,7 @@ DEBUG_SYMBOL_LEVEL="-g2"
11999
if [[ "$BUILD_TYPE" = "Release" ]]
120100
then
121101
FRAME_POINTER_FLAG="-fomit-frame-pointer"
122-
CFLAGS_BUILD_TYPE="-DNDEBUG -g0"
102+
CFLAGS_BUILD_TYPE="-DNDEBUG -g0 -Oz -flto=full"
123103
ICU_CFLAGS_BUILD_TYPE="-Oz"
124104
else
125105
FRAME_POINTER_FLAG="-fno-omit-frame-pointer"
@@ -149,7 +129,7 @@ $FRAME_POINTER_FLAG \
149129
-DCUSTOMIZE_REACT_NATIVE \
150130
$SWITCH_COMMON_CFLAGS_INTL \
151131
$CFLAGS_BUILD_TYPE \
152-
-D__ANDROID_API__=${ANDROID_API} \
132+
-D__ANDROID_MIN_SDK_VERSION__=${ANDROID_API} \
153133
"
154134

155135
COMMON_CXXFLAGS=" \
@@ -158,8 +138,6 @@ COMMON_CXXFLAGS=" \
158138
ICU_CFLAGS="$COMMON_CFLAGS $PLATFORM_CFLAGS $ICU_CFLAGS_BUILD_TYPE"
159139
ICU_CXXFLAGS="$COMMON_CXXFLAGS $ICU_CFLAGS $ICU_CFLAGS_BUILD_TYPE"
160140
ICU_LDFLAGS="$COMMON_LDFLAGS \
161-
-fuse-ld=gold \
162-
-Wl,--icf=safe \
163141
$PLATFORM_LDFLAGS \
164142
"
165143

scripts/compile/icu.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,10 @@ $TARGETDIR/icu/source/configure --prefix=${INSTALL_DIR} \
4646
LDFLAGS="$ICU_LDFLAGS" \
4747
CC=$CROSS_COMPILE_PLATFORM_CC-clang \
4848
CXX=$CROSS_COMPILE_PLATFORM_CC-clang++ \
49-
AR=$CROSS_COMPILE_PLATFORM-ar \
50-
RINLIB=$CROSS_COMPILE_PLATFORM-ranlib \
49+
AR=$TOOLCHAIN_DIR/bin/llvm-ar \
50+
LD=$TOOLCHAIN_DIR/bin/ld \
51+
RANLIB=$TOOLCHAIN_DIR/bin/llvm-ranlib \
52+
STRIP=$TOOLCHAIN_DIR/bin/llvm-strip \
5153
--with-data-packaging=static
5254

5355
make -j5 install

scripts/compile/jsc.sh

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ $PLATFORM_CFLAGS \
1919
CMAKE_LD_FLAGS=" \
2020
-latomic \
2121
-lm \
22-
-lc++_shared \
22+
-static-libstdc++ \
2323
$JSC_LDFLAGS \
2424
$PLATFORM_LDFLAGS \
2525
"
@@ -90,7 +90,5 @@ mkdir -p $INSTALL_UNSTRIPPED_DIR_I18N/$JNI_ARCH
9090
mkdir -p $INSTALL_DIR_I18N/$JNI_ARCH
9191
cp $TARGETDIR/webkit/WebKitBuild/$BUILD_TYPE/lib/libjsc.so $INSTALL_UNSTRIPPED_DIR_I18N/$JNI_ARCH
9292
cp $TARGETDIR/webkit/WebKitBuild/$BUILD_TYPE/lib/libjsc.so $INSTALL_DIR_I18N/$JNI_ARCH
93-
$TOOLCHAIN_DIR/$CROSS_COMPILE_PLATFORM/bin/strip $INSTALL_DIR_I18N/$JNI_ARCH/libjsc.so
93+
$TOOLCHAIN_DIR/bin/llvm-strip $INSTALL_DIR_I18N/$JNI_ARCH/libjsc.so
9494
mv $TARGETDIR/webkit/WebKitBuild $TARGETDIR/webkit/${CROSS_COMPILE_PLATFORM}-${FLAVOR}
95-
96-
cp $TOOLCHAIN_DIR/sysroot/usr/lib/$CROSS_COMPILE_PLATFORM/libc++_shared.so $INSTALL_CPPRUNTIME_DIR

0 commit comments

Comments
 (0)