Skip to content

Commit bf0a760

Browse files
committed
clang bug in NDK 27 makes loop vectorization pass error. disable the warning (to about warnings as errors killing the build unnecessarily), but also disable loop vectorization options until NDK can be bumped. downgrade to c++20 to align with React Native constraints.
1 parent 4b4310f commit bf0a760

File tree

5 files changed

+43
-34
lines changed

5 files changed

+43
-34
lines changed

lib/jsc-android/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ android {
2828
versionCode 1
2929
versionName "1.0"
3030

31+
ndk {
32+
abiFilters 'arm64-v8a', 'x86_64'
33+
}
34+
3135
externalNativeBuild {
3236
cmake {
3337
arguments '-DANDROID_STL=c++_shared',

scripts/compile/all.sh

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ compile_arch() {
1515
}
1616

1717
compile() {
18-
for arch in arm x86
19-
do
20-
export ANDROID_API=$ANDROID_API_FOR_ABI_32
21-
export JSC_ARCH=$arch
22-
compile_arch
23-
done
18+
if [[ "${INCLUDE_32_BIT_ABIS:-0}" == "1" ]]; then
19+
for arch in arm x86
20+
do
21+
export ANDROID_API=$ANDROID_API_FOR_ABI_32
22+
export JSC_ARCH=$arch
23+
compile_arch
24+
done
25+
fi
2426

2527
for arch in arm64 x86_64
2628
do

scripts/compile/common.sh

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ process_switch_options "INTL"
8686

8787
# checks
8888
err=false
89-
if ! [[ $ANDROID_API_FOR_ABI_32 ]]; then echo "set ANDROID_API_FOR_ABI_32 to the minimum supported Android platform version for arm and x86 (e.g. 16)"; err=true; fi
89+
if [[ "${INCLUDE_32_BIT_ABIS:-0}" == "1" ]] && ! [[ $ANDROID_API_FOR_ABI_32 ]]; then echo "set ANDROID_API_FOR_ABI_32 to the minimum supported Android platform version for arm and x86 (e.g. 16)"; err=true; fi
9090
if ! [[ $ANDROID_API_FOR_ABI_64 ]]; then echo "set ANDROID_API_FOR_ABI_64 to the minimum supported Android platform version for arm64 and x86_64 (e.g. 21)"; err=true; fi
9191
if ! [[ $FLAVOR ]]; then echo "set FLAVOR to the name of the flavor"; err=true; fi
9292
if ! [[ $CROSS_COMPILE_PLATFORM ]]; then echo "set JSC_ARCH to one of {arm,arm64,x86,x86_64}"; err=true; fi
@@ -101,8 +101,8 @@ DEBUG_SYMBOL_LEVEL="-g2"
101101
if [[ "$BUILD_TYPE" = "Release" ]]
102102
then
103103
FRAME_POINTER_FLAG="-fomit-frame-pointer"
104-
CFLAGS_BUILD_TYPE="-DNDEBUG -g0 -O2 -flto=thin -fvectorize -fslp-vectorize -funroll-loops"
105-
ICU_CFLAGS_BUILD_TYPE="-O2 -flto=thin -fvectorize -fslp-vectorize -funroll-loops"
104+
CFLAGS_BUILD_TYPE="-DNDEBUG -g0 -O2 -flto=thin"
105+
ICU_CFLAGS_BUILD_TYPE="-O2 -flto=thin"
106106
else
107107
FRAME_POINTER_FLAG="-fno-omit-frame-pointer"
108108
CFLAGS_BUILD_TYPE=""
@@ -132,15 +132,16 @@ $FRAME_POINTER_FLAG \
132132
-DCUSTOMIZE_REACT_NATIVE \
133133
$SWITCH_COMMON_CFLAGS_INTL \
134134
$CFLAGS_BUILD_TYPE \
135+
-Wno-pass-failed=loop-vectorize \
135136
-D__ANDROID_MIN_SDK_VERSION__=${ANDROID_API} \
136137
"
137138

138139
COMMON_CXXFLAGS=" \
139-
-std=c++2b \
140+
-std=c++20 \
140141
"
141142

142143
ICU_CFLAGS="$COMMON_CFLAGS $PLATFORM_CFLAGS $ICU_CFLAGS_BUILD_TYPE"
143-
ICU_CXXFLAGS="$COMMON_CXXFLAGS $ICU_CFLAGS $ICU_CFLAGS_BUILD_TYPE"
144+
ICU_CXXFLAGS="$COMMON_CXXFLAGS $ICU_CFLAGS"
144145
ICU_LDFLAGS="$COMMON_LDFLAGS \
145146
$PLATFORM_LDFLAGS \
146147
"

scripts/compile/jsc.sh

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,20 @@ rm -rf $TARGETDIR/webkit/$CROSS_COMPILE_PLATFORM-${FLAVOR}
1010
rm -rf $TARGETDIR/webkit/WebKitBuild
1111
cd $TARGETDIR/webkit/Tools/Scripts
1212

13-
CMAKE_CXX_FLAGS=" \
14-
$SWITCH_JSC_CFLAGS_COMPAT \
15-
$JSC_CFLAGS \
16-
$PLATFORM_CFLAGS \
17-
"
18-
19-
CMAKE_LD_FLAGS=" \
20-
-latomic \
21-
-lm \
22-
-lc++_shared \
23-
$JSC_LDFLAGS \
24-
$PLATFORM_LDFLAGS \
25-
"
26-
2713
ARCH_NAME_PLATFORM_arm="armv7-a"
2814
ARCH_NAME_PLATFORM_arm64="aarch64"
2915
ARCH_NAME_PLATFORM_x86="i686"
3016
ARCH_NAME_PLATFORM_x86_64="x86_64"
3117
var="ARCH_NAME_PLATFORM_$JSC_ARCH"
3218
export ARCH_NAME=${!var}
3319

20+
BASE_C_FLAGS="$COMMON_CFLAGS $PLATFORM_CFLAGS"
21+
BASE_CXX_FLAGS="$COMMON_CXXFLAGS $BASE_C_FLAGS"
22+
BASE_LD_FLAGS="-latomic -lm -lc++_shared $JSC_LDFLAGS $PLATFORM_LDFLAGS"
23+
24+
export CFLAGS="$BASE_C_FLAGS"
25+
export CXXFLAGS="$BASE_CXX_FLAGS"
26+
export LDFLAGS="$BASE_LD_FLAGS"
3427

3528
if [[ "$BUILD_TYPE" = "Release" ]]
3629
then
@@ -50,6 +43,7 @@ JSC_FEATURE_FLAGS=" \
5043
$TARGETDIR/webkit/Tools/Scripts/build-webkit \
5144
--jsc-only \
5245
$BUILD_TYPE_CONFIG \
46+
--no-fatal-warnings \
5347
"$SWITCH_BUILD_WEBKIT_OPTIONS_INTL" \
5448
--no-xslt \
5549
--no-netscape-plugin-api \
@@ -66,12 +60,20 @@ $TARGETDIR/webkit/Tools/Scripts/build-webkit \
6660
-DICU_ROOT=${TARGETDIR}/icu/${CROSS_COMPILE_PLATFORM}-${FLAVOR}/prebuilts \
6761
-DICU_INCLUDE_DIR=${TARGETDIR}/icu/${CROSS_COMPILE_PLATFORM}-${FLAVOR}/prebuilts/include \
6862
-DENABLE_API_TESTS=OFF \
69-
-DCMAKE_CXX_FLAGS='${CMAKE_CXX_FLAGS} $COMMON_CXXFLAGS $CMAKE_CXX_FLAGS' \
70-
-DCMAKE_C_FLAGS='${CMAKE_C_FLAGS} $CMAKE_CXX_FLAGS' \
71-
-DCMAKE_C_FLAGS_DEBUG='${DEBUG_SYMBOL_LEVEL}' \
72-
-DCMAKE_CXX_FLAGS_DEBUG='${DEBUG_SYMBOL_LEVEL}' \
73-
-DCMAKE_SHARED_LINKER_FLAGS='${CMAKE_SHARED_LINKER_FLAGS} $CMAKE_LD_FLAGS' \
74-
-DCMAKE_EXE_LINKER_FLAGS='${CMAKE_MODULE_LINKER_FLAGS} $CMAKE_LD_FLAGS' \
63+
-DCMAKE_C_FLAGS=\"$BASE_C_FLAGS\" \
64+
-DCMAKE_CXX_FLAGS=\"$BASE_CXX_FLAGS\" \
65+
-DCMAKE_C_FLAGS_RELEASE=\"$BASE_C_FLAGS\" \
66+
-DCMAKE_CXX_FLAGS_RELEASE=\"$BASE_CXX_FLAGS\" \
67+
-DCMAKE_C_FLAGS_RELWITHDEBINFO=\"$BASE_C_FLAGS\" \
68+
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=\"$BASE_CXX_FLAGS\" \
69+
-DCMAKE_C_FLAGS_DEBUG=\"$BASE_C_FLAGS $DEBUG_SYMBOL_LEVEL\" \
70+
-DCMAKE_CXX_FLAGS_DEBUG=\"$BASE_CXX_FLAGS $DEBUG_SYMBOL_LEVEL\" \
71+
-DCMAKE_SHARED_LINKER_FLAGS=\"$BASE_LD_FLAGS\" \
72+
-DCMAKE_MODULE_LINKER_FLAGS=\"$BASE_LD_FLAGS\" \
73+
-DCMAKE_EXE_LINKER_FLAGS=\"$BASE_LD_FLAGS\" \
74+
-DCMAKE_CXX_STANDARD=20 \
75+
-DCMAKE_CXX_STANDARD_REQUIRED=ON \
76+
-DCMAKE_CXX_EXTENSIONS=OFF \
7577
-DCMAKE_VERBOSE_MAKEFILE=on \
7678
-DENABLE_API_TESTS=OFF \
7779
-DENABLE_SAMPLING_PROFILER=OFF \

scripts/start.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ patchAndMakeICU() {
3535

3636
if [[ "$BUILD_TYPE" = "Release" ]]
3737
then
38-
local OPT_FLAGS="-O2 -flto=thin -fvectorize -fslp-vectorize -funroll-loops"
38+
local OPT_FLAGS="-O2 -flto=thin -Wno-pass-failed=loop-vectorize"
3939
CFLAGS="$OPT_FLAGS"
40-
CXXFLAGS="-std=c++2b $OPT_FLAGS"
40+
CXXFLAGS="-std=c++20 $OPT_FLAGS"
4141
LDFLAGS="-flto=thin"
4242
else
4343
CFLAGS="-g2"
44-
CXXFLAGS="-std=c++2b"
44+
CXXFLAGS="-std=c++20"
4545
LDFLAGS=""
4646
fi
4747

0 commit comments

Comments
 (0)