ARG_ENABLE( ENABLE_EXPORTALL enable_exportall 1 "Enables the exporting of all the symbols in the library" )
ARG_ENABLE( ENABLE_DEBUG enable_debug ${ENABLE_VAL} "Turns on debugging" )
ARG_ENABLE( ENABLE_SHADERBINCACHE enable_shaderbincache ${ENABLE_VAL} "Enables shader binary cache" )
-ARG_ENABLE( ENABLE_NETWORKLOGGING enable_networklogging ${ENABLE_VAL} "Enables network for debug tool" )
+ARG_ENABLE( ENABLE_NETWORK_LOGGING enable_network_logging ${ENABLE_VAL} "Enables network for debug tool" )
# Currently, dali-adaptor requires appfw on Tizen
# and does not require it on Ubuntu.
EXIT()
ENDIF()
-SET( FREETYPE_REQUIRED 9.16.3 )
-SET( FREETYPE_BITMAP_SUPPORT_VERSION 17.1.11 )
-
IF( NOT enable_profile )
- SET( enable_profile UBUNTU )
+ IF( ANDROID )
+ SET( enable_profile ANDROID )
+ ELSE()
+ SET( enable_profile UBUNTU )
+ ENDIF()
ENDIF()
# Test for profile and exit if something wrong
-SET( VALID_PROFILES COMMON MOBILE WEARABLE TV IVI UBUNTU)
+SET( VALID_PROFILES COMMON MOBILE WEARABLE TV IVI UBUNTU ANDROID WINDOWS MACOS )
LIST( FIND VALID_PROFILES ${enable_profile} RESULT )
IF( RESULT EQUAL -1 )
MESSAGE( FATAL_ERROR "Invalid profile!" )
# Defines profile specific variable
SET( ${enable_profile}_PROFILE 1 )
+# TODO check what version we really need for Android
+IF( ANDROID_PROFILE )
+ SET( FREETYPE_REQUIRED 6.16.0 )
+ SET( FREETYPE_BITMAP_SUPPORT_VERSION 6.16.0 )
+ELSE()
+ SET( FREETYPE_REQUIRED 9.16.3 )
+ SET( FREETYPE_BITMAP_SUPPORT_VERSION 17.1.11 )
+ENDIF()
+
+SET( ELDBUS_REQUIRED 1.16.0 )
+
# checking all possibly used modules (required and optionals)
CHECK_MODULE_AND_SET( EXIF exif exif_available )
CHECK_MODULE_AND_SET( FREETYPE freetype2>=${FREETYPE_REQUIRED} freetype_available )
CHECK_MODULE_AND_SET( FREETYPE_BITMAP_SUPPORT freetype2>=${FREETYPE_BITMAP_SUPPORT_VERSION} freetype_bitmap_support)
-CHECK_MODULE_AND_SET( FONT_CONFIG fontconfig fontconfig_available )
+CHECK_MODULE_AND_SET( FONTCONFIG fontconfig fontconfig_available )
CHECK_MODULE_AND_SET( PNG libpng [] )
+CHECK_MODULE_AND_SET( WEBP libwebp webp_available )
+CHECK_MODULE_AND_SET( WEBP_DEMUX libwebpdemux [] )
CHECK_MODULE_AND_SET( LIBEXIF libexif [] )
CHECK_MODULE_AND_SET( LIBDRM libdrm [] )
CHECK_MODULE_AND_SET( LIBCURL libcurl [] )
CHECK_MODULE_AND_SET( HARFBUZZ harfbuzz [] )
+CHECK_MODULE_AND_SET( HYPHEN libhyphen [] )
CHECK_MODULE_AND_SET( FRIBIDI fribidi [] )
CHECK_MODULE_AND_SET( CAIRO cairo [] )
CHECK_MODULE_AND_SET( EVAS evas [] )
CHECK_MODULE_AND_SET( ECORE ecore [] )
CHECK_MODULE_AND_SET( ECORE_IPC ecore-ipc [] )
CHECK_MODULE_AND_SET( ECORE_IMF ecore-imf [] )
-CHECK_MODULE_AND_SET( ELDBUS eldbus eldbus_available )
+CHECK_MODULE_AND_SET( ELDBUS eldbus>=${ELDBUS_REQUIRED} eldbus_available )
CHECK_MODULE_AND_SET( TPKP_CURL tpkp-curl tpkp_curl_available )
CHECK_MODULE_AND_SET( UTILX utilX utilx_available )
CHECK_MODULE_AND_SET( OPENGLES20 glesv2 [] )
CHECK_MODULE_AND_SET( CAPI_SYSTEM_SENSOR capi-system-sensor capi_system_sensor_support )
CHECK_MODULE_AND_SET( CAPI_SYSTEM_SYSTEM_SETTINGS capi-system-system-settings [] )
CHECK_MODULE_AND_SET( CAPI_APPFW_APPLICATION capi-appfw-application [] )
+CHECK_MODULE_AND_SET( COMPONENT_BASED_CORE_BASE component-based-core-base [] )
CHECK_MODULE_AND_SET( ELEMENTARY elementary [] )
CHECK_MODULE_AND_SET( BUNDLE bundle [] )
CHECK_MODULE_AND_SET( CAPI_APPFW_COMMON capi-appfw-app-common [] )
CHECK_MODULE_AND_SET( CAPI_APPFW_CONTROL capi-appfw-app-control [] )
-CHECK_MODULE_AND_SET( DALICORE dali-core [] )
+CHECK_MODULE_AND_SET( DALICORE dali2-core [] )
+
+CHECK_MODULE_AND_SET( THORVG thorvg thorvg_support )
+
+IF( thorvg_support )
+ ADD_DEFINITIONS( -DTHORVG_SUPPORT )
+ENDIF()
+
+IF( ANDROID_PROFILE )
+ INCLUDE_DIRECTORIES( ${ANDROID_NDK} )
+ INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sources )
+ INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sources/android )
+ INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sources/android/native_app_glue )
+ INCLUDE_DIRECTORIES( ${CMAKE_SYSROOT}/usr )
+ INCLUDE_DIRECTORIES( ${CMAKE_SYSROOT}/usr/include/android )
+ENDIF()
IF( enable_wayland )
IF( enable_ecore_wayland2 )
- PKG_CHECK_MODULES(WAYLAND ecore-wl2 egl wayland-egl wayland-egl-tizen wayland-client>=1.2.0 xkbcommon libtbm )
+ PKG_CHECK_MODULES(WAYLAND ecore-wl2 egl wayland-egl wayland-egl-tizen wayland-client>=1.2.0 input-method-client xkbcommon libtbm )
ELSE()
PKG_CHECK_MODULES(WAYLAND ecore-wayland egl wayland-egl wayland-client>=1.2.0 xkbcommon libtbm)
ENDIF()
ADD_DEFINITIONS( -DDALI_ELDBUS_AVAILABLE )
ENDIF()
-IF( tpkp_curl_available )
- ADD_DEFINITIONS( -DTPK_CURL_ENABLED )
+IF( webp_available )
+ SET(DALI_WEBP_AVAILABLE 1)
+ ADD_DEFINITIONS( -DDALI_WEBP_AVAILABLE )
ENDIF()
ADD_DEFINITIONS( -DPLATFORM_TIZEN )
ADD_DEFINITIONS( -DSHADERBIN_CACHE_ENABLED )
ENDIF()
-IF( enable_networklogging )
+IF( enable_network_logging )
ADD_DEFINITIONS( -DNETWORK_LOGGING_ENABLED )
ENDIF()
SET( dataReadWriteDir ${CMAKE_INSTALL_PREFIX}/share/dali/ )
ENDIF()
-IF( DEFINED ENV{DALI_DATA_RO_DIR )
+IF( DEFINED ENV{DALI_DATA_RO_DIR} )
SET( dataReadOnlyDir $ENV{DALI_DATA_RO_DIR} )
ELSE()
SET( dataReadOnlyDir ${CMAKE_INSTALL_PREFIX}/share/dali/ )
SET( fontConfigurationFile $ENV{FONT_CONFIGURATION_FILE} )
ENDIF()
-IF( UBUNTU_PROFILE )
+IF( UBUNTU_PROFILE OR MACOS_PROFILE )
SET( cachePath $ENV{HOME} )
ELSE()
SET( cachePath /home/owner )
ENDIF()
+IF( enable_appfw )
+ ADD_DEFINITIONS( -DUSE_APPFW -DCOMPONENT_APPLICATION_SUPPORT)
+ENDIF()
+
#######################################################
ADD_DEFINITIONS( -DDALI_PROFILE_${enable_profile})
SET( DALI_PROFILE_CFLAGS -DDALI_PROFILE_${enable_profile} )
# Platforms with highp shader support can use vector based text
-CONDITIONAL( ENABLE_VECTOR_BASED_TEXT_RENDERING UBUNTU_PROFILE )
+ADD_DEFINITIONS( "-DENABLE_VECTOR_BASED_TEXT_RENDERING" )
+
CONDITIONAL( WAYLAND enable_wayland )
# set lowercase profile name
${FREETYPE_CFLAGS}
${FONTCONFIG_CFLAGS}
${CAIRO_CFLAGS}
+ ${THORVG_CFLAGS}
${PNG_CFLAGS}
+ ${WEBP_CFLAGS}
+ ${WEBP_DEMUX_CFLAGS}
${DLOG_CFLAGS}
${VCONF_CFLAGS}
${EXIF_CFLAGS}
${LIBDRM_CFLAGS}
${LIBEXIF_CFLAGS}
${LIBCURL_CFLAGS}
- ${TPKP_CURL_CFLAGS}
${UTILX_CFLAGS}
-Wall
- -DDALI_COMPILATION
)
-# Default set of linked librarires
-SET( DALI_LDFLAGS
- ${DALICORE_LDFLAGS}
- ${OPENGLES20_LDFLAGS}
- ${FREETYPE_LDFLAGS}
- ${FONTCONFIG_LDFLAGS}
- ${CAIRO_LDFLAGS}
- ${PNG_LDFLAGS}
- ${DLOG_LDFLAGS}
- ${VCONF_LDFLAGS}
- ${EXIF_LDFLAGS}
- ${TTS_LDFLAGS}
- ${CAPI_SYSTEM_SENSOR_LDFLAGS}
- ${LIBDRM_LDFLAGS}
- ${LIBEXIF_LDFLAGS}
- ${LIBCURL_LDFLAGS}
- ${LIBCRYPTO_LDFLAGS}
- ${HARFBUZZ_LDFLAGS}
- ${TPKP_CURL_LDFLAGS}
- ${UTILX_LDFLAGS}
- -lgif
- -lpthread
- -lturbojpeg
- -ljpeg
-)
+IF (NOT APPLE)
+ # Default set of linked librarires
+ SET( DALI_LDFLAGS
+ ${DALICORE_LDFLAGS}
+ ${OPENGLES20_LDFLAGS}
+ ${FREETYPE_LDFLAGS}
+ ${FONTCONFIG_LDFLAGS}
+ ${CAIRO_LDFLAGS}
+ ${THORVG_LDFLAGS}
+ ${PNG_LDFLAGS}
+ ${WEBP_LDFLAGS}
+ ${WEBP_DEMUX_LDFLAGS}
+ ${DLOG_LDFLAGS}
+ ${VCONF_LDFLAGS}
+ ${EXIF_LDFLAGS}
+ ${TTS_LDFLAGS}
+ ${CAPI_SYSTEM_SENSOR_LDFLAGS}
+ ${LIBDRM_LDFLAGS}
+ ${LIBEXIF_LDFLAGS}
+ ${LIBCURL_LDFLAGS}
+ ${LIBCRYPTO_LDFLAGS}
+ ${HARFBUZZ_LDFLAGS}
+ ${UTILX_LDFLAGS}
+ -lgif
+ -lturbojpeg
+ -ljpeg
+ )
+
+if( NOT ANDROID_PROFILE )
+ SET( DALI_LDFLAGS ${DALI_LDFLAGS}
+ -lhyphen
+ )
+ENDIF()
+
+ENDIF()
+
+# Android includes pthread with android lib
+if( NOT ANDROID_PROFILE )
+ SET( DALI_LDFLAGS ${DALI_LDFLAGS}
+ -lpthread
+ )
+ENDIF()
+
+# You need to include manually private and Android libs deps in order to link for Android
+IF( ANDROID_PROFILE )
+ CHECK_MODULE_AND_SET( PIXMAN pixman-1 [] )
+ CHECK_MODULE_AND_SET( EXPAT expat [] )
+
+ SET( DALI_CFLAGS ${DALI_CFLAGS}
+ ${PIXMAN_CFLAGS}
+ ${EXPAT_CFLAGS}
+ ${FRIBIDI_CFLAGS}
+ )
+
+ LIST( APPEND DALI_LDFLAGS
+ ${FRIBIDI_LDFLAGS}
+ ${FREETYPE_LDFLAGS}
+ ${PNG_LDFLAGS}
+ ${PIXMAN_LDFLAGS}
+ ${EXPAT_LDFLAGS}
+ z
+ android
+ log
+ EGL
+ GLESv3
+ )
+ENDIF()
# EVAS used indicator
SET( DALI_CFLAGS ${DALI_CFLAGS}
${CAPI_APPFW_WIDGET_BASE_CFLAGS}
${ECORE_IMF_CFLAGS}
${FRIBIDI_CFLAGS}
+ ${COMPONENT_BASED_CORE_BASE_CFLAGS}
+ ${SCREENCONNECTORPROVIDER_CFLAGS}
)
SET( DALI_LDFLAGS ${DALI_LDFLAGS}
${CAPI_APPFW_WIDGET_BASE_LDFLAGS}
${ECORE_IMF_LDFLAGS}
${FRIBIDI_LDFLAGS}
+ ${COMPONENT_BASED_CORE_BASE_LDFLAGS}
+ ${SCREENCONNECTORPROVIDER_LDFLAGS}
)
ELSE()
SET( DALI_CFLAGS ${DALI_CFLAGS}
SET( DALI_CFLAGS ${DALI_CFLAGS}
${HAPTIC_CFLAGS}
${EFL_ASSIST_CFLAGS}
- ${SCREENCONNECTORPROVIDER_CFLAGS}
${APPCORE_WATCH_CFLAGS}
)
SET( DALI_LDFLAGS ${DALI_LDFLAGS}
- ${SCREENCONNECTORPROVIDER_LDFLAGS}
${APPCORE_WATCH_LDFLAGS}
)
ENDIF()
ADD_DEFINITIONS( -DWAYLAND_EXTENSIONS_SUPPORTED )
ENDIF()
-SET( daliDefaultThemeDir ${dataReadWriteDir}/theme/ )
+# had to do it here for Android by some reason, even if it is set above already
+IF( ANDROID_PROFILE )
+ SET( daliReadOnlyDir $ENV{DALI_DATA_RO_DIR} )
+ SET( daliReadWriteDir $ENV{DALI_DATA_RW_DIR} )
+ENDIF()
+SET( daliDefaultThemeDir ${dataReadWriteDir}/theme/ )
SET( fontPreloadedPath $ENV{FONT_PRELOADED_PATH} )
SET( fontDownloadedPath $ENV{FONT_DOWNLOADED_PATH} )
SET( fontApplicationPath $ENV{FONT_APPLICATION_PATH} )
# Configure paths
-ADD_DEFINITIONS( -DDALI_DATA_RW_DIR="\"${daliReadWriteDir}\""
- -DDALI_DATA_RO_DIR="\"${daliReadOnlyDir}\""
- -DDALI_DEFAULT_FONT_CACHE_DIR="\"${daliDefaultFontCacheDir}\""
- -DDALI_USER_FONT_CACHE_DIR="\"${daliUserFontCacheDir}\""
- -DDALI_SHADERBIN_DIR="\"${daliShaderbinCacheDir}\""
- -DDALI_DEFAULT_THEME_DIR="\"${daliDefaultThemeDir}\""
- -DFONT_PRELOADED_PATH="\"${fontPreloadedPath}\""
- -DFONT_DOWNLOADED_PATH="\"${fontDownloadedPath}\""
- -DFONT_APPLICATION_PATH="\"${fontApplicationPath}\""
- -DFONT_CONFIGURATION_FILE="\"${fontConfigurationFile}\""
+ADD_DEFINITIONS( -DDALI_DATA_RW_DIR="${daliReadWriteDir}"
+ -DDALI_DATA_RO_DIR="${daliReadOnlyDir}"
+ -DDALI_DEFAULT_FONT_CACHE_DIR="${daliDefaultFontCacheDir}"
+ -DDALI_USER_FONT_CACHE_DIR="${daliUserFontCacheDir}"
+ -DDALI_SHADERBIN_DIR="${daliShaderbinCacheDir}"
+ -DDALI_DEFAULT_THEME_DIR="${daliDefaultThemeDir}"
+ -DFONT_PRELOADED_PATH="${fontPreloadedPath}"
+ -DFONT_DOWNLOADED_PATH="${fontDownloadedPath}"
+ -DFONT_APPLICATION_PATH="${fontApplicationPath}"
+ -DFONT_CONFIGURATION_FILE="${fontConfigurationFile}"
-DTIZEN_PLATFORM_CONFIG_SUPPORTED=${tizenPlatformConfigSupported}
)