1 INCLUDE( common.cmake )
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_NETWORK_LOGGING enable_network_logging ${ENABLE_VAL} "Enables network for debug tool" )
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" )
15 # Tizen Profile option
16 ARG_ENABLE( ENABLE_PROFILE enable_profile "${ENABLE_VAL};UBUNTU" "Select the variant of tizen" )
19 ARG_ENABLE( ENABLE_TIZEN_MAJOR_VERSION enable_tizen_major_version "${ENABLE_VAL};0" "Specify the Tizen Major version for backwards compatibility" )
21 ARG_ENABLE( ENABLE_FEEDBACK enable_feedback 1 "Enable feedback plugin" )
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" )
29 ARG_ENABLE( PRINT_HELP print_help "${ENABLE_VAL}" "Prints help" )
32 MESSAGE( STATUS ${HELP_ENABLES} )
36 IF( NOT enable_profile )
38 SET( enable_profile ANDROID )
40 SET( enable_profile UBUNTU )
44 # Test for profile and exit if something wrong
45 SET( VALID_PROFILES COMMON MOBILE WEARABLE TV IVI UBUNTU ANDROID WINDOWS MACOS LIBUV_X11 GLIB_X11)
46 LIST( FIND VALID_PROFILES ${enable_profile} RESULT )
48 MESSAGE( FATAL_ERROR "Invalid profile!" )
51 # Defines profile specific variable
52 SET( ${enable_profile}_PROFILE 1 )
54 IF( LIBUV_X11_PROFILE OR GLIB_X11_PROFILE )
58 IF( UBUNTU_PROFILE OR MACOS_PROFILE OR X11_REQUIRED )
59 SET( DESKTOP_PROFILE 1 )
61 SET( DEVICE_PROFILE 1 )
65 # TODO check what version we really need for Android
67 SET( FREETYPE_REQUIRED 6.16.0 )
68 SET( FREETYPE_BITMAP_SUPPORT_VERSION 6.16.0 )
70 SET( FREETYPE_REQUIRED 9.16.3 )
71 SET( FREETYPE_BITMAP_SUPPORT_VERSION 17.1.11 )
74 SET( ELDBUS_REQUIRED 1.16.0 )
76 # checking all possibly used modules (required and optionals)
77 CHECK_MODULE_AND_SET( EXIF exif exif_available )
78 CHECK_MODULE_AND_SET( FREETYPE freetype2>=${FREETYPE_REQUIRED} freetype_available )
79 CHECK_MODULE_AND_SET( FREETYPE_BITMAP_SUPPORT freetype2>=${FREETYPE_BITMAP_SUPPORT_VERSION} freetype_bitmap_support)
80 CHECK_MODULE_AND_SET( FONTCONFIG fontconfig fontconfig_available )
81 CHECK_MODULE_AND_SET( PNG libpng [] )
82 CHECK_MODULE_AND_SET( WEBP libwebp webp_available )
83 CHECK_MODULE_AND_SET( WEBP_DEMUX libwebpdemux [] )
84 CHECK_MODULE_AND_SET( LIBEXIF libexif [] )
85 CHECK_MODULE_AND_SET( LIBDRM libdrm [] )
86 CHECK_MODULE_AND_SET( LIBCURL libcurl [] )
87 CHECK_MODULE_AND_SET( HARFBUZZ harfbuzz [] )
88 CHECK_MODULE_AND_SET( HYPHEN libhyphen [] )
89 CHECK_MODULE_AND_SET( FRIBIDI fribidi [] )
90 CHECK_MODULE_AND_SET( CAIRO cairo [] )
91 CHECK_MODULE_AND_SET( EVAS evas [] )
92 CHECK_MODULE_AND_SET( TTRACE ttrace ENABLE_TTRACE )
93 CHECK_MODULE_AND_SET( ECORE ecore [] )
94 CHECK_MODULE_AND_SET( ECORE_IPC ecore-ipc [] )
95 CHECK_MODULE_AND_SET( ECORE_IMF ecore-imf [] )
96 CHECK_MODULE_AND_SET( ELDBUS eldbus>=${ELDBUS_REQUIRED} eldbus_available )
97 CHECK_MODULE_AND_SET( TPKP_CURL tpkp-curl tpkp_curl_available )
98 CHECK_MODULE_AND_SET( UTILX utilX utilx_available )
99 CHECK_MODULE_AND_SET( OPENGLES20 glesv2 [] )
100 CHECK_MODULE_AND_SET( EGL egl [] )
101 CHECK_MODULE_AND_SET( DLOG dlog [] )
102 CHECK_MODULE_AND_SET( TTS tts [] )
103 CHECK_MODULE_AND_SET( VCONF vconf [] )
104 CHECK_MODULE_AND_SET( LIBUV libuv [] )
105 CHECK_MODULE_AND_SET( GLIB glib-2.0 [] )
106 CHECK_MODULE_AND_SET( X11 x11 [] )
107 CHECK_MODULE_AND_SET( XDAMAGE xdamage [] )
108 CHECK_MODULE_AND_SET( XFIXES xfixes [] )
109 CHECK_MODULE_AND_SET( XINPUT xi [] )
110 CHECK_MODULE_AND_SET( XRENDER xrender [] )
112 CHECK_MODULE_AND_SET( CAPI_SYSTEM_INFO capi-system-info [] )
113 CHECK_MODULE_AND_SET( CAPI_SYSTEM_SENSOR capi-system-sensor capi_system_sensor_support )
114 CHECK_MODULE_AND_SET( CAPI_SYSTEM_SYSTEM_SETTINGS capi-system-system-settings [] )
115 CHECK_MODULE_AND_SET( CAPI_APPFW_APPLICATION capi-appfw-application [] )
116 CHECK_MODULE_AND_SET( COMPONENT_BASED_CORE_BASE component-based-core-base [] )
118 CHECK_MODULE_AND_SET( ELEMENTARY elementary [] )
119 CHECK_MODULE_AND_SET( BUNDLE bundle [] )
120 CHECK_MODULE_AND_SET( SCREENCONNECTORPROVIDER screen_connector_provider [] )
121 CHECK_MODULE_AND_SET( APPFW_WATCH capi-appfw-watch-application watch_available )
122 CHECK_MODULE_AND_SET( APPCORE_WATCH appcore-watch [] )
124 CHECK_MODULE_AND_SET( CAPI_APPFW_APPLICATION app-core-ui-cpp [] )
125 CHECK_MODULE_AND_SET( CAPI_APPFW_WIDGET_BASE appcore-widget-base [] )
126 CHECK_MODULE_AND_SET( CAPI_APPFW_COMMON capi-appfw-app-common [] )
127 CHECK_MODULE_AND_SET( CAPI_APPFW_CONTROL capi-appfw-app-control [] )
129 CHECK_MODULE_AND_SET( DALICORE dali2-core [] )
131 CHECK_MODULE_AND_SET( THORVG thorvg thorvg_support )
134 ADD_DEFINITIONS( -DTHORVG_SUPPORT )
137 IF( ANDROID_PROFILE )
138 INCLUDE_DIRECTORIES( ${ANDROID_NDK} )
139 INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sources )
140 INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sources/android )
141 INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sources/android/native_app_glue )
142 INCLUDE_DIRECTORIES( ${CMAKE_SYSROOT}/usr )
143 INCLUDE_DIRECTORIES( ${CMAKE_SYSROOT}/usr/include/android )
147 IF( enable_ecore_wayland2 )
148 PKG_CHECK_MODULES(WAYLAND ecore-wl2 egl wayland-egl wayland-egl-tizen wayland-client>=1.2.0 input-method-client xkbcommon libtbm )
150 PKG_CHECK_MODULES(WAYLAND ecore-wayland egl wayland-egl wayland-client>=1.2.0 xkbcommon libtbm)
154 CHECK_MODULE_AND_SET( ECORE_X ecore-x DALI_USE_ECORE_X11 [] )
155 CHECK_MODULE_AND_SET( X11 x11 DALI_USE_X11 [] )
158 CHECK_MODULE_AND_SET( WAYLAND_EXTENSION xdg-shell-client text-client input-method-client [] )
161 IF( watch_available AND WEARABLE_PROFILE )
162 ADD_DEFINITIONS( -DAPPCORE_WATCH_AVAILABLE )
165 IF( eldbus_available )
166 SET(DALI_ELDBUS_AVAILABLE 1)
167 ADD_DEFINITIONS( -DDALI_ELDBUS_AVAILABLE )
171 SET(DALI_WEBP_AVAILABLE 1)
172 ADD_DEFINITIONS( -DDALI_WEBP_AVAILABLE )
175 ADD_DEFINITIONS( -DPLATFORM_TIZEN )
178 ADD_DEFINITIONS( -DDEBUG_ENABLED )
179 SET( ENABLE_EXPORTALL ON )
182 IF( NOT ${ENABLE_EXPORTALL} )
183 ADD_DEFINITIONS( "-fvisibility=hidden -DHIDE_DALI_INTERNALS" )
186 IF( enable_shaderbincache )
187 ADD_DEFINITIONS( -DSHADERBIN_CACHE_ENABLED )
190 IF( enable_network_logging )
191 ADD_DEFINITIONS( -DNETWORK_LOGGING_ENABLED )
194 IF( watch_available AND WEARABLE_PROFILE )
195 ADD_DEFINITIONS( -DAPPCORE_WATCH_AVAILABLE )
198 IF( capi_system_sensor_support AND (NOT UBUNTU_PROFILE) )
199 ADD_DEFINITIONS( -DCAPI_SYSTEM_SENSOR_SUPPORT )
202 IF( enable_appfw AND (enable_tizen_major_version EQUAL 3) )
203 ADD_DEFINITIONS( -DWIDGET_AVAILABLE )
206 IF( enable_wayland AND (NOT COMMON_PROFILE) )
207 PKG_CHECK_MODULES( WAYLAND_EXTENSION [xdg-shell-client text-client input-method-client] )
210 IF( freetype_bitmap_support )
211 ADD_DEFINITIONS( -DFREETYPE_BITMAP_SUPPORT )
214 IF( ENABLE_COVERAGE OR "$ENV{CXXFLAGS}" MATCHES --coverage )
215 ADD_COMPILE_OPTIONS( --coverage )
216 SET(ENABLE_COVERAGE ON)
217 SET(COVERAGE --coverage)
220 IF( DEFINED ENV{DALI_DATA_RW_DIR} )
221 SET( dataReadWriteDir $ENV{DALI_DATA_RW_DIR} )
223 SET( dataReadWriteDir ${CMAKE_INSTALL_PREFIX}/share/dali/ )
226 IF( DEFINED ENV{DALI_DATA_RO_DIR} )
227 SET( dataReadOnlyDir $ENV{DALI_DATA_RO_DIR} )
229 SET( dataReadOnlyDir ${CMAKE_INSTALL_PREFIX}/share/dali/ )
232 IF( DEFINED ENV{TIZEN_PLATFORM_CONFIG_SUPPORTED} )
233 SET( tizenPlatformConfigSupported $ENV{TIZEN_PLATFORM_CONFIG_SUPPORTED} )
234 SET( TIZEN_PLATFORM_CONFIG_SUPPORTED_LOGMSG "YES" )
236 SET( tizenPlatformConfigSupported 0 )
237 SET( TIZEN_PLATFORM_CONFIG_SUPPORTED_LOGMSG "NO" )
240 IF( DEFINED ENV{FONT_CONFIGURATION_FILE} )
241 SET( fontConfigurationFile $ENV{FONT_CONFIGURATION_FILE} )
244 IF( DESKTOP_PROFILE )
245 SET( cachePath $ENV{HOME} )
247 SET( cachePath /home/owner )
250 IF( enable_appfw AND (enable_tizen_major_version GREATER_EQUAL 8) )
251 ADD_DEFINITIONS( -DUI_THREAD_AVAILABLE )
255 ADD_DEFINITIONS( -DUSE_APPFW -DCOMPONENT_APPLICATION_SUPPORT)
258 #######################################################
260 ADD_DEFINITIONS( -DDALI_PROFILE_${enable_profile})
261 SET( DALI_PROFILE_CFLAGS -DDALI_PROFILE_${enable_profile} )
263 # Platforms with highp shader support can use vector based text
264 IF( NOT DEFINED ENABLE_VECTOR_BASED_TEXT_RENDERING )
265 SET(ENABLE_VECTOR_BASED_TEXT_RENDERING ON)
268 IF( ENABLE_VECTOR_BASED_TEXT_RENDERING )
269 ADD_DEFINITIONS( "-DENABLE_VECTOR_BASED_TEXT_RENDERING" )
272 CONDITIONAL( WAYLAND enable_wayland )
274 # set lowercase profile name
275 STRING( REPLACE "_" "-" PROFILE_DASH ${ENABLE_PROFILE})
276 STRING( TOLOWER ${PROFILE_DASH} PROFILE_LCASE )
278 ##########################################################
279 # Default CFLAGS of packages
282 ${DALI_ADAPTOR_CFLAGS}
297 ${CAPI_SYSTEM_SENSOR_CFLAGS}
306 # Default set of linked librarires
309 ${OPENGLES20_LDFLAGS}
311 ${FONTCONFIG_LDFLAGS}
316 ${WEBP_DEMUX_LDFLAGS}
321 ${CAPI_SYSTEM_SENSOR_LDFLAGS}
333 if( NOT ANDROID_PROFILE )
334 SET( DALI_LDFLAGS ${DALI_LDFLAGS}
341 # Android includes pthread with android lib
342 IF( NOT ANDROID_PROFILE )
343 SET( DALI_LDFLAGS ${DALI_LDFLAGS}
348 # You need to include manually private and Android libs deps in order to link for Android
349 IF( ANDROID_PROFILE )
350 CHECK_MODULE_AND_SET( PIXMAN pixman-1 [] )
351 CHECK_MODULE_AND_SET( EXPAT expat [] )
353 SET( DALI_CFLAGS ${DALI_CFLAGS}
359 LIST( APPEND DALI_LDFLAGS
376 SET( DALI_CFLAGS ${DALI_CFLAGS}
384 SET( DALI_LDFLAGS ${DALI_LDFLAGS}
394 # EVAS used indicator
395 SET( DALI_CFLAGS ${DALI_CFLAGS}
402 SET( DALI_LDFLAGS ${DALI_LDFLAGS}
409 SET( DALI_CFLAGS ${DALI_CFLAGS}
410 ${CAPI_APPFW_APPLICATION_CFLAGS}
411 ${CAPI_SYSTEM_SYSTEM_SETTINGS_CFLAGS}
412 ${CAPI_SYSTEM_INFO_CFLAGS}
416 ${CAPI_APPFW_COMMON_CFLAGS}
417 ${CAPI_APPFW_CONTROL_CFLAGS}
418 ${CAPI_APPFW_WIDGET_BASE_CFLAGS}
421 ${COMPONENT_BASED_CORE_BASE_CFLAGS}
422 ${SCREENCONNECTORPROVIDER_CFLAGS}
425 SET( DALI_LDFLAGS ${DALI_LDFLAGS}
426 ${CAPI_APPFW_APPLICATION_LDFLAGS}
427 ${CAPI_SYSTEM_SYSTEM_SETTINGS_LDFLAGS}
428 ${CAPI_SYSTEM_INFO_LDFLAGS}
432 ${CAPI_APPFW_COMMON_LDFLAGS}
433 ${CAPI_APPFW_CONTROL_LDFLAGS}
434 ${CAPI_APPFW_WIDGET_BASE_LDFLAGS}
437 ${COMPONENT_BASED_CORE_BASE_LDFLAGS}
438 ${SCREENCONNECTORPROVIDER_LDFLAGS}
441 SET( DALI_CFLAGS ${DALI_CFLAGS}
445 SET( DALI_LDFLAGS ${DALI_LDFLAGS}
446 ${ELEMENTARY_LDFLAGS}
450 ENDIF() # X11_REQUIRED
454 SET( DALI_CFLAGS ${DALI_CFLAGS}
458 SET( DALI_LDFLAGS ${DALI_LDFLAGS}
463 IF(LIBUV_X11_PROFILE)
464 SET(DALI_CFLAGS ${DALI_CFLAGS} ${LIBUV_CFLAGS})
465 SET(DALI_LDFLAGS ${DALI_LDFLAGS} ${LIBUV_LDFLAGS})
466 ELSEIF(GLIB_X11_PROFILE)
467 SET(DALI_CFLAGS ${DALI_CFLAGS} ${GLIB_CFLAGS})
468 SET(DALI_LDFLAGS ${DALI_LDFLAGS} ${GLIB_LDFLAGS})
474 SET( DALI_CFLAGS ${DALI_CFLAGS} ${HAPTIC_CFLAGS} )
479 SET( DALI_CFLAGS ${DALI_CFLAGS}
482 ${NATIVE_BUFFER_CFLAGS}
483 ${NATIVE_BUFFER_POOL_CFLAGS}
486 SET( DALI_LDFLAGS ${DALI_LDFLAGS}
487 ${EFL_ASSIST_LDFLAGS}
488 ${NATIVE_BUFFER_LDFLAGS}
489 ${NATIVE_BUFFER_POOL_LDFLAGS}
494 IF( WEARABLE_PROFILE )
495 SET( DALI_CFLAGS ${DALI_CFLAGS}
498 ${APPCORE_WATCH_CFLAGS}
500 SET( DALI_LDFLAGS ${DALI_LDFLAGS}
501 ${APPCORE_WATCH_LDFLAGS}
507 SET( DALI_CFLAGS ${DALI_CFLAGS} ${HAPTIC_CFLAGS} )
512 SET( DALI_CFLAGS ${DALI_CFLAGS}
515 ${NATIVE_BUFFER_CFLAGS}
516 ${NATIVE_BUFFER_POOL_CFLAGS}
518 SET( DALI_LDFLAGS ${DALI_LDFLAGS}
519 ${EFL_ASSIST_LDFLAGS}
520 ${NATIVE_BUFFER_LDFLAGS}
521 ${NATIVE_BUFFER_POOL_LDFLAGS}
527 SET( DALI_CFLAGS ${DALI_CFLAGS} -fPIC )
528 SET( DALI_LDFLAGS ${DALI_LDFLAGS} -ljpeg)
531 # Dali depends on shm_open, but librt is usually included from framework (ecore, libuv etc)
532 IF( GLIB_X11_PROFILE)
533 SET( DALI_LDFLAGS ${DALI_LDFLAGS} -lrt)
536 IF( NOT COMMON_PROFILE AND NOT X11_REQUIRED)
537 ADD_DEFINITIONS( -DWAYLAND_EXTENSIONS_SUPPORTED )
540 # had to do it here for Android by some reason, even if it is set above already
541 IF( ANDROID_PROFILE )
542 SET( daliReadOnlyDir $ENV{DALI_DATA_RO_DIR} )
543 SET( daliReadWriteDir $ENV{DALI_DATA_RW_DIR} )
546 SET( daliDefaultThemeDir ${dataReadWriteDir}/theme/ )
547 SET( fontPreloadedPath $ENV{FONT_PRELOADED_PATH} )
548 SET( fontDownloadedPath $ENV{FONT_DOWNLOADED_PATH} )
549 SET( fontApplicationPath $ENV{FONT_APPLICATION_PATH} )
552 ADD_DEFINITIONS( -DDALI_DATA_RW_DIR="${daliReadWriteDir}"
553 -DDALI_DATA_RO_DIR="${daliReadOnlyDir}"
554 -DDALI_DEFAULT_FONT_CACHE_DIR="${daliDefaultFontCacheDir}"
555 -DDALI_USER_FONT_CACHE_DIR="${daliUserFontCacheDir}"
556 -DDALI_SHADERBIN_DIR="${daliShaderbinCacheDir}"
557 -DDALI_DEFAULT_THEME_DIR="${daliDefaultThemeDir}"
558 -DFONT_PRELOADED_PATH="${fontPreloadedPath}"
559 -DFONT_DOWNLOADED_PATH="${fontDownloadedPath}"
560 -DFONT_APPLICATION_PATH="${fontApplicationPath}"
561 -DFONT_CONFIGURATION_FILE="${fontConfigurationFile}"
562 -DTIZEN_PLATFORM_CONFIG_SUPPORTED=${tizenPlatformConfigSupported}