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