Force jhbuild rebuild if needed
[platform/framework/web/chromium-efl.git] / tizen_src / build / build_desktop.sh
1 #!/bin/bash
2
3 SCRIPTDIR=$( cd $(dirname $0) ; pwd -P )
4 TOPDIR=$( cd ${SCRIPTDIR}/.. ; pwd -P )
5
6 source ${SCRIPTDIR}/common.sh
7
8 host_arch=$(getHostArch)
9
10 export GYP_GENERATOR_OUTPUT=${TOPDIR}/"out.${host_arch}"
11
12 usage() {
13 cat << EOF
14 usage: $0 [OPTIONS]
15
16 Build desktop version of chromium-efl
17
18 OPTIONS:
19    -h, --help    Show this message
20    --skip-gyp    Skip restore_gyp, jhbuild and gyp_chromium steps
21    --ccache      configure ccache installed in your system
22    --skip-ninja  Skip ninja step
23    --build-ewk-unittests  build ewk unittests
24    --debug       build debug version of chromium-efl (in $GYP_GENERATOR_OUTPUT/Debug instead of default $GYP_GENERATOR_OUTPUT/Release)
25    -jN           set number of jobs, just like with make or ninja
26
27 examples:
28 $0 --skip-gyp
29 $0 --skip-gyp --ccache
30 $0 --skip-ninja
31 EOF
32   exit
33 }
34
35 SKIP_GYP=0
36 USE_CCACHE=0
37 SKIP_NINJA=0
38
39 BUILD_SUBDIRECTORY=Release
40
41 if echo "$@" | grep -cq '\(\(\-\-help\)\|\(\-h\)\)'; then
42   usage
43 fi
44
45 if echo "$@" | grep -cq '\-\-skip-gyp'; then
46   SKIP_GYP=1
47 fi
48
49 if echo "$@" | grep -cq '\-\-skip-ninja'; then
50   SKIP_NINJA=1
51 fi
52
53 if echo "$@" | grep -cq '\-\-ccache'; then
54   USE_CCACHE=1
55 fi
56
57 if echo "$@" | grep -cq '\-\-build_ewk_unittests'; then
58   BUILD_EWK_UNITTESTS=1
59 fi
60
61 JHBUILD_STAMPFILE="${GYP_GENERATOR_OUTPUT}/Dependencies/Root/jhbuild.stamp"
62
63 shouldForceJHBuild() {
64   if echo "$@" | grep -cq '\-\-force-jhbuild'; then
65     return 1
66   fi
67
68   # Check if anything in jhbuild is more recent than stamp file.
69   for i in $(find "$SCRIPTDIR/jhbuild"); do
70     if [ -f "$i" -a "$JHBUILD_STAMPFILE" -ot "$i" ]; then
71       return 1
72     fi
73   done
74
75   return 0
76 }
77
78 if [ "$(shouldForceJHBuild $@)" == "1" ]; then
79   rm -f $JHBUILD_STAMPFILE
80 fi
81
82 if echo "$@" | grep -cq '\-\-debug'; then
83   BUILD_SUBDIRECTORY=Debug
84 fi
85
86 # Will be empty string if -j not specified or ill-formatted, otherwise -j and the number argument together.
87 # \grep because folks often alias grep but we want the vanilla behavior.
88 JOBS=$(echo "$@" | \grep -Eo '\-j\s*[1-9]([0-9]*)')
89
90 set -e
91
92 JHBUILD_DEPS="${GYP_GENERATOR_OUTPUT}/Dependencies/Root"
93 if [ "${host_arch}" == "x64" ]; then
94   _LIBDIR=lib64
95 elif [ "${host_arch}" == "ia32" ]; then
96   _LIBDIR=lib
97 fi
98 export PKG_CONFIG_PATH="${JHBUILD_DEPS}/${_LIBDIR}/pkgconfig"
99
100 if [ ! -f "$JHBUILD_STAMPFILE" ]; then
101   jhbuild --no-interact -f ${SCRIPTDIR}/jhbuild/jhbuildrc
102
103   if [ "$?" == "0" ]; then
104     echo "Yay! jhbuild done!" > $JHBUILD_STAMPFILE
105   fi
106 fi
107
108 if [ "$SKIP_GYP" == "0" ]; then
109   ${TOPDIR}/build/gyp_chromiumefl.sh
110 fi
111
112 if [ "$SKIP_NINJA" == "0" ]; then
113   if [ "$USE_CCACHE" == "1" ]; then
114     echo using ccache
115     set +e
116     source $TOPDIR/build/ccache_env.sh desktop
117     set -e
118   fi
119   export LD_LIBRARY_PATH="${JHBUILD_DEPS}/${_LIBDIR}:$LD_LIBRARY_PATH"
120   export PATH="${JHBUILD_DEPS}/bin:$PATH"
121
122   TARGETS="chromium-efl efl_webprocess chromium-ewk efl_webview_app"
123   if [ "$BUILD_EWK_UNITTESTS" == "1" ]; then
124     TARGETS = "$TARGETS ewk_unittests"
125   fi
126
127   ninja -C ${GYP_GENERATOR_OUTPUT}/${BUILD_SUBDIRECTORY} ${JOBS} ${TARGETS}
128 fi