@@ -49,6 +49,10 @@ PRINT_USAGE() {
4949 echo " --without=FEATURE,FEATURE,..."
5050 echo " Disable FEATUREs from JSRT experimental"
5151 echo " features."
52+ echo " --wb-check CPPFILE"
53+ echo " Write-barrier check given CPPFILE (git path)"
54+ echo " --wb-analyze CPPFILE"
55+ echo " Write-barrier analyze given CPPFILE (git path)"
5256 echo " "
5357 echo " example:"
5458 echo " ./build.sh --cxx=/path/to/clang++ --cc=/path/to/clang -j"
@@ -75,6 +79,8 @@ ARCH="-DCC_TARGETS_AMD64_SH=1"
7579OS_LINUX=0
7680OS_APT_GET=0
7781OS_UNIX=0
82+ WB_CHECK=
83+ WB_ANALYZE=
7884
7985if [ -f " /proc/version" ]; then
8086 OS_LINUX=1
@@ -234,6 +240,24 @@ while [[ $# -gt 0 ]]; do
234240 done
235241 ;;
236242
243+ --wb-check)
244+ if [[ " $2 " =~ ^[^-] ]]; then
245+ WB_CHECK=" $2 "
246+ shift
247+ else
248+ PRINT_USAGE && exit 1
249+ fi
250+ ;;
251+
252+ --wb-analyze)
253+ if [[ " $2 " =~ ^[^-] ]]; then
254+ WB_ANALYZE=" $2 "
255+ shift
256+ else
257+ PRINT_USAGE && exit 1
258+ fi
259+ ;;
260+
237261 * )
238262 echo " Unknown option $1 "
239263 PRINT_USAGE
@@ -306,6 +330,43 @@ if [[ ${#_CXX} > 0 ]]; then
306330 CC_PREFIX=" -DCMAKE_CXX_COMPILER=$_CXX -DCMAKE_C_COMPILER=$_CC "
307331fi
308332
333+ # ################ Write-barrier check/analyze run #################
334+ WB_FLAG=
335+ WB_TARGET=
336+ if [[ $WB_CHECK || $WB_ANALYZE ]]; then
337+ if [[ $MAKE != ' ninja' ]]; then
338+ echo " --wb-check/wb-analyze only works with --ninja" && exit 1
339+ fi
340+ if [[ $WB_CHECK && $WB_ANALYZE ]]; then
341+ echo " Please run only one of --wb-check or --wb-analyze" && exit 1
342+ fi
343+ if [[ $WB_CHECK ]]; then
344+ WB_FLAG=" -DWB_CHECK_SH=1"
345+ WB_FILE=$WB_CHECK
346+ fi
347+ if [[ $WB_ANALYZE ]]; then
348+ WB_FLAG=" -DWB_ANALYZE_SH=1"
349+ WB_FILE=$WB_ANALYZE
350+ fi
351+
352+ if [[ -f $CHAKRACORE_DIR /$WB_FILE ]]; then
353+ touch $CHAKRACORE_DIR /$WB_FILE
354+ else
355+ echo " $CHAKRACORE_DIR /$WB_FILE not found. Please use full git path for $WB_FILE ." && exit 1
356+ fi
357+
358+ WB_FILE_DIR=` dirname $WB_FILE `
359+ WB_FILE_BASE=` basename $WB_FILE `
360+
361+ WB_FILE_CMAKELISTS=" $CHAKRACORE_DIR /$WB_FILE_DIR /CMakeLists.txt"
362+ if [[ -f $WB_FILE_CMAKELISTS ]]; then
363+ SUBDIR=$( grep -i add_library $WB_FILE_CMAKELISTS | sed -r " s/.*\((\S+) .*/\1/" )
364+ else
365+ echo " $WB_FILE_CMAKELISTS not found." && exit 1
366+ fi
367+ WB_TARGET=" $WB_FILE_DIR /CMakeFiles/$SUBDIR .dir/$WB_FILE_BASE .o"
368+ fi
369+
309370build_directory=" $CHAKRACORE_DIR /BuildLinux/${BUILD_TYPE: 0} "
310371if [ ! -d " $build_directory " ]; then
311372 SAFE_RUN ` mkdir -p $build_directory `
322383
323384echo Generating $BUILD_TYPE makefiles
324385cmake $CMAKE_GEN $CC_PREFIX $ICU_PATH $STATIC_LIBRARY $ARCH \
325- -DCMAKE_BUILD_TYPE=$BUILD_TYPE $SANITIZE $NO_JIT $WITHOUT_FEATURES ../..
386+ -DCMAKE_BUILD_TYPE=$BUILD_TYPE $SANITIZE $NO_JIT $WITHOUT_FEATURES \
387+ $WB_FLAG \
388+ ../..
326389
327390_RET=$?
328391if [[ $? == 0 ]]; then
329392 if [[ $MAKE != 0 ]]; then
330- $MAKE $MULTICORE_BUILD 2>&1 | tee build.log
393+ $MAKE $MULTICORE_BUILD $WB_TARGET 2>&1 | tee build.log
331394 _RET=${PIPESTATUS[0]}
332395 else
333396 echo " Visit given folder above for xcode project file ----^"
0 commit comments