blob: 73f160815e80102af142c1f2bb2a2b356abaf920 [file] [log] [blame]
# Copyright 2016 The Fuchsia Authors. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
update_prebuilts=false
run_after_building=false
build_dir=Debug
build_tag=debug
build_flag=--debug
dry_run=""
while getopts ":hcrumpl" arg; do
case $arg in
c) # Do a clean build
clean_build=true
;;
m) # Clean CMake files
clean_cmake=true
;;
r) # Run after building
run_after_building=true
;;
p) # Release build
build_dir=Release
build_flag=--release
build_tag=debug
;;
l) # Update prebuilds.
update_prebuilts=true
;;
h | *) # Display help.
usage
exit 0
;;
esac
done
source $(dirname $BASH_SOURCE)/common.sh
set -e
cd $WEBKIT_ROOT
declare -x PKG_CONFIG_PATH=$FUCHSIA_CROSS_ROOT/lib/pkgconfig
WEBKIT_BUILD=$WEBKIT_ROOT/WebKitBuild/$build_dir
FUCHSIA_SRC_ROOT=`cd $WEBKIT_ROOT/../../;pwd`
FUCHSIA_BUILD=`cd $FUCHSIA_SRC_ROOT/out/debug-x86-64/;pwd`
maybe_clean_webkit
MINIBROWSER=$WEBKIT_BUILD/bin/MiniBrowser
MINIBROWSER_STRIPPED=$WEBKIT_BUILD/bin/MiniBrowserStripped
LIBJSC=$WEBKIT_BUILD/lib/libJavaScriptCore.so
LIBJSC_STRIPPED=$WEBKIT_BUILD/lib/libJavaScriptCoreStripped.so
LIBWEBKIT_LEGACY=$WEBKIT_BUILD/lib/libWebKitLegacy.so
LIBWEBKIT_LEGACY_STRIPPED=$WEBKIT_BUILD/lib/libWebKitLegacyStripped.so
MINIBROWSERFS=$WEBKIT_BUILD/extrajsc.bootfs
JSC=$WEBKIT_BUILD/bin/jsc
JSC_STRIPPED=$WEBKIT_BUILD/bin/jsc_stripped
$WEBKIT_ROOT/Tools/Scripts/build-webkit $build_flag --fuchsia \
--no-jit \
--no-web-sockets \
--no-3d-rendering \
--touch-events \
--video \
--video-track \
--cmakeargs="-DCMAKE_TOOLCHAIN_FILE=$script_dir/FuchsiaClangToolchain.txt -DENABLE_XSLT=OFF -DENABLE_DRAG_SUPPORT=OFF -DENABLE_STATIC_JSC=ON"
MANIFEST_FILE=$WEBKIT_BUILD/minibrowser_manifest.txt
cd $script_dir
if [ $run_after_building == true ] ; then
echo user.bootfs: > $MANIFEST_FILE
echo bin/mb=$MINIBROWSER_STRIPPED >> $MANIFEST_FILE
echo bin/jsc=$JSC_STRIPPED >> $MANIFEST_FILE
echo bin/netstack=$FUCHSIA_BUILD/netstack >> $MANIFEST_FILE
echo lib/libc++abi.so.1=$FUCHSIA_SYSROOT/lib/libc++abi.so.1 >> $MANIFEST_FILE
echo lib/libc++.so.2=$FUCHSIA_SYSROOT/lib/libc++.so.2 >> $MANIFEST_FILE
echo lib/libunwind.so.1=$FUCHSIA_SYSROOT/lib/libunwind.so.1 >> $MANIFEST_FILE
echo lib/libcrypto.so=$FUCHSIA_OUT_DIR/debug-x86-64/libcrypto.so >> $MANIFEST_FILE
echo lib/libssl.so=$FUCHSIA_OUT_DIR/debug-x86-64/libssl.so >> $MANIFEST_FILE
echo docs/input.html=$script_dir/input.html >> $MANIFEST_FILE
echo docs/hello.html=$script_dir/hello.html >> $MANIFEST_FILE
echo docs/IMG_6285.jpg=$script_dir/IMG_6285.jpg >> $MANIFEST_FILE
echo docs/cursor32.png=$script_dir/cursor32.png >> $MANIFEST_FILE
echo data/webkit/Roboto-Regular.ttf=$script_dir/Roboto-Regular.ttf >> $MANIFEST_FILE
find $WEBKIT_ROOT/Source/WebCore/Resources -print | while read line; do
if [ -f "$line" ]
then
partial_line=${line#$WEBKIT_ROOT/Source/WebCore/Resources/}
echo docs/WebCoreResources/$partial_line="$line" >> $MANIFEST_FILE
fi
done
$MAGENTA_STRIP $MINIBROWSER -o $MINIBROWSER_STRIPPED
$MAGENTA_STRIP $JSC -o $JSC_STRIPPED
$MAGENTA_MKBOOTFS -c -o $MINIBROWSERFS $FUCHSIA_OUT_DIR/build-magenta/build-magenta-pc-x86-64/bootdata.bin $MANIFEST_FILE
fi
if [ $update_prebuilts == true ] ; then
echo updating prebuilts
mkdir -p $FUCHSIA_SRC_ROOT/apps/web_view/prebuilt/include
cp $WEBKIT_ROOT/Source/WebKit/fuchsia/WebView.h $FUCHSIA_SRC_ROOT/apps/web_view/prebuilt/include/
mkdir -p $FUCHSIA_SRC_ROOT/apps/web_view/prebuilt/x86-64/lib
webkit_libs="libWTF.a libWebKitLegacy.a libJavaScriptCore.a libWebCore.a libWebCoreDerivedSources.a"
for one_lib in $webkit_libs
do
echo "Updating $one_lib"
cp $WEBKIT_BUILD/lib/$one_lib $FUCHSIA_SRC_ROOT/apps/web_view/prebuilt/x86-64/lib/$one_lib
done
webkit_dep_libs="libcairo.a libcurl.a libpng.a libpixman-1.a libz.a libfreetype.a libxml2.a libicuuc.a libicudata.a libicui18n.a libexpat.a libsqlite3.a libturbojpeg.a libharfbuzz.a libharfbuzz-icu.a"
for one_lib in $webkit_dep_libs
do
echo "Updating $one_lib"
cp $FUCHSIA_CROSS_ROOT/lib/$one_lib $FUCHSIA_SRC_ROOT/apps/web_view/prebuilt/x86-64/lib/$one_lib
done
fi
if [ $run_after_building == true ] ; then
if [ $os_name == "Darwin" ] ; then
defaults write com.google.fuchsia.FBTV addr2line "$MAGENTA_ROOT/prebuilt/downloads/x86_64-elf-6.2.0-Darwin-x86_64/bin/x86_64-elf-addr2line"
defaults write com.google.fuchsia.FBTV app_name MiniBrowser
defaults write com.google.fuchsia.FBTV build_dirs -array $WEBKIT_BUILD/bin $WEBKIT_BUILD/lib $FUCHSIA_SYSROOT/lib $MAGENTA_ROOT/build-magenta-pc-x86-64/ulib/musl $MAGENTA_ROOT/build-magenta-pc-x86-64/ulib/driver
fi
PATH=$FUCHSIA_SRC_ROOT/buildtools/qemu/bin:$PATH $FUCHSIA_SRC_ROOT/scripts/run-magenta-x86-64 -x $MINIBROWSERFS -g $debug_options -q $FUCHSIA_SRC_ROOT/buildtools/qemu/bin
fi