tizen 2.3 release
[framework/web/mobile/wrt-plugins-tizen.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
2 PROJECT(wrt-plugins-tizen)
3
4 # -----------------------------------------------------------------------------
5 # Required platform modules
6 # -----------------------------------------------------------------------------
7 INCLUDE(FindPkgConfig)
8
9 PKG_CHECK_MODULES(webkit2 REQUIRED ewebkit2)
10 PKG_CHECK_MODULES(dpl REQUIRED dpl-efl)
11 PKG_CHECK_MODULES(dpl-event REQUIRED dpl-event-efl)
12 PKG_CHECK_MODULES(wrt-plugins-types REQUIRED wrt-plugins-types)
13 PKG_CHECK_MODULES(wrt-deviceapis-commons REQUIRED wrt-plugins-commons)
14 PKG_CHECK_MODULES(wrt-deviceapis-commons-javascript REQUIRED wrt-plugins-commons-javascript)
15 PKG_CHECK_MODULES(wrt-plugins-widgetdb REQUIRED wrt-plugins-widgetdb)
16
17 INCLUDE_DIRECTORIES(
18   ${webkit2_INCLUDE_DIRS}
19   ${dpl_INCLUDE_DIRS}
20   ${wrt-plugins-types_INCLUDE_DIRS}
21   ${wrt-deviceapis-commons_INCLUDE_DIRS}
22   ${wrt-deviceapis-commons-javascript_INCLUDE_DIRS}
23 )
24
25 # -----------------------------------------------------------------------------
26 # Determine the log option
27 # -----------------------------------------------------------------------------
28
29 OPTION(DPL_LOG "DPL logs status" OFF)
30
31 IF(DPL_LOG)
32     MESSAGE(STATUS "Logging enabled for DPL")
33     ADD_DEFINITIONS("-DDPL_LOGS_ENABLED")
34 ELSE(DPL_LOG)
35     MESSAGE(STATUS "Logging disabled for DPL")
36 ENDIF(DPL_LOG)
37
38 # -----------------------------------------------------------------------------
39 # Determine the time tracing option
40 # -----------------------------------------------------------------------------
41
42 OPTION(ENABLE_TIME_TRACER "TIME TRACING" OFF)
43
44 IF(ENABLE_TIME_TRACER)
45     MESSAGE(STATUS "Time tracer enabled")
46     ADD_DEFINITIONS("-DENABLE_TIME_TRACER")
47 ELSE(ENABLE_TIME_TRACER)
48     MESSAGE(STATUS "Time tracer disabled")
49 ENDIF(ENABLE_TIME_TRACER)
50
51 # -----------------------------------------------------------------------------
52 # Determine ACE Access Check option
53 # -----------------------------------------------------------------------------
54
55 OPTION(DISABLE_ACE_ACCESS_CHECK "ACE ACCESS CHECK" OFF)
56
57 IF(DISABLE_ACE_ACCESS_CHECK)
58     MESSAGE(STATUS "ACE Access checks - disabled")
59     ADD_DEFINITIONS("-DDISABLE_ACE_ACCESS_CHECK")
60 ELSE(DISABLE_ACE_ACCESS_CHECK)
61     MESSAGE(STATUS "ACE Access checks - enabled")
62 ENDIF(DISABLE_ACE_ACCESS_CHECK)
63
64 # -----------------------------------------------------------------------------
65 # Set build type (Release by default)
66 # -----------------------------------------------------------------------------
67 IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
68      SET(CMAKE_BUILD_TYPE Release)
69 ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
70
71 MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
72
73 IF(ENABLE_TIZEN_MOBILE_PROFILE)
74     MESSAGE(STATUS "For Tizen Mobile Profile")
75     ADD_DEFINITIONS( -DPROFILE_MOBILE )
76 ENDIF(ENABLE_TIZEN_MOBILE_PROFILE)
77
78 IF(ENABLE_TIZEN_WEARABLE_PROFILE)
79     MESSAGE(STATUS "For Tizen Wearable Profile")
80     ADD_DEFINITIONS( -DPROFILE_WEARABLE )
81 ENDIF(ENABLE_TIZEN_WEARABLE_PROFILE)
82
83 IF(ENABLE_TIZEN_TV_PROFILE)
84     MESSAGE(STATUS "For Tizen TV Profile")
85     ADD_DEFINITIONS( -DPROFILE_TV )
86 ENDIF(ENABLE_TIZEN_TV_PROFILE)
87
88 IF(ENABLE_OPTIONAL_CORE_API)
89     MESSAGE(STATUS "Tizen Core API Enabled")
90     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_CORE_API )
91 ENDIF(ENABLE_OPTIONAL_CORE_API)
92
93 IF(ENABLE_TIZEN_APP_CONTROL_SETTING_SUPPORT)
94     MESSAGE(STATUS "Tizen AppControl Setting Support Enabled")
95     ADD_DEFINITIONS( -DAPP_CONTROL_SETTING_SUPPORT )
96 ENDIF(ENABLE_TIZEN_APP_CONTROL_SETTING_SUPPORT)
97
98 # -----------------------------------------------------------------------------
99 # Determine the feature configuration for optional API
100 # -----------------------------------------------------------------------------
101
102 IF(ENABLE_OPTIONAL_ACCOUNT)
103     MESSAGE(STATUS " Account API Enabled")
104     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_ACCOUNT )
105 ENDIF(ENABLE_OPTIONAL_ACCOUNT)
106
107 IF(ENABLE_OPTIONAL_ARCHIVE)
108     MESSAGE(STATUS " Archive API Enabled")
109     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_ARCHIVE )
110 ENDIF(ENABLE_OPTIONAL_ARCHIVE)
111
112 IF(ENABLE_OPTIONAL_BADGE)
113     MESSAGE(STATUS " Badge API Enabled")
114     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_BADGE )
115 ENDIF(ENABLE_OPTIONAL_BADGE)
116
117 IF(ENABLE_OPTIONAL_MEDIAKEY)
118     MESSAGE(STATUS " MediaKey API Enabled")
119     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_MEIDAKEY )
120 ENDIF(ENABLE_OPTIONAL_MEDIAKEY)
121
122 IF(ENABLE_OPTIONAL_BT)
123     MESSAGE(STATUS "Bluetooth API Enabled")
124     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_BT )
125 ENDIF(ENABLE_OPTIONAL_BT)
126
127 IF(ENABLE_OPTIONAL_BT_HEALTH)
128     MESSAGE(STATUS " BT Health API Enabled")
129     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_BT_HEALTH )
130 ENDIF(ENABLE_OPTIONAL_BT_HEALTH)
131
132 IF(ENABLE_OPTIONAL_BT_ALWAYS_ON)
133     MESSAGE(STATUS "Bluetooth Always ON")
134     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_BT_ALWAYS_ON )
135 ENDIF(ENABLE_OPTIONAL_BT_ALWAYS_ON)
136
137 IF(ENABLE_OPTIONAL_LOCATION_BATCH)
138     MESSAGE(STATUS " location batch Enabled")
139     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_LOCATION_BATCH )
140 ENDIF(ENABLE_OPTIONAL_LOCATION_BATCH)
141
142 IF(ENABLE_OPTIONAL_BOOKMARK)
143     MESSAGE(STATUS " API Enabled")
144     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_BOOKMARK )
145 ENDIF(ENABLE_OPTIONAL_BOOKMARK)
146
147 IF(ENABLE_OPTIONAL_CALENDAR)
148     MESSAGE(STATUS " Calendar API Enabled")
149     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_CALENDAR )
150 ENDIF(ENABLE_OPTIONAL_CALENDAR)
151
152 IF(ENABLE_OPTIONAL_CALL_HISTORY)
153     MESSAGE(STATUS "Callhistory API Enabled")
154     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_CALL_HISTORY )
155 ENDIF(ENABLE_OPTIONAL_CALL_HISTORY)
156
157 IF(ENABLE_OPTIONAL_CONTACT)
158     MESSAGE(STATUS " Contact API Enabled")
159     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_CONTACT )
160 ENDIF(ENABLE_OPTIONAL_CONTACT)
161
162 IF(ENABLE_OPTIONAL_CONTENT)
163     MESSAGE(STATUS " Content API Enabled")
164     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_CONTENT )
165 ENDIF(ENABLE_OPTIONAL_CONTENT)
166
167 IF(ENABLE_OPTIONAL_DATA_CONTROL)
168     MESSAGE(STATUS " DataControl API Enabled")
169     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_DATACONTROL )
170 ENDIF(ENABLE_OPTIONAL_DATA_CONTROL)
171
172 IF(ENABLE_OPTIONAL_DATA_SYNC)
173     MESSAGE(STATUS " Datasync API Enabled")
174     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_DATASYNC )
175 ENDIF(ENABLE_OPTIONAL_DATA_SYNC)
176
177 IF(ENABLE_OPTIONAL_DOWNLOAD)
178     MESSAGE(STATUS " Download API Enabled")
179     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_DOWNLOAD )
180 ENDIF(ENABLE_OPTIONAL_DOWNLOAD)
181
182 IF(ENABLE_OPTIONAL_EXIF)
183     MESSAGE(STATUS " Exif API Enabled")
184     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_EXIF )
185 ENDIF(ENABLE_OPTIONAL_EXIF)
186
187 IF(ENABLE_OPTIONAL_FM_RADIO)
188     MESSAGE(STATUS " FM Radio API Enabled")
189     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_FM_RADIO )
190 ENDIF(ENABLE_OPTIONAL_FM_RADIO)
191
192 IF(ENABLE_OPTIONAL_HAM)
193     MESSAGE(STATUS " HumanActivityMonitor API Enabled")
194     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_HAM )
195 ENDIF(ENABLE_OPTIONAL_HAM)
196
197 IF(ENABLE_OPTIONAL_MESSAGING)
198     MESSAGE(STATUS " Messaging API Enabled")
199     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_MESSAGING )
200 ENDIF(ENABLE_OPTIONAL_MESSAGING)
201
202 IF(ENABLE_OPTIONAL_MESSAGING_EMAIL)
203     MESSAGE(STATUS " Messaging email API Enabled")
204     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_MESSAGING_EMAIL )
205 ENDIF(ENABLE_OPTIONAL_MESSAGING_EMAIL)
206
207 IF(ENABLE_OPTIONAL_NBS)
208     MESSAGE(STATUS "Network Bearer Selection API Enabled")
209     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_NBS )
210 ENDIF(ENABLE_OPTIONAL_NBS)
211
212 IF(ENABLE_OPTIONAL_NFC)
213     MESSAGE(STATUS "NFC API Enabled")
214     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_NFC )
215 ENDIF(ENABLE_OPTIONAL_NFC)
216
217 IF(ENABLE_OPTIONAL_NFC_EMULATION)
218     MESSAGE(STATUS " NFC Emulation API Enabled")
219     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_NFC_EMULATION )
220 ENDIF(ENABLE_OPTIONAL_NFC_EMULATION)
221
222 IF(ENABLE_OPTIONAL_NOTIFICATION)
223     MESSAGE(STATUS " Notification API Enabled")
224     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_NOTIFICATION )
225 ENDIF(ENABLE_OPTIONAL_NOTIFICATION)
226
227 IF(ENABLE_OPTIONAL_POWER)
228     MESSAGE(STATUS " Power API Enabled")
229     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_POWER )
230 ENDIF(ENABLE_OPTIONAL_POWER)
231
232 IF(ENABLE_OPTIONAL_PUSH)
233     MESSAGE(STATUS "Push API Enabled")
234     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_PUSH )
235 ENDIF(ENABLE_OPTIONAL_PUSH)
236
237 IF(ENABLE_OPTIONAL_SE)
238     MESSAGE(STATUS "Secure Element API Enabled")
239     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_SE )
240 ENDIF(ENABLE_OPTIONAL_SE)
241
242 IF(ENABLE_OPTIONAL_SENSOR)
243     MESSAGE(STATUS " Sensor API Enabled")
244     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_SENSOR )
245 ENDIF(ENABLE_OPTIONAL_SENSOR)
246
247 IF(ENABLE_OPTIONAL_SOUND)
248     MESSAGE(STATUS " Sound Enabled")
249     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_SOUND )
250 ENDIF(ENABLE_OPTIONAL_SOUND)
251
252 IF(ENABLE_OPTIONAL_SYSTEM_SETTING)
253     MESSAGE(STATUS " System setting API Enabled")
254     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_SYSTEM_SETTING )
255 ENDIF(ENABLE_OPTIONAL_SYSTEM_SETTING)
256
257 IF(ENABLE_OPTIONAL_SYSTEM_SETTING_HOME_SCREEN)
258     MESSAGE(STATUS " System setting API Enabled")
259     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_SYSTEM_SETTING_HOME_SCREEN )
260 ENDIF(ENABLE_OPTIONAL_SYSTEM_SETTING_HOME_SCREEN)
261
262 IF(ENABLE_OPTIONAL_SYSTEM_SETTING_LOCK_SCREEN)
263     MESSAGE(STATUS " System setting API Enabled")
264     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_SYSTEM_SETTING_LOCK_SCREEN )
265 ENDIF(ENABLE_OPTIONAL_SYSTEM_SETTING_LOCK_SCREEN)
266
267 IF(ENABLE_OPTIONAL_SYSTEM_SETTING_INCOMING_CALL)
268     MESSAGE(STATUS " System setting API Enabled")
269     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_SYSTEM_SETTING_INCOMING_CALL )
270 ENDIF(ENABLE_OPTIONAL_SYSTEM_SETTING_INCOMING_CALL)
271
272 IF(ENABLE_OPTIONAL_SYSTEM_SETTING_EMAIL_SCREEN)
273     MESSAGE(STATUS " System setting API Enabled")
274     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_SYSTEM_SETTING_EMAIL_SCREEN )
275 ENDIF(ENABLE_OPTIONAL_SYSTEM_SETTING_EMAIL_SCREEN)
276
277 IF(ENABLE_OPTIONAL_TELEPHONY)
278     MESSAGE(STATUS " Telephony related API Enabled")
279     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_TELEPHONY )
280 ENDIF(ENABLE_OPTIONAL_TELEPHONY)
281
282 IF(ENABLE_OPTIONAL_WEB_SETTING)
283     MESSAGE(STATUS " Web setting API Enabled")
284     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_WEB_SETTING )
285 ENDIF(ENABLE_OPTIONAL_WEB_SETTING)
286
287 IF(ENABLE_OPTIONAL_WI_FI)
288     MESSAGE(STATUS " Wi-Fi Enabled")
289     ADD_DEFINITIONS( -DFEATURE_OPTIONAL_WI_FI )
290 ENDIF(ENABLE_OPTIONAL_WI_FI)
291
292 IF(ENABLE_IMPL_BACKWARD_COMPATIBLE)
293     MESSAGE(STATUS " Implementation backward compatibility supported.")
294     ADD_DEFINITIONS( -DIMPL_BACKWARD_COMPATIBLE )
295 ENDIF(ENABLE_IMPL_BACKWARD_COMPATIBLE)
296
297 # -----------------------------------------------------------------------------
298 # CFlags
299 # -----------------------------------------------------------------------------
300 SET(OPTIMIZATION_FLAGS         "-falign-functions -falign-jumps -falign-loops -falign-labels -freorder-blocks -ftree-vect-loop-version ")
301 SET(GC_SECTIONS_FLAGS          "-fdata-sections -ffunction-sections -Wl,--gc-sections")
302 SET(CMAKE_C_FLAGS_PROFILING    "-O0 -g -pg")
303 SET(CMAKE_CXX_FLAGS_PROFILING  "-O0 -std=c++0x -g -pg")
304 SET(CMAKE_C_FLAGS_DEBUG        "-O0 -g")
305 SET(CMAKE_CXX_FLAGS_DEBUG      "-O0 -std=c++0x -g")
306 SET(CMAKE_C_FLAGS_RELEASE      "-Os -g ${OPTIMIZATION_FLAGS} ${GC_SECTIONS_FLAGS}")
307 SET(CMAKE_CXX_FLAGS_RELEASE    "-Os -std=c++0x -g ${OPTIMIZATION_FLAGS} ${GC_SECTIONS_FLAGS}")
308 ADD_DEFINITIONS("-DCLIENT_IPC_THREAD")
309 ADD_DEFINITIONS("-DEXPORT_API=")
310 ADD_DEFINITIONS("-Wall")
311 ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=64")
312 #ADD_DEFINITIONS("-Werror")
313 #ADD_DEFINITIONS("-Wextra")
314 ADD_DEFINITIONS("-DAPPLICATION_API_BACKWARD_COMPATIBILITY")
315
316 # -----------------------------------------------------------------------------
317 # License file
318 # -----------------------------------------------------------------------------
319 #SET(LICENSE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
320 #SET(LICENSE_FILE_DST_PATH /usr/share/license)
321 #SET(LICENSE_FILE_DST_NAME wrt-plugins-tizen)
322
323 #INSTALL(
324 #  FILES ${LICENSE_FILE}
325 #  DESTINATION ${LICENSE_FILE_DST_PATH}
326 #  RENAME ${LICENSE_FILE_DST_NAME}
327 #)
328
329 # -----------------------------------------------------------------------------
330 # Schema of plugin's configuration file
331 # -----------------------------------------------------------------------------
332 SET(COMMON_CONFIG_DTD ${CMAKE_CURRENT_SOURCE_DIR}/config.dtd)
333 SET(COMMON_CONFIG_DTD_DST /usr/etc/tizen-apis)
334 INSTALL(FILES ${COMMON_CONFIG_DTD} DESTINATION ${COMMON_CONFIG_DTD_DST})
335
336 # -----------------------------------------------------------------------------
337 # Global variables
338 # -----------------------------------------------------------------------------
339
340 SET(DESTINATION_LIB_PREFIX lib/wrt-plugins)
341
342 SET(DESTINATION_HEADER_PREFIX include/${PROJECT_NAME})
343
344 SET(TOP ${CMAKE_SOURCE_DIR}/src)
345
346 SET(INCLUDE_COMMON ${TOP}/Common ${TOP}/Common/TimeTracer)
347
348 SET(LIBS_COMMON
349     ${dpl_LDFLAGS}
350     ${dpl-event_LDFLAGS}
351     ${webkit2_LDFLAGS}
352     ${wrt-deviceapis-commons_LDFLAGS}
353     ${wrt-deviceapis-commons-javascript_LDFLAGS}
354 )
355
356 SET(CMAKE_INSTALL_RPATH ${wrt-deviceapis-commons_LIBRARY_DIRS})
357
358 SET(LIBS_WIDGETDB ${wrt-plugins-widgetdb_LIBRARIES})
359
360 # -----------------------------------------------------------------------------
361 # Macros for pkgconfig
362 # -----------------------------------------------------------------------------
363 SET(PKGCONFIG_DIR ${CMAKE_SOURCE_DIR}/pkgconfigs)
364
365 MACRO(configure_and_install_pkg PKG_FILE)
366     CONFIGURE_FILE(${PKGCONFIG_DIR}/${PKG_FILE}.in
367                ${PKGCONFIG_DIR}/${PKG_FILE} @ONLY)
368     INSTALL(FILES ${PKGCONFIG_DIR}/${PKG_FILE} DESTINATION lib/pkgconfig)
369 ENDMACRO(configure_and_install_pkg)
370
371 # -----------------------------------------------------------------------------
372 # Functions used for plugins
373 # -----------------------------------------------------------------------------
374
375 FUNCTION(set_target NAME)
376   STRING(TOLOWER ${NAME} LOWER_NAME)
377   SET(${LOWER_NAME}_dest tizen-${LOWER_NAME} PARENT_SCOPE)
378   SET(${LOWER_NAME}_target wrt-plugins-tizen-${LOWER_NAME} PARENT_SCOPE)
379   SET(${LOWER_NAME}_impl wrt-plugins-tizen-${LOWER_NAME}-impl PARENT_SCOPE)
380   SET(${LOWER_NAME}_config wrt-plugins-tizen-${LOWER_NAME}-config PARENT_SCOPE)
381   SET(${LOWER_NAME}_include ${TOP}/${NAME} PARENT_SCOPE)
382   configure_and_install_pkg(wrt-plugins-tizen-${LOWER_NAME}.pc)
383 ENDFUNCTION()
384
385 FUNCTION(add_subdir NAME)
386   MESSAGE(STATUS "Building: ${CMAKE_CURRENT_SOURCE_DIR}/${NAME}")
387   ADD_SUBDIRECTORY(${NAME})
388 ENDFUNCTION()
389
390 FUNCTION(add_plugin)
391   FOREACH(VALUE ${ARGN})
392     set_target(${VALUE})
393   ENDFOREACH(VALUE)
394   FOREACH(VALUE ${ARGN})
395     add_subdir(${VALUE})
396   ENDFOREACH(VALUE)
397 ENDFUNCTION()
398
399 ADD_SUBDIRECTORY(src)