summaryrefslogtreecommitdiff
path: root/tizen_src/packaging/chromium-efl.spec
blob: 6c843690cf5928cdbb24eb481d77d42a617017e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
Name: chromium-efl
Summary: Chromium EFL
# Set by by scripts/update-chromium-version.sh
%define ChromiumVersion 47.2526.69
%define Week 50
Version: %{ChromiumVersion}.%{Week}
Release: 1
# The 'Group' should be specified as one of the following valid group list.
# https://wiki.tizen.org/wiki/Packaging/Guidelines#Group_Tag
Group: Web Framework/Web Engine
# The 'License' should be specified as some of the following known license list.
# http://spdx.org/licenses/
License: LGPL-2.1 or BSD-2-Clause

Source0: %{name}-%{version}.tar.gz
Source1: content_shell.in

# (youngmin.yoo) for disable debug package
# error : linux-gnueabi/bin/ld: fatal error: xxxxxxx : mmap: failed to allocate xxxxxxxxx bytes for output file: Cannot allocate memory
%if %{!?TIZEN_PROFILE_TV:0}%{?TIZEN_PROFILE_TV:1} || "%{!?profile:0}%{?profile}" == "tv"
  %global __debug_install_post %{nil}
  %global debug_package %{nil}
%else # <= mobile
  %if 0%{?nodebug}
    %global __debug_install_post %{nil}
    %global debug_package %{nil}
  %endif
%endif

%if 0%{?_enable_unittests}
%define _debug_mode 1
%endif

# Conditions for OBS build
# The OBS build does not support running script 'build_{target}.sh'.
# TODO: There is a bug regarding mismatched versions from repository.
#       So, the versions need to be considered as originally intended versions,
#       until those versions are fixed by platform team.
#       1) The value '2.3' of '%{tizen}' should be '2.4'.
#       2) The value '2.0' of '%{tizen}' should be '2.3'.
%if "%{tizen}" == "3.0"
%define chromium_efl_tizen_version 3.0
%endif
%if "%{tizen}" == "2.3" || "%{tizen}" == "2.4"
%define chromium_efl_tizen_version 2.4
%endif
%if "%{tizen}" == "2.0"
%define chromium_efl_tizen_version 2.3
%endif

%if %{!?TIZEN_PROFILE_TV:0}%{?TIZEN_PROFILE_TV:1} || "%{!?profile:0}%{?profile}" == "tv"
%define chromium_efl_tizen_profile tv
%else
%define chromium_efl_tizen_profile mobile
%endif

# Excluded wearable profile build
# Chromium-efl doesn't support the wearable profile
%if "%{?tizen_profile_name}" == "wearable"
ExcludeArch: %{arm} %ix86 x86_64
%endif

Requires(post): /sbin/ldconfig
Requires(post): xkeyboard-config
Requires(postun): /sbin/ldconfig

BuildRequires: bison, edje-tools, expat-devel, flex, gettext, gperf, libcap-devel
BuildRequires: libjpeg-turbo-devel, perl, python, python-xml, which
BuildRequires: pkgconfig(capi-appfw-application)
BuildRequires: pkgconfig(capi-location-manager)
BuildRequires: pkgconfig(capi-media-audio-io)
BuildRequires: pkgconfig(capi-media-camera)
BuildRequires: pkgconfig(capi-media-player)
BuildRequires: pkgconfig(capi-media-tool)
BuildRequires: pkgconfig(capi-system-device)
BuildRequires: pkgconfig(capi-system-info)
BuildRequires: pkgconfig(capi-system-system-settings)
BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(dbus-glib-1)
BuildRequires: pkgconfig(ecore)
BuildRequires: pkgconfig(ecore-evas)
BuildRequires: pkgconfig(ecore-imf)
BuildRequires: pkgconfig(ecore-imf-evas)
BuildRequires: pkgconfig(ecore-input)
BuildRequires: pkgconfig(elementary)
BuildRequires: pkgconfig(evas)
BuildRequires: pkgconfig(feedback)
BuildRequires: pkgconfig(flac)
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(harfbuzz)
BuildRequires: pkgconfig(icu-i18n)
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(libexif)
BuildRequires: pkgconfig(libpci)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libtbm)
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(libusb-1.0)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(libxslt)
BuildRequires: pkgconfig(minizip)
BuildRequires: pkgconfig(mm-player)
BuildRequires: pkgconfig(nspr)
BuildRequires: pkgconfig(nss)
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(scim)
BuildRequires: pkgconfig(speex)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(tts)
BuildRequires: pkgconfig(ui-gadget-1)
BuildRequires: pkgconfig(vconf)
BuildRequires: pkgconfig(zlib)

# Applied python acceleration for generating gyp files.
%if "%{chromium_efl_tizen_version}" == "3.0"
%ifarch armv7l
BuildRequires: python-accel-armv7l-cross-arm
%endif
%ifarch aarch64
BuildRequires: python-accel-aarch64-cross-aarch64
%endif
%endif

%if "%{?_with_wayland}" == "1"
BuildRequires: pkgconfig(ecore-wayland)
BuildRequires: pkgconfig(wayland-egl)
%else
BuildRequires: pkgconfig(ecore-x)
BuildRequires: pkgconfig(libdri2)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xcomposite)
BuildRequires: pkgconfig(xcursor)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xi)
BuildRequires: pkgconfig(xrandr)
BuildRequires: pkgconfig(xt)
BuildRequires: pkgconfig(xfixes)
BuildRequires: pkgconfig(xtst)
%endif

# TODO(youngsoo): The binutils-gold crashes mini_browser on the Tizen v3.0 ARM 64 bit images.
#                 Once fixed, use binutils-gold for all targets on Tizen v3.0.
%ifnarch aarch64
%if "%{chromium_efl_tizen_version}" == "3.0"
BuildRequires: binutils-gold
%endif
%endif

# Version Conditions for Each Targets
%if "%{?chromium_efl_tizen_profile}%{!?chromium_efl_tizen_profile:0}" == "mobile"
BuildRequires: bzip2-devel
BuildRequires: pkgconfig(efl-extension)
BuildRequires: pkgconfig(capi-system-sensor)
%if "%{?_with_wayland}" != "1"
BuildRequires: pkgconfig(xdamage)
%endif
%if "%{?chromium_efl_tizen_version}%{!?chromium_efl_tizen_version:0}" == "2.4"
BuildRequires: pkgconfig(ttrace)
%endif
%else # for TV
BuildRequires: pkgconfig(audio-session-mgr)
BuildRequires: pkgconfig(mm-session)
%endif

%if "%{?chromium_efl_tizen_version}%{!?chromium_efl_tizen_version:0}" == "2.4"
BuildRequires: pkgconfig(glesv2)
%endif

# Version Conditions for Every Targets
%if "%{?chromium_efl_tizen_version}%{!?chromium_efl_tizen_version:0}" >= "3.0"
BuildRequires: pkgconfig(libtzplatform-config)
%endif
%if "%{?chromium_efl_tizen_version}%{!?chromium_efl_tizen_version:0}" >= "2.4"
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
BuildRequires: pkgconfig(gstreamer-app-1.0)
%else # <= Tizen v2.3
BuildRequires: pkgconfig(gstreamer-0.10)
BuildRequires: pkgconfig(gstreamer-plugins-base-0.10)
BuildRequires: pkgconfig(gstreamer-app-0.10)
%endif

%if 0%{?build_xwalk}
BuildRequires:  pkgconfig(appcore-common)
BuildRequires:  pkgconfig(ail)
BuildRequires:  pkgconfig(aul)
BuildRequires:  pkgconfig(haptic)
BuildRequires:  pkgconfig(nss)
BuildRequires:  pkgconfig(pkgmgr)
BuildRequires:  pkgconfig(pkgmgr-info)
BuildRequires:  pkgconfig(pkgmgr-installer)
BuildRequires:  pkgconfig(pkgmgr-parser)
BuildRequires:  pkgconfig(secure-storage)
BuildRequires:  pkgconfig(sensor)
BuildRequires:  pkgconfig(xmlsec1)
%endif

%description
Browser Engine based on Chromium EFL (Shared Library)

%package devel
Summary: Chromium EFL
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description devel
Browser Engine dev library based on Chromium EFL (development files)

%if 0%{?_enable_content_shell}
%package shell
Summary: Chromium EFL port of content_shell application
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description shell
Chromium EFL version of content_shell application
%endif

%if 0%{?build_xwalk}
%package -n crosswalk
Summary: Chromium-based app rintime
Group: Web Framework/Web Run Time
%description -n crosswalk
Crosswalk is an app runtime based on Chromium. It is an open source project
started by the Intel Open Source Technology Center (http://www.01.org).
%endif

%if 0%{?_enable_unittests}
%package unittests
Summary: Chromium unittests
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description unittests
Chromium unite tests
%endif

%if 0%{?build_ewk_unittests}
%package ewktest
Summary: Chromium EWK unittests
Group: Development/UnitTests
Requires: %{name} = %{version}-%{release}
%description ewktest
Chromium EFL unit test utilities
%endif

%if 0%{?build_chromedriver}
%package -n chromedriver
Summary: Selenium WebDriver for t-browser
Group: Development/Libraries
%description -n chromedriver
Selenium WebDriver for t-browser
%endif

# The macros '%TZ_' are valid from tizen v3.0
%if "%{chromium_efl_tizen_version}" >= "3.0"
%define _manifestdir %TZ_SYS_RW_PACKAGES
%define _desktop_icondir %TZ_SYS_RW_ICONS/default/small
%else
%define _manifestdir /usr/share/packages
%define _desktop_icondir /usr/share/icons/default/small
%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}
# Chromium unit tests install directory
%global CHROMIUM_UNITTESTS_DIR /opt/usr/chromium-unittests/
# Directory containing localization files
%global CHROMIUM_LOCALE_DIR %{_datadir}/%{name}/locale
%if "%{chromium_efl_tizen_version}" >= "3.0"
%global CHROMIUM_WEBDB_DIR %TZ_SYS_RW_APP/org.tizen.%{name}
%else
%global CHROMIUM_WEBDB_DIR /opt/usr/apps/%{name}
%endif

%prep
%setup -q

%build

tizen_src/build/apply_patches.sh
trap 'tizen_src/build/apply_patches.sh -r' EXIT

# architecture related configuration + neon temporary workaround
%if %{?_skip_ninja:0}%{!?_skip_ninja:1}
%ifarch %{arm} aarch64
  export ADDITION_OPTION=" -finline-limit=64 -foptimize-sibling-calls -fno-unwind-tables -fno-exceptions -Os "

  export CFLAGS="$CFLAGS $ADDITION_OPTION"
  export CXXFLAGS="$CXXFLAGS $ADDITION_OPTION"
  export FFLAGS="$FFLAGS $ADDITION_OPTION"

  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')"
%else
  export CFLAGS="$(echo $CFLAGS | sed 's/-Wl,--as-needed//g')"
  export CXXFLAGS="$(echo $CXXFLAGS | sed 's/-Wl,--as-needed//g')"
%endif


# (youngmin.yoo) for disable debug package
# error : linux-gnueabi/bin/ld: fatal error: xxxxxxx : mmap: failed to allocate xxxxxxxxx bytes for output file: Cannot allocate memory
%if "%{?chromium_efl_tizen_profile}%{!?chromium_efl_tizen_profile:0}" == "tv"
  CFLAGS=$(echo $CFLAGS | sed 's/-g[0-9]*/ /g')
  CXXFLAGS=$(echo $CXXFLAGS | sed 's/-g[0-9]*/ /g')
%else
  %if 0%{?nodebug}
    CFLAGS=$(echo $CFLAGS | sed 's/-g[0-9]*/ /g')
    CXXFLAGS=$(echo $CXXFLAGS | sed 's/-g[0-9]*/ /g')
  %endif
%endif

%if "%{!?chromium_efl_tizen_profile:0}%{?chromium_efl_tizen_profile}" == "mobile"
  %define OUTPUT_BUILD_PROFILE_TARGET mobile
%else
  %define OUTPUT_BUILD_PROFILE_TARGET tv
%endif

# The variable chromium-efl_tizen_version and _repository are essentially needed for build.
# Therefore, if the variable is not defined, it explicitly raises exception here.
%define OUTPUT_BASE_FOLDER out.tz_v%{chromium_efl_tizen_version}.%{OUTPUT_BUILD_PROFILE_TARGET}.%{_repository}
export GYP_GENERATOR_OUTPUT=$PWD/%{OUTPUT_BASE_FOLDER}

#set build mode
%if 0%{?_debug_mode}
  %global OUTPUT_FOLDER %{OUTPUT_BASE_FOLDER}/Debug
%else
  %global OUTPUT_FOLDER %{OUTPUT_BASE_FOLDER}/Release
%endif
%global XWALK_GEN %{OUTPUT_FOLDER}/xwalk_gen

if type ccache &> /dev/null; then
  source tizen_src/build/ccache_env.sh %{OUTPUT_BUILD_PROFILE_TARGET}
fi

%if 0%{?build_xwalk}
  mkdir -p "%{XWALK_GEN}"
  sed "s/@VERSION@/%{version}/g" xwalk/packaging/crosswalk.xml.in > "%{XWALK_GEN}"/crosswalk.xml
  cp -a xwalk/packaging/crosswalk-bin.manifest "%{XWALK_GEN}/crosswalk.manifest"
  cp -a xwalk/packaging/crosswalk.png "%{XWALK_GEN}"
  cp -a xwalk/LICENSE "%{XWALK_GEN}"/LICENSE.xwalk
  cp -a AUTHORS "%{XWALK_GEN}"/AUTHORS.chromium
  cp -a LICENSE "%{XWALK_GEN}"/LICENSE.chromium
%endif

#gyp generate
%if %{?_skip_gyp:0}%{!?_skip_gyp:1}
#run standard gyp_chromiumefl wrapper
   ./tizen_src/build/gyp_chromiumefl.sh \
  -Dexe_dir="%{CHROMIUM_EXE_DIR}" \
  -Ddata_dir="%{CHROMIUM_DATA_DIR}" \
  -Dedje_dir="%{CHROMIUM_DATA_DIR}"/themes \
  -Dlocale_dir="%{CHROMIUM_LOCALE_DIR}" \
%if 0%{?_remove_webcore_debug_symbols:1}
  -Dremove_webcore_debug_symbols=1 \
%endif
%if 0%{?chromium_efl_tizen_version:1}
  -Dchromium_efl_tizen_version=%{chromium_efl_tizen_version} \
%endif
%if "%{?_with_wayland}" == "1"
  -Duse_wayland=1 \
%endif
%if "%{?_repository}" == "emulator" || "%{?_repository}" == "emulator32-x11"
  -Dtizen_emulator_support=1  \
%endif
%if 0%{?build_xwalk}
  --xwalk \
%endif
%if 0%{?component_build}
  -Dcomponent=shared_library \
%endif
  -Dtizen_"%{OUTPUT_BUILD_PROFILE_TARGET}"=1 \
  -Dbuilding_for_tizen_"%{OUTPUT_BUILD_PROFILE_TARGET}"=1
%endif

%ifarch %{arm}
tizen_src/build/prebuild/ninja.arm %{_smp_mflags} -C"%{OUTPUT_FOLDER}" \
%else
%ifarch aarch64
tizen_src/build/prebuild/ninja-linux64 %{_smp_mflags} -C"%{OUTPUT_FOLDER}" \
%else
tizen_src/build/prebuild/ninja %{_smp_mflags} -C"%{OUTPUT_FOLDER}" \
%endif
%endif
%if 0%{?_enable_content_shell}
  content_shell \
%endif
%if 0%{?build_ewk_unittests}
  ewk_unittests \
%endif
%if 0%{?build_chromedriver}
  chromedriver \
%endif
%if 0%{?build_xwalk}
  xwalk xwalk_application_tools \
%endif
  efl_webprocess chromium-ewk efl_webview_app mini_browser ubrowser

%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 compos9itor_unittests media_unittests
%endif

%endif

#XXX icudtl.dat is not copied by gyp. Do that manually
cp third_party/icu/android/icudtl.dat "%{OUTPUT_FOLDER}"

# XXX Workaround for using rpmlint with emulator build on Tizen_TV 3.0
#
# When using this repo http://download.tizen.org/snapshots/tizen/tv/latest/repos/emulator32-x11/packages/
# rpmlint-tizen-1.0-6.1 is installed in GBS-ROOT. So, after rpms are built
# gbs build script runs rpmlint to test created packages. There is some BUG in
# this script and directory /home/abuild/rpmbuild/OTHER/ isn't created. This
# directory is required for rpmlint's log file and its lack causes build error.
%if "%{?chromium_efl_tizen_version}%{!?chromium_efl_tizen_version:0}" == "3.0"
if [ ! -d %{buildroot}/../../OTHER/ -a -f /opt/testing/bin/rpmlint ]; then
   mkdir -p %{buildroot}/../../OTHER/
fi
%endif

%install

# On Tizen 3.0, eu-strip (part of elfutils) does not play well with gold.
# [ XXs] extracting debug info from <path>/<package>/efl_webview_app
# [ XXs] eu-strip: while writing '<path>/<package>/efl_webview_app': cannot write data to file
#
# Problem is reported in various places, including:
# - https://bugzilla.redhat.com/show_bug.cgi?id=1174267
# - http://lists.gnu.org/archive/html/qemu-devel/2014-12/msg02702.html - QEMU
# - http://bit.ly/1E8W1Uo - Public Tizen/Crosswalk
#
# The solution applied to Tizen public requires to patch QEMU:
# - https://review.tizen.org/gerrit/#/c/32365/1/linux-user/syscall.c
# Until our Tizen 3.x QEMU is fixed, we use a home made x64 bit statically
# linked eu-strip, so that we can link with gold.
%if "%{?chromium_efl_tizen_version}%{!?chromium_efl_tizen_version:0}" == "3.0"
export PATH=$(pwd)/build/prebuild/tizen_3.0/:${PATH}
%endif

# Generate pkg-confg file
mkdir -p "%{OUTPUT_FOLDER}"/pkgconfig/
sed -e 's#?VERSION?#%{version}#' tizen_src/build/pkgconfig/chromium-efl.pc.in \
    > "%{OUTPUT_FOLDER}"/pkgconfig/chromium-efl.pc

%if "%{?chromium_efl_tizen_version}%{!?chromium_efl_tizen_version:0}" != "3.0"
install -d "%{buildroot}"%{_sysconfdir}/smack/accesses2.d
%endif
install -d "%{buildroot}"%{_bindir}
install -d "%{buildroot}"%{_libdir}/pkgconfig
install -d "%{buildroot}"%{_includedir}/chromium-ewk
install -d "%{buildroot}"%{_includedir}/v8
install -d "%{buildroot}%{CHROMIUM_EXE_DIR}"
install -d "%{buildroot}%{CHROMIUM_EXE_DIR}/locales"
install -d "%{buildroot}%{CHROMIUM_DATA_DIR}"/themes
%if 0%{?build_chromedriver}
install -d "%{buildroot}"/usr/apps/com.samsung.chromedriver/bin
%endif

cp -r "%{OUTPUT_FOLDER}/locale" "%{buildroot}/%{CHROMIUM_LOCALE_DIR}"

install -m 0755 "%{OUTPUT_FOLDER}"/locales/*.pak      "%{buildroot}%{CHROMIUM_EXE_DIR}"/locales

install -m 0755 "%{OUTPUT_FOLDER}"/lib/libchromium-ewk.so    "%{buildroot}"%{_libdir}

install -m 0755 "%{OUTPUT_FOLDER}"/efl_webprocess    "%{buildroot}%{CHROMIUM_EXE_DIR}"
install -m 0755 "%{OUTPUT_FOLDER}"/icudtl.dat    "%{buildroot}%{CHROMIUM_EXE_DIR}"
install -m 0755 "%{OUTPUT_FOLDER}"/natives_blob.bin  "%{buildroot}%{CHROMIUM_EXE_DIR}"
install -m 0755 "%{OUTPUT_FOLDER}"/snapshot_blob.bin "%{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

# for Tizen v3.0
%if "%{?chromium_efl_tizen_version}%{!?chromium_efl_tizen_version:0}" == "3.0"
mkdir -p "%{buildroot}"/usr/apps/org.tizen.%{name}/bin
install -m 0755 "%{OUTPUT_FOLDER}"/efl_webview_app   "%{buildroot}"/usr/apps/org.tizen.%{name}/bin/
install -m 0755 "%{OUTPUT_FOLDER}"/mini_browser      "%{buildroot}"/usr/apps/org.tizen.%{name}/bin/
install -m 0755 "%{OUTPUT_FOLDER}"/ubrowser          "%{buildroot}"/usr/apps/org.tizen.%{name}/bin/

install -d "%{buildroot}"/usr/share/packages
install -m 0644 tizen_src/ewk/efl_webview_app/chromium-efl_v3.0.xml "%{buildroot}"/usr/share/packages
install -m 0644 tizen_src/ewk/efl_webview_app/ubrowser_v3.0.xml "%{buildroot}"/usr/share/packages

mkdir -p "%{buildroot}"/usr/apps/org.tizen.%{name}/res/icons
install -d "%{buildroot}"/usr/share/icons
install -m 0644 tizen_src/ewk/efl_webview_app/mini-browser.png "%{buildroot}"/usr/apps/org.tizen.%{name}/res/icons
%else # for Tizen v2.X
install -m 0755 "%{OUTPUT_FOLDER}"/efl_webview_app   "%{buildroot}"%{_bindir}
install -m 0755 "%{OUTPUT_FOLDER}"/mini_browser      "%{buildroot}"%{_bindir}
install -m 0755 "%{OUTPUT_FOLDER}"/ubrowser          "%{buildroot}"%{_bindir}

install -d "%{buildroot}"/opt/share/packages
install -m 0644 tizen_src/ewk/efl_webview_app/chromium-efl.xml "%{buildroot}"/opt/share/packages
install -m 0644 tizen_src/ewk/efl_webview_app/ubrowser.xml     "%{buildroot}"/opt/share/packages

install -d "%{buildroot}"/opt/share/icons
install -m 0644 tizen_src/ewk/efl_webview_app/mini-browser.png "%{buildroot}"/opt/share/icons
%endif

install -m 0644 "%{OUTPUT_FOLDER}"/pkgconfig/*.pc    "%{buildroot}"%{_libdir}/pkgconfig/
install -m 0644 tizen_src/ewk/efl_integration/public/*.h                  "%{buildroot}"%{_includedir}/chromium-ewk/
install -m 0644 v8/include/*.h "%{buildroot}"%{_includedir}/v8/

%if 0%{?build_chromedriver}
install -m 0755 "%{OUTPUT_FOLDER}"/chromedriver "%{buildroot}"/usr/apps/com.samsung.chromedriver/bin
install -m 0755 tizen_src/scripts/start-chrome-driver.sh "%{buildroot}"/%{_bindir}
%endif

%if 0%{?_enable_content_shell}
install -m 0755 "%{OUTPUT_FOLDER}"/content_shell "%{buildroot}%{CHROMIUM_EXE_DIR}"/content_shell
sed 's#@binary@#%{CHROMIUM_EXE_DIR}/content_shell#' %{SOURCE1} > "%{buildroot}"%{_bindir}/content_shell
%endif

%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

%if 0%{?build_ewk_unittests}
mkdir -p %{buildroot}/opt/usr/resources/
mkdir -p %{buildroot}/opt/usr/utc_exec/
cp -r tizen_src/ewk/unittest/resources/* %{buildroot}/opt/usr/resources/
install -m 0644 "%{OUTPUT_FOLDER}"/ewk_unittests %{buildroot}/opt/usr/utc_exec/
install -m 0755 tizen_src/ewk/utc_gtest_run.sh %{buildroot}/opt/usr/utc_exec/
%endif

%if 0%{?build_xwalk}
install -m 0755 -p -D %{OUTPUT_FOLDER}/xwalk %{buildroot}%{_libdir}/xwalk/xwalk
install -m 0755 -p -D %{OUTPUT_FOLDER}/xwalk_backend %{buildroot}%{_libdir}/xwalk/xwalk_backend

# Supporting libraries and resources.
install -m 0644 -p -D %{OUTPUT_FOLDER}/lib/libxwalk_backend_lib.so %{buildroot}%{_libdir}/xwalk/libxwalk_backend_lib.so
install -m 0644 -p -D %{OUTPUT_FOLDER}/icudtl.dat %{buildroot}%{_libdir}/xwalk/icudtl.dat
install -m 0644 -p -D %{OUTPUT_FOLDER}/xwalk.pak %{buildroot}%{_libdir}/xwalk/xwalk.pak
install -d %{buildroot}%{_datadir}/xwalk
install -m 0644 -p -D xwalk/application/common/tizen/configuration/*.xsd %{buildroot}%{_datadir}/xwalk

# PNaCl
%if %{?_disable_nacl}%{!?_disable_nacl:1} == 0
install -m 0755 -p -D %{OUTPUT_FOLDER}/nacl_bootstrap_raw %{buildroot}%{_libdir}/xwalk/nacl_bootstrap_raw
install -m 0755 -p -D %{OUTPUT_FOLDER}/nacl_helper %{buildroot}%{_libdir}/xwalk/nacl_helper
install -m 0755 -p -D %{OUTPUT_FOLDER}/nacl_helper_bootstrap %{buildroot}%{_libdir}/xwalk/nacl_helper_bootstrap
install -m 0644 -p -D %{OUTPUT_FOLDER}/nacl_irt_*.nexe %{buildroot}%{_libdir}/xwalk
install -d %{buildroot}%{_libdir}/xwalk/pnacl
install -m 0644 -p -D %{OUTPUT_FOLDER}/pnacl/* %{buildroot}%{_libdir}/xwalk/pnacl
%endif

# Register xwalk to the package manager.
install -m 0644 -p -D %{XWALK_GEN}/crosswalk.xml %{buildroot}%{_manifestdir}/crosswalk.xml
install -m 0644 -p -D %{XWALK_GEN}/crosswalk.png %{buildroot}%{_desktop_icondir}/crosswalk.png
%endif

%post
# apply smack rule
smack_reload.sh

# CHROMIUM_WEBDB_DIR is a default path when application doesn't have own installation path.
# For example, mini-browser doesn't have own install path, in that case, mini-browser will
# use "/opt/usr/apps/chromium-efl/data" for HTML5 File System, Local Storage and so on.
# However, reference browser should have own installation path (e.g. /opt/usr/apps/com.samsung.browser/data),
# the reference browser should process similar work in order to support HTML5 Local Storage,
# File System and so on.

mkdir -p %{CHROMIUM_WEBDB_DIR}/data/
# The path is for multi-user by default on tizen v3.0.
%if "%{chromium_efl_tizen_version}" == "2.4"
chown -R app:app %{CHROMIUM_WEBDB_DIR}/data
%endif

mkdir -p %{_desktop_icondir}
mkdir -p %{_manifestdir}

%postun

%files
# for Tizen v3.0
%if "%{?chromium_efl_tizen_version}%{!?chromium_efl_tizen_version:0}" == "3.0"
%manifest packaging/chromium-efl_v3.0.manifest
/usr/apps/org.tizen.%{name}/bin/efl_webview_app
/usr/apps/org.tizen.%{name}/bin/mini_browser
/usr/apps/org.tizen.%{name}/bin/ubrowser
/usr/share/packages/chromium-efl_v3.0.xml
/usr/share/packages/ubrowser_v3.0.xml
/usr/apps/org.tizen.%{name}/res/icons/mini-browser.png
%else # for Tizen v2.X
%manifest packaging/%{name}.manifest
%{_bindir}/efl_webview_app
%{_bindir}/mini_browser
%{_bindir}/ubrowser
/opt/share/packages/chromium-efl.xml
/opt/share/packages/ubrowser.xml
/opt/share/icons/mini-browser.png
%endif
%defattr(-,root,root,-)
%{_libdir}/libchromium-ewk.so
%{CHROMIUM_EXE_DIR}/efl_webprocess
%{CHROMIUM_EXE_DIR}/icudtl.dat
%{CHROMIUM_EXE_DIR}/natives_blob.bin
%{CHROMIUM_EXE_DIR}/snapshot_blob.bin
%{CHROMIUM_EXE_DIR}/content_shell.pak
%{CHROMIUM_EXE_DIR}/locales/*.pak
%{CHROMIUM_DATA_DIR}/themes/*.edj
%{CHROMIUM_LOCALE_DIR}

%files devel
%defattr(-,root,root,-)
%{_includedir}/chromium-ewk/*.h
%{_libdir}/pkgconfig/*.pc
%{_includedir}/v8/*

%if 0%{?_enable_content_shell}
%files shell
%defattr(0755,root,root,-)
%{CHROMIUM_EXE_DIR}/content_shell
%{_bindir}/content_shell
%endif

%if 0%{?_enable_unittests}
%files unittests
%defattr(-,root,root,-)
%{CHROMIUM_UNITTESTS_DIR}/*
%endif

%if 0%{?build_ewk_unittests}
%files ewktest
%defattr(-,root,root,-)
%manifest ./packaging/chromium-ewktest.manifest
/opt/usr/utc_exec/*
/opt/usr/resources/*
%endif

%if 0%{?build_chromedriver}
%files -n chromedriver
/usr/bin/start-chrome-driver.sh
/usr/apps/com.samsung.chromedriver
%endif

%if 0%{?build_xwalk}
%files -n crosswalk
%manifest %{XWALK_GEN}/crosswalk.manifest
%license %{XWALK_GEN}/AUTHORS.chromium %{XWALK_GEN}/LICENSE.chromium %{XWALK_GEN}/LICENSE.xwalk
%{_libdir}/xwalk/icudtl.dat
%if %{?_disable_nacl}%{!?_disable_nacl:1} == 0
%{_libdir}/xwalk/nacl_bootstrap_raw
%{_libdir}/xwalk/nacl_helper
%{_libdir}/xwalk/nacl_helper_bootstrap
%{_libdir}/xwalk/nacl_irt_*.nexe
%{_libdir}/xwalk/pnacl/*
%endif
%{_libdir}/xwalk/xwalk
%{_libdir}/xwalk/xwalk.pak
%{_libdir}/xwalk/libxwalk_backend_lib.so
%{_libdir}/xwalk/xwalk_backend
%{_manifestdir}/crosswalk.xml
%{_desktop_icondir}/crosswalk.png
%{_datadir}/xwalk/*
%endif