3 export SCRIPTDIR=$(readlink -e $(dirname $0))
4 export TOPDIR=$(readlink -f "${SCRIPTDIR}/../..")
5 export CHROME_SRC="${TOPDIR}"
6 export LATEST_TIZEN_VERSION=8.0
7 export DEFAULT_TIZEN_VERSION=$LATEST_TIZEN_VERSION
9 if [ "$(echo "$@" | grep -e "--tizen")" != "" ]; then
10 tizen_version=$(echo $@ | sed -e 's#.*--tizen_\([0-9.]*\).*#\1#')
11 DEFAULT_TIZEN_VERSION=$tizen_version
15 export PUBLIC_REPO_VERSION=
16 if [ "$DEFAULT_TIZEN_VERSION" != "${LATEST_TIZEN_VERSION}" ]; then
17 PUBLIC_REPO_VERSION=-$DEFAULT_TIZEN_VERSION
19 sed -e "s/@PUBLIC_REPO_VERSION@/$PUBLIC_REPO_VERSION/g" \
20 -e "s/@TIZEN_VERSION@/$DEFAULT_TIZEN_VERSION/g" \
21 tizen_src/build/gbs.conf.in > tizen_src/build/gbs.conf
23 function getSystemDeps() {
24 local host_arch=$(getHostArch)
26 local system_deps="--system-libraries
32 if [ "$platform" != "desktop" ]; then
34 if [ "$host_arch" == "x86" -o "$host_arch" == "x64" ]; then
38 # Non product tv profiles on tizen 6.0
39 if [ "$platform" != "tv" -a "$DEFAULT_TIZEN_VERSION" == "6.0" ]; then
47 function getHostOs() {
48 echo $(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')
51 function getHostArch() {
52 echo $(uname -m | sed -e \
53 's/i.86/x86/;s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/;s/i86pc/x86/;s/aarch64/arm64/;s/riscv.*/riscv64/')
56 function getGccVersion() {
57 echo $(gcc -dumpversion)
60 function getPythonVersion() {
61 echo $(python3 --version 2>&1 | sed -e 's/Python \([0-9]\+\.[0-9]\+\)\.[0-9]\+/\1/')
64 function setIfUndef() {
67 if [ -n "$original" ]; then
74 function hostBuldScriptUsage() {
78 Build non gbs version of chromium-efl
81 -h, --help Show this message
82 --build-ewk-unittests Build ewk unittests
83 --enable-pepper-extensions Enable Tizen Pepper Extensions
84 --ccache Configure ccache installed in your system
85 --clang Use chromium's clang compiler to build the sources
86 --debug Build debug version of chromium-efl (out.${host_arch}/Debug instead of out.${host_arch}/Release)
87 -jN Set number of jobs, just like with make or ninja
88 --skip-ninja Skip ninja step
97 function undoReplacedGn() {
98 local system_deps=$(getSystemDeps $1)
99 if [ "$system_deps" != "" ]; then
100 echo "** use system lib : undo **"
101 # Restore gn files to their original states not to mess up the tree permanently.
102 $TOPDIR/build/linux/unbundle/replace_gn_files.py --undo $system_deps icu
106 function parseHostBuildScriptParams() {
107 trap 'undoReplacedGn $1' SIGINT
110 export FORCE_JHBUILD=0
112 export BUILD_EWK_UNITTESTS=0
113 export BUILD_CHROME=0
114 export BUILD_SUBDIRECTORY=Release
115 export COMPONENT_BUILD=0
116 export ENABLE_PEPPER_EXTENSIONS=0
121 while [[ $# > 0 ]]; do
124 hostBuldScriptUsage ${0}
132 source $TOPDIR/tizen_src/build/ccache_env.sh ${platform}
138 export BUILD_CHROME=1
141 export FORCE_JHBUILD=1
146 --build-ewk-unittests)
147 export BUILD_EWK_UNITTESTS=1
150 export BUILD_SUBDIRECTORY="Debug"
153 export COMPONENT_BUILD=1
155 --enable-pepper-extensions)
156 export ENABLE_PEPPER_EXTENSIONS=1
162 echo "Unknown argument: $1"
170 function hostGnChromiumEfl() {
171 if [[ $SKIP_GN != 1 ]]; then
173 local COMPONENT_ARG=""
174 local PEPPER_EXTENSIONS_ARG=""
175 if [[ $COMPONENT_BUILD == 1 ]]; then
176 COMPONENT_ARG="component=shared_library"
178 if [[ $ENABLE_PEPPER_EXTENSIONS == 1 ]]; then
179 PEPPER_EXTENSIONS_ARG="tizen_pepper_extensions=true"
181 ${TOPDIR}/tizen_src/build/gn_chromiumefl.sh \
184 $PEPPER_EXTENSIONS_ARG \
189 function hostNinja() {
191 if [[ $SKIP_NINJA == 0 ]]; then
192 if [[ $BUILD_CHROME == 1 ]]; then
193 TARGETS="content_shell chrome"
195 TARGETS="chromium-ewk efl_webprocess efl_webview_app ubrowser"
197 if [[ $BUILD_EWK_UNITTESTS == 1 ]]; then
198 TARGETS="$TARGETS ewk_unittests"
200 if [[ $BUILD_CHROMEDRIVER == 1 ]]; then
201 TARGETS="$TARGETS chromedriver"
203 export BUILD_SUBDIRECTORY=""
204 BUILDDIR=${GN_GENERATOR_OUTPUT}/${BUILD_SUBDIRECTORY}
205 ninja -C $BUILDDIR ${JOBS} ${TARGETS}
210 if [[ $RESULT != 0 ]]; then
215 function error_report() {
216 echo "Error: File:$1 Line:$2"
220 function findElementInArray() {
222 for elm in "${@:2}"; do
223 [[ "$elm" = "$1" ]] && return 0;
228 function setupAndExecuteTargetBuild() {
237 local exclusive_options=0
242 local RELEASE_BUILD=0
243 local MAKE_SQUASHFS_RPM=0
246 # "|| :" means "or always succeeding built-in command"
247 PROFILE=$(echo "$@" | grep -Po "(?<=\-P\s)[^\s]*" | head -1 || :)
248 ARCHITECTURE=$(echo "$@" | grep -Po "(?<=\-A\s)[^\s]*" | head -1 || :)
249 GBS_ROOT=$(echo "$@" | grep -Po "(?<=\-B\s)[^\s]*" | head -1 || :)
251 while [[ $# > 0 ]]; do
254 ARGS+=(--define "_debug_mode 1")
258 ARGS+=(--define "_local_build 0")
259 ARGS+=(--define "_clang 0")
260 ARGS+=(--define "_no_lto 0")
261 ARGS+=(--define "gcov 1")
264 ARGS+=(--define "_skip_ninja 1")
267 ARGS+=(--define "_skip_gn 1")
270 ARGS[$count]=--define
271 count=$(( $count + 1 ))
272 ARGS[$count]="_ttrace 1"
275 ARGS+=(--define "component_build 1")
278 ARGS+=(--define "_disable_wrt_js 1")
284 ARGS+=(--define "_use_system_icu $(echo $1 | sed -e 's/--icu=//g')")
290 ARGS+=(--define "_nodebug 1")
308 ARGS+=(--define "_clang 0")
312 ARGS+=(--define "_clang 1")
315 PROFILE=tz_$(echo $1 | sed 's/--//g')
318 PROFILE=tz_$(echo $1 | sed 's/--//g')
324 ARGS+=(--define "_build_chrome 1")
333 ARGS+=(--define "_make_squashfs_rpm $MAKE_SQUASHFS_RPM")
335 if [ "$LOCAL_BUILD" == "1" ]; then
336 ARGS+=(--define "_local_build 1")
337 local _jobs=$((`/usr/bin/getconf _NPROCESSORS_ONLN` / 2 - `ps -ef | grep " ninja " | wc -l` -1))
338 local _smp_mflags=-j$(if ((${_jobs} > 10)); then echo ${_jobs}; else echo 10; fi)
339 ARGS+=(--define "_costomized_smp_mflags $_smp_mflags")
341 ARGS+=(--define "_clang 1")
344 if [ "$RELEASE_BUILD" == "1" ]; then
345 ARGS+=(--define "_local_build 0")
346 if [[ $platform == "tv" ]]; then
347 ARGS+=(--define "_clang 1")
349 ARGS+=(--define "_clang 0")
350 ARGS+=(--define "_no_lto 0")
354 if [ "$PROFILE" == "" ]; then
355 if [[ $platform == "tv" ]]; then
356 PROFILE=tztv_${DEFAULT_TIZEN_VERSION}_arm-pontusm
357 elif [[ $platform == "da" ]]; then
358 PROFILE=tzda_${DEFAULT_TIZEN_VERSION}_arm-kantm
359 elif [[ $platform == "riscv" ]]; then
360 PROFILE=tz_${DEFAULT_TIZEN_VERSION}_riscv
361 elif [[ $platform == "wearable" ]]; then
362 PROFILE=tzwr_5.5_arm-spin
363 elif [[ $platform == "Base-X" ]]; then
366 echo "Cannot set default PROFILE for platform=${platform}"
371 if [ "$MIRROR" == "1" ]; then
372 PROFILE=${PROFILE}_mirror
375 echo "Set the profile : $PROFILE"
377 if [ "$ARCHITECTURE" == "" ]; then
380 echo "Set the architecture : $ARCHITECTURE"
382 if [ "$(echo "${PROFILE}" | grep -P "tz_standard")" != "" -a "$NOINIT" == 0 ]; then
383 processRpmlintOption $PROFILE $RPMLINT
385 local BRANCH=$(echo $(basename $(git symbolic-ref HEAD)))
386 if [ "$(echo $BRANCH | grep dev)" != "" ]; then
388 elif [ "$(echo $BRANCH | grep beta)" != "" ]; then
393 local CHROMIUM_VERSION=$(echo $(head -n 1 chrome/VERSION) | sed -e 's/MAJOR=//g')
396 if [ "$USE_GLOBAL_GBS_CONF" == "" ]; then
397 CONF_FLAG="--conf ${SCRIPTDIR}/gbs.conf"
398 if [ "$GBS_ROOT" == "" ]; then
399 if [ "$BUILD_CHROME" == "1" ]; then
400 GBS_ROOT_OPT="-B ~/GBS-ROOT-M${CHROMIUM_VERSION}-${PROFILE^^}-TIZEN_${DEFAULT_TIZEN_VERSION^^}-CHROME-${BRANCH^^}"
402 GBS_ROOT_OPT="-B ~/GBS-ROOT-M${CHROMIUM_VERSION}-${PROFILE^^}-TIZEN_${DEFAULT_TIZEN_VERSION^^}-${BRANCH^^}"
405 GBS_ROOT_OPT="-B $GBS_ROOT"
409 processICU initialize_icu
410 gbs $CONF_FLAG build -P $PROFILE --include-all -A $ARCHITECTURE "${ARGS[@]}" $BUILD_CONF_OPTS --incremental $GBS_ROOT_OPT
413 undoReplacedGn $platform
414 processICU restore_icu
416 if [[ $RESULT != 0 ]]; then
421 function processICU() {
422 local ICU_PATH="$TOPDIR/third_party/icu/source"
423 local ICU_REPLACE_PATH="$TOPDIR/third_party/icu/source_replace"
425 if [ "$1" == "replace_icu" ]; then
426 if [ ! -e $ICU_REPLACE_PATH ] && [ -e $ICU_PATH ]; then
427 echo "** third_party/icu/source is replaced to use system icu."
428 mv $ICU_PATH $ICU_REPLACE_PATH
430 elif [ "$1" == "restore_icu" ]; then
431 if [ -e $ICU_REPLACE_PATH ] && [ ! -e $ICU_PATH ]; then
432 echo "** third_party/icu/source is restored."
433 mv $ICU_REPLACE_PATH $ICU_PATH
435 elif [ "$1" == "initialize_icu" ]; then
436 if [ -e $ICU_REPLACE_PATH ]; then
437 echo "** third_party/icu/source is initialized."
439 mv $ICU_REPLACE_PATH $ICU_PATH
444 function processRpmlintOption() {
448 export BUILD_CONF_OPTS=
450 echo "** Process rpmlint option"
452 local PREVIOUS_RPMLINT="!rpmlint"
453 if [ ! -f "$PREVIOUS_BUILD_CONF_PATH" ]; then
456 elif [ "$(grep -Po "\!rpmlint" "$PREVIOUS_BUILD_CONF_PATH" | uniq -d)" != "!rpmlint" ]; then
457 # Once built with rpmlint
458 PREVIOUS_RPMLINT="rpmlint"
462 if [ "$RPMLINT" == 0 ]; then
463 echo "** Disable rpmlint"
464 BUILD_CONF_DIR=$SCRIPTDIR/build_conf
465 rm -rf $BUILD_CONF_DIR
466 mkdir $BUILD_CONF_DIR
467 URL_TARGET=$(echo $PROFILE | sed -e 's#.*\.[0-9]*_\([-a-zA-Z0-9]*\).*#\1#;s/tz_//g')
468 # The latest version doesn't have tizen version in snapshot repository url.
469 if [ "$DEFAULT_TIZEN_VERSION" == "${LATEST_TIZEN_VERSION}" ]; then
472 URL_TIZEN_VERSION=-$DEFAULT_TIZEN_VERSION
474 REPO=http://download.tizen.org/snapshots/TIZEN/Tizen$URL_TIZEN_VERSION/Tizen$URL_TIZEN_VERSION-$platform/latest/repos/$URL_TARGET/packages/repodata/
475 echo "** Repo : $REPO"
476 wget $REPO -O $BUILD_CONF_DIR/index.html > /dev/null 2>&1
477 BUILD_CONF_GZ=$(grep "build.conf.gz" $BUILD_CONF_DIR/index.html | sed -e 's#.*\=\"\(.*\)\".*#\1#')
478 BUILD_CONF=$(basename $BUILD_CONF_GZ .gz)
479 wget $REPO$BUILD_CONF_GZ -P $BUILD_CONF_DIR > /dev/null 2>&1
480 if [ ! -f "$BUILD_CONF_DIR/$BUILD_CONF_GZ" ]; then
481 echo "It's failed to donwload build.conf. Please contact system administrator."
484 gunzip $BUILD_CONF_DIR/$BUILD_CONF_GZ
485 sed -i 's/rpmlint-mini\ rpmlint-tizen/!rpmlint-mini\ !rpmlint-tizen/g' $BUILD_CONF_DIR/$BUILD_CONF
486 if [ "$DEFAULT_TIZEN_VERSION" == "6.0" ]; then
487 sed -i 's/tizen_version_major 5/tizen_version_major 6/g' $BUILD_CONF_DIR/$BUILD_CONF
488 sed -i 's/tizen_version_minor 5/tizen_version_minor 0/g' $BUILD_CONF_DIR/$BUILD_CONF
490 BUILD_CONF_OPTS="-D $BUILD_CONF_DIR/$BUILD_CONF"
491 if [ "$PREVIOUS_RPMLINT" == "rpmlint" ]; then
492 echo "** Once built with rpmlint"
493 BUILD_CONF_OPTS+=" --clean"
495 else # Enable rpmlint
496 echo "** Enable rpmlint"
498 if [ "$PREVIOUS_RPMLINT" == "!rpmlint" ]; then
499 BUILD_CONF_OPTS="--clean"