apply FSL(Flora Software License)
[profile/ivi/org.tizen.browser.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2 PROJECT(browser CXX)
3
4 SET(SRCS
5         src/browser-class.cpp
6         src/browser-window.cpp
7         src/browser-main.cpp
8         src/browser-common-view.cpp
9         src/browser-data-manager.cpp
10         src/browser-utility.cpp
11         src/browser-extension/browser-find-word.cpp
12         src/browser-extension/browser-download-manager.cpp
13         src/browser-extension/browser-exscheme-handler.cpp
14         src/browser-extension/browser-picker-handler.cpp
15         src/browser-extension/browser-notification-manager.cpp
16         src/browser-security/browser-personal-data-manager.cpp
17         src/browser-security/browser-authentication-manager.cpp
18         src/browser-security/browser-certificate-manager.cpp
19         src/browser-view/browser-view.cpp
20         src/browser-view/browser-predictive-history.cpp
21         src/browser-view/browser-context-menu.cpp
22         src/browser-multi-window/browser-multi-window-view.cpp
23         src/data-network/browser-network-manager.cpp
24         src/browser-bookmark/browser-bookmark-view.cpp
25         src/browser-bookmark/browser-add-to-bookmark-view.cpp
26         src/browser-bookmark/browser-new-folder-view.cpp
27         src/browser-bookmark/browser-select-folder-view.cpp
28         src/browser-history/browser-history-layout.cpp
29         src/database/browser-bookmark-db.cpp
30         src/database/browser-user-agent-db.cpp
31         src/database/browser-history-db.cpp
32         src/database/browser-personal-data-db.cpp
33         src/database/browser-notification-db.cpp
34         src/browser-settings/browser-settings-class.cpp
35         src/browser-settings/browser-settings-main-view.cpp
36         src/browser-settings/browser-settings-edit-homepage-view.cpp
37         src/browser-settings/browser-settings-clear-data-view.cpp
38         src/browser-settings/browser-settings-plugin-view.cpp
39         src/browser-settings/browser-settings-user-agent-view.cpp
40         src/browser-settings/browser-settings-accelerated-composition.cpp
41 )
42
43 IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
44         SET(CMAKE_BUILD_TYPE "Release")
45 ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
46 MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
47
48 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/include)
49 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src)
50 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/database)
51 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/data-network)
52 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-bookmark)
53 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-view)
54 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-multi-window)
55 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-history)
56 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-settings)
57 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-extension)
58 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/browser-security)
59
60 # set pkg-config modules
61 INCLUDE(FindPkgConfig)
62 pkg_check_modules(pkgs REQUIRED
63                 eina ecore evas ecore-evas edbus elementary
64                 appcore-efl dlog db-util utilX ui-gadget tapi sensor
65                 secure-storage libsoup-2.4 libxml-2.0 libssl elm-webview notification
66                 ecore-input ecore-imf edje cairo ecore-x ewebkit appsvc devman
67                 capi-appfw-app-manager capi-appfw-application capi-web-url-download devman_haptic
68 )
69
70 FIND_LIBRARY(LIB_GNUTLS gnutls)
71 FOREACH(flag ${pkgs_CFLAGS})
72         SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
73 ENDFOREACH(flag)
74
75 # set extra defines
76 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
77 SET(BINDIR "${PREFIX}/bin")
78 SET(RESDIR "${PREFIX}/res")
79 SET(DATADIR "${PREFIX}/data")
80 # res (read-only)
81 SET(EDJE_DIR "${RESDIR}/edje/")
82 SET(LOCALE_DIR "${RESDIR}/locale/")
83 SET(IMAGES_DIR "${RESDIR}/images/")
84 SET(HTML_DIR "${RESDIR}/html/")
85 SET(ICON_DIR "${RESDIR}/icons/default/small/")
86 # data
87 SET(XML_DIR "${DATADIR}/xml/")
88 SET(OPML_DIR "${DATADIR}/opml/")
89 SET(DATABASE_DIR "${DATADIR}/db/")
90 SET(SCREENSHOTS_DIR "${DATADIR}/screenshots/")
91 SET(CERTIFICATES_TMP_FILE "${DATADIR}/certificates.crt")
92 SET(WEBKIT_SOUP_CACHE_DIR "${DATADIR}/cache/")
93 # other defines
94 SET(CERTIFICATES_DIR "/opt/etc/ssl/certs/")
95 SET(DATABASENAME ".browser.db")
96 SET(HISTORY_DATABASENAME ".browser-history.db")
97 SET(CREDENTIAL_DATABASENAME ".browser-credential.db")
98 SET(SPEEDDIAL_DATABASENAME ".browser-speeddial.db")
99 SET(COOKIES_DATABASENAME ".browser-cookies.db")
100 SET(DESKTOP_DIR "/opt/share/applications")
101 ADD_DEFINITIONS(
102                 -DPROJECT_NAME=\"${PROJECT_NAME}\"
103                 -DDATABASENAME=\"${DATABASENAME}\"
104                 -DHISTORY_DATABASENAME=\"${HISTORY_DATABASENAME}\"
105                 -DCREDENTIAL_DATABASENAME=\"${CREDENTIAL_DATABASENAME}\"
106                 -DSPEEDDIAL_DATABASENAME=\"${SPEEDDIAL_DATABASENAME}\"
107                 -DCOOKIES_DATABASENAME=\"${COOKIES_DATABASENAME}\"
108                 -DEDJE_DIR=\"${EDJE_DIR}\"
109                 -DLOCALEDIR=\"${LOCALE_DIR}\"
110                 -DIMAGES_DIR=\"${IMAGES_DIR}\"
111                 -DSCREENSHOTS_DIR=\"${SCREENSHOTS_DIR}\"
112                 -DHTML_DIR=\"${HTML_DIR}\"
113                 -DXML_DIR=\"${XML_DIR}\"
114                 -DOPML_DIR=\"${OPML_DIR}\"
115                 -DCERTIFICATES_DIR=\"${CERTIFICATES_DIR}\"
116                 -DCERTIFICATES_TMP_FILE=\"${CERTIFICATES_TMP_FILE}\"
117                 -DDATABASE_DIR=\"${DATABASE_DIR}\"
118                 -DWEBKIT_SOUP_CACHE_DIR=\"${WEBKIT_SOUP_CACHE_DIR}\"
119                 -DLOG_TAG=\"org.tizen.browser\"
120                 -D__BUILD__
121 )
122
123 # set flags
124 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS}")
125 SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g")
126 SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2")
127
128 FIND_PROGRAM(UNAME NAMES uname)
129 EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
130 IF("${ARCH}" STREQUAL "arm")
131         ADD_DEFINITIONS("-D_TARGET")
132         MESSAGE("add -D_TARGET")
133     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpie")
134     #SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mabi=aapcs-linux -march=armv7-a -msoft-float")
135     SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mabi=aapcs-linux -mfpu=vfp -mfloat-abi=softfp")
136     SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
137 ENDIF("${ARCH}" STREQUAL "arm")
138
139 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed -Wl,--hash-style=both")
140
141 # real make??
142 ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
143 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${LIB_GNUTLS})
144 #TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ewebkit)
145
146 # browser-define.edj
147 ADD_CUSTOM_TARGET(browser-define.edj
148         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
149         ${CMAKE_SOURCE_DIR}/edc/browser-define.edc
150         ${CMAKE_BINARY_DIR}/edc/browser-define.edj
151         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-define.edc
152         )
153 ADD_DEPENDENCIES(${PROJECT_NAME} browser-define.edj)
154
155 # browser-view-progressbar.edj
156 ADD_CUSTOM_TARGET(browser-view-progressbar.edj
157         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
158         ${CMAKE_SOURCE_DIR}/edc/browser-view-progressbar.edc
159         ${CMAKE_BINARY_DIR}/edc/browser-view-progressbar.edj
160         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-view-progressbar.edc
161         )
162 ADD_DEPENDENCIES(${PROJECT_NAME} browser-view-progressbar.edj)
163
164 # browser-naviframe.edj
165 ADD_CUSTOM_TARGET(browser-naviframe.edj
166         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
167         ${CMAKE_SOURCE_DIR}/edc/browser-naviframe.edc
168         ${CMAKE_BINARY_DIR}/edc/browser-naviframe.edj
169         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-naviframe.edc
170         )
171 ADD_DEPENDENCIES(${PROJECT_NAME} browser-naviframe.edj)
172
173 # browser-view-main.edj
174 ADD_CUSTOM_TARGET(browser-view-main.edj
175         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
176         ${CMAKE_SOURCE_DIR}/edc/browser-view-main.edc
177         ${CMAKE_BINARY_DIR}/edc/browser-view-main.edj
178         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-view-main.edc
179         )
180 ADD_DEPENDENCIES(${PROJECT_NAME} browser-view-main.edj)
181
182 # browser-view-url-layout.edj
183 ADD_CUSTOM_TARGET(browser-view-url-layout.edj
184         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
185         ${CMAKE_SOURCE_DIR}/edc/browser-view-url-layout.edc
186         ${CMAKE_BINARY_DIR}/edc/browser-view-url-layout.edj
187         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-view-url-layout.edc
188         )
189 ADD_DEPENDENCIES(${PROJECT_NAME} browser-view-url-layout.edj)
190
191 # browser-view-find-word-layout.edj
192 ADD_CUSTOM_TARGET(browser-view-find-word-layout.edj
193         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
194         ${CMAKE_SOURCE_DIR}/edc/browser-view-find-word-layout.edc
195         ${CMAKE_BINARY_DIR}/edc/browser-view-find-word-layout.edj
196         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-view-find-word-layout.edc
197         )
198 ADD_DEPENDENCIES(${PROJECT_NAME} browser-view-find-word-layout.edj)
199
200 # browser-view-control-bar.edj
201 ADD_CUSTOM_TARGET(browser-view-control-bar.edj
202         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
203         ${CMAKE_SOURCE_DIR}/edc/browser-view-control-bar.edc
204         ${CMAKE_BINARY_DIR}/edc/browser-view-control-bar.edj
205         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-view-control-bar.edc
206         )
207 ADD_DEPENDENCIES(${PROJECT_NAME} browser-view-control-bar.edj)
208
209 # browser-bookmark-view.edj
210 ADD_CUSTOM_TARGET(browser-bookmark-view.edj
211         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
212         ${CMAKE_SOURCE_DIR}/edc/browser-bookmark-view.edc
213         ${CMAKE_BINARY_DIR}/edc/browser-bookmark-view.edj
214         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-bookmark-view.edc
215         )
216 ADD_DEPENDENCIES(${PROJECT_NAME} browser-bookmark-view.edj)
217
218 # browser-multi-window.edj
219 ADD_CUSTOM_TARGET(browser-multi-window.edj
220         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
221         ${CMAKE_SOURCE_DIR}/edc/browser-multi-window.edc
222         ${CMAKE_BINARY_DIR}/edc/browser-multi-window.edj
223         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-multi-window.edc
224         )
225 ADD_DEPENDENCIES(${PROJECT_NAME} browser-multi-window.edj)
226
227 # browser-predictive-history.edj
228 ADD_CUSTOM_TARGET(browser-predictive-history.edj
229         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
230         ${CMAKE_SOURCE_DIR}/edc/browser-predictive-history.edc
231         ${CMAKE_BINARY_DIR}/edc/browser-predictive-history.edj
232         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-predictive-history.edc
233         )
234 ADD_DEPENDENCIES(${PROJECT_NAME} browser-predictive-history.edj)
235
236 # browser-settings.edj
237 ADD_CUSTOM_TARGET(browser-settings.edj
238         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
239         ${CMAKE_SOURCE_DIR}/edc/browser-settings.edc
240         ${CMAKE_BINARY_DIR}/edc/browser-settings.edj
241         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-settings.edc
242         )
243 ADD_DEPENDENCIES(${PROJECT_NAME} browser-settings.edj)
244
245 # browser-picker-layout.edj
246 ADD_CUSTOM_TARGET(browser-picker-layout.edj
247         COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
248         ${CMAKE_SOURCE_DIR}/edc/browser-picker-layout.edc
249         ${CMAKE_BINARY_DIR}/edc/browser-picker-layout.edj
250         DEPENDS ${CMAKE_SOURCE_DIR}/edc/browser-picker-layout.edc
251         )
252 ADD_DEPENDENCIES(${PROJECT_NAME} browser-picker-layout.edj)
253
254 # install browser
255 INSTALL(PROGRAMS ${PROJECT_NAME} DESTINATION bin)
256 # install edj
257 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-define.edj DESTINATION ${EDJE_DIR})
258 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-naviframe.edj DESTINATION ${EDJE_DIR})
259 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-view-main.edj DESTINATION ${EDJE_DIR})
260 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-view-progressbar.edj DESTINATION ${EDJE_DIR})
261 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-view-url-layout.edj DESTINATION ${EDJE_DIR})
262 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-view-find-word-layout.edj DESTINATION ${EDJE_DIR})
263 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-view-control-bar.edj DESTINATION ${EDJE_DIR})
264 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-bookmark-view.edj DESTINATION ${EDJE_DIR})
265 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-multi-window.edj DESTINATION ${EDJE_DIR})
266 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-predictive-history.edj DESTINATION ${EDJE_DIR})
267 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-settings.edj DESTINATION ${EDJE_DIR})
268 INSTALL(FILES ${CMAKE_BINARY_DIR}/edc/browser-picker-layout.edj DESTINATION ${EDJE_DIR})
269
270 # install images
271 INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/images/install/ DESTINATION ${IMAGES_DIR}
272                 FILES_MATCHING
273                 PATTERN "*.png"
274 )
275 # install html files
276 INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/html/ DESTINATION ${HTML_DIR}
277                 FILES_MATCHING PATTERN "*.html"
278                 PATTERN "*.png"
279 )
280 # install empty directories
281 INSTALL(DIRECTORY DESTINATION ${DATABASE_DIR})
282 INSTALL(DIRECTORY DESTINATION ${XML_DIR})
283 INSTALL(DIRECTORY DESTINATION ${OPML_DIR})
284 INSTALL(DIRECTORY DESTINATION ${SCREENSHOTS_DIR})
285 INSTALL(DIRECTORY DESTINATION ${WEBKIT_SOUP_CACHE_DIR})
286
287 # install desktop file & icon
288 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/resource/org.tizen.${PROJECT_NAME}.desktop.in org.tizen.${PROJECT_NAME}.desktop)
289 INSTALL(FILES ${CMAKE_BINARY_DIR}/org.tizen.${PROJECT_NAME}.desktop DESTINATION ${DESKTOP_DIR})
290 INSTALL(FILES ${CMAKE_SOURCE_DIR}/resource/org.tizen.${PROJECT_NAME}.png DESTINATION ${ICON_DIR})
291 INSTALL(FILES ${CMAKE_SOURCE_DIR}/resource/default_0 DESTINATION ${SCREENSHOTS_DIR})
292 INSTALL(FILES ${CMAKE_SOURCE_DIR}/resource/default_1 DESTINATION ${SCREENSHOTS_DIR})
293 INSTALL(FILES ${CMAKE_SOURCE_DIR}/resource/default_2 DESTINATION ${SCREENSHOTS_DIR})
294 INSTALL(FILES ${CMAKE_SOURCE_DIR}/resource/default_3 DESTINATION ${SCREENSHOTS_DIR})
295
296 # i18n
297 ADD_SUBDIRECTORY(po)