Merge "VCPKG - CMakeLists.txt updated to build for vcpkg." into devel/master
[platform/core/uifw/dali-adaptor.git] / build / tizen / deps-check.cmake
1 INCLUDE( common.cmake )
2
3 # Options
4 #           OPTION, VARIABLE, LIST_OF_VALUES, DESCRIPTION
5 ARG_ENABLE( ENABLE_EXPORTALL enable_exportall 1 "Enables the exporting of all the symbols in the library" )
6 ARG_ENABLE( ENABLE_DEBUG enable_debug ${ENABLE_VAL} "Turns on debugging" )
7 ARG_ENABLE( ENABLE_SHADERBINCACHE enable_shaderbincache ${ENABLE_VAL} "Enables shader binary cache" )
8 ARG_ENABLE( ENABLE_NETWORKLOGGING enable_networklogging ${ENABLE_VAL} "Enables network for debug tool" )
9
10 # Currently, dali-adaptor requires appfw on Tizen
11 # and does not require it on Ubuntu.
12 # So we should be able to enable/disable this option for dali-adaptor.
13 ARG_ENABLE( ENABLE_APPFW enable_appfw ${ENABLE_VAL} "Builds with Tizen App framework libraries, off by default" )
14
15 # Tizen Profile option
16 ARG_ENABLE( ENABLE_PROFILE enable_profile "${ENABLE_VAL};UBUNTU" "Select the variant of tizen" )
17
18 # Tizen Major version
19 ARG_ENABLE( ENABLE_TIZEN_MAJOR_VERSION enable_tizen_major_version "${ENABLE_VAL};0" "Specify the Tizen Major version for backwards compatibility" )
20
21 ARG_ENABLE( ENABLE_FEEDBACK enable_feedback 1 "Enable feedback plugin" )
22
23 ARG_ENABLE( ENABLE_WAYLAND enable_wayland "${ENABLE_VAL}" "Build on Wayland" )
24 ARG_ENABLE( ENABLE_ECORE_WAYLAND2 enable_ecore_wayland2 "${ENABLE_VAL}" "Build on Ecore Wayland2" )
25 ARG_ENABLE( ENABLE_RENAME_SO enable_rename_so "${ENABLE_VAL};1" "Specify whether so file is renamed or not" )
26 ARG_ENABLE( ENABLE_COVERAGE enable_coverage "${ENABLE_VAL}" "Enables coverage" )
27
28 # help option
29 ARG_ENABLE( PRINT_HELP print_help "${ENABLE_VAL}" "Prints help" )
30
31 IF( print_help )
32   MESSAGE( STATUS ${HELP_ENABLES} )
33   EXIT()
34 ENDIF()
35
36 IF( NOT enable_profile )
37   IF( ANDROID )
38     SET( enable_profile ANDROID )
39   ELSE()
40     SET( enable_profile UBUNTU )
41   ENDIF()
42 ENDIF()
43
44 # Test for profile and exit if something wrong
45 SET( VALID_PROFILES COMMON MOBILE WEARABLE TV IVI UBUNTU ANDROID WINDOWS )
46 LIST( FIND VALID_PROFILES ${enable_profile} RESULT )
47 IF( RESULT EQUAL -1 )
48   MESSAGE( FATAL_ERROR "Invalid profile!" )
49 ENDIF()
50
51 # Defines profile specific variable
52 SET( ${enable_profile}_PROFILE 1 )
53
54 # TODO check what version we really need for Android
55 IF( ANDROID_PROFILE )
56   SET( FREETYPE_REQUIRED 6.16.0 )
57   SET( FREETYPE_BITMAP_SUPPORT_VERSION 6.16.0 )
58 ELSE()
59   SET( FREETYPE_REQUIRED 9.16.3 )
60   SET( FREETYPE_BITMAP_SUPPORT_VERSION 17.1.11 )
61 ENDIF()
62
63 # checking all possibly used modules (required and optionals)
64 CHECK_MODULE_AND_SET( EXIF exif exif_available )
65 CHECK_MODULE_AND_SET( FREETYPE freetype2>=${FREETYPE_REQUIRED} freetype_available )
66 CHECK_MODULE_AND_SET( FREETYPE_BITMAP_SUPPORT freetype2>=${FREETYPE_BITMAP_SUPPORT_VERSION} freetype_bitmap_support)
67 CHECK_MODULE_AND_SET( FONTCONFIG fontconfig fontconfig_available )
68 CHECK_MODULE_AND_SET( PNG libpng [] )
69 CHECK_MODULE_AND_SET( LIBEXIF libexif [] )
70 CHECK_MODULE_AND_SET( LIBDRM libdrm [] )
71 CHECK_MODULE_AND_SET( LIBCURL libcurl [] )
72 CHECK_MODULE_AND_SET( HARFBUZZ harfbuzz [] )
73 CHECK_MODULE_AND_SET( FRIBIDI fribidi [] )
74 CHECK_MODULE_AND_SET( CAIRO cairo [] )
75 CHECK_MODULE_AND_SET( EVAS evas [] )
76 CHECK_MODULE_AND_SET( TTRACE ttrace ENABLE_TTRACE )
77 CHECK_MODULE_AND_SET( ECORE ecore [] )
78 CHECK_MODULE_AND_SET( ECORE_IPC ecore-ipc [] )
79 CHECK_MODULE_AND_SET( ECORE_IMF ecore-imf [] )
80 CHECK_MODULE_AND_SET( ELDBUS eldbus eldbus_available )
81 CHECK_MODULE_AND_SET( TPKP_CURL tpkp-curl tpkp_curl_available )
82 CHECK_MODULE_AND_SET( UTILX utilX utilx_available )
83 CHECK_MODULE_AND_SET( OPENGLES20 glesv2 [] )
84 CHECK_MODULE_AND_SET( EGL egl [] )
85 CHECK_MODULE_AND_SET( DLOG dlog [] )
86 CHECK_MODULE_AND_SET( TTS tts [] )
87 CHECK_MODULE_AND_SET( VCONF vconf [] )
88
89 CHECK_MODULE_AND_SET( CAPI_SYSTEM_INFO capi-system-info [] )
90 CHECK_MODULE_AND_SET( CAPI_SYSTEM_SENSOR capi-system-sensor capi_system_sensor_support )
91 CHECK_MODULE_AND_SET( CAPI_SYSTEM_SYSTEM_SETTINGS capi-system-system-settings [] )
92 CHECK_MODULE_AND_SET( CAPI_APPFW_APPLICATION capi-appfw-application [] )
93
94 CHECK_MODULE_AND_SET( ELEMENTARY elementary [] )
95 CHECK_MODULE_AND_SET( BUNDLE bundle [] )
96 CHECK_MODULE_AND_SET( SCREENCONNECTORPROVIDER screen_connector_provider [] )
97 CHECK_MODULE_AND_SET( APPFW_WATCH capi-appfw-watch-application watch_available )
98 CHECK_MODULE_AND_SET( APPCORE_WATCH appcore-watch [] )
99
100 CHECK_MODULE_AND_SET( CAPI_APPFW_APPLICATION appcore-ui [] )
101 CHECK_MODULE_AND_SET( CAPI_APPFW_WIDGET_BASE appcore-widget-base [] )
102 CHECK_MODULE_AND_SET( CAPI_APPFW_COMMON capi-appfw-app-common [] )
103 CHECK_MODULE_AND_SET( CAPI_APPFW_CONTROL capi-appfw-app-control [] )
104
105 CHECK_MODULE_AND_SET( DALICORE dali-core [] )
106
107 IF( ANDROID_PROFILE )
108   INCLUDE_DIRECTORIES( ${ANDROID_NDK} )
109   INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sources )
110   INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sources/android )
111   INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sources/android/native_app_glue )
112   INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sysroot/usr )
113   INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sysroot/usr/include/android )
114 ENDIF()
115
116 IF( enable_wayland )
117   IF( enable_ecore_wayland2 )
118     PKG_CHECK_MODULES(WAYLAND ecore-wl2 egl wayland-egl wayland-egl-tizen wayland-client>=1.2.0 xkbcommon libtbm )
119   ELSE()
120     PKG_CHECK_MODULES(WAYLAND ecore-wayland egl wayland-egl wayland-client>=1.2.0 xkbcommon libtbm)
121   ENDIF()
122   SET(WAYLAND 1)
123 ELSE()
124   CHECK_MODULE_AND_SET( ECORE_X ecore-x DALI_USE_ECORE_X11 [] )
125   CHECK_MODULE_AND_SET( X11 x11 DALI_USE_X11 [] )
126 ENDIF()
127
128 CHECK_MODULE_AND_SET( WAYLAND_EXTENSION xdg-shell-client text-client input-method-client [] )
129
130 # BUILD CONDITIONS
131 IF( watch_available AND WEARABLE_PROFILE )
132   ADD_DEFINITIONS( -DAPPCORE_WATCH_AVAILABLE )
133 ENDIF()
134
135 IF( eldbus_available )
136   SET(DALI_ELDBUS_AVAILABLE 1)
137   ADD_DEFINITIONS( -DDALI_ELDBUS_AVAILABLE )
138 ENDIF()
139
140 IF( tpkp_curl_available )
141   ADD_DEFINITIONS( -DTPK_CURL_ENABLED )
142 ENDIF()
143
144 ADD_DEFINITIONS( -DPLATFORM_TIZEN )
145
146 IF( enable_debug )
147   ADD_DEFINITIONS( -DDEBUG_ENABLED )
148   SET( ENABLE_EXPORTALL ON )
149 ENDIF()
150
151 IF( NOT ${ENABLE_EXPORTALL} )
152   ADD_DEFINITIONS( "-fvisibility=hidden -DHIDE_DALI_INTERNALS" )
153 ENDIF()
154
155 IF( enable_shaderbincache )
156   ADD_DEFINITIONS( -DSHADERBIN_CACHE_ENABLED )
157 ENDIF()
158
159 IF( enable_networklogging )
160   ADD_DEFINITIONS( -DNETWORK_LOGGING_ENABLED )
161 ENDIF()
162
163 IF( watch_available AND WEARABLE_PROFILE )
164   ADD_DEFINITIONS( -DAPPCORE_WATCH_AVAILABLE )
165 ENDIF()
166
167 IF( capi_system_sensor_support AND (NOT UBUNTU_PROFILE) )
168   ADD_DEFINITIONS( -DCAPI_SYSTEM_SENSOR_SUPPORT )
169 ENDIF()
170
171 IF( enable_appfw AND (enable_tizen_major_version EQUAL 3) )
172   ADD_DEFINITIONS( -DWIDGET_AVAILABLE )
173 ENDIF()
174
175 IF( enable_wayland AND (NOT COMMON_PROFILE) )
176   PKG_CHECK_MODULES( WAYLAND_EXTENSION [xdg-shell-client text-client input-method-client] )
177 ENDIF()
178
179 IF( freetype_bitmap_support )
180   ADD_DEFINITIONS( -DFREETYPE_BITMAP_SUPPORT )
181 ENDIF()
182
183 IF( ENABLE_COVERAGE OR "$ENV{CXXFLAGS}" MATCHES --coverage )
184   ADD_COMPILE_OPTIONS( --coverage )
185   SET(ENABLE_COVERAGE ON)
186   SET(COVERAGE --coverage)
187 ENDIF()
188
189 IF( DEFINED ENV{DALI_DATA_RW_DIR} )
190   SET( dataReadWriteDir $ENV{DALI_DATA_RW_DIR} )
191 ELSE()
192   SET( dataReadWriteDir ${CMAKE_INSTALL_PREFIX}/share/dali/ )
193 ENDIF()
194
195 IF( DEFINED ENV{DALI_DATA_RO_DIR} )
196   SET( dataReadOnlyDir $ENV{DALI_DATA_RO_DIR} )
197 ELSE()
198   SET( dataReadOnlyDir ${CMAKE_INSTALL_PREFIX}/share/dali/ )
199 ENDIF()
200
201 IF( DEFINED ENV{TIZEN_PLATFORM_CONFIG_SUPPORTED} )
202   SET( tizenPlatformConfigSupported $ENV{TIZEN_PLATFORM_CONFIG_SUPPORTED} )
203   SET( TIZEN_PLATFORM_CONFIG_SUPPORTED_LOGMSG "YES" )
204 ELSE()
205   SET( tizenPlatformConfigSupported 0 )
206   SET( TIZEN_PLATFORM_CONFIG_SUPPORTED_LOGMSG "NO" )
207 ENDIF()
208
209 IF( DEFINED ENV{FONT_CONFIGURATION_FILE} )
210   SET( fontConfigurationFile $ENV{FONT_CONFIGURATION_FILE} )
211 ENDIF()
212
213 IF( UBUNTU_PROFILE )
214   SET( cachePath $ENV{HOME} )
215 ELSE()
216   SET( cachePath /home/owner )
217 ENDIF()
218
219 #######################################################
220
221 ADD_DEFINITIONS( -DDALI_PROFILE_${enable_profile})
222 SET( DALI_PROFILE_CFLAGS -DDALI_PROFILE_${enable_profile} )
223
224 # Platforms with highp shader support can use vector based text
225 CONDITIONAL( ENABLE_VECTOR_BASED_TEXT_RENDERING UBUNTU_PROFILE )
226 CONDITIONAL( WAYLAND enable_wayland )
227
228 # set lowercase profile name
229 STRING( TOLOWER ${ENABLE_PROFILE} PROFILE_LCASE )
230
231 ##########################################################3
232 # Default CFLAGS of packages
233 #
234 SET( DALI_CFLAGS
235   ${DALI_ADAPTOR_CFLAGS}
236   ${DALICORE_CFLAGS}
237   ${OPENGLES20_CFLAGS}
238   ${FREETYPE_CFLAGS}
239   ${FONTCONFIG_CFLAGS}
240   ${CAIRO_CFLAGS}
241   ${PNG_CFLAGS}
242   ${DLOG_CFLAGS}
243   ${VCONF_CFLAGS}
244   ${EXIF_CFLAGS}
245   ${MMFSOUND_CFLAGS}
246   ${TTS_CFLAGS}
247   ${CAPI_SYSTEM_SENSOR_CFLAGS}
248   ${LIBDRM_CFLAGS}
249   ${LIBEXIF_CFLAGS}
250   ${LIBCURL_CFLAGS}
251   ${TPKP_CURL_CFLAGS}
252   ${UTILX_CFLAGS}
253   -Wall
254 )
255
256 # Default set of linked librarires
257 SET( DALI_LDFLAGS
258   ${DALICORE_LDFLAGS}
259   ${OPENGLES20_LDFLAGS}
260   ${FREETYPE_LDFLAGS}
261   ${FONTCONFIG_LDFLAGS}
262   ${CAIRO_LDFLAGS}
263   ${PNG_LDFLAGS}
264   ${DLOG_LDFLAGS}
265   ${VCONF_LDFLAGS}
266   ${EXIF_LDFLAGS}
267   ${TTS_LDFLAGS}
268   ${CAPI_SYSTEM_SENSOR_LDFLAGS}
269   ${LIBDRM_LDFLAGS}
270   ${LIBEXIF_LDFLAGS}
271   ${LIBCURL_LDFLAGS}
272   ${LIBCRYPTO_LDFLAGS}
273   ${HARFBUZZ_LDFLAGS}
274   ${TPKP_CURL_LDFLAGS}
275   ${UTILX_LDFLAGS}
276   -lgif
277   -lturbojpeg
278   -ljpeg
279 )
280
281 # Android includes pthread with android lib
282 if( NOT ANDROID_PROFILE )
283   SET( DALI_LDFLAGS ${DALI_LDFLAGS}
284     -lpthread
285   )
286 ENDIF()
287
288 # You need to include manually private and Android libs deps in order to link for Android
289 IF( ANDROID_PROFILE )
290   CHECK_MODULE_AND_SET( PIXMAN pixman-1 [] )
291   CHECK_MODULE_AND_SET( EXPAT expat [] )
292
293   SET( DALI_CFLAGS ${DALI_CFLAGS}
294     ${PIXMAN_CFLAGS}
295     ${EXPAT_CFLAGS}
296     ${FRIBIDI_CFLAGS}
297   )
298
299   LIST( APPEND DALI_LDFLAGS
300     ${FRIBIDI_LDFLAGS}
301     ${FREETYPE_LDFLAGS}
302     ${PNG_LDFLAGS}
303     ${PIXMAN_LDFLAGS}
304     ${EXPAT_LDFLAGS}
305     z
306     android
307     log
308     EGL
309     GLESv3
310   )
311 ENDIF()
312
313 # EVAS used indicator
314 SET( DALI_CFLAGS ${DALI_CFLAGS}
315   ${EVAS_CFLAGS}
316   ${ECORE_CFLAGS}
317   ${ECORE_IPC_CFLAGS}
318   ${ELDBUS_CFLAGS}
319 )
320
321 SET( DALI_LDFLAGS ${DALI_LDFLAGS}
322   ${ECORE_IPC_LDFLAGS}
323   ${ELDBUS_LDFLAGS}
324 )
325
326 # APPFW
327 IF( enable_appfw )
328   SET( DALI_CFLAGS ${DALI_CFLAGS}
329     ${CAPI_APPFW_APPLICATION_CFLAGS}
330     ${CAPI_SYSTEM_SYSTEM_SETTINGS_CFLAGS}
331     ${CAPI_SYSTEM_INFO_CFLAGS}
332     ${TTS_CFLAGS}
333     ${SENSOR_CFLAGS}
334     ${BUNDLE_CFLAGS}
335     ${CAPI_APPFW_COMMON_CFLAGS}
336     ${CAPI_APPFW_CONTROL_CFLAGS}
337     ${CAPI_APPFW_WIDGET_BASE_CFLAGS}
338     ${ECORE_IMF_CFLAGS}
339     ${FRIBIDI_CFLAGS}
340   )
341
342   SET( DALI_LDFLAGS ${DALI_LDFLAGS}
343     ${CAPI_APPFW_APPLICATION_LDFLAGS}
344     ${CAPI_SYSTEM_SYSTEM_SETTINGS_LDFLAGS}
345     ${CAPI_SYSTEM_INFO_LDFLAGS}
346     ${TTS_LDFLAGS}
347     ${SENSOR_LDFLAGS}
348     ${BUNDLE_LDFLAGS}
349     ${CAPI_APPFW_COMMON_LDFLAGS}
350     ${CAPI_APPFW_CONTROL_LDFLAGS}
351     ${CAPI_APPFW_WIDGET_BASE_LDFLAGS}
352     ${ECORE_IMF_LDFLAGS}
353     ${FRIBIDI_LDFLAGS}
354   )
355 ELSE()
356   SET( DALI_CFLAGS ${DALI_CFLAGS}
357     ${ELEMENTARY_CFLAGS}
358   )
359
360   SET( DALI_LDFLAGS ${DALI_LDFLAGS}
361     ${ELEMENTARY_LDFLAGS}
362   )
363 ENDIF()
364
365 # WAYLAND
366 IF( WAYLAND )
367   SET( DALI_CFLAGS ${DALI_CFLAGS}
368     -DWL_EGL_PLATFORM
369     ${WAYLAND_CFLAGS}
370   )
371   SET( DALI_LDFLAGS ${DALI_LDFLAGS}
372     ${WAYLAND_LDFLAGS}
373   )
374 ELSE()
375   SET( DALI_CFLAGS ${DALI_CFLAGS}
376        ${X11_CFLAGS}
377        )
378   SET( DALI_LDFLAGS ${DALI_LDFLAGS}
379        ${X11_LDFLAGS}
380        ${ECORE_X_LDFLAGS}
381        )
382 ENDIF()
383
384 # COMMON PROFILE
385 IF( COMMON_PROFILE )
386   SET( DALI_CFLAGS ${DALI_CFLAGS} ${HAPTIC_CFLAGS} )
387 ENDIF()
388
389 # MOBILE PROFILE
390 IF( MOBILE_PROFILE )
391   SET( DALI_CFLAGS ${DALI_CFLAGS}
392       ${DEVICED_CFLAGS}
393       ${EFL_ASSIST_CFLAGS}
394       ${NATIVE_BUFFER_CFLAGS}
395       ${NATIVE_BUFFER_POOL_CFLAGS}
396       )
397
398   SET( DALI_LDFLAGS ${DALI_LDFLAGS}
399       ${EFL_ASSIST_LDFLAGS}
400       ${NATIVE_BUFFER_LDFLAGS}
401       ${NATIVE_BUFFER_POOL_LDFLAGS}
402   )
403 ENDIF()
404
405 # WEARABLE PROFILE
406 IF( WEARABLE_PROFILE )
407   SET( DALI_CFLAGS ${DALI_CFLAGS}
408     ${HAPTIC_CFLAGS}
409     ${EFL_ASSIST_CFLAGS}
410     ${SCREENCONNECTORPROVIDER_CFLAGS}
411     ${APPCORE_WATCH_CFLAGS}
412   )
413   SET( DALI_LDFLAGS ${DALI_LDFLAGS}
414     ${SCREENCONNECTORPROVIDER_LDFLAGS}
415     ${APPCORE_WATCH_LDFLAGS}
416   )
417 ENDIF()
418
419 # TV PROFILE
420 IF( TV_PROFILE )
421   SET( DALI_CFLAGS ${DALI_CFLAGS} ${HAPTIC_CFLAGS} )
422 ENDIF()
423
424 # IVI PROFILE
425 IF( IVI_PROFILE )
426   SET( DALI_CFLAGS ${DALI_CFLAGS}
427       ${DEVICED_CFLAGS}
428       ${EFL_ASSIST_CFLAGS}
429       ${NATIVE_BUFFER_CFLAGS}
430       ${NATIVE_BUFFER_POOL_CFLAGS}
431   )
432   SET( DALI_LDFLAGS ${DALI_LDFLAGS}
433       ${EFL_ASSIST_LDFLAGS}
434       ${NATIVE_BUFFER_LDFLAGS}
435       ${NATIVE_BUFFER_POOL_LDFLAGS}
436   )
437 ENDIF()
438
439 # UBUNTU PROFILE
440 IF( UBUNTU_PROFILE )
441   SET( DALI_CFLAGS ${DALI_CFLAGS} -fPIC )
442   SET( DALI_LDFLAGS ${DALI_LDFLAGS} -ljpeg )
443 ENDIF()
444
445 IF( NOT COMMON_PROFILE )
446   ADD_DEFINITIONS( -DWAYLAND_EXTENSIONS_SUPPORTED )
447 ENDIF()
448
449 # had to do it here for Android by some reason, even if it is set above already
450 IF( ANDROID_PROFILE )
451   SET( daliReadOnlyDir $ENV{DALI_DATA_RO_DIR} )
452   SET( daliReadWriteDir $ENV{DALI_DATA_RW_DIR} )
453 ENDIF()
454
455 SET( daliDefaultThemeDir ${dataReadWriteDir}/theme/ )
456 SET( fontPreloadedPath $ENV{FONT_PRELOADED_PATH} )
457 SET( fontDownloadedPath $ENV{FONT_DOWNLOADED_PATH} )
458 SET( fontApplicationPath $ENV{FONT_APPLICATION_PATH} )
459
460 # Configure paths
461 ADD_DEFINITIONS(  -DDALI_DATA_RW_DIR="${daliReadWriteDir}"
462                   -DDALI_DATA_RO_DIR="${daliReadOnlyDir}"
463                   -DDALI_DEFAULT_FONT_CACHE_DIR="${daliDefaultFontCacheDir}"
464                   -DDALI_USER_FONT_CACHE_DIR="${daliUserFontCacheDir}"
465                   -DDALI_SHADERBIN_DIR="${daliShaderbinCacheDir}"
466                   -DDALI_DEFAULT_THEME_DIR="${daliDefaultThemeDir}"
467                   -DFONT_PRELOADED_PATH="${fontPreloadedPath}"
468                   -DFONT_DOWNLOADED_PATH="${fontDownloadedPath}"
469                   -DFONT_APPLICATION_PATH="${fontApplicationPath}"
470                   -DFONT_CONFIGURATION_FILE="${fontConfigurationFile}"
471                   -DTIZEN_PLATFORM_CONFIG_SUPPORTED=${tizenPlatformConfigSupported}
472 )