From: Victor Cebollada Date: Wed, 11 Dec 2019 14:55:23 +0000 (+0000) Subject: VCPKG - CMakeLists.txt updated to build for vcpkg. X-Git-Tag: dali_1.4.55~3^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-core.git;a=commitdiff_plain;h=4004b45e4fdb1fedc24dc6db0352d77276679da3 VCPKG - CMakeLists.txt updated to build for vcpkg. Change-Id: Iec9b2b83eacd7eadd5539712925452d4255e9047 Signed-off-by: Victor Cebollada --- diff --git a/build/tizen/CMakeLists.txt b/build/tizen/CMakeLists.txt index 1fea1cc..94dbedb 100644 --- a/build/tizen/CMakeLists.txt +++ b/build/tizen/CMakeLists.txt @@ -1,4 +1,4 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +CMAKE_MINIMUM_REQUIRED(VERSION 3.1) CMAKE_POLICY(SET CMP0012 NEW) # Prevent dereferencing of OFF/ON as variables SET(name "dali-core") @@ -7,11 +7,11 @@ PROJECT(${name}) SET(PKG_NAME ${name}) SET(GCC_COMPILER_VERSION_REQUIRED "6") -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS GCC_COMPILER_VERSION_REQUIRED) +IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + IF(CMAKE_CXX_COMPILER_VERSION VERSION_LESS GCC_COMPILER_VERSION_REQUIRED) MESSAGE(FATAL_ERROR "The GCC required compiler version is " ${GCC_COMPILER_VERSION_REQUIRED}) - endif() -endif() + ENDIF() +ENDIF() # API VERSION (Not DALi release version) SET(${name}_VERSION_MAJOR 0) @@ -29,6 +29,13 @@ OPTION(ENABLE_BACKTRACE "Enable Backtrace" OFF) OPTION(ENABLE_LOCK_BACKTRACE "Enable" OFF) OPTION(ENABLE_COVERAGE "Coverage" OFF) OPTION(ENABLE_TRACE "Enable Trace" OFF) +OPTION(ENABLE_PKG_CONFIGURE "Use pkgconfig" ON) +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 up compiler definitions @@ -39,28 +46,46 @@ ELSE() MESSAGE( STATUS "CMAKE_BUILD_TYPE: " Release ) ENDIF() -ADD_DEFINITIONS(-DPIC -DSTDC_HEADERS) - -IF("${ARCH}" STREQUAL "arm") - ADD_DEFINITIONS("-DTARGET") -ENDIF("${ARCH}" STREQUAL "arm") - IF( ENABLE_DEBUG ) ADD_DEFINITIONS( "-DDEBUG_ENABLED" ) SET( ENABLE_EXPORTALL ON ) -ENDIF( ENABLE_DEBUG ) +ENDIF() + +IF( WIN32 ) # WIN32 includes x64 as well according to the cmake doc. + + IF(NOT DEFINED STATIC) + ADD_DEFINITIONS( "-DBUILDING_DALI_CORE" ) + ENDIF() + +ELSEIF( UNIX ) + + IF( NOT ${ENABLE_EXPORTALL} ) + ADD_DEFINITIONS( "-DHIDE_DALI_INTERNALS" ) + ENDIF() + + ADD_DEFINITIONS(-DPIC -DSTDC_HEADERS) -IF( NOT ${ENABLE_EXPORTALL} ) - ADD_DEFINITIONS( "-fvisibility=hidden -DHIDE_DALI_INTERNALS" ) -ENDIF( NOT ${ENABLE_EXPORTALL} ) + IF("${ARCH}" STREQUAL "arm") + ADD_DEFINITIONS("-DTARGET") + ENDIF() + + IF( NOT ${ENABLE_EXPORTALL} ) + ADD_DEFINITIONS( "-fvisibility=hidden" ) + ENDIF() + +ENDIF() IF( ENABLE_BACKTRACE OR ENABLE_LOCK_BACKTRACE ) ADD_DEFINITIONS( "-DBACKTRACE_ENABLED" ) -ENDIF( ENABLE_BACKTRACE OR ENABLE_LOCK_BACKTRACE ) +ENDIF() IF( ENABLE_LOCK_BACKTRACE ) ADD_DEFINITIONS( "-DLOCK_BACKTRACE_ENABLED" ) -ENDIF( ENABLE_LOCK_BACKTRACE ) +ENDIF() + +IF( ENABLE_TRACE ) + ADD_DEFINITIONS("-DTRACE_ENABLED") +ENDIF() # Deployment folder should come from spec file or command line: SET( PREFIX ${CMAKE_INSTALL_PREFIX}) @@ -82,46 +107,58 @@ IF( NOT INCLUDE_DIR ) ENDIF() # Set up the lib dir -SET( LIB_DIR $ENV{libdir} ) -IF( NOT LIB_DIR ) - SET( LIB_DIR ${CMAKE_INSTALL_LIBDIR} ) -ENDIF() -IF( NOT LIB_DIR ) +IF( SET_VCPKG_INSTALL_PREFIX ) SET( LIB_DIR ${PREFIX}/lib ) + 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() -# Configure the pkg-config file -# 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 ) -CONFIGURE_FILE( ${CORE_PKG_CFG_FILE}.in ${CORE_PKG_CFG_FILE} @ONLY ) - -# 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 -# those issues at some point. -IF( NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" ) - ADD_COMPILE_OPTIONS( -Werror ) +IF( ENABLE_PKG_CONFIGURE ) + # Configure the pkg-config file + # 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 ) + CONFIGURE_FILE( ${CORE_PKG_CFG_FILE}.in ${CORE_PKG_CFG_FILE} @ONLY ) ENDIF() -ADD_COMPILE_OPTIONS( -Wall -Wextra -Wno-unused-parameter -Wfloat-equal -Wno-class-memaccess -Wno-cast-function-type ) +IF( WIN32 ) # WIN32 includes x64 as well according to the cmake doc. -IF( ENABLE_COVERAGE OR "$ENV{CXXFLAGS}" MATCHES --coverage ) - ADD_COMPILE_OPTIONS( --coverage ) - SET(ENABLE_COVERAGE ON) - SET(COVERAGE --coverage) -ENDIF() + 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. -IF( ENABLE_TRACE ) - ADD_DEFINITIONS("-DTRACE_ENABLED") -ENDIF() +ELSEIF( UNIX ) + # 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 + # those issues at some point. + IF( NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" ) + ADD_COMPILE_OPTIONS( -Werror ) + ENDIF() + + ADD_COMPILE_OPTIONS( -Wall -Wextra -Wno-unused-parameter -Wfloat-equal -Wno-class-memaccess -Wno-cast-function-type ) + + IF( ENABLE_COVERAGE OR "$ENV{CXXFLAGS}" MATCHES --coverage ) + ADD_COMPILE_OPTIONS( --coverage ) + SET(ENABLE_COVERAGE ON) + SET(COVERAGE --coverage) + ENDIF() + +ENDIF() INCLUDE_DIRECTORIES( ${ROOT_SRC_DIR} + ${SYSTEM_INCLUDE_DIR} ) SET(SOURCE_DIR "${ROOT_SRC_DIR}/dali") @@ -135,10 +172,10 @@ INCLUDE( ${ROOT_SRC_DIR}/dali/internal/file.list ) INCLUDE( ${ROOT_SRC_DIR}/dali/integration-api/file.list ) INCLUDE( ${ROOT_SRC_DIR}/dali/public-api/file.list ) INCLUDE( ${ROOT_SRC_DIR}/dali/devel-api/file.list ) -IF( UNIX ) - INCLUDE( ${ROOT_SRC_DIR}/dali/internal/file-unix.list ) -ELSEIF( WIN32 ) +IF( WIN32 ) INCLUDE( ${ROOT_SRC_DIR}/dali/internal/file-windows.list ) +ELSEIF( UNIX ) + INCLUDE( ${ROOT_SRC_DIR}/dali/internal/file-unix.list ) ENDIF() INCLUDE( ${ROOT_SRC_DIR}/doc/file.list ) @@ -150,9 +187,13 @@ ENDIF() ADD_LIBRARY( ${name} ${LIBTYPE} ${SOURCES} ) # pthread required due to gcc issue -FIND_LIBRARY(PTHREAD pthread) -IF(PTHREAD) - SET(OPTIONAL_LIBS ${OPTIONAL_LIBS} -lpthread) +IF( WIN32 ) + SET( OPTIONAL_LIBS ${OPTIONAL_LIBS} dali-windows-dependencies::dali-windows-dependencies ) +ELSEIF( UNIX ) + FIND_LIBRARY(PTHREAD pthread) + IF(PTHREAD) + SET(OPTIONAL_LIBS ${OPTIONAL_LIBS} -lpthread) + ENDIF() ENDIF() TARGET_LINK_LIBRARIES( ${name} @@ -168,10 +209,35 @@ SET_TARGET_PROPERTIES( ${name} ) # Install the library so file and symlinks -INSTALL( TARGETS ${name} DESTINATION ${LIB_DIR} ) +IF( INSTALL_CMAKE_MODULES ) + INSTALL( TARGETS ${name} + EXPORT ${name}-targets + LIBRARY DESTINATION ${LIB_DIR} + ARCHIVE DESTINATION ${LIB_DIR} + RUNTIME DESTINATION ${BIN_DIR} + ) + + INSTALL( + EXPORT ${name}-targets + NAMESPACE ${name}:: + FILE ${name}-targets.cmake + DESTINATION share/${name} + ) + + FILE( WRITE ${CMAKE_CURRENT_BINARY_DIR}/${name}-config.cmake " + include(CMakeFindDependencyMacro) + include(\${CMAKE_CURRENT_LIST_DIR}/${name}-targets.cmake) + ") + INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}-config.cmake DESTINATION share/${name} ) +ELSE() + INSTALL( TARGETS ${name} DESTINATION ${LIB_DIR} ) +ENDIF() + # Install the pkg-config file -INSTALL( FILES ${CORE_PKG_CFG_FILE} DESTINATION ${LIB_DIR}/pkgconfig ) +IF( ENABLE_PKG_CONFIGURE ) + INSTALL( FILES ${CORE_PKG_CFG_FILE} DESTINATION ${LIB_DIR}/pkgconfig ) +ENDIF() # macro for installing headers by replacing prefix. (TODO, investigate # if there is a CMAKE way of doing this automatically) @@ -193,7 +259,7 @@ INSTALL_HEADERS_WITH_DIRECTORY(PACKAGE_DOXY_HEADERS ${PACKAGE_DOXY_SRC_DIR} "dal # The DALI_CORE_PREFIX must be set if this CMakeLists.txt is executed # from the top-level CMake script using ADD_SUBDIRECTORY() to avoid # target names duplication with other DALi modules. -IF( UNIX ) +IF( ENABLE_COVERAGE ) FIND_PROGRAM( LCOV_BIN "lcov" ) IF( LCOV_BIN ) @@ -253,29 +319,32 @@ IF( UNIX ) ) ENDIF( LCOV_BIN ) -ENDIF( UNIX ) - -# Linker Test -SET( DALI_TEST_SUITE_DIR ${ROOT_SRC_DIR}/automated-tests/src/dali/dali-test-suite-utils ) -SET( LINKER_TEST_NAME ${DALI_CORE_PREFIX}linker-test ) -SET( LINKER_TEST_SOURCES - linker-test.cpp - ${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 -) -ADD_EXECUTABLE( ${LINKER_TEST_NAME} ${LINKER_TEST_SOURCES} ) -TARGET_LINK_LIBRARIES(${LINKER_TEST_NAME} ${name} ) -TARGET_INCLUDE_DIRECTORIES( ${LINKER_TEST_NAME} PRIVATE ${DALI_TEST_SUITE_DIR} ) +ENDIF() + +IF( ENABLE_LINK_TEST ) + # Linker Test + SET( DALI_TEST_SUITE_DIR ${ROOT_SRC_DIR}/automated-tests/src/dali/dali-test-suite-utils ) + SET( LINKER_TEST_NAME ${DALI_CORE_PREFIX}linker-test ) + SET( LINKER_TEST_SOURCES + linker-test.cpp + ${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 + ) + ADD_EXECUTABLE( ${LINKER_TEST_NAME} ${LINKER_TEST_SOURCES} ) + TARGET_LINK_LIBRARIES(${LINKER_TEST_NAME} ${name} ) + TARGET_INCLUDE_DIRECTORIES( ${LINKER_TEST_NAME} PRIVATE ${DALI_TEST_SUITE_DIR} ) +ENDIF() # Configuration Messages MESSAGE( STATUS "Configuration:\n" ) MESSAGE( STATUS "Prefix: " ${PREFIX} ) MESSAGE( STATUS "Lib Dir: " ${LIB_DIR} ) +MESSAGE( STATUS "Bin Dir: " ${BIN_DIR} ) MESSAGE( STATUS "Include Dir: " ${INCLUDE_DIR} ) MESSAGE( STATUS "Debug build: " ${ENABLE_DEBUG} ) MESSAGE( STATUS "Export all symbols: " ${ENABLE_EXPORTALL} ) @@ -283,5 +352,7 @@ MESSAGE( STATUS "Backtrace: " ${ENABLE_BACKTRACE} ) MESSAGE( STATUS "Scoped Lock backtrace: " ${ENABLE_LOCK_BACKTRACE} ) MESSAGE( STATUS "Coverage: " ${ENABLE_COVERAGE} ) MESSAGE( STATUS "Trace: " ${ENABLE_TRACE} ) +MESSAGE( STATUS "Use pkg configure: " ${ENABLE_PKG_CONFIGURE} ) +MESSAGE( STATUS "Enable link test: " ${ENABLE_LINK_TEST} ) MESSAGE( STATUS "CXXFLAGS: " ${CMAKE_CXX_FLAGS} ) MESSAGE( STATUS "LDFLAGS: " ${CMAKE_SHARED_LINKER_FLAGS_INIT}${CMAKE_SHARED_LINKER_FLAGS} )