Skip to content

Commit a89ef01

Browse files
Kudokmagiera
authored andcommitted
Add debug build option support (#104)
1 parent 6264116 commit a89ef01

File tree

8 files changed

+105
-23
lines changed

8 files changed

+105
-23
lines changed

lib/android-jsc/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ android {
1515
jniLibs.srcDirs = ["${rootDir}/../build/compiled"]
1616
}
1717
}
18+
19+
packagingOptions {
20+
doNotStrip "**/libjsc.so"
21+
}
1822
}
1923

2024
dependencies {}

patches/jsc_features.patch

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ diff -aur target-org/webkit/CMakeLists.txt target/webkit/CMakeLists.txt
2323
# -----------------------------------------------------------------------------
2424
# Print the features list last, for maximum visibility.
2525
diff -aur target-org/webkit/Source/cmake/OptionsJSCOnly.cmake target/webkit/Source/cmake/OptionsJSCOnly.cmake
26-
--- target-org/webkit/Source/cmake/OptionsJSCOnly.cmake 2017-04-17 15:51:21.000000000 +0200
27-
+++ target/webkit/Source/cmake/OptionsJSCOnly.cmake 2017-07-11 11:34:55.962374878 +0200
28-
@@ -35,12 +35,11 @@
26+
--- target-org/webkit/Source/cmake/OptionsJSCOnly.cmake 2019-03-26 11:25:17.000000000 +0800
27+
+++ target/webkit/Source/cmake/OptionsJSCOnly.cmake 2019-03-26 11:28:29.000000000 +0800
28+
@@ -35,12 +35,7 @@
2929
set(ENABLE_WEBCORE OFF)
3030
set(ENABLE_WEBKIT_LEGACY OFF)
3131
set(ENABLE_WEBKIT OFF)
@@ -36,13 +36,9 @@ diff -aur target-org/webkit/Source/cmake/OptionsJSCOnly.cmake target/webkit/Sour
3636
- set(ENABLE_API_TESTS ON)
3737
-endif ()
3838
+set(ENABLE_API_TESTS OFF)
39-
+set(ENABLE_SAMPLING_PROFILER OFF)
40-
+set(ENABLE_DFG_JIT ON)
41-
+set(ENABLE_FTL_JIT OFF)
42-
+set(ENABLE_JIT ON)
4339

44-
if (WTF_CPU_X86 OR WTF_CPU_X86_64)
45-
SET_AND_EXPOSE_TO_BUILD(USE_UDIS86 1)
40+
if (WTF_CPU_ARM OR WTF_CPU_MIPS)
41+
SET_AND_EXPOSE_TO_BUILD(USE_CAPSTONE TRUE)
4642
diff -aur target-org/webkit/Source/JavaScriptCore/CMakeLists.txt target/webkit/Source/JavaScriptCore/CMakeLists.txt
4743
--- target-org/webkit/Source/JavaScriptCore/CMakeLists.txt 2017-05-02 21:13:03.000000000 +0200
4844
+++ target/webkit/Source/JavaScriptCore/CMakeLists.txt 2017-07-11 11:34:55.962374878 +0200
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
diff -aur target-org/webkit/Source/WTF/wtf/CheckedArithmetic.h target/webkit/Source/WTF/wtf/CheckedArithmetic.h
2+
--- target-org/webkit/Source/WTF/wtf/CheckedArithmetic.h 2018-07-26 17:00:09.000000000 +0800
3+
+++ target/webkit/Source/WTF/wtf/CheckedArithmetic.h 2019-04-12 12:03:55.000000000 +0800
4+
@@ -317,7 +317,7 @@
5+
6+
static inline bool multiply(LHS lhs, RHS rhs, ResultType& result) WARN_UNUSED_RETURN
7+
{
8+
-#if COMPILER(GCC_OR_CLANG)
9+
+#if COMPILER(GCC_OR_CLANG) && CPU(ARM_THUMB2) && defined(NDEBUG)
10+
ResultType temp;
11+
if (__builtin_mul_overflow(lhs, rhs, &temp))
12+
return false;
13+
@@ -390,7 +390,7 @@
14+
15+
static inline bool multiply(LHS lhs, RHS rhs, ResultType& result) WARN_UNUSED_RETURN
16+
{
17+
-#if COMPILER(GCC_OR_CLANG)
18+
+#if COMPILER(GCC_OR_CLANG) && CPU(ARM_THUMB2) && defined(NDEBUG)
19+
ResultType temp;
20+
if (__builtin_mul_overflow(lhs, rhs, &temp))
21+
return false;
22+
@@ -453,7 +453,7 @@
23+
24+
static inline bool multiply(int64_t lhs, int64_t rhs, ResultType& result)
25+
{
26+
-#if COMPILER(GCC_OR_CLANG)
27+
+#if COMPILER(GCC_OR_CLANG) && CPU(ARM_THUMB2) && defined(NDEBUG)
28+
ResultType temp;
29+
if (__builtin_mul_overflow(lhs, rhs, &temp))
30+
return false;

scripts/compile/common.sh

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,21 @@ if [[ $err = true ]]; then exit 1; fi
121121

122122
####
123123

124+
DEBUG_SYMBOL_LEVEL="-g2"
125+
if [[ "$BUILD_TYPE" = "Release" ]]
126+
then
127+
FRAME_POINTER_FLAG="-fomit-frame-pointer"
128+
CFLAGS_BUILD_TYPE="-DNDEBUG"
129+
ICU_CFLAGS_BUILD_TYPE="-Oz"
130+
else
131+
FRAME_POINTER_FLAG="-fno-omit-frame-pointer"
132+
CFLAGS_BUILD_TYPE=""
133+
ICU_CFLAGS_BUILD_TYPE=$DEBUG_SYMBOL_LEVEL
134+
fi
135+
136+
####
137+
124138
COMMON_LDFLAGS=" \
125-
-fuse-ld=gold \
126-
-Wl,--icf=safe \
127139
-Wl,-z,noexecstack \
128140
-Wl,--gc-sections \
129141
-Wl,--exclude-libs,libgcc.a \
@@ -134,26 +146,27 @@ COMMON_LDFLAGS=" \
134146
COMMON_CFLAGS=" \
135147
-fstack-protector \
136148
-ffunction-sections \
137-
-fomit-frame-pointer \
149+
$FRAME_POINTER_FLAG \
138150
-fno-strict-aliasing \
139-
-fexceptions \
140-
-frtti \
141151
-funwind-tables \
142152
-DPIC \
143153
-fPIC \
144154
-fvisibility=hidden \
145-
-DNDEBUG \
146155
-DCUSTOMIZE_REACT_NATIVE \
147156
$SWITCH_COMMON_CFLAGS_INTL \
157+
$CFLAGS_BUILD_TYPE \
148158
"
149159

150160
COMMON_CXXFLAGS=" \
151-
--std=c++11 \
152161
"
153162

154-
ICU_CFLAGS="$COMMON_CFLAGS $PLATFORM_CFLAGS -Oz"
155-
ICU_CXXFLAGS="$COMMON_CXXFLAGS $ICU_CFLAGS -Oz"
156-
ICU_LDFLAGS="$COMMON_LDFLAGS $PLATFORM_LDFLAGS -s"
163+
ICU_CFLAGS="$COMMON_CFLAGS $PLATFORM_CFLAGS $ICU_CFLAGS_BUILD_TYPE"
164+
ICU_CXXFLAGS="$COMMON_CXXFLAGS $ICU_CFLAGS $ICU_CFLAGS_BUILD_TYPE"
165+
ICU_LDFLAGS="$COMMON_LDFLAGS \
166+
-fuse-ld=gold \
167+
-Wl,--icf=safe \
168+
$PLATFORM_LDFLAGS \
169+
"
157170

158171
JSC_LDFLAGS="$COMMON_LDFLAGS"
159172
JSC_CFLAGS="$COMMON_CFLAGS -DU_STATIC_IMPLEMENTATION=1 -DU_SHOW_CPLUSPLUS_API=0"

scripts/compile/icu.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,15 @@ cd $BUILD_DIR
1818
CROSS_BUILD_DIR=$(realpath $TARGETDIR/icu/host)
1919
PATH=$TOOLCHAIN_DIR/bin:$PATH
2020

21+
if [[ "$BUILD_TYPE" = "Release" ]]
22+
then
23+
BUILD_TYPE_CONFIG="--enable-release=yes"
24+
else
25+
BUILD_TYPE_CONFIG="--enable-debug=yes"
26+
fi
27+
2128
$TARGETDIR/icu/source/configure --prefix=$(pwd)/prebuilts \
29+
$BUILD_TYPE_CONFIG \
2230
--host=$CROSS_COMPILE_PLATFORM \
2331
--enable-static=yes \
2432
--enable-shared=no \

scripts/compile/jsc.sh

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,19 @@ ARCH_NAME_PLATFORM_x86_64="x86_64"
4040
var="ARCH_NAME_PLATFORM_$JSC_ARCH"
4141
export ARCH_NAME=${!var}
4242

43+
44+
if [[ "$BUILD_TYPE" = "Release" ]]
45+
then
46+
BUILD_TYPE_CONFIG="--release"
47+
BUILD_TYPE_FLAGS=""
48+
else
49+
BUILD_TYPE_CONFIG="--debug"
50+
BUILD_TYPE_FLAGS="-DDEBUG_FISSION=OFF"
51+
fi
52+
4353
$TARGETDIR/webkit/Tools/Scripts/build-webkit \
4454
--jsc-only \
45-
--release \
55+
$BUILD_TYPE_CONFIG \
4656
--jit \
4757
"$SWITCH_BUILD_WEBKIT_OPTIONS_INTL" \
4858
--no-webassembly \
@@ -62,12 +72,19 @@ $TARGETDIR/webkit/Tools/Scripts/build-webkit \
6272
-DCMAKE_SYSROOT_COMPILE=$TOOLCHAIN_DIR/sysroot \
6373
-DCMAKE_CXX_FLAGS='${CMAKE_CXX_FLAGS} $COMMON_CXXFLAGS $CMAKE_CXX_FLAGS' \
6474
-DCMAKE_C_FLAGS='${CMAKE_C_FLAGS} $CMAKE_CXX_FLAGS' \
75+
-DCMAKE_C_FLAGS_DEBUG='${DEBUG_SYMBOL_LEVEL}' \
76+
-DCMAKE_CXX_FLAGS_DEBUG='${DEBUG_SYMBOL_LEVEL}' \
6577
-DCMAKE_SHARED_LINKER_FLAGS='${CMAKE_SHARED_LINKER_FLAGS} $CMAKE_LD_FLAGS' \
6678
-DCMAKE_EXE_LINKER_FLAGS='${CMAKE_MODULE_LINKER_FLAGS} $CMAKE_LD_FLAGS' \
67-
-DENABLE_API_TESTS=0 \
6879
-DCMAKE_VERBOSE_MAKEFILE=on \
80+
-DENABLE_API_TESTS=OFF \
81+
-DENABLE_SAMPLING_PROFILER=OFF \
82+
-DENABLE_JIT=ON \
83+
-DENABLE_DFG_JIT=ON \
84+
-DENABLE_FTL_JIT=OFF \
6985
-DJSC_VERSION=\"${JSC_VERSION}\" \
86+
$BUILD_TYPE_FLAGS \
7087
"
7188

72-
cp $TARGETDIR/webkit/WebKitBuild/Release/lib/libjsc.so $INSTALL_DIR
89+
cp $TARGETDIR/webkit/WebKitBuild/$BUILD_TYPE/lib/libjsc.so $INSTALL_DIR
7390
mv $TARGETDIR/webkit/WebKitBuild $TARGETDIR/webkit/${CROSS_COMPILE_PLATFORM}-${FLAVOR}

scripts/patch.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ JSC_PATCHSET=(
4141

4242
# Will print current JSC version in adb log during initialization
4343
"jsc_startup_log_version.patch"
44+
45+
# NDK r17c does not define __mulodi4, which is being used in debug build.
46+
# (However, NDK r19 fixed this)
47+
"jsc_fix_build_error_mulodi4.patch"
4448
)
4549

4650
if [[ "$I18N" = false ]]

scripts/start.sh

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ export ROOTDIR=$PWD
66
export TARGETDIR=$ROOTDIR/build/target
77
source $ROOTDIR/scripts/info.sh
88
export JSC_VERSION=${npm_package_version}
9+
export BUILD_TYPE=Release
10+
# export BUILD_TYPE=Debug
11+
912
SCRIPT_DIR=$(cd `dirname $0`; pwd)
1013

1114
patchAndMakeICU() {
@@ -22,9 +25,16 @@ patchAndMakeICU() {
2225
mkdir -p $TARGETDIR/icu/host
2326
cd $TARGETDIR/icu/host
2427

28+
if [[ "$BUILD_TYPE" = "Release" ]]
29+
then
30+
CFLAGS="-Os"
31+
else
32+
CFLAGS="-g2"
33+
fi
34+
2535
$TARGETDIR/icu/source/runConfigureICU Linux \
2636
--prefix=$PWD/prebuilts \
27-
CFLAGS="-Os" \
37+
CFLAGS="$CFLAGS" \
2838
CXXFLAGS="--std=c++11" \
2939
--disable-tests \
3040
--disable-samples \

0 commit comments

Comments
 (0)