[TIZEN] Port build system from beta/forct/m34_1847
authorAntonio Gomes <a1.gomes@samsung.com>
Mon, 25 Aug 2014 14:34:03 +0000 (10:34 -0400)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
The build system in branch beta/m34_1847 has
refactored in commits [1] and [2].

Patch ports these two CLs to chromium-efl's m38_2121
branch. The following changes were made on top of the
original work:

1) our homemade build/gyp_chromiumefl is kept as the GYP entry
   point still, so that we can override CalculateVariables
   from ./src/tools/gyp. beta/m34 calls src/build/gyp_chromium
   directly, but patches src/tools/gyp.
2) impl/pkgconfig/gen_pkgconfigs.py was fixed to run
   build/util/version.py instead of chrome/tools/build/version.py
   (after https://codereview.chromium.org/165893002)
3) 'host_arch' was defined in gyp_chromiumefl.sh so that we
   do not have dependency problems in src/build/common.gypi
   with arm-linux-gnueabihf-gcc.
4) Patched-files-copy logic was also added
   (see build/copy_patched_files.sh and build/patched_files/).
5) Package version updated from 34_1847 to 38_2121.

[1] http://165.213.202.130:8080/#/c/68416/
(by Tomasz Olszak <t.olszak@samsung.com>)
[2] http://suprem.sec.samsung.net/gerrit/#/c/4150/
(by Piotr Tworek <p.tworek@samsung.com>)

Build syntax is now:
./build/build_{desktop,mobile,tv}.sh {--debug}

Bug: http://107.108.218.239/bugzilla/show_bug.cgi?id=4938

Change-Id: I770c180df9fca385d086a6244fc152fbac1c8b55
Signed-off-by: Antonio Gomes <a1.gomes@samsung.com>
20 files changed:
tizen_src/build/build_desktop.sh [new file with mode: 0755]
tizen_src/build/build_mobile.sh [new file with mode: 0755]
tizen_src/build/build_tv.sh [new file with mode: 0755]
tizen_src/build/ccache_env.sh
tizen_src/build/copy_patched_files.sh
tizen_src/build/envsetup.sh [deleted file]
tizen_src/build/gbs.conf [new file with mode: 0755]
tizen_src/build/gyp_chromiumefl.sh [new file with mode: 0755]
tizen_src/build/prebuild.sh [deleted file]
tizen_src/build/prebuild_desktop.sh [deleted file]
tizen_src/build/prebuild_mobile.sh [deleted file]
tizen_src/build/prebuild_tv.sh [deleted file]
tizen_src/build/restore_gyp.sh
tizen_src/build/system_deps_mobile.sh [deleted file]
tizen_src/build/system_deps_tv.sh [deleted file]
tizen_src/impl/chromium-efl.gyp
tizen_src/impl/pkgconfig/gen_pkgconfigs.py [new file with mode: 0644]
tizen_src/packaging/chromium-efl.spec
tizen_src/packaging/org.tizen.chromium-efl.manifest
tizen_src/pkgconfig/chromium-efl.pc.in [deleted file]

diff --git a/tizen_src/build/build_desktop.sh b/tizen_src/build/build_desktop.sh
new file mode 100755 (executable)
index 0000000..707396c
--- /dev/null
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+SCRIPTDIR=$( cd $(dirname $0) ; pwd -P )
+TOPDIR=$( cd ${SCRIPTDIR}/.. ; pwd -P )
+
+source ${SCRIPTDIR}/common.sh
+
+host_arch=$(getHostArch)
+
+GYP_GENERATOR_OUTPUT=${TOPDIR}/"out.${host_arch}"
+
+JHBUILD_DEPS="${GYP_GENERATOR_OUTPUT}/Dependencies/Root"
+
+if [ "${host_arch}" == "x64" ]; then
+  _LIBDIR=lib64
+elif [ "${host_arch}" == "ia32" ]; then
+  _LIBDIR=lib
+fi
+
+usage() {
+cat << EOF
+usage: $0 [OPTIONS]
+
+Build desktop version of chromium-efl
+
+OPTIONS:
+   -h, --help    Show this message
+   --skip-gyp    Skip restore_gyp, jhbuild and gyp_chromium steps
+   --ccache      configure ccache installed in your system
+   --skip-ninja  Skip ninja step
+   --debug       build debug version of chromium-efl (in $GYP_GENERATOR_OUTPUT/Debug instead of default $GYP_GENERATOR_OUTPUT/Release)
+
+examples:
+$0 --skip-gyp
+$0 --skip-gyp --ccache
+$0 --skip-ninja
+EOF
+  exit
+}
+
+SKIP_GYP=0
+USE_CCACHE=0
+SKIP_NINJA=0
+
+BUILD_SUBDIRECTORY=Release
+
+if echo "$@" | grep -cq '\(\(\-\-help\)\|\(\-h\)\)'; then
+  usage
+fi
+
+if echo "$@" | grep -cq '\-\-skip-gyp'; then
+  SKIP_GYP=1
+fi
+
+if echo "$@" | grep -cq '\-\-skip-ninja'; then
+  SKIP_NINJA=1
+fi
+
+if echo "$@" | grep -cq '\-\-ccache'; then
+  USE_CCACHE=1
+fi
+
+if echo "$@" | grep -cq '\-\-debug'; then
+  BUILD_SUBDIRECTORY=Debug
+fi
+
+set -e
+
+if [ "$SKIP_GYP" == "0" ]; then
+  ${TOPDIR}/build/gyp_chromiumefl.sh
+fi
+
+if [ "$SKIP_NINJA" == "0" ]; then
+  if [ "$USE_CCACHE" == "1" ]; then
+    echo using ccache
+    set +e
+    source $TOPDIR/build/ccache_env.sh desktop
+    set -e
+  fi
+  export LD_LIBRARY_PATH="${JHBUILD_DEPS}/${_LIBDIR}:$LD_LIBRARY_PATH"
+  ninja -C ${GYP_GENERATOR_OUTPUT}/${BUILD_SUBDIRECTORY}
+fi
diff --git a/tizen_src/build/build_mobile.sh b/tizen_src/build/build_mobile.sh
new file mode 100755 (executable)
index 0000000..8e33941
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+SCRIPTDIR=$(cd $(dirname $0); pwd -P)
+
+# source common functions and vars
+. `dirname ${BASH_SOURCE[0]}`/common.sh
+
+# copy patched files (for GCC 4.5)
+. ${SCRIPTDIR}/copy_patched_files.sh
+
+gbs build -A armv7l --incremental "$@"
diff --git a/tizen_src/build/build_tv.sh b/tizen_src/build/build_tv.sh
new file mode 100755 (executable)
index 0000000..49776d4
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+SCRIPTDIR=$(cd $(dirname $0); pwd -P)
+
+# source common functions and vars
+. `dirname ${BASH_SOURCE[0]}`/common.sh
+
+# copy patched files (for GCC 4.5)
+. ${SCRIPTDIR}/copy_patched_files.sh
+
+gbs build  -A armv7l --incremental "$@"
index 13e4b43..092a13a 100644 (file)
@@ -4,8 +4,8 @@ TOPDIR=$(cd ${SCRIPTDIR}/.. ; pwd -P)
 source ${SCRIPTDIR}/common.sh
 
 function usage() {
- echo "Usage:"
- echo "source build/ccache_env.sh desktop|mobile|tv"
 echo "Usage:"
 echo "source build/ccache_env.sh desktop|mobile|tv"
 }
 
 
@@ -20,9 +20,12 @@ if [ "$1" == "desktop" -o  "$1" == "mobile" -o "$1" == "tv" ]; then
   if [ $CCACHESIZE == "1" ]; then
      ccache -M 10
   fi
-  ccacheInPath=$(echo $PATH | grep -c /usr/lib/ccache)
-  if [ "$ccacheInPath" == "0" -a "$1" == "desktop" ]; then
-    export PATH=/usr/lib/ccache:$PATH
+
+  if [ "$1" == "desktop" ]; then
+    ccacheInPath=$(echo $PATH | grep -c /usr/lib/ccache)
+    if [ "$ccacheInPath" == "0" ]; then
+      export PATH=/usr/lib/ccache:$PATH
+    fi
   fi
 else
   echo "Warning! You need to pick correct profile when you include ccache_env.sh"
index 1697c34..61ff204 100755 (executable)
@@ -3,7 +3,7 @@
 # source common functions and vars
 . `dirname ${BASH_SOURCE[0]}`/common.sh
 
-PATCHED_DIR=$EFL_WEBVIEW_DIR/build/patched_files
+PATCHED_DIR=$SCRIPTDIR/patched_files
 
 cp $PATCHED_DIR/arm-neon-config.h ${CHROME_SRC}/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h
 cp $PATCHED_DIR/arm-config.h ${CHROME_SRC}/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h
diff --git a/tizen_src/build/envsetup.sh b/tizen_src/build/envsetup.sh
deleted file mode 100644 (file)
index 37b2fd2..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-#!/bin/bash
-
-if [ ! -z ${BASH_SOURCE[0]} ]; then
-  _ARGV0=${BASH_SOURCE[0]}
-else
-  _ARGV0=$0
-fi
-
-if [ "${BUILDING_WITH_GBS}" = 1 ]; then
-  TOP_DIR=$(pwd -P)
-else
-  _SCRIPT=$(readlink -f $_ARGV0)
-  _SCRIPT_DIR=$(dirname $_SCRIPT)
-  TOP_DIR="${_SCRIPT_DIR}/../"
-fi
-
-setup_jhbuild_deps() {
-  export JHBUILD_DEPS="${TOP_DIR}/${GYP_GENERATOR_OUTPUT}/Dependencies/Root"
-  if [ -d "$JHBUILD_DEPS" ] ; then
-    if [ ${host_arch} = 'x64' ]; then
-      _LIBDIR=lib64
-    elif [ ${host_arch} = 'ia32' ]; then
-      _LIBDIR=lib
-    fi
-    export PKG_CONFIG_PATH="${JHBUILD_DEPS}/${_LIBDIR}/pkgconfig"
-    export LD_LIBRARY_PATH="${JHBUILD_DEPS}/${_LIBDIR}"
-    export PATH="$PATH:${JHBUILD_DEPS}/bin"
-  fi
-}
-
-if [[ -z "${CHROME_SRC}" ]]; then
-  # If $CHROME_SRC was not set, assume src subfolder in current directory is CHROME_SRC.
-  export CHROME_SRC="${TOP_DIR}/src"
-fi
-
-if [ "$CHROMIUM_TIZEN_CROSSCOMPILE" = 1 ] ; then
-  if [ "x"$TIZEN_SDK_PATH = "x" ]; then
-    TIZEN_SDK_PATH="$HOME/tizen-sdk"
-  fi
-  if [ "x"$GBS_ROOT_PATH = "x" ]; then
-    GBS_ROOT_PATH="$HOME/GBS-ROOT"
-  fi
-
-  export CROSSTOOLROOT="${TIZEN_SDK_PATH}"/tools/arm-linux-gnueabi-gcc-4.5
-  export CROSSTOOLLIBEXEC=$CROSSTOOLROOT/libexec/gcc/arm-linux-gnueabi/4.5.4
-  export CROSSTOOLBIN=$CROSSTOOLROOT/bin
-  export CROSSTOOL=$CROSSTOOLBIN/arm-linux-gnueabi
-  export CXX_target=$CROSSTOOL-g++
-  export CC_target=$CROSSTOOL-gcc
-  export AR_target=$CROSSTOOL-ar
-  export AS_target=$CROSSTOOL-as
-  export RANLIB_target=$CROSSTOOL-ranlib
-  export CXX_host=g++
-  export CC_host=gcc
-  export AR_host=ar
-  export AS_host=as
-  export RANLIB_host=ranlib
-  export PATH=$CROSSTOOLBIN:$PATH
-
-  export SYSROOTDIR="${GBS_ROOT_PATH}"/local/BUILD-ROOTS/scratch.armv7l.0
-  export GYP_CROSSCOMPILE=1
-  toolchain_target=arm-linux-gnueabi-gcc-4.5
-  toolchain_path="${TIZEN_SDK_PATH}"/tools/arm-linux-gnueabi-gcc-4.5/bin
-  export PKG_CONFIG_PATH=/usr/lib
-else
-  export GYP_CROSSCOMPILE=0
-  export SYSROOTDIR="\"\""
-fi
-
-export GYP_GENERATORS=ninja
-host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')
-host_arch=$(uname -m | sed -e \
-        's/i.86/ia32/;s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/;s/i86pc/ia32/')
-python_ver=$(python --version  2>&1 | sed -e 's/Python \([0-9]\+\.[0-9]\+\)\.[0-9]\+/\1/')
-
-DEFINES="OS=linux"
-DEFINES+=" host_os=${host_os} host_arch=${host_arch} python_ver=${python_ver}"
-DEFINES+=" use_libjpeg_turbo=0 proprietary_codecs=1"
-DEFINES+=" use_xi2_mt=2 toolkit_uses_gtk=0 use_aura=1 toolkit_efl=1"
-DEFINES+=" use_gstreamer=1 clang=0 host_clang=0"
-
-echo "[M37] TODO: Fix and re-enable notifications (edit build/envsetup.sh)"
-DEFINES+=" notifications=0"
-
-# System dependencies
-if [ -e "${TOP_DIR}/build/TARGET" ]; then
-  if [ $(cat "${TOP_DIR}/build/TARGET") = "mobile" ]; then
-    . build/system_deps_mobile.sh
-  else # tv
-    . build/system_deps_tv.sh
-  fi
-  DEFINES+=" $SYSTEM_DEPS"
-fi
-
-if [ $host_arch = "arm" -o "$CHROMIUM_TIZEN_CROSSCOMPILE" = 1 ] ; then
-  target_arch="arm"
-  DEFINES+=" sysroot=${SYSROOTDIR}"
-  DEFINES+=" target_arch=arm armv7=1 arm_thumb=1 arm_neon=1"
-fi
-
-# Add prebuild folder with prebuild build tools for arm for GBS build.
-if [ $host_arch = "arm" ] ; then
-  export PATH=${TOP_DIR}/build/prebuild:$PATH
-fi
-
-#  toolkit_views=1
-
-# component=shared results in strange link errors. Probably something to fix upstream.
-GYP_DEFINES_NO_SHARED=$(echo $GYP_DEFINES | sed 's|component=shared_library||g')
-export GYP_DEFINES="${GYP_DEFINES_NO_SHARED}"
-export GYP_GENERATOR_OUTPUT="out.${host_arch}"
-
-# Use jhbuild dependencies.
-setup_jhbuild_deps
-
-if [ "${BUILDING_WITH_GBS}" = 1 -o "${CHROMIUM_TIZEN_CROSSCOMPILE}" = 1 ]; then
-  DEFINES+=" building_for_tizen=1"
-  # get Target Name and add Flag to GYP_DEFINES
-  if [ -e "${TOP_DIR}/build/TARGET" ]; then
-    if [ $(cat "${TOP_DIR}/build/TARGET") = "mobile" ]; then
-      DEFINES+=" building_for_tizen_mobile=1"
-      DEFINES+=" building_for_tizen_tv=0"
-    else # tv
-      DEFINES+=" building_for_tizen_tv=1"
-      DEFINES+=" building_for_tizen_mobile=0"
-    fi
-  else
-    DEFINES+=" building_for_tizen_mobile=0"
-    DEFINES+=" building_for_tizen_tv=0"
-  fi
-else
-  DEFINES+=" building_for_tizen=0"
-  DEFINES+=" building_for_tizen_mobile=0"
-  DEFINES+=" building_for_tizen_tv=0"
-fi
-
-export GYP_DEFINES="${DEFINES} ${GYP_DEFINES}"
-
-# Fetches EFL build dependencies using jhbuild.
-efl_jhbuild() {
-  jhbuild --no-interact -f ${TOP_DIR}/build/jhbuild/jhbuildrc
-  if [ $? -eq 0 ]; then
-    setup_jhbuild_deps
-  fi
-}
-
-# Performs a gyp_chromium run to convert gyp->Makefile for android code.
-gyp_chromiumefl() {
-  # This is just a simple wrapper of gyp_chromium, please don't add anything
-  # in this function.
-  echo "GYP_GENERATORS set to '$GYP_GENERATORS'"
-  (
-    "${TOP_DIR}/build/gyp_chromiumefl" "$@"
-  )
-}
-
-if [ "$target_arch" = "arm" ] ; then
-  export EFLWV_APP_PATH=/usr/bin
-  export EFLWV_LIB_PATH=/usr/lib
-  export CHROMIUM_DIR=/usr/share/org.tizen.chromium-efl/
-  export STRIP_BIN=${TIZEN_SDK_PATH}/tools/arm-linux-gnueabi-gcc-4.5/arm-linux-gnueabi/bin/strip
-  export SDB_BIN=${TIZEN_SDK_PATH}/tools/sdb
-
-  tizen_deploy_file() {
-    echo "Processing $1"
-    ${STRIP_BIN} -o /tmp/$1 $1
-    ${SDB_BIN} push /tmp/$1 $2/$1
-    rm -f /tmp/$1
-  }
-
-  determine_output_folder() {
-    if [ $# -eq 0 ]; then
-      return
-    fi
-    if [ "$1" = "release" -o "$1" = "r" ]; then
-      OUTPUT_FOLDER=${TOP_DIR}/${GYP_GENERATOR_OUTPUT}/Release
-    elif [ "$1" = "debug" -o "$1" = "d" ]; then
-      OUTPUT_FOLDER=${TOP_DIR}/${GYP_GENERATOR_OUTPUT}/Debug
-    fi
-  }
-
-  tizen_deploy() {
-    determine_output_folder $@
-    if [ ! -d "$OUTPUT_FOLDER" ]; then
-      echo "Usage: tizen_deploy r[elease] | d[ebug]"
-      return
-    fi
-
-    ${SDB_BIN} shell mount -o remount,rw /
-    pushd ${OUTPUT_FOLDER}/lib
-    SHARED=`ls -1 *.so`
-    for K in ${SHARED} ; do
-      tizen_deploy_file ${K} ${EFLWV_LIB_PATH}
-    done
-    popd
-    pushd ${OUTPUT_FOLDER}
-    ${SDB_BIN} push content_shell.pak ${CHROMIUM_DIR}/
-    popd
-  }
-fi
diff --git a/tizen_src/build/gbs.conf b/tizen_src/build/gbs.conf
new file mode 100755 (executable)
index 0000000..88046c0
--- /dev/null
@@ -0,0 +1,45 @@
+[general]
+profile = profile.tizenmb
+
+[profile.tizenmb]
+passwdx =
+obs = obs.tizenmb
+# The order is IMPORTANT!
+repos = repo.tizenmb_supplement, repo.tizenmb_base
+buildroot = ~/GBS-ROOT
+
+[obs.tizenmb]
+url = http://slp-build.sec.samsung.net:81
+
+# base repo
+[repo.tizenmb_base]
+#url = http://10.251.52.177/tizenrepo/jpn-dcm/Redwood8974JPNDCM_20131218.006
+url = http://105.144.128.62/tizenrepo/jpn-dcm/Redwood8974JPNDCM_20131218.006
+
+# Supplementary repo for additional rpms packages required in gbs build
+[repo.tizenmb_supplement]
+#url = http://10.251.52.177/tizenrepo/jpn-dcm/supplement
+url = http://105.144.128.62/tizenrepo/jpn-dcm/supplement
+
+[profile.tizentv_product]
+repos = repo.tizentv_supplement, repo.tztv_2.2.1_product, repo.tztv_2.2.1_profile, repo.tztv_2.2.1_product_i586, repo.tztv_2.2.1_profile_i586, repo.tizen_2.2.1
+buildroot = ~/GBS-TV-PRODUCT
+
+[repo.tztv_2.2.1_demo]
+url=http://168.219.241.168/snapshots/tztv-2.2.1-tdc14/product/latest/
+[repo.tztv_2.2.1_product]
+url=http://168.219.241.168/snapshots/tztv-2.2.1/product/latest/repos/product/armv7l/packages/
+#url=http://168.219.241.168/snapshots/tztv-2.2.1/product/tztv-2.2.1_20140526.4/
+[repo.tztv_2.2.1_profile]
+url=http://168.219.241.168/snapshots/tztv-2.2.1/product/latest/repos/profile/armv7l/packages/
+[repo.tztv_2.2.1_product_i586]
+url=http://168.219.241.168/snapshots/tztv-2.2.1/product/latest/repos/product/ia32/packages/
+[repo.tztv_2.2.1_profile_i586]
+url=http://168.219.241.168/snapshots/tztv-2.2.1/product/latest/repos/profile/ia32/packages/
+[repo.tizen_2.2.1]
+#url=http://168.219.241.168/tizen-rsa/tizen-2.2.1-vd-4.5/standard/tizen-2.2.1-vd-4.5_20140614.2
+url=http://168.219.241.168/tizen-rsa/tizen-2.2.1
+
+# Supplementary repo for additional rpms packages required in gbs build
+[repo.tizentv_supplement]
+url = http://10.251.52.177/tizenrepo/jpn-dcm/supplement_tv
diff --git a/tizen_src/build/gyp_chromiumefl.sh b/tizen_src/build/gyp_chromiumefl.sh
new file mode 100755 (executable)
index 0000000..be299d6
--- /dev/null
@@ -0,0 +1,115 @@
+#!/bin/bash
+
+SCRIPTDIR=$( cd $(dirname $0) ; pwd -P )
+TOPDIR=$( cd ${SCRIPTDIR}/.. ; pwd -P )
+
+source ${SCRIPTDIR}/common.sh
+
+host_arch=$(getHostArch)
+target=desktop
+
+#need to be exported because it is used by jhbuild
+export GYP_GENERATOR_OUTPUT=${TOPDIR}/"out.${host_arch}"
+
+if echo "$@" | grep -cq '\-\Dbuilding_for_tizen_mobile=1'; then
+  GYP_GENERATOR_OUTPUT=${TOPDIR}/"out.mobile.${host_arch}"
+  target=mobile
+fi
+if echo "$@" | grep -cq '\-\Dbuilding_for_tizen_tv=1'; then
+  GYP_GENERATOR_OUTPUT=${TOPDIR}/"out.tv.${host_arch}"
+  target=tv
+fi
+
+if [ "$target" == "desktop" ]; then
+  JHBUILD_DEPS="${GYP_GENERATOR_OUTPUT}/Dependencies/Root"
+
+  if [ "${host_arch}" == "x64" ]; then
+    _LIBDIR=lib64
+  elif [ "${host_arch}" == "ia32" ]; then
+    _LIBDIR=lib
+  fi
+
+  export PKG_CONFIG_PATH="${JHBUILD_DEPS}/${_LIBDIR}/pkgconfig"
+fi
+
+set -e
+
+if [ ! -e ${TOPDIR}/src/build/util/LASTCHANGE.blink ]; then
+  ${TOPDIR}/src/build/util/lastchange.py -s ${TOPDIR}/src/third_party/WebKit -o ${TOPDIR}/src/build/util/LASTCHANGE.blink
+fi
+
+COMMON_GYP_PARAMETERS="--depth=${TOPDIR}/src
+                      -I${TOPDIR}/impl/chromium-efl.gypi
+                      --generator-output ${GYP_GENERATOR_OUTPUT}
+                      --format=ninja
+                      --check
+                      -Goutput_dir=${GYP_GENERATOR_OUTPUT}
+                      -Dchrome_src_dir=${TOPDIR}/src
+                      -Defl_impl_dir=${TOPDIR}/impl
+                      -Duse_libjpeg_turbo=0
+                      -Dproprietary_codecs=1
+                      -Dclang=0
+                      -Duse_aura=1
+                      "
+
+#reverting back origin files
+${SCRIPTDIR}/restore_gyp.sh
+
+if [ "$target" == "desktop" ]; then
+  ADDITIONAL_GYP_PARAMETERS+="-Dbuilding_for_tizen=0
+                             "
+else
+  ADDITIONAL_GYP_PARAMETERS+="-Dbuilding_for_tizen=1
+                              -Duse_gstreamer=1
+                              -Dwerror=
+                              -Dsysroot=
+                              --no-parallel
+                              -Dpython_ver=$(getPythonVersion)
+                              -Dtarget_arch=$host_arch
+                              -Dhost_arch=$host_arch
+                             "
+
+  if [ "${GBS_ARCH}" == "arm" ]; then
+    ADDITIONAL_GYP_PARAMETERS+="-Darmv7=1
+                                -Darm_thumb=1
+                                -Darm_neon=1
+                               "
+  fi
+
+  SYSTEM_DEPS="-Duse_alsa=0
+               -Duse_system_expat=1
+               -Duse_system_flac=1
+               -Duse_system_icu=1
+               -Duse_system_libjpeg=1
+               -Duse_system_libpng=1
+               -Duse_system_libusb=1
+               -Duse_system_libxml=1
+               -Duse_system_libxslt=1
+               -Duse_system_minizip=1
+               -Duse_system_speex=1
+               -Duse_system_zlib=1
+              "
+  if [ "$target" == "mobile" ]; then
+      SYSTEM_DEPS+=" -Duse_system_bzip2=1
+                     -Duse_system_libexif=1
+                     -Duse_system_nspr=1
+                     -Duse_system_vpx=1"
+  fi
+
+  #and replacing original files with correct ones according to $SYSTEM_DEPS
+  $TOPDIR/src/build/linux/unbundle/replace_gyp_files.py $SYSTEM_DEPS
+
+fi
+
+
+if [ "$target" == "desktop" ]; then
+  jhbuild --no-interact -f ${SCRIPTDIR}/jhbuild/jhbuildrc
+fi
+
+set -x
+${TOPDIR}/build/gyp_chromiumefl \
+                                 $COMMON_GYP_PARAMETERS \
+                                 $SYSTEM_DEPS \
+                                 $ADDITIONAL_GYP_PARAMETERS \
+                                 $@ \
+                                 ${TOPDIR}/impl/chromium-efl.gyp
diff --git a/tizen_src/build/prebuild.sh b/tizen_src/build/prebuild.sh
deleted file mode 100755 (executable)
index 2ebcc15..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/bash
-
-# set build configuration for desktop|mobile|tv
-export SCRIPT_PATH=$(readlink -f ${BASH_SOURCE[0]})
-export SCRIPT_DIR=$(dirname $SCRIPT_PATH)
-export EFL_WEBVIEW_DIR="${SCRIPT_DIR}/../"
-export CHROME_SRC="${EFL_WEBVIEW_DIR}/src"
-
-# set desktop build configuration
-prepare_desktop_build () {
-  echo "set 'desktop' build configuration..."
-  echo "desktop" > "${EFL_WEBVIEW_DIR}/build/TARGET"
-
-  # restore gyp files
-  . ./build/restore_gyp.sh
-
-  # excute prebuild for desktop
-  . ./build/prebuild_desktop.sh
-
-  # usage ninja build for desktop
-  echo "### Usage ninja build for desktop"
-  echo "    $ ninja -C <outdir>"
-  echo "      where <outdir> : ${GYP_GENERATOR_OUTPUT}/Release (if Release mode) "
-  echo "                     : ${GYP_GENERATOR_OUTPUT}/Debug (if Debug mode)"
-}
-
-# set mobile build configuration
-prepare_mobile_build () {
-  echo "set 'mobile' build configuration..."
-  echo "mobile" > "${EFL_WEBVIEW_DIR}/build/TARGET"
-
-  # restore gyp files
-  . ./build/restore_gyp.sh
-
-  # excute prebuild for tizen mobile
-  . ./build/prebuild_mobile.sh
-
-  # usage gbs build for tizen mobile
-  echo "### Usage GBS build for mobile (using .gbs.conf for mobile)"
-  echo "    $ gbs build -A armv7l --incremental --include-all [--clean]"
-  echo "      [--define '_debug_mode 1']   excute debug build (default : release)"
-  echo "      [--define '_skip_gyp 1']     skip gyp generate  (default : gyp generate)"
-}
-
-# set tv build configuration
-prepare_tv_build () {
-  echo "set 'tv' build configuration..."
-  echo "tv" > "${EFL_WEBVIEW_DIR}/build/TARGET"
-
-  # restore gyp files
-  . ./build/restore_gyp.sh
-
-  # excute prebuild for tizen tv
-  . ./build/prebuild_tv.sh
-
-  # usage gbs build for tizen tv
-  echo "### Usage GBS build for tv (using .gbs.conf for tv)"
-  echo "    $ gbs build -A armv7l --incremental --include-all [--clean]"
-  echo "      [--define '_debug_mode 1']   excute debug build (default : release)"
-  echo "      [--define '_skip_gyp 1']     skip gyp generate  (default : gyp generate)"
-}
-
-# print out usage
-usage_prebuild () {
-  echo "### Unknown target name. (Only use desktop | mobile | tv)"
-  echo "    $ ./build/prebuild.sh [desktop | mobile | tv]"
-}
-
-# excute build configuration from get options
-while true
-do
-  case $1 in
-    desktop)
-      prepare_desktop_build
-      break
-      ;;
-    mobile)
-      prepare_mobile_build
-      break
-      ;;
-    tv)
-      prepare_tv_build
-      break
-      ;;
-    *)
-      if [ -z $1 ]; then
-        prepare_mobile_build
-      else
-        usage_prebuild
-      fi
-      break
-      ;;
-  esac
-done
diff --git a/tizen_src/build/prebuild_desktop.sh b/tizen_src/build/prebuild_desktop.sh
deleted file mode 100755 (executable)
index 16e8442..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-
-SCRIPTDIR=$( cd $(dirname ${BASH_SOURCE[0]}) ; pwd -P )
-TOPDIR=$( cd ${SCRIPTDIR}/.. ; pwd -P )
-
-source ${SCRIPTDIR}/common.sh
-
-host_arch=$(getHostArch)
-
-export GYP_GENERATOR_OUTPUT="out.${host_arch}"
-
-jhbuild --no-interact -f ${SCRIPTDIR}/jhbuild/jhbuildrc
-
-export JHBUILD_DEPS="${TOPDIR}/${GYP_GENERATOR_OUTPUT}/Dependencies/Root"
-
-if [ "${host_arch}" == "x64" ]; then
-  _LIBDIR=lib64
-elif [ "${host_arch}" == "ia32" ]; then
-  _LIBDIR=lib
-fi
-
-export PKG_CONFIG_PATH="${JHBUILD_DEPS}/${_LIBDIR}/pkgconfig"
-export LD_LIBRARY_PATH="${JHBUILD_DEPS}/${_LIBDIR}"
-export PATH="$PATH:${JHBUILD_DEPS}/bin"
-
-
-
-if [ ! -e ${TOPDIR}/src/build/util/LASTCHANGE.blink ]; then
-  ${TOPDIR}/src/build/util/lastchange.py -s ${TOPDIR}/src/third_party/WebKit -o ${TOPDIR}/src/build/util/LASTCHANGE.blink
-fi
-
-${TOPDIR}/build/gyp_chromiumefl --depth=${TOPDIR}/src -I${TOPDIR}/impl/chromium-efl.gypi \
-                                 --generator-output ${TOPDIR}/${GYP_GENERATOR_OUTPUT} \
-                                 --format=ninja \
-                                 --check \
-                                 -Goutput_dir=${TOPDIR}/${GYP_GENERATOR_OUTPUT} \
-                                 -Dchrome_src_dir=${TOPDIR}/src \
-                                 -Defl_impl_dir=${TOPDIR}/impl \
-                                 -DOS=linux \
-                                 -Duse_libjpeg_turbo=0 \
-                                 -Dproprietary_codecs=1 \
-                                 -Duse_xi2_mt=2 \
-                                 -Dtoolkit_uses_gtk=0 \
-                                 -Dtoolkit_efl=1 \
-                                 -Dbuilding_for_tizen=0 \
-                                 -Duse_aura=1 \
-                                 -Dlinux_use_bundled_binutils=0 \
-                                 -Dclang=0 \
-                                 -DSK_SUPPORT_LEGACY_BITMAP_CONFIG=1 \
-                                 ${TOPDIR}/impl/chromium-efl.gyp
diff --git a/tizen_src/build/prebuild_mobile.sh b/tizen_src/build/prebuild_mobile.sh
deleted file mode 100755 (executable)
index c044fd6..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-# source common functions and vars
-. `dirname ${BASH_SOURCE[0]}`/common.sh
-
-# copy patched files (for GCC 4.5)
-. ${EFL_WEBVIEW_DIR}/build/copy_patched_files.sh
-
-# Unbundle system dependencies to make sure they are not built.
-. `dirname ${BASH_SOURCE[0]}`/system_deps_mobile.sh
-$CHROME_SRC/build/linux/unbundle/replace_gyp_files.py $(echo $SYSTEM_DEPS | sed -e 's/use_system_/-Duse_system_/g')
diff --git a/tizen_src/build/prebuild_tv.sh b/tizen_src/build/prebuild_tv.sh
deleted file mode 100755 (executable)
index 331c151..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-# source common functions and vars
-. `dirname ${BASH_SOURCE[0]}`/common.sh
-
-# copy patched files (for GCC 4.5)
-. ${EFL_WEBVIEW_DIR}/build/copy_patched_files.sh
-
-# Unbundle system dependencies to make sure they are not built.
-. `dirname ${BASH_SOURCE[0]}`/system_deps_tv.sh
-$CHROME_SRC/build/linux/unbundle/replace_gyp_files.py $(echo $SYSTEM_DEPS | sed -e 's/use_system_/-Duse_system_/g')
index 21d9aa6..044c545 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-# changed gyp files ($CHROME_SRC/build/linux/unbundle/replace_gyp_files.py)
+# changed gyp files (src/build/linux/unbundle/replace_gyp_files.py)
 # REPLACEMENTS = {
 #   'use_system_expat': 'third_party/expat/expat.gyp',
 #   'use_system_ffmpeg': 'third_party/ffmpeg/ffmpeg.gyp',
@@ -26,7 +26,7 @@
 #   'use_system_zlib': 'third_party/zlib/zlib.gyp',
 # }
 
-SCRIPTDIR=$( cd $(dirname ${BASH_SOURCE[0]}) ; pwd -P )
+SCRIPTDIR=$( cd $(dirname $0) ; pwd -P )
 
 # get changed gyp files, above data
 CHANGE_GYP_PATH="third_party/expat/expat.gyp third_party/ffmpeg/ffmpeg.gyp third_party/flac/flac.gyp third_party/harfbuzz-ng/harfbuzz.gyp third_party/icu/icu.gyp third_party/jsoncpp/jsoncpp.gyp third_party/libevent/libevent.gyp third_party/libjpeg/libjpeg.gyp third_party/libpng/libpng.gyp third_party/libusb/libusb.gyp third_party/libvpx/libvpx.gyp third_party/libwebp/libwebp.gyp third_party/libxml/libxml.gyp third_party/libxslt/libxslt.gyp third_party/openssl/openssl.gyp third_party/opus/opus.gyp third_party/re2/re2.gyp third_party/snappy/snappy.gyp third_party/speex/speex.gyp third_party/sqlite/sqlite.gyp v8/tools/gyp/v8.gyp third_party/zlib/zlib.gyp"
@@ -34,8 +34,16 @@ CHANGE_GYP_PATH="third_party/expat/expat.gyp third_party/ffmpeg/ffmpeg.gyp third
 # move chromium root directory
 pushd ${SCRIPTDIR}/../src > /dev/null
 
-# git checkout each gyp files
-git checkout -- ${CHANGE_GYP_PATH}
+#restore old original files
+for file in $CHANGE_GYP_PATH; do
+  #if *.orig file does not exist we assume that
+  #*.gyp files is in its original state
+  # If something goes wrong then git clean -fdx on
+  # chrome/src will fix the issues
+  if [ -e ${file}.orig ]; then
+    mv ${file}.orig ${file}
+  fi
+done
 
 # move origin directory
 popd > /dev/null
diff --git a/tizen_src/build/system_deps_mobile.sh b/tizen_src/build/system_deps_mobile.sh
deleted file mode 100644 (file)
index bcaa3bd..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-
-# Dependencies we want to use from the system.
-# no system ffmpeg
-# no system jsoncpp
-# no system libevent
-
-# can't use use_system_sqlite=1 because of the bug:
-# https://code.google.com/p/chromium/issues/detail?id=22208
-
-# can't use use_system_protobuf=1 because 11
-# symbol lookup error: /usr/lib/libchromium-efl.so: undefined symbol: _ZNK6google8protobuf7Message11GetTypeNameEv
-SYSTEM_DEPS="use_alsa=0
-             use_system_libjpeg=1
-             use_system_flac=1
-             use_system_expat=1
-             use_system_libpng=1
-             use_system_libusb=1
-             use_system_libxml=1
-             use_system_libxslt=1
-             use_system_speex=1
-             use_system_zlib=1
-             use_system_minizip=1
-             use_system_icu=1
-             use_system_libexif=1
-             use_system_bzip2=1
-             use_system_nspr=1
-             use_system_vpx=1
-             "
diff --git a/tizen_src/build/system_deps_tv.sh b/tizen_src/build/system_deps_tv.sh
deleted file mode 100644 (file)
index 0484e6b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-
-#Dependencies we want to use from the system.
-SYSTEM_DEPS="use_alsa=0 use_system_libjpeg=1 use_system_flac=1 use_system_expat=1 use_system_harfbuzz=1 use_system_libpng=1 use_system_libusb=1 use_system_libxml=1 use_system_libxslt=1 use_system_speex=1 use_system_zlib=1 use_system_minizip=1"
index d1f2485..ccf388a 100644 (file)
           '<(RULE_INPUT_PATH)',
           '<(PRODUCT_DIR)/resources/<(RULE_INPUT_ROOT).edj',
         ],
-    }], #rules
+    }], # rules
     'conditions': [
       ['ewk_bringup==1', {
         'defines': [ 'EWK_BRINGUP=1' ],
       }],
     ],
+    'actions': [{
+      'action_name': 'generate_pkgconfigs',
+      'variables': {
+        'generator_path': 'pkgconfig/gen_pkgconfigs.py',
+      },
+      'inputs': [
+        '<(generator_path)',
+      ],
+      'outputs': [
+        '<(PRODUCT_DIR)/pkgconfig/chromium-efl.pc',
+        '<(PRODUCT_DIR)/pkgconfig/desktop/chromium-efl.pc',
+      ],
+      'action': [
+        'python', '<(generator_path)',
+        '--out-dir', '<(PRODUCT_DIR)',
+        '--defines', '${defines}',
+        '--chrome-src', '<(chrome_src_dir)',
+      ],
+    }], # actions
   },
   {
     'target_name': 'efl_webprocess',
diff --git a/tizen_src/impl/pkgconfig/gen_pkgconfigs.py b/tizen_src/impl/pkgconfig/gen_pkgconfigs.py
new file mode 100644 (file)
index 0000000..3a180fa
--- /dev/null
@@ -0,0 +1,110 @@
+#!/usr/bin/env python
+
+import sys, os, getopt
+import subprocess
+
+
+def get_command_output(args):
+    proc = subprocess.Popen(args, stdout=subprocess.PIPE)
+    (stdout, stderr) = proc.communicate()
+    return (stdout, proc.returncode)
+
+
+def get_chrome_version(chrome_src):
+    tool = os.path.join(chrome_src, 'build/util/version.py')
+    file = os.path.join(chrome_src, 'chrome/VERSION')
+
+    (stdout, retval) = get_command_output([tool, '-f', file, '-t', '@MAJOR@.@MINOR@.@BUILD@'])
+
+    if not retval:
+        return stdout.rstrip()
+    else:
+        print("Failed to determine chromium version: " + stdout)
+        return "0.0.0"
+
+
+def write_common(file, defines, chrome_src):
+    file.write("Name: chromium-efl\n")
+    file.write("Description: Chromium EFL port\n")
+    file.write("Version: " + get_chrome_version(chrome_src) + "\n\n")
+    file.write("Libs: -L${libdir} -Wl,-rpath-link=${libdir} -lchromium-efl\n")
+    file.write("Cflags: -I${includedir}/impl -I${includedir}/src -I${includedir}/src/skia/config "
+                   "-I/usr/include/v8 " + defines + "\n")
+
+
+def gen_gbs_pkgconfig_file(path, chrome_src, defines):
+    pc_dir = os.path.join(path, 'pkgconfig')
+    pc_path = os.path.join(pc_dir, 'chromium-efl.pc')
+
+    print(" * Generating GBS chromium-efl.pc")
+
+    if not os.path.exists(pc_dir):
+        os.makedirs(pc_dir)
+
+    out = open(pc_path, "w");
+
+    out.write("prefix=/usr\n")
+    out.write("exec_prefix=${prefix}\n")
+    out.write("libdir=${prefix}/lib\n")
+    out.write("includedir=../chromium\n\n")
+
+    write_common(out, defines, chrome_src)
+
+    out.close()
+
+
+def gen_desktop_pkgconfig_file(path, chrome_src, defines):
+    pc_dir = os.path.join(path, 'pkgconfig', 'desktop')
+    pc_path = os.path.join(pc_dir , "chromium-efl.pc")
+    top_dir = os.path.join(chrome_src, "..")
+
+    print(" * Generating desktop chromium-efl.pc")
+
+    if not os.path.exists(pc_dir):
+        os.makedirs(pc_dir)
+
+    out = open(pc_path, "w");
+
+    out.write("prefix=" + path + "\n")
+    out.write("exec_prefix=${prefix}\n")
+    out.write("libdir=${prefix}/lib\n")
+    out.write("includedir=" + top_dir + "\n\n")
+
+    write_common(out, defines, chrome_src)
+
+    out.close()
+
+
+def main():
+    try:
+        opts, args = getopt.getopt(sys.argv[1:], "o:d:c:", ["out-dir=", "defines=", "chrome-src="])
+    except getopt.GetoptError as err:
+        print (str(err))
+        usage()
+        sys.exit(2)
+
+    outdir = None
+    defines = None
+    chrome_src = None
+    for o, a in opts:
+        if o in ("-o", "--out-dir"):
+            outdir = a
+        elif o in ("-d", "--defines"):
+            defines = a
+        elif o in ("-c", "--chrome-src"):
+            chrome_src = a
+        else:
+            assert False, "unhandled option"
+
+    if not (outdir and defines and chrome_src):
+        print("Invalid arguments specified!")
+        sys.exit(2)
+
+    gen_gbs_pkgconfig_file(outdir, chrome_src, defines)
+    gen_desktop_pkgconfig_file(outdir, chrome_src, defines)
+
+    sys.exit(0)
+
+
+if __name__ == "__main__":
+    main()
index ce86355..87ec01e 100755 (executable)
@@ -3,11 +3,15 @@
 %global debug_package %{nil}
 %endif
 
+%if 0%{?_enable_unittests}
+%define _debug_mode 1
+%endif
+
 Name: org.tizen.chromium-efl
 Summary: Chromium EFL
 # Set by by scripts/update-chromium-version.sh
-%define ChromiumVersion 34.1847.76
-%define Week 28
+%define ChromiumVersion 38.2121.0
+%define Week 34
 Version: %{ChromiumVersion}.%{Week}
 Release: 1
 Group: Applications/Internet
@@ -40,6 +44,7 @@ BuildRequires: pkgconfig(sqlite3)
 BuildRequires: pkgconfig(capi-appfw-application)
 BuildRequires: pkgconfig(capi-system-sensor)
 BuildRequires: pkgconfig(capi-system-info)
+BuildRequires: pkgconfig(capi-system-device)
 BuildRequires: pkgconfig(capi-location-manager)
 BuildRequires: pkgconfig(location)
 BuildRequires: pkgconfig(gles20)
@@ -74,6 +79,8 @@ BuildRequires: pkgconfig(ewebkit2-ext)
 BuildRequires: bzip2-devel
 BuildRequires: pkgconfig(vpx)
 BuildRequires: pkgconfig(efl-assist)
+BuildRequires: pkgconfig(capi-network-connection)
+BuildRequires: pkgconfig(capi-telephony-network-info)
 %endif
 BuildRequires: pkgconfig(gstreamer-0.10)
 BuildRequires: pkgconfig(gstreamer-plugins-base-0.10)
@@ -96,12 +103,23 @@ Requires: %{name} = %{version}-%{release}
 %description devel
 Browser Engine dev library based on Chromium EFL (developement files)
 
+%if 0%{?_enable_unittests}
+%package unittests
+Summary: Chromium unittests
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+%description unittests
+Chromium unite tests
+%endif
+
 # Directory for internal chromium executable components
 %global CHROMIUM_EXE_DIR %{_libdir}/%{name}
 # Constant read only data used by chromium-efl port
 %global CHROMIUM_DATA_DIR %{_datadir}/%{name}
 # Web Databse read write data used by chromium-efl port
 %global CHROMIUM_WEBDB_DIR /opt/usr/apps/%{name}
+# Chromium unit tests install directory
+%global CHROMIUM_UNITTESTS_DIR /opt/usr/chromium-unittests/
 
 %prep
 %setup -q
@@ -111,106 +129,103 @@ Browser Engine dev library based on Chromium EFL (developement files)
 # workaround for new nss library : search it in /usr/lib first, rather than /lib (system nss)
 export LD_RUN_PATH=%{_libdir}
 #/usr/lib
-export BUILDING_WITH_GBS=1
 
-# Temporary workaround
+# architecture related configuration + neon temporary workaround
 %ifarch %{arm}
-export CFLAGS="$(echo $CFLAGS | sed 's/-mfpu=[a-zA-Z0-9-]*/-mfpu=neon/g')"
-export CXXFLAGS="$(echo $CXXFLAGS | sed 's/-mfpu=[a-zA-Z0-9-]*/-mfpu=neon/g')"
-export FFLAGS="$(echo $FFLAGS | sed 's/-mfpu=[a-zA-Z0-9-]*/-mfpu=neon/g')"
+  export CFLAGS="$(echo $CFLAGS | sed 's/-mfpu=[a-zA-Z0-9-]*/-mfpu=neon/g')"
+  export CXXFLAGS="$(echo $CXXFLAGS | sed 's/-mfpu=[a-zA-Z0-9-]*/-mfpu=neon/g')"
+  export FFLAGS="$(echo $FFLAGS | sed 's/-mfpu=[a-zA-Z0-9-]*/-mfpu=neon/g')"
+  %define EFL_TARGET arm
 %else
-export CFLAGS="$(echo $CFLAGS | sed 's/-Wl,--as-needed//g')"
-export CXXFLAGS="$(echo $CXXFLAGS | sed 's/-Wl,--as-needed//g')"
+  export CFLAGS="$(echo $CFLAGS | sed 's/-Wl,--as-needed//g')"
+  export CXXFLAGS="$(echo $CXXFLAGS | sed 's/-Wl,--as-needed//g')"
+  %if 0%{?simulator}
+    %define EFL_TARGET emulator
+  %else
+    %define EFL_TARGET i386
+  %endif
 %endif
 
 %if 0%{?nodebug}
-CFLAGS=$(echo $CFLAGS | sed 's/ -g / /')
-CXXFLAGS=$(echo $CXXFLAGS | sed 's/ -g / /')
+  CFLAGS=$(echo $CFLAGS | sed 's/ -g / /')
+  CXXFLAGS=$(echo $CXXFLAGS | sed 's/ -g / /')
 %endif
 
 %if %{!?TIZEN_PROFILE_TV:1}%{?TIZEN_PROFILE_TV:0}
-%define OUTPUT_BUILD_PROFILE_TARGET mobile
+  %define OUTPUT_BUILD_PROFILE_TARGET mobile
 %else
-%define OUTPUT_BUILD_PROFILE_TARGET tv
-%endif
-
-%ifarch %{arm}
-%define EFL_TARGET arm
-%else
-%if 0%{?simulator}
-%define EFL_TARGET emulator
-%else
-%define EFL_TARGET i386
-%endif
+  %define OUTPUT_BUILD_PROFILE_TARGET tv
 %endif
 
-#TODO: This hardcoding should go
-%define INSTALL_ROOT /home/abuild/rpmbuild/BUILDROOT/%{name}-%{version}-%{release}.arm
-
-. ./build/envsetup.sh
-
 %define OUTPUT_BASE_FOLDER out.%{OUTPUT_BUILD_PROFILE_TARGET}.%{EFL_TARGET}
 
 #set build mode
 %if 0%{?_debug_mode}
-%global OUTPUT_FOLDER %{OUTPUT_BASE_FOLDER}/Debug
-# Building the RPM in the GBS chroot fails with errors such as
-#   /usr/lib/gcc/i586-tizen-linux/4.7/../../../../i586-tizen-linux/bin/ld:
-#       failed to set dynamic section sizes: Memory exhausted
-# For now, work around it by passing a GNU ld-specific flag that optimizes the
-# linker for memory usage.
-export LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
+  %global OUTPUT_FOLDER %{OUTPUT_BASE_FOLDER}/Debug
+  # Building the RPM in the GBS chroot fails with errors such as
+  #   /usr/lib/gcc/i586-tizen-linux/4.7/../../../../i586-tizen-linux/bin/ld:
+  #       failed to set dynamic section sizes: Memory exhausted
+  # For now, work around it by passing a GNU ld-specific flag that optimizes the
+  # linker for memory usage.
+  export LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
 %else
-%global OUTPUT_FOLDER %{OUTPUT_BASE_FOLDER}/Release
+  %global OUTPUT_FOLDER %{OUTPUT_BASE_FOLDER}/Release
 %endif
-# to workaround mess in ./build/envsetup.sh
-export GYP_GENERATOR_OUTPUT=%{OUTPUT_BASE_FOLDER}
 
 if type ccache &> /dev/null; then
-export CCACHE_CPP2=yes
-export CCACHE_SLOPPINESS=time_macros
-export CCACHE_BASEDIR=$PWD/src
-export CCACHE_DIR=$PWD/%{OUTPUT_BASE_FOLDER}.ccache
-export CCACHE_COMPILERCHECK=content
-CCACHESIZE=$(ccache -s | grep max | grep -oE "[0-9]+" | head -1)
-  if [ $CCACHESIZE == "1" ]; then
-    ccache -M 10
-  fi
+  source build/ccache_env.sh %{OUTPUT_BUILD_PROFILE_TARGET}
 fi
 
 #gyp generate
 %if %{?_skip_gyp:0}%{!?_skip_gyp:1}
-gyp_chromiumefl \
+#run standard gyp_chromiumefl wrapper
+   ./build/gyp_chromiumefl.sh \
   -Dexe_dir="%{CHROMIUM_EXE_DIR}" \
   -Ddata_dir="%{CHROMIUM_DATA_DIR}" \
   -Dedje_dir="%{CHROMIUM_DATA_DIR}"/themes \
 %if 0%{?_remove_webcore_debug_symbols:1}
   -Dremove_webcore_debug_symbols=1 \
 %endif
-  -Dwebdb_dir="%{CHROMIUM_WEBDB_DIR}"/data/db
+  -Dwebdb_dir="%{CHROMIUM_WEBDB_DIR}"/data/db \
+  -Dbuilding_for_tizen_"%{OUTPUT_BUILD_PROFILE_TARGET}"=1
 %endif
 
-ninja %{_smp_mflags} -C"%{OUTPUT_FOLDER}"
+build/prebuild/ninja %{_smp_mflags} -C"%{OUTPUT_FOLDER}"
+
+%if 0%{?_enable_unittests}
+ninja %{_smp_mflags} -C"%{OUTPUT_FOLDER}" angle_unittests env_chromium_unittests cacheinvalidation_unittests \
+  url_unittests sandbox_linux_unittests crypto_unittests sql_unittests accessibility_unittests \
+  gfx_unittests printing_unittests events_unittests ppapi_unittests jingle_unittests \
+  flip_in_mem_edsm_server_unittests breakpad_unittests dbus_unittests libphonenumber_unittests \
+  base_unittests ffmpeg_unittests gin_unittests net_unittests snapshot_unittests \
+  google_apis_unittests
+# TODO: Fix compilation of the following tests content_unittests cc_unittests shell_dialogs_unittests
+# gpu_unittests compositor_unittests media_unittests
+%endif
 
 %install
-install -d "%{INSTALL_ROOT}"%{_sysconfdir}/smack/accesses2.d
-install -d "%{INSTALL_ROOT}"%{_libdir}/pkgconfig
-install -d "%{INSTALL_ROOT}"%{_includedir}/v8
-install -d "%{INSTALL_ROOT}%{CHROMIUM_EXE_DIR}"
-install -d "%{INSTALL_ROOT}%{CHROMIUM_DATA_DIR}"/themes
-
-# Generate pkg-confg file
-sed -e 's#?VERSION?#%{version}#' pkgconfig/chromium-efl.pc.in > "%{OUTPUT_FOLDER}"/chromium-efl.pc
-
-install -m 0755 "%{OUTPUT_FOLDER}"/lib/libchromium-efl.so    "%{INSTALL_ROOT}"%{_libdir}
-
-install -m 0755 "%{OUTPUT_FOLDER}"/libffmpegsumo.so  "%{INSTALL_ROOT}%{CHROMIUM_EXE_DIR}"
-install -m 0755 "%{OUTPUT_FOLDER}"/efl_webprocess    "%{INSTALL_ROOT}%{CHROMIUM_EXE_DIR}"
-install -m 0755 "%{OUTPUT_FOLDER}"/content_shell.pak "%{INSTALL_ROOT}%{CHROMIUM_EXE_DIR}"
-install -m 0644 "%{OUTPUT_FOLDER}"/resources/*.edj   "%{INSTALL_ROOT}%{CHROMIUM_DATA_DIR}"/themes
-
-install -m 0644 "%{OUTPUT_FOLDER}"/*.pc              "%{INSTALL_ROOT}"%{_libdir}/pkgconfig/
-install -m 0644 src/v8/include/*.h                   "%{INSTALL_ROOT}"%{_includedir}/v8/
+install -d "%{buildroot}"%{_sysconfdir}/smack/accesses2.d
+install -d "%{buildroot}"%{_libdir}/pkgconfig
+install -d "%{buildroot}"%{_includedir}/v8
+install -d "%{buildroot}%{CHROMIUM_EXE_DIR}"
+install -d "%{buildroot}%{CHROMIUM_DATA_DIR}"/themes
+
+install -m 0755 "%{OUTPUT_FOLDER}"/lib/libchromium-efl.so    "%{buildroot}"%{_libdir}
+
+install -m 0755 "%{OUTPUT_FOLDER}"/libffmpegsumo.so  "%{buildroot}%{CHROMIUM_EXE_DIR}"
+install -m 0755 "%{OUTPUT_FOLDER}"/efl_webprocess    "%{buildroot}%{CHROMIUM_EXE_DIR}"
+install -m 0755 "%{OUTPUT_FOLDER}"/content_shell.pak "%{buildroot}%{CHROMIUM_EXE_DIR}"
+install -m 0644 "%{OUTPUT_FOLDER}"/resources/*.edj   "%{buildroot}%{CHROMIUM_DATA_DIR}"/themes
+
+install -m 0644 "%{OUTPUT_FOLDER}"/pkgconfig/*.pc    "%{buildroot}"%{_libdir}/pkgconfig/
+install -m 0644 src/v8/include/*.h                   "%{buildroot}"%{_includedir}/v8/
+
+%if 0%{?_enable_unittests}
+install -d "%{INSTALL_ROOT}%{CHROMIUM_UNITTESTS_DIR}"
+for test in "%{OUTPUT_FOLDER}/*_unittests"; do
+  install -m 0755 ${test} "%{INSTALL_ROOT}%{CHROMIUM_UNITTESTS_DIR}"
+done
+%endif
 
 %post
 # apply smack rule
@@ -260,3 +275,9 @@ fi
 %defattr(-,root,root,-)
 %{_includedir}/v8/*
 %{_libdir}/pkgconfig/*.pc
+
+%if 0%{?_enable_unittests}
+%files unittests
+%defattr(-,root,root,-)
+%{CHROMIUM_UNITTESTS_DIR}/*
+%endif
index 57db1e5..dd2da15 100644 (file)
       <smack request="immvibed" type="rw" />
       <smack request="aul::launch" type="x" />
       <smack request="location_fw::client" type="rw" />
-      <smack request="chromium-efl::db" type="rwxat" />
       <smack request="device::video" type="rw" />
       <smack request="mm_qcamera_daemon" type="w" />
       <smack request="pulseaudio" type="rwxat" />
       <smack request="pulseaudio::record" type="r" />
       <smack request="sound_server" type="rw" />
+      <smack request="chromium-efl::db" type="rwxat" />
       <smack request="ui-gadget::client" type="rwx" />
     </request>
   </define>
diff --git a/tizen_src/pkgconfig/chromium-efl.pc.in b/tizen_src/pkgconfig/chromium-efl.pc.in
deleted file mode 100644 (file)
index eb33e87..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-prefix=/usr
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: chromium-efl
-Description: Chromium EFL port
-Version: ?VERSION?
-Libs: -L${libdir} -lchromium-efl
-Cflags: -I${includedir}/v8