efl/cmake/config/eina.cmake

81 lines
3.1 KiB
CMake

# set default option values based on BUILD_PROFILE
set(EINA_DEBUG_THREADS OFF)
if("${BUILD_PROFILE}" STREQUAL "dev")
elseif("${BUILD_PROFILE}" STREQUAL "debug")
set(EINA_DEBUG_THREADS ON)
elseif("${BUILD_PROFILE}" STREQUAL "release")
endif()
EFL_OPTION(EINA_MAGIC_DEBUG "magic debug of eina structure" ON)
EFL_OPTION(EINA_DEBUG_THREADS "debugging of eina threads" ${EINA_DEBUG_THREADS})
set(EINA_MODULE_TYPE_MP_CHAINED_POOL_DEFAULT "STATIC")
set(EINA_MODULE_TYPE_MP_ONE_BIG_DEFAULT "STATIC")
set(EINA_MODULE_TYPE_MP_PASS_THROUGH_DEFAULT "STATIC")
# no CHECK_INIT() yet, all CHECK_APPEND_DEFINE(), FUNC_CHECK(),
# HEADER_CHECK() and TYPE_CHECK() goes to src/lib/efl/config_gen.h
if(ENABLE_VALGRIND)
CHECK_APPEND_DEFINE(NVALGRIND "")
else()
CHECK_APPEND_DEFINE(NVALGRIND 1)
endif()
# we want the following checks inside src/lib/eina/eina_config.h to be
# generated from cmake/post/eina.cmake.
#
# By default all symbols are prefixed with EINA_
CHECK_INIT(eina)
if("${BUILD_PROFILE}" STREQUAL "dev")
elseif("${BUILD_PROFILE}" STREQUAL "debug")
set(EINA_STRINGSHARE_USAGE ON)
set(EINA_DEBUG_MALLOC ON)
set(EINA_COW_MAGIC_ON ON)
set(EINA_DEFAULT_MEMPOOL ON)
set(EINA_DEBUG_MALLOC ON)
elseif("${BUILD_PROFILE}" STREQUAL "release")
set(EINA_LOG_LEVEL_MAXIMUM 3)
endif()
CHECK_APPEND_DEFINE(EINA_MAGIC_DEBUG ${EINA_MAGIC_DEBUG})
CHECK_APPEND_DEFINE(EINA_SAFETY_CHECKS 1)
CHECK_APPEND_DEFINE(EINA_DEBUG_THREADS "${EINA_DEBUG_THREADS}")
CHECK_APPEND_DEFINE(EINA_STRINGSHARE_USAGE "${EINA_STRINGSHARE_USAGE}")
CHECK_APPEND_DEFINE(EINA_DEBUG_MALLOC "${EINA_DEBUG_MALLOC}")
CHECK_APPEND_DEFINE(EINA_COW_MAGIC_ON "${EINA_COW_MAGIC_ON}")
CHECK_APPEND_DEFINE(EINA_DEFAULT_MEMPOOL "${EINA_DEFAULT_MEMPOOL}")
CHECK_APPEND_DEFINE(EINA_DEBUG_MALLOC "${EINA_DEBUG_MALLOC}")
CHECK_APPEND_DEFINE(EINA_LOG_LEVEL_MAXIMUM "${EINA_LOG_LEVEL_MAXIMUM}")
CHECK_APPEND_DEFINE(EINA_HAVE_THREADS "${EFL_HAVE_THREADS}")
#check for symbols in pthread
#TODO Make the definitions depending on the platform
FUNC_CHECK(pthread_barrier_init NAME EINA_HAVE_PTHREAD_BARRIER INCLUDE_FILES pthread.h FLAGS ${CMAKE_THREAD_LIBS_INIT} DEFINITIONS "-D_GNU_SOURCE=1")
FUNC_CHECK(pthread_attr_setaffinity_np NAME EINA_HAVE_PTHREAD_AFFINITY INCLUDE_FILES pthread.h FLAGS ${CMAKE_THREAD_LIBS_INIT} DEFINITIONS "-D_GNU_SOURCE=1")
FUNC_CHECK(pthread_setname_np NAME EINA_HAVE_PTHREAD_SETNAME INCLUDE_FILES pthread.h FLAGS ${CMAKE_THREAD_LIBS_INIT} DEFINITIONS "-D_GNU_SOURCE=1")
FUNC_CHECK(pthread_spin_init NAME EINA_HAVE_POSIX_SPINLOCK INCLUDE_FILES pthread.h FLAGS ${CMAKE_THREAD_LIBS_INIT} DEFINITIONS "-D_GNU_SOURCE=1")
#check for eina header files that are required
HEADER_CHECK(alloca.h)
HEADER_CHECK(byteswap.h)
HEADER_CHECK(fnmatch.h)
#only enable log when fnmatch is there
CHECK_APPEND_DEFINE(EINA_ENABLE_LOG ${EINA_HAVE_FNMATCH_H})
HEADER_CHECK(dirent.h)
TYPE_CHECK(wchar_t)
TYPE_CHECK(uintptr_t)
TYPE_CHECK(wchar_t)
# TODO: fix define name to not need a name!
#check for swap16/32/64
FUNC_CHECK(bswap_16 NAME EINA_HAVE_BSWAP16 INCLUDE_FILES byteswap.h)
FUNC_CHECK(bswap_32 NAME EINA_HAVE_BSWAP32 INCLUDE_FILES byteswap.h)
FUNC_CHECK(bswap_64 NAME EINA_HAVE_BSWAP64 INCLUDE_FILES byteswap.h)
#Check if there is the alloca header