Merge "Clean up the code to build successfully on macOS" into devel/master
[platform/core/uifw/dali-core.git] / build / tizen / CMakeLists.txt
index 94dbedb..eb890c2 100644 (file)
@@ -1,8 +1,10 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
+CMAKE_MINIMUM_REQUIRED(VERSION 3.8.2)
 CMAKE_POLICY(SET CMP0012 NEW) # Prevent dereferencing of OFF/ON as variables
 
-SET(name "dali-core")
+SET(name "dali2-core")
 
+SET(CMAKE_C_STANDARD 99)
+SET(CMAKE_CXX_STANDARD 17)
 PROJECT(${name})
 SET(PKG_NAME ${name})
 
@@ -14,7 +16,7 @@ IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
 ENDIF()
 
 # API VERSION (Not DALi release version)
-SET(${name}_VERSION_MAJOR 0)
+SET(${name}_VERSION_MAJOR 2)
 SET(${name}_VERSION_MINOR 0)
 SET(${name}_VERSION_PATCH 0)
 SET(${name}_VERSION ${${name}_VERSION_MAJOR}.${${name}_VERSION_MINOR}.${${name}_VERSION_PATCH})
@@ -34,21 +36,22 @@ OPTION(ENABLE_LINK_TEST      "Enable the link test" ON)
 
 IF( WIN32 ) # WIN32 includes x64 as well according to the cmake doc.
   FIND_PACKAGE( dali-windows-dependencies REQUIRED )
-  FIND_PATH( SYSTEM_INCLUDE_DIR "dali-windows-dependencies.h" )
 ENDIF()
 
+SET( VCPKG_INCLUDE_DIR "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include")
+
 # Set up compiler definitions
 
 IF(CMAKE_BUILD_TYPE MATCHES Debug)
-  MESSAGE( STATUS "CMAKE_BUILD_TYPE: " Debug )
   SET( ENABLE_DEBUG ON )
-ELSE()
-  MESSAGE( STATUS "CMAKE_BUILD_TYPE: " Release )
 ENDIF()
 
 IF( ENABLE_DEBUG )
+  MESSAGE( STATUS "CMAKE_BUILD_TYPE: " Debug )
   ADD_DEFINITIONS( "-DDEBUG_ENABLED" )
   SET( ENABLE_EXPORTALL ON )
+ELSE()
+  MESSAGE( STATUS "CMAKE_BUILD_TYPE: " Release )
 ENDIF()
 
 IF( WIN32 ) # WIN32 includes x64 as well according to the cmake doc.
@@ -69,10 +72,6 @@ ELSEIF( UNIX )
     ADD_DEFINITIONS("-DTARGET")
   ENDIF()
 
-  IF( NOT ${ENABLE_EXPORTALL} )
-    ADD_DEFINITIONS( "-fvisibility=hidden" )
-  ENDIF()
-
 ENDIF()
 
 IF( ENABLE_BACKTRACE OR ENABLE_LOCK_BACKTRACE )
@@ -107,17 +106,21 @@ IF( NOT INCLUDE_DIR )
 ENDIF()
 
 # Set up the lib dir
-IF( SET_VCPKG_INSTALL_PREFIX )
+SET( LIB_DIR $ENV{libdir} )
+IF( NOT LIB_DIR )
+  SET( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
+ENDIF()
+IF( NOT LIB_DIR )
   SET( LIB_DIR ${PREFIX}/lib )
+ENDIF()
+
+# Set up the bin dir
+SET( BIN_DIR $ENV{bindir} )
+IF( NOT BIN_DIR )
+  SET( BIN_DIR ${CMAKE_INSTALL_BINDIR} )
+ENDIF()
+IF( NOT BIN_DIR )
   SET( BIN_DIR ${PREFIX}/bin )
-ELSE()
-  SET( LIB_DIR $ENV{libdir} )
-  IF( NOT LIB_DIR )
-    SET( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
-  ENDIF()
-  IF( NOT LIB_DIR )
-    SET( LIB_DIR ${PREFIX}/lib )
-  ENDIF()
 ENDIF()
 
 IF( ENABLE_PKG_CONFIGURE )
@@ -125,7 +128,7 @@ IF( ENABLE_PKG_CONFIGURE )
   # Requires the following variables to be setup:
   # @PREFIX@ @EXEC_PREFIX@ @DALI_VERSION@ @LIB_DIR@ @DEV_INCLUDE_PATH@
   SET( DEV_INCLUDE_PATH ${INCLUDE_DIR} )
-  SET( CORE_PKG_CFG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/dali-core.pc )
+  SET( CORE_PKG_CFG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/dali2-core.pc )
   CONFIGURE_FILE( ${CORE_PKG_CFG_FILE}.in ${CORE_PKG_CFG_FILE} @ONLY )
 ENDIF()
 
@@ -133,11 +136,13 @@ IF( WIN32 ) # WIN32 includes x64 as well according to the cmake doc.
 
   ADD_COMPILE_OPTIONS( /FIdali-windows-dependencies.h ) # Adds missing definitions.
   ADD_COMPILE_OPTIONS( /vmg )                           # Avoids a 'reinterpret_cast' compile error while compiling signals and callbacks.
+  ADD_COMPILE_OPTIONS( /wd4251 )                        # Ignores warning C4251: "'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'"
 
 ELSEIF( UNIX )
 
+  INCLUDE(CheckCXXCompilerFlag)
+
   # Set up compiler flags and warnings
-  ADD_COMPILE_OPTIONS( -std=c++11 )
   ADD_COMPILE_OPTIONS( -Wnon-virtual-dtor -Woverloaded-virtual -Wold-style-cast )
 
   # TODO: Clang is a lot more strict with warnings, we should address
@@ -146,19 +151,37 @@ ELSEIF( UNIX )
     ADD_COMPILE_OPTIONS( -Werror )
   ENDIF()
 
-  ADD_COMPILE_OPTIONS( -Wall -Wextra -Wno-unused-parameter -Wfloat-equal -Wno-class-memaccess -Wno-cast-function-type )
+  ADD_COMPILE_OPTIONS( -Wall -Wextra -Wno-unused-parameter -Wfloat-equal )
+  CHECK_CXX_COMPILER_FLAG(-Wno-class-memaccess HAVE_NO_CLASS_MEMACCESS)
+  IF (HAVE_NO_CLASS_MEMACCESS)
+    ADD_COMPILE_OPTIONS( -Wno-class-memaccess )
+  ENDIF()
 
+  CHECK_CXX_COMPILER_FLAG(-Wno-cast-function-type HAVE_NO_CAST_FUNCTION_TYPE)
+  IF (HAVE_NO_CAST_FUNCTION_TYPE)
+    ADD_COMPILE_OPTIONS( -Wno-cast-function-type )
+  ENDIF()
+
+  CHECK_CXX_COMPILER_FLAG(-Wno-string-plus-int HAVE_NO_STRING_PLUS_INT)
+  IF (HAVE_NO_STRING_PLUS_INT)
+    ADD_COMPILE_OPTIONS( -Wno-string-plus-int )
+  ENDIF()
   IF( ENABLE_COVERAGE OR "$ENV{CXXFLAGS}" MATCHES --coverage )
     ADD_COMPILE_OPTIONS( --coverage )
     SET(ENABLE_COVERAGE ON)
     SET(COVERAGE --coverage)
   ENDIF()
 
+  IF( NOT ${ENABLE_EXPORTALL} )
+    ADD_COMPILE_OPTIONS( "-fvisibility=hidden" )
+  ENDIF()
+
 ENDIF()
 
 INCLUDE_DIRECTORIES(
   ${ROOT_SRC_DIR}
-  ${SYSTEM_INCLUDE_DIR}
+  ${VCPKG_INCLUDE_DIR}
+  ${INCLUDE_DIR}
 )
 
 SET(SOURCE_DIR "${ROOT_SRC_DIR}/dali")
@@ -208,8 +231,13 @@ SET_TARGET_PROPERTIES( ${name}
   CLEAN_DIRECT_OUPUT 1
 )
 
-# Install the library so file and symlinks
 IF( INSTALL_CMAKE_MODULES )
+  IF( ENABLE_DEBUG )
+    SET( BIN_DIR "${BIN_DIR}/debug" )
+    SET( LIB_DIR "${LIB_DIR}/debug" )
+  ENDIF()
+
+  # Install the library files.
   INSTALL( TARGETS ${name}
     EXPORT ${name}-targets
     LIBRARY DESTINATION ${LIB_DIR}
@@ -217,6 +245,7 @@ IF( INSTALL_CMAKE_MODULES )
     RUNTIME DESTINATION ${BIN_DIR}
   )
 
+  # Install the cmake modules.
   INSTALL(
     EXPORT ${name}-targets
     NAMESPACE ${name}::
@@ -229,7 +258,13 @@ IF( INSTALL_CMAKE_MODULES )
     include(\${CMAKE_CURRENT_LIST_DIR}/${name}-targets.cmake)
   ")
   INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}-config.cmake DESTINATION share/${name} )
+
+  # Install the pdb file.
+  IF( ENABLE_DEBUG AND WIN32 )
+    install( FILES ${CMAKE_CURRENT_BINARY_DIR}/Debug/${name}.pdb DESTINATION ${BIN_DIR} )
+  ENDIF()
 ELSE()
+  # Install the library so file and symlinks.
   INSTALL( TARGETS ${name} DESTINATION ${LIB_DIR} )
 ENDIF()
 
@@ -330,7 +365,6 @@ IF( ENABLE_LINK_TEST )
     ${DALI_TEST_SUITE_DIR}/test-application.cpp
     ${DALI_TEST_SUITE_DIR}/test-platform-abstraction.cpp
     ${DALI_TEST_SUITE_DIR}/test-render-controller.cpp
-    ${DALI_TEST_SUITE_DIR}/test-render-surface.cpp
     ${DALI_TEST_SUITE_DIR}/test-gl-abstraction.cpp
     ${DALI_TEST_SUITE_DIR}/test-gl-sync-abstraction.cpp
     ${DALI_TEST_SUITE_DIR}/test-trace-call-stack.cpp