export SCRIPTDIR=$(readlink -e $(dirname $0))
export TOPDIR=$(readlink -f "${SCRIPTDIR}/../..")
export CHROME_SRC="${TOPDIR}"
-# Please set DEFAULT_TIZEN_VERSION to empty value for the latest tizen version
-# or set DEFAULT_TIZEN_VERSION to current tizen version for the others.
-export DEFAULT_TIZEN_VERSION=
+export LATEST_TIZEN_VERSION=8.0
+export DEFAULT_TIZEN_VERSION=$LATEST_TIZEN_VERSION
if [ "$(echo "$@" | grep -e "--tizen")" != "" ]; then
tizen_version=$(echo $@ | sed -e 's#.*--tizen_\([0-9.]*\).*#\1#')
- if $(echo $tizen_version | grep -qe "^[-\?[0-9]\+\.\?[0-9]*$" && echo true || echo false); then
- DEFAULT_TIZEN_VERSION=$tizen_version
- else
- DEFAULT_TIZEN_VERSION=
- fi
+ DEFAULT_TIZEN_VERSION=$tizen_version
fi
+# Generate gbs.conf
+export PUBLIC_REPO_VERSION=
+if [ "$DEFAULT_TIZEN_VERSION" != "${LATEST_TIZEN_VERSION}" ]; then
+ PUBLIC_REPO_VERSION=-$DEFAULT_TIZEN_VERSION
+fi
+sed -e "s/@PUBLIC_REPO_VERSION@/$PUBLIC_REPO_VERSION/g" \
+ -e "s/@TIZEN_VERSION@/$DEFAULT_TIZEN_VERSION/g" \
+ tizen_src/build/gbs.conf.in > tizen_src/build/gbs.conf
+
+function getSystemDeps() {
+ local host_arch=$(getHostArch)
+ local platform=$1
+ local system_deps="--system-libraries
+ libpng
+ libxslt
+ zlib
+ "
+ # Tizen profile
+ if [ "$platform" != "desktop" ]; then
+ # Emulator profile
+ if [ "$host_arch" == "x86" -o "$host_arch" == "x64" ]; then
+ system_deps+="libjpeg
+ "
+ fi
+ # Non product tv profiles on tizen 6.0
+ if [ "$platform" != "tv" -a "$DEFAULT_TIZEN_VERSION" == "6.0" ]; then
+ system_deps+="icu
+ "
+ fi
+ fi
+ echo $system_deps
+}
+
function getHostOs() {
echo $(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')
}
function getHostArch() {
echo $(uname -m | sed -e \
- 's/i.86/ia32/;s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/;s/i86pc/ia32/;s/aarch64/arm64/')
+ 's/i.86/x86/;s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/;s/i86pc/x86/;s/aarch64/arm64/;s/riscv.*/riscv64/')
+}
+
+function getGccVersion() {
+ echo $(gcc -dumpversion)
}
function getPythonVersion() {
- echo $(python --version 2>&1 | sed -e 's/Python \([0-9]\+\.[0-9]\+\)\.[0-9]\+/\1/')
+ echo $(python3 --version 2>&1 | sed -e 's/Python \([0-9]\+\.[0-9]\+\)\.[0-9]\+/\1/')
}
function setIfUndef() {
fi
}
-
function hostBuldScriptUsage() {
cat << EOF
usage: $1 [OPTIONS]
OPTIONS:
-h, --help Show this message
--build-ewk-unittests Build ewk unittests
+ --enable-pepper-extensions Enable Tizen Pepper Extensions
--ccache Configure ccache installed in your system
--clang Use chromium's clang compiler to build the sources
- --no-content-shell Don't build content_shell application
--debug Build debug version of chromium-efl (out.${host_arch}/Debug instead of out.${host_arch}/Release)
-jN Set number of jobs, just like with make or ninja
--skip-ninja Skip ninja step
exit
}
-function parseHostBuildScriptParams() {
+function undoReplacedGn() {
+ local system_deps=$(getSystemDeps $1)
+ if [ "$system_deps" != "" ]; then
+ echo "** use system lib : undo **"
+ # Restore gn files to their original states not to mess up the tree permanently.
+ $TOPDIR/build/linux/unbundle/replace_gn_files.py --undo $system_deps icu
+ fi
+}
+function parseHostBuildScriptParams() {
+ trap 'undoReplacedGn $1' SIGINT
export USE_CCACHE=0
- export USE_CLANG=0
+ export USE_CLANG=1
export FORCE_JHBUILD=0
export SKIP_NINJA=0
export BUILD_EWK_UNITTESTS=0
- export BUILD_CONTENT_SHELL=1
+ export BUILD_CHROME=0
export BUILD_SUBDIRECTORY=Release
export COMPONENT_BUILD=0
+ export ENABLE_PEPPER_EXTENSIONS=0
local platform="$1"
shift
export USE_CCACHE=1
source $TOPDIR/tizen_src/build/ccache_env.sh ${platform}
;;
- --clang)
- export USE_CLANG=1
+ --gcc)
+ export USE_CLANG=0
;;
- --no-content-shell)
- export BUILD_CONTENT_SHELL=0
+ --build-chrome)
+ export BUILD_CHROME=1
;;
--force-jhbuild)
export FORCE_JHBUILD=1
--component-build)
export COMPONENT_BUILD=1
;;
+ --enable-pepper-extensions)
+ export ENABLE_PEPPER_EXTENSIONS=1
+ ;;
-j*)
export JOBS="$1"
;;
if [[ $SKIP_GN != 1 ]]; then
local XWALK_ARG=""
local COMPONENT_ARG=""
+ local PEPPER_EXTENSIONS_ARG=""
if [[ $COMPONENT_BUILD == 1 ]]; then
COMPONENT_ARG="component=shared_library"
fi
+ if [[ $ENABLE_PEPPER_EXTENSIONS == 1 ]]; then
+ PEPPER_EXTENSIONS_ARG="tizen_pepper_extensions=true"
+ fi
${TOPDIR}/tizen_src/build/gn_chromiumefl.sh \
$XWALK_ARG \
$COMPONENT_ARG \
- "outdir=\"$TOPDIR/out.$(getHostArch)\"" \
- "chromium_efl_tizen_version=30" \
+ $PEPPER_EXTENSIONS_ARG \
$@
fi
}
function hostNinja() {
+ local RESULT=0
if [[ $SKIP_NINJA == 0 ]]; then
- TARGETS="chromium-ewk efl_webprocess efl_webview_app ubrowser"
+ if [[ $BUILD_CHROME == 1 ]]; then
+ TARGETS="content_shell chrome"
+ else
+ TARGETS="chromium-ewk efl_webprocess efl_webview_app ubrowser"
+ fi
if [[ $BUILD_EWK_UNITTESTS == 1 ]]; then
TARGETS="$TARGETS ewk_unittests"
fi
- if [[ $BUILD_CONTENT_SHELL == 1 ]]; then
- TARGETS="$TARGETS content_shell dump_syms minidump_stackwalk"
- fi
if [[ $BUILD_CHROMEDRIVER == 1 ]]; then
TARGETS="$TARGETS chromedriver"
fi
export BUILD_SUBDIRECTORY=""
BUILDDIR=${GN_GENERATOR_OUTPUT}/${BUILD_SUBDIRECTORY}
ninja -C $BUILDDIR ${JOBS} ${TARGETS}
+ RESULT=$?
+ fi
+ undoReplacedGn $1
+
+ if [[ $RESULT != 0 ]]; then
+ exit $RESULT
fi
}
local CONF_FLAG
local -a ARGS
- local count=0
local exclusive_options=0
local RPMLINT=0
local NOINIT=0
local MIRROR=0
+ local LOCAL_BUILD=1
+ local RELEASE_BUILD=0
+ local MAKE_SQUASHFS_RPM=0
+ local BUILD_CHROME=0
# "|| :" means "or always succeeding built-in command"
- PROFILE=$(echo "$@" | grep -Po "(?<=\-P\s)[^\s]*" | uniq || :)
- ARCHITECTURE=$(echo "$@" | grep -Po "(?<=\-A\s)[^\s]*" | uniq || :)
+ PROFILE=$(echo "$@" | grep -Po "(?<=\-P\s)[^\s]*" | head -1 || :)
+ ARCHITECTURE=$(echo "$@" | grep -Po "(?<=\-A\s)[^\s]*" | head -1 || :)
+ GBS_ROOT=$(echo "$@" | grep -Po "(?<=\-B\s)[^\s]*" | head -1 || :)
while [[ $# > 0 ]]; do
- count=$(( $count + 1 ))
case "$1" in
--debug)
- ARGS[$count]=--define
- count=$(( $count + 1 ))
- ARGS[$count]="_debug_mode 1"
+ ARGS+=(--define "_debug_mode 1")
+ ;;
+ --gcov)
+ LOCAL_BUILD=0
+ ARGS+=(--define "_local_build 0")
+ ARGS+=(--define "_clang 0")
+ ARGS+=(--define "_no_lto 0")
+ ARGS+=(--define "gcov 1")
;;
--skip-ninja)
- ARGS[$count]=--define
- count=$(( $count + 1 ))
- ARGS[$count]="_skip_ninja 1"
+ ARGS+=(--define "_skip_ninja 1")
;;
--skip-gn)
+ ARGS+=(--define "_skip_gn 1")
+ ;;
+ --ttrace)
ARGS[$count]=--define
count=$(( $count + 1 ))
- ARGS[$count]="_skip_gn 1"
+ ARGS[$count]="_ttrace 1"
;;
--component-build)
- ARGS[$count]=--define
- count=$(( $count + 1 ))
- ARGS[$count]="component_build 1"
+ ARGS+=(--define "component_build 1")
+ ;;
+ --disable-wrtjs)
+ ARGS+=(--define "_disable_wrt_js 1")
;;
--gbs-debug)
- ARGS[$count]=--debug
+ ARGS+=(--debug)
+ ;;
+ --icu=*)
+ ARGS+=(--define "_use_system_icu $(echo $1 | sed -e 's/--icu=//g')")
;;
--rpmlint)
RPMLINT=1
- count=$(( $count + 1 ))
;;
--nodebug)
- ARGS[$count]=--define
- count=$(( $count + 1 ))
- ARGS[$count]="_nodebug 1"
+ ARGS+=(--define "_nodebug 1")
;;
--noinit)
NOINIT=1
- ARGS[$count]="$1"
- count=$(( $count + 1 ))
+ ARGS+=("$1")
;;
--mirror)
MIRROR=1
;;
+ --release)
+ LOCAL_BUILD=0
+ RELEASE_BUILD=1
+ ;;
+ --squashfs)
+ MAKE_SQUASHFS_RPM=1
+ ;;
+ --gcc)
+ LOCAL_BUILD=0
+ ARGS+=(--define "_clang 0")
+ ;;
+ --clang)
+ LOCAL_BUILD=0
+ ARGS+=(--define "_clang 1")
+ ;;
--standard*)
- if [ "$DEFAULT_TIZEN_VERSION" == "" ]; then
- echo $1
- PROFILE=tz_$(echo $1 | sed 's/--//g')
- elif [ "$DEFAULT_TIZEN_VERSION" == "4.0" ]; then
- PROFILE=tz_${DEFAULT_TIZEN_VERSION}_$(echo $1 | sed 's/--//g')_$(echo $ARCHITECTURE | grep "i586" -q && echo "ia32" || echo $ARCHITECTURE)
- else
- PROFILE=tz_${DEFAULT_TIZEN_VERSION}_$(echo $1 | sed 's/--//g')
- fi
+ PROFILE=tz_$(echo $1 | sed 's/--//g')
;;
--emulator*)
- if [ "$DEFAULT_TIZEN_VERSION" == "" ]; then
- PROFILE=tz_$(echo $1 | sed 's/--//g')
- elif [ "$DEFAULT_TIZEN_VERSION" == "4.0" ]; then
- PROFILE=tz_${DEFAULT_TIZEN_VERSION}_$(echo $1 | sed 's/--//g')_$(echo $ARCHITECTURE | grep "i586" -q && echo "ia32" || echo $ARCHITECTURE)
- else
- PROFILE=tz_${DEFAULT_TIZEN_VERSION}_$(echo $1 | sed 's/--//g')
- fi
+ PROFILE=tz_$(echo $1 | sed 's/--//g')
;;
--tizen*)
;;
+ --build-chrome)
+ BUILD_CHROME=1
+ ARGS+=(--define "_build_chrome 1")
+ ;;
*)
- ARGS[$count]="$1"
+ ARGS+=("$1")
;;
esac
shift;
done
+ ARGS+=(--define "_make_squashfs_rpm $MAKE_SQUASHFS_RPM")
+
+ if [ "$LOCAL_BUILD" == "1" ]; then
+ ARGS+=(--define "_local_build 1")
+ local _jobs=$((`/usr/bin/getconf _NPROCESSORS_ONLN` / 2 - `ps -ef | grep " ninja " | wc -l` -1))
+ local _smp_mflags=-j$(if ((${_jobs} > 10)); then echo ${_jobs}; else echo 10; fi)
+ ARGS+=(--define "_costomized_smp_mflags $_smp_mflags")
+ # Default values
+ ARGS+=(--define "_clang 1")
+ fi
+
+ if [ "$RELEASE_BUILD" == "1" ]; then
+ ARGS+=(--define "_local_build 0")
+ if [[ $platform == "tv" ]]; then
+ ARGS+=(--define "_clang 1")
+ else
+ ARGS+=(--define "_clang 0")
+ ARGS+=(--define "_no_lto 0")
+ fi
+ fi
+
if [ "$PROFILE" == "" ]; then
- if [[ $platform == "mobile" ]]; then
- PROFILE=tzmb_3.0_target-TM1
- elif [[ $platform == "tv" ]]; then
- if [ "$DEFAULT_TIZEN_VERSION" == "" ]; then
- PROFILE=tztv_arm-kantm
- else
- PROFILE=tztv_${DEFAULT_TIZEN_VERSION}_arm-kantm
- fi
+ if [[ $platform == "tv" ]]; then
+ PROFILE=tztv_${DEFAULT_TIZEN_VERSION}_arm-pontusm
elif [[ $platform == "da" ]]; then
- if [ "$DEFAULT_TIZEN_VERSION" == "" ]; then
- PROFILE=tzda_arm-kantm
- else
- PROFILE=tzda_${DEFAULT_TIZEN_VERSION}_arm-kantm
- fi
+ PROFILE=tzda_${DEFAULT_TIZEN_VERSION}_arm-kantm
+ elif [[ $platform == "riscv" ]]; then
+ PROFILE=tz_${DEFAULT_TIZEN_VERSION}_riscv
+ elif [[ $platform == "wearable" ]]; then
+ PROFILE=tzwr_5.5_arm-spin
+ elif [[ $platform == "Base-X" ]]; then
+ PROFILE=tz_X
else
echo "Cannot set default PROFILE for platform=${platform}"
exit 1
echo "Set the profile : $PROFILE"
if [ "$ARCHITECTURE" == "" ]; then
- if [[ $platform == "mobile" ]]; then
- ARCHITECTURE=armv7l
- elif [[ $platform == "mobile_emulator" ]]; then
- ARCHITECTURE=i586
- elif [[ $platform == "tv" ]]; then
- ARCHITECTURE=armv7l
- elif [[ $platform == "tv_emulator" ]]; then
- ARCHITECTURE=i586
- else
- echo "Cannot set default ARCHITECTURE for platform=${platform}"
- exit 1
- fi
+ ARCHITECTURE=armv7l
fi
echo "Set the architecture : $ARCHITECTURE"
+ if [ "$(echo "${PROFILE}" | grep -P "tz_standard")" != "" -a "$NOINIT" == 0 ]; then
+ processRpmlintOption $PROFILE $RPMLINT
+ fi
+ local BRANCH=$(echo $(basename $(git symbolic-ref HEAD)))
+ if [ "$(echo $BRANCH | grep dev)" != "" ]; then
+ BRANCH=dev
+ elif [ "$(echo $BRANCH | grep beta)" != "" ]; then
+ BRANCH=beta
+ else
+ BRANCH=release
+ fi
+ local CHROMIUM_VERSION=$(echo $(head -n 1 chrome/VERSION) | sed -e 's/MAJOR=//g')
+
+ local GBS_ROOT_OPT=
if [ "$USE_GLOBAL_GBS_CONF" == "" ]; then
CONF_FLAG="--conf ${SCRIPTDIR}/gbs.conf"
+ if [ "$GBS_ROOT" == "" ]; then
+ if [ "$BUILD_CHROME" == "1" ]; then
+ GBS_ROOT_OPT="-B ~/GBS-ROOT-M${CHROMIUM_VERSION}-${PROFILE^^}-TIZEN_${DEFAULT_TIZEN_VERSION^^}-CHROME-${BRANCH^^}"
+ else
+ GBS_ROOT_OPT="-B ~/GBS-ROOT-M${CHROMIUM_VERSION}-${PROFILE^^}-TIZEN_${DEFAULT_TIZEN_VERSION^^}-${BRANCH^^}"
+ fi
+ else
+ GBS_ROOT_OPT="-B $GBS_ROOT"
+ fi
fi
- EXTRA_PACK_OPTS=""
- if [ "$PROFILE" == "tztv_v2.4_product" ]; then
- EXTRA_PACK_OPTS="--extra-packs python-base-x86-arm,python-x86-arm,python-xml-x86-arm"
- fi
+ processICU initialize_icu
+ gbs $CONF_FLAG build -P $PROFILE --include-all -A $ARCHITECTURE "${ARGS[@]}" $BUILD_CONF_OPTS --incremental $GBS_ROOT_OPT
+ local RESULT=$?
- if [ "$(echo "${PROFILE}" | grep -P "kant|jazz|hawk|product")" == "" -a "$NOINIT" == 0 ]; then
- processRpmlintOption $PROFILE $RPMLINT
+ undoReplacedGn $platform
+ processICU restore_icu
+
+ if [[ $RESULT != 0 ]]; then
+ exit $RESULT
fi
+}
- gbs $CONF_FLAG build -P $PROFILE --include-all -A $ARCHITECTURE "${ARGS[@]}" $BUILD_CONF_OPTS $EXTRA_PACK_OPTS --incremental
+function processICU() {
+ local ICU_PATH="$TOPDIR/third_party/icu/source"
+ local ICU_REPLACE_PATH="$TOPDIR/third_party/icu/source_replace"
+
+ if [ "$1" == "replace_icu" ]; then
+ if [ ! -e $ICU_REPLACE_PATH ] && [ -e $ICU_PATH ]; then
+ echo "** third_party/icu/source is replaced to use system icu."
+ mv $ICU_PATH $ICU_REPLACE_PATH
+ fi
+ elif [ "$1" == "restore_icu" ]; then
+ if [ -e $ICU_REPLACE_PATH ] && [ ! -e $ICU_PATH ]; then
+ echo "** third_party/icu/source is restored."
+ mv $ICU_REPLACE_PATH $ICU_PATH
+ fi
+ elif [ "$1" == "initialize_icu" ]; then
+ if [ -e $ICU_REPLACE_PATH ]; then
+ echo "** third_party/icu/source is initialized."
+ rm -rf $ICU_PATH
+ mv $ICU_REPLACE_PATH $ICU_PATH
+ fi
+ fi
}
function processRpmlintOption() {
mkdir $BUILD_CONF_DIR
URL_TARGET=$(echo $PROFILE | sed -e 's#.*\.[0-9]*_\([-a-zA-Z0-9]*\).*#\1#;s/tz_//g')
# The latest version doesn't have tizen version in snapshot repository url.
- if [ "$(echo $DEFAULT_TIZEN_VERSION)" == "" ]; then
+ if [ "$DEFAULT_TIZEN_VERSION" == "${LATEST_TIZEN_VERSION}" ]; then
URL_TIZEN_VERSION=
else
- URL_TIZEN_VERSION=$DEFAULT_TIZEN_VERSION-
+ URL_TIZEN_VERSION=-$DEFAULT_TIZEN_VERSION
fi
- REPO=http://download.tizen.org/snapshots/tizen/$URL_TIZEN_VERSION$platform/latest/repos/$URL_TARGET/packages/repodata/
+ REPO=http://download.tizen.org/snapshots/TIZEN/Tizen$URL_TIZEN_VERSION/Tizen$URL_TIZEN_VERSION-$platform/latest/repos/$URL_TARGET/packages/repodata/
echo "** Repo : $REPO"
wget $REPO -O $BUILD_CONF_DIR/index.html > /dev/null 2>&1
BUILD_CONF_GZ=$(grep "build.conf.gz" $BUILD_CONF_DIR/index.html | sed -e 's#.*\=\"\(.*\)\".*#\1#')
fi
gunzip $BUILD_CONF_DIR/$BUILD_CONF_GZ
sed -i 's/rpmlint-mini\ rpmlint-tizen/!rpmlint-mini\ !rpmlint-tizen/g' $BUILD_CONF_DIR/$BUILD_CONF
+ if [ "$DEFAULT_TIZEN_VERSION" == "6.0" ]; then
+ sed -i 's/tizen_version_major 5/tizen_version_major 6/g' $BUILD_CONF_DIR/$BUILD_CONF
+ sed -i 's/tizen_version_minor 5/tizen_version_minor 0/g' $BUILD_CONF_DIR/$BUILD_CONF
+ fi
BUILD_CONF_OPTS="-D $BUILD_CONF_DIR/$BUILD_CONF"
if [ "$PREVIOUS_RPMLINT" == "rpmlint" ]; then
echo "** Once built with rpmlint"