Add changelog for new release
[profile/ivi/org.tizen.browser.git] / CMakeLists.txt
1 #
2 # Copyright 2012  Samsung Electronics Co., Ltd
3 #
4 # Licensed under the Flora License, Version 1.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #    http://www.tizenopensource.org/license
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
17 PROJECT(browser CXX)
18
19 SET(SRCS
20         src/browser-class.cpp
21         src/browser-window.cpp
22         src/browser-utility.cpp
23         src/browser-main.cpp
24         src/browser-common-view.cpp
25         src/browser-data-manager.cpp
26         src/browser-policy-client/browser-policy-decision-maker.cpp
27         src/browser-extension/browser-geolocation.cpp
28         src/browser-extension/browser-find-word.cpp
29         src/browser-extension/browser-scissorbox-view.cpp
30         src/browser-view/browser-view.cpp
31         src/browser-view/browser-context-menu.cpp
32         src/browser-multi-window/browser-multi-window-view.cpp
33         src/data-network/browser-network-manager.cpp
34         src/browser-bookmark/browser-bookmark-view.cpp
35         src/browser-bookmark/browser-add-to-bookmark-view.cpp
36         src/browser-bookmark/browser-new-folder-view.cpp
37         src/browser-bookmark/browser-select-folder-view.cpp
38         src/browser-history/browser-history-layout.cpp
39         src/database/browser-bookmark-db.cpp
40         src/database/browser-user-agent-db.cpp
41         src/database/browser-history-db.cpp
42         src/database/browser-geolocation-db.cpp
43         src/browser-settings/browser-settings-class.cpp
44         src/browser-settings/browser-settings-main-view.cpp
45         src/browser-settings/browser-settings-edit-homepage-view.cpp
46         src/browser-settings/browser-settings-clear-data-view.cpp
47         src/browser-settings/browser-settings-website-setting.cpp
48         src/scissorbox/scissorbox.cpp
49 )
50
51 IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
52         SET(CMAKE_BUILD_TYPE "Release")
53 ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
54 MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
55
56 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/include)
57 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src)
58 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/database)
59 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/data-network)
60 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-bookmark)
61 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-view)
62 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/most-visited-sites)
63 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-multi-window)
64 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-history)
65 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-settings)
66 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-policy-client)
67 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-extension)
68 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/scissorbox)
69
70 # set pkg-config modules
71 INCLUDE(FindPkgConfig)
72 pkg_check_modules(pkgs REQUIRED 
73                 eina ecore evas ecore-evas edbus elementary
74                 dlog db-util utilX ui-gadget-1 tapi
75                 secure-storage libsoup-2.4 libxml-2.0 libssl capi-location-manager capi-system-haptic devman
76                 accounts-svc ecore-input ecore-imf edje cairo ecore-x ewebkit2 appsvc capi-appfw-application
77                 capi-appfw-app-manager capi-web-url-download shortcut syspopup-caller capi-network-connection pkgmgr
78                 vconf-internal-keys
79                 capi-system-device
80                 capi-system-sensor
81 )
82
83 FIND_LIBRARY(LIB_GNUTLS gnutls)
84 FOREACH(flag ${pkgs_CFLAGS})
85         SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
86 ENDFOREACH(flag)
87
88 # set extra defines
89 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
90 SET(BINDIR "${PREFIX}/bin")
91 SET(RESDIR "${PREFIX}/res")
92 SET(DATADIR "${PREFIX}/data")
93 # res (read-only)
94 SET(EDJE_DIR "${RESDIR}/edje/")
95 SET(LOCALE_DIR "${RESDIR}/locale/")
96 SET(IMAGES_DIR "${RESDIR}/images/")
97 SET(HTML_DIR "${RESDIR}/html/")
98 SET(ICON_DIR "/opt/share/icons/default/small/")
99 # data
100 SET(XML_DIR "${DATADIR}/xml/")
101 SET(OPML_DIR "${DATADIR}/opml/")
102 SET(DATABASE_DIR "${DATADIR}/db/")
103 SET(SCREENSHOTS_DIR "${DATADIR}/screenshots/")
104 SET(CERTIFICATES_TMP_FILE "${DATADIR}/certificates.crt")
105 SET(WEBKIT_SOUP_CACHE_DIR "${DATADIR}/cache/")
106 # other defines
107 SET(CERTIFICATES_DIR "/opt/etc/ssl/certs/")
108 SET(DATABASENAME ".browser.db")
109 SET(HISTORY_DATABASENAME ".browser-history.db")
110 SET(CREDENTIAL_DATABASENAME ".browser-credential.db")
111 SET(MOST_VISITED_DATABASENAME ".browser-mostvisited.db")
112 SET(COOKIES_DATABASENAME ".browser-cookies.db")
113 SET(DESKTOP_DIR "/opt/share/applications")
114 ADD_DEFINITIONS(
115                 -DPROJECT_NAME=\"${PROJECT_NAME}\"
116                 -DDATABASENAME=\"${DATABASENAME}\"
117                 -DHISTORY_DATABASENAME=\"${HISTORY_DATABASENAME}\"
118                 -DCREDENTIAL_DATABASENAME=\"${CREDENTIAL_DATABASENAME}\"
119                 -DSPEEDDIAL_DATABASENAME=\"${SPEEDDIAL_DATABASENAME}\"
120                 -DCOOKIES_DATABASENAME=\"${COOKIES_DATABASENAME}\"
121                 -DEDJE_DIR=\"${EDJE_DIR}\"
122                 -DLOCALEDIR=\"${LOCALE_DIR}\"
123                 -DIMAGES_DIR=\"${IMAGES_DIR}\"
124                 -DSCREENSHOTS_DIR=\"${SCREENSHOTS_DIR}\"
125                 -DHTML_DIR=\"${HTML_DIR}\"
126                 -DXML_DIR=\"${XML_DIR}\"
127                 -DOPML_DIR=\"${OPML_DIR}\"
128                 -DCERTIFICATES_DIR=\"${CERTIFICATES_DIR}\"
129                 -DCERTIFICATES_TMP_FILE=\"${CERTIFICATES_TMP_FILE}\"
130                 -DDATABASE_DIR=\"${DATABASE_DIR}\"
131                 -DWEBKIT_SOUP_CACHE_DIR=\"${WEBKIT_SOUP_CACHE_DIR}\"
132                 -DLOG_TAG=\"org.tizen.browser\"
133                 -D__BUILD__
134 )
135
136 # Feature definitions
137 ADD_DEFINITIONS("-DBROWSER_SCROLLER_BOUNCING")
138 ADD_DEFINITIONS("-DSUPPORT_HLS")
139
140 # Feature definitions - Must be activated on the Tizen public
141 ADD_DEFINITIONS("-DTIZEN_PUBLIC")
142 ADD_DEFINITIONS("-DZOOM_BUTTON")
143 ADD_DEFINITIONS("-DHORIZONTAL_UI")
144 ADD_DEFINITIONS("-DGENLIST_SWEEP")
145 SET (USER_AGENT_VIEW ON)
146 IF (USER_AGENT_VIEW)
147         ADD_DEFINITIONS("-DUSER_AGENT_VIEW")
148         LIST(APPEND SRCS
149                 src/browser-settings/browser-settings-user-agent-view.cpp
150         )
151 ENDIF ()
152 SET (FEATURE_MOST_VISITED_LIST ON)
153 IF (FEATURE_MOST_VISITED_LIST)
154         ADD_DEFINITIONS("-DFEATURE_MOST_VISITED_SITES")
155         LIST(APPEND SRCS
156                 src/most-visited-sites/most-visited-sites.cpp
157                 src/most-visited-sites/add-to-most-visited-sites-view.cpp
158                 src/database/most-visited-sites-db.cpp
159         )
160 ENDIF ()
161 # set flags
162 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -fPIC")
163 SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g -fpie")
164 SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -fpie")
165
166 FIND_PROGRAM(UNAME NAMES uname)
167 EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
168 IF("${ARCH}" STREQUAL "arm")
169         ADD_DEFINITIONS("-D_TARGET")
170         MESSAGE("add -D_TARGET")
171     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpie")
172     #SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mabi=aapcs-linux -march=armv7-a -msoft-float")
173     SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mabi=aapcs-linux -mfpu=vfp -mfloat-abi=softfp")
174     SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
175 ENDIF("${ARCH}" STREQUAL "arm")
176
177 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed -Wl -pie,--hash-style=both")
178
179 # real make??
180 ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
181 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${LIB_GNUTLS})
182 #TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ewebkit2)
183
184 # browser-define.edj
185 ADD_CUSTOM_TARGET(browser-define.edj
186         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
187         ${CMAKE_SOURCE_DIR}/edc/browser-define.edc
188         ${CMAKE_BINARY_DIR}/edc/browser-define.edj
189         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-define.edc
190         )
191 ADD_DEPENDENCIES(${PROJECT_NAME} browser-define.edj)
192
193 # browser-view-progressbar.edj
194 ADD_CUSTOM_TARGET(browser-view-progressbar.edj
195         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
196         ${CMAKE_SOURCE_DIR}/edc/browser-view-progressbar.edc
197         ${CMAKE_BINARY_DIR}/edc/browser-view-progressbar.edj
198         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-view-progressbar.edc
199         )
200 ADD_DEPENDENCIES(${PROJECT_NAME} browser-view-progressbar.edj)
201
202 # browser-naviframe.edj
203 ADD_CUSTOM_TARGET(browser-naviframe.edj
204         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
205         ${CMAKE_SOURCE_DIR}/edc/browser-naviframe.edc
206         ${CMAKE_BINARY_DIR}/edc/browser-naviframe.edj
207         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-naviframe.edc
208         )
209 ADD_DEPENDENCIES(${PROJECT_NAME} browser-naviframe.edj)
210
211 # browser-reader.edj
212 ADD_CUSTOM_TARGET(browser-reader.edj
213         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
214         ${CMAKE_SOURCE_DIR}/edc/browser-reader.edc
215         ${CMAKE_BINARY_DIR}/edc/browser-reader.edj
216         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-reader.edc
217         )
218 ADD_DEPENDENCIES(${PROJECT_NAME} browser-reader.edj)
219
220 # browser-view-main.edj
221 ADD_CUSTOM_TARGET(browser-view-main.edj
222         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
223         ${CMAKE_SOURCE_DIR}/edc/browser-view-main.edc
224         ${CMAKE_BINARY_DIR}/edc/browser-view-main.edj
225         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-view-main.edc
226         )
227 ADD_DEPENDENCIES(${PROJECT_NAME} browser-view-main.edj)
228
229 # browser-view-url-layout.edj
230 ADD_CUSTOM_TARGET(browser-view-url-layout.edj
231         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
232         ${CMAKE_SOURCE_DIR}/edc/browser-view-url-layout.edc
233         ${CMAKE_BINARY_DIR}/edc/browser-view-url-layout.edj
234         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-view-url-layout.edc
235         )
236 ADD_DEPENDENCIES(${PROJECT_NAME} browser-view-url-layout.edj)
237
238 # browser-view-find-word-layout.edj
239 ADD_CUSTOM_TARGET(browser-view-find-word-layout.edj
240         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
241         ${CMAKE_SOURCE_DIR}/edc/browser-view-find-word-layout.edc
242         ${CMAKE_BINARY_DIR}/edc/browser-view-find-word-layout.edj
243         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-view-find-word-layout.edc
244         )
245 ADD_DEPENDENCIES(${PROJECT_NAME} browser-view-find-word-layout.edj)
246
247 # browser-view-control-bar.edj
248 ADD_CUSTOM_TARGET(browser-view-control-bar.edj
249         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
250         ${CMAKE_SOURCE_DIR}/edc/browser-view-control-bar.edc
251         ${CMAKE_BINARY_DIR}/edc/browser-view-control-bar.edj
252         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-view-control-bar.edc
253         )
254 ADD_DEPENDENCIES(${PROJECT_NAME} browser-view-control-bar.edj)
255
256 # browser-bookmark-view.edj
257 ADD_CUSTOM_TARGET(browser-bookmark-view.edj
258         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
259         ${CMAKE_SOURCE_DIR}/edc/browser-bookmark-view.edc
260         ${CMAKE_BINARY_DIR}/edc/browser-bookmark-view.edj
261         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-bookmark-view.edc
262         )
263 ADD_DEPENDENCIES(${PROJECT_NAME} browser-bookmark-view.edj)
264
265 # browser-most-visited.edj
266 ADD_CUSTOM_TARGET(browser-most-visited.edj
267         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
268         ${CMAKE_SOURCE_DIR}/edc/browser-most-visited.edc
269         ${CMAKE_BINARY_DIR}/edc/browser-most-visited.edj
270         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-most-visited.edc
271         )
272 ADD_DEPENDENCIES(${PROJECT_NAME} browser-most-visited.edj)
273
274 # browser-multi-window.edj
275 ADD_CUSTOM_TARGET(browser-multi-window.edj
276         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
277         ${CMAKE_SOURCE_DIR}/edc/browser-multi-window.edc
278         ${CMAKE_BINARY_DIR}/edc/browser-multi-window.edj
279         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-multi-window.edc
280         )
281 ADD_DEPENDENCIES(${PROJECT_NAME} browser-multi-window.edj)
282
283 # browser-predictive-history.edj
284 ADD_CUSTOM_TARGET(browser-predictive-history.edj
285         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
286         ${CMAKE_SOURCE_DIR}/edc/browser-predictive-history.edc
287         ${CMAKE_BINARY_DIR}/edc/browser-predictive-history.edj
288         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-predictive-history.edc
289         )
290 ADD_DEPENDENCIES(${PROJECT_NAME} browser-predictive-history.edj)
291
292 # most-visited-sites.edj
293 ADD_CUSTOM_TARGET(most-visited-sites.edj
294         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
295         ${CMAKE_SOURCE_DIR}/edc/most-visited-sites.edc
296         ${CMAKE_BINARY_DIR}/edc/most-visited-sites.edj
297         DEPENDS ${CMAKE_SOURCE_DIR}/edc/most-visited-sites.edc
298         )
299 ADD_DEPENDENCIES(${PROJECT_NAME} most-visited-sites.edj)
300
301 # browser-settings.edj
302 ADD_CUSTOM_TARGET(browser-settings.edj
303         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
304         ${CMAKE_SOURCE_DIR}/edc/browser-settings.edc
305         ${CMAKE_BINARY_DIR}/edc/browser-settings.edj
306         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-settings.edc
307         )
308 ADD_DEPENDENCIES(${PROJECT_NAME} browser-settings.edj)
309
310 # browser-popup.edj
311 ADD_CUSTOM_TARGET(browser-popup.edj
312         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
313         ${CMAKE_SOURCE_DIR}/edc/browser-popup.edc
314         ${CMAKE_BINARY_DIR}/edc/browser-popup.edj
315         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-popup.edc
316         )
317 ADD_DEPENDENCIES(${PROJECT_NAME} browser-popup.edj)
318
319 # install browser
320 INSTALL(PROGRAMS ${PROJECT_NAME} DESTINATION bin)
321 # install edj
322 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-define.edj DESTINATION ${EDJE_DIR})
323 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-naviframe.edj DESTINATION ${EDJE_DIR})
324 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-view-main.edj DESTINATION ${EDJE_DIR})
325 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-view-progressbar.edj DESTINATION ${EDJE_DIR})
326 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-view-url-layout.edj DESTINATION ${EDJE_DIR})
327 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-view-find-word-layout.edj DESTINATION ${EDJE_DIR})
328 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-view-control-bar.edj DESTINATION ${EDJE_DIR})
329 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-bookmark-view.edj DESTINATION ${EDJE_DIR})
330 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-most-visited.edj DESTINATION ${EDJE_DIR})
331 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-multi-window.edj DESTINATION ${EDJE_DIR})
332 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-predictive-history.edj DESTINATION ${EDJE_DIR})
333 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/most-visited-sites.edj DESTINATION ${EDJE_DIR})
334 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-settings.edj DESTINATION ${EDJE_DIR})
335 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-reader.edj DESTINATION ${EDJE_DIR})
336 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-popup.edj DESTINATION ${EDJE_DIR})
337
338 # install images
339 INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/images/install/ DESTINATION ${IMAGES_DIR}
340                 FILES_MATCHING
341                 PATTERN "*.png"
342 )
343 # install html files
344 INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/html/ DESTINATION ${HTML_DIR}
345                 FILES_MATCHING PATTERN "*.html"
346                 PATTERN "*.png"
347 )
348 # install empty directories
349 INSTALL(DIRECTORY DESTINATION ${DATABASE_DIR})
350 INSTALL(DIRECTORY DESTINATION ${XML_DIR})
351 INSTALL(DIRECTORY DESTINATION ${OPML_DIR})
352 INSTALL(DIRECTORY DESTINATION ${SCREENSHOTS_DIR})
353 INSTALL(DIRECTORY DESTINATION ${WEBKIT_SOUP_CACHE_DIR})
354
355 # install manifest file & icon
356 INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.${PROJECT_NAME}.xml DESTINATION /opt/share/packages)
357
358 # install desktop file & icon
359 INSTALL(FILES ${CMAKE_SOURCE_DIR}/resource/org.tizen.${PROJECT_NAME}.png DESTINATION ${ICON_DIR})
360 INSTALL(FILES ${CMAKE_SOURCE_DIR}/resource/default_0 DESTINATION ${SCREENSHOTS_DIR})
361 INSTALL(FILES ${CMAKE_SOURCE_DIR}/resource/default_1 DESTINATION ${SCREENSHOTS_DIR})
362 INSTALL(FILES ${CMAKE_SOURCE_DIR}/resource/default_2 DESTINATION ${SCREENSHOTS_DIR})
363 INSTALL(FILES ${CMAKE_SOURCE_DIR}/resource/default_3 DESTINATION ${SCREENSHOTS_DIR})
364 INSTALL(FILES ${CMAKE_SOURCE_DIR}/resource/default_application_icon.png DESTINATION "${DATADIR}/")
365 INSTALL(FILES ${CMAKE_SOURCE_DIR}/resource/config_sample.xml DESTINATION "${DATADIR}/")
366 # i18n
367 ADD_SUBDIRECTORY(po)