forked from enlightenment/efl
cmake: add emile and EFL_OPTION_BACKEND()
Add emile and with that EFL_OPTION_BACKEND() to support choosing among different backends for something, in emile's case it's crypto backend (gnutls, openssl or none).
This commit is contained in:
parent
8de264f597
commit
b67acda0d6
|
@ -35,6 +35,7 @@ EFL_LIB(eina)
|
|||
EFL_LIB(eolian)
|
||||
EFL_LIB(eo)
|
||||
EFL_LIB(efl)
|
||||
EFL_LIB(emile)
|
||||
EFL_LIB(ecore)
|
||||
|
||||
EFL_OPTIONS_SUMMARY()
|
||||
|
|
|
@ -8,6 +8,9 @@ find_package(Threads REQUIRED)
|
|||
pkg_check_modules(CHECK check)
|
||||
pkg_check_modules(LIBSYSTEMD libsystemd)
|
||||
pkg_check_modules(VALGRIND valgrind)
|
||||
pkg_check_modules(OPENSSL openssl>=1.0)
|
||||
pkg_check_modules(GNUTLS gnutls>=2.12.16)
|
||||
pkg_check_modules(LIBJPEG libjpeg REQUIRED)
|
||||
|
||||
set(SUGGEST_VALGRIND OFF)
|
||||
if("${BUILD_PROFILE}" STREQUAL "dev")
|
||||
|
@ -23,6 +26,8 @@ if(NOT EFL_EO_API_SUPPORT)
|
|||
EFL_OPTION_SET_MESSAGE(EFL_EO_API_SUPPORT "Risky!")
|
||||
endif()
|
||||
|
||||
EFL_OPTION_BACKEND(WITH_CRYPTO "Choose crypto backend" OPENSSL GNUTLS)
|
||||
|
||||
EFL_OPTION(ENABLE_SYSTEMD "Enable systemd support" "${LIBSYSTEMD_FOUND}" DEPENDS "LIBSYSTEMD_FOUND" OFF)
|
||||
EFL_OPTION(ENABLE_VALGRIND "Enable valgrind support" "${SUGGEST_VALGRIND}" DEPENDS "VALGRIND_FOUND" OFF)
|
||||
|
||||
|
@ -33,6 +38,7 @@ HEADER_CHECK(asm/hwcap.h)
|
|||
HEADER_CHECK(dirent.h)
|
||||
HEADER_CHECK(execinfo.h)
|
||||
HEADER_CHECK(mcheck.h)
|
||||
HEADER_CHECK(netinet/in.h)
|
||||
HEADER_CHECK(stdlib.h)
|
||||
HEADER_CHECK(sys/auxv.h)
|
||||
HEADER_CHECK(sys/mman.h)
|
||||
|
@ -79,6 +85,8 @@ if(CMAKE_THREAD_LIBS_INIT)
|
|||
endif()
|
||||
CHECK_APPEND_DEFINE(EFL_HAVE_THREADS "${EFL_HAVE_THREADS}")
|
||||
|
||||
CHECK_APPEND_DEFINE(HAVE_CIPHER ${WITH_CRYPTO_ENABLED})
|
||||
CHECK_APPEND_DEFINE(HAVE_SIGNATURE ${WITH_CRYPTO_ENABLED})
|
||||
CHECK_APPEND_DEFINE(HAVE_SYSTEMD ${ENABLE_SYSTEMD})
|
||||
|
||||
CHECK_APPEND_DEFINE(MODULE_ARCH "\"v-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}\"")
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
pkg_check_modules(LZ4 liblz4)
|
||||
|
||||
set(_choices "internal")
|
||||
set(_defval "internal")
|
||||
if(LZ4_FOUND)
|
||||
set(_choices system internal)
|
||||
set(_defval system)
|
||||
endif()
|
||||
|
||||
EFL_OPTION(WITH_LZ4 "Choose if system or internal liblz4 should be used" ${_defval} CHOICE ${_choices})
|
|
@ -28,6 +28,59 @@ unset(EFL_ALL_LIBS CACHE)
|
|||
unset(EFL_ALL_TESTS CACHE)
|
||||
unset(EFL_PKG_CONFIG_MISSING_OPTIONAL CACHE)
|
||||
|
||||
# EFL_OPTION_BACKEND(Name Help Backend1 ... BackendN
|
||||
# [DEPENDS "COND1; COND2; NOT COND3" FAILED_VALUE]
|
||||
# [REQUIRED])
|
||||
#
|
||||
# Wrapper around EFL_OPTION() and EFL_BACKEND_CHOICES()
|
||||
# that creates an option 'CHOICE' within possible backends
|
||||
# when these are found (${Backend}_FOUND).
|
||||
#
|
||||
# The REQUIRED keyword will force a valid backend, otherwise 'none' is
|
||||
# allowed.
|
||||
#
|
||||
# If a backend was chose, then ${Name}_CFLAGS and ${Name}_LDFLAGS are
|
||||
# set to lists based on ${Backend}_CFLAGS or
|
||||
# ${Backend}_INCLUDE_DIR/${Backend}_INCLUDE_DIRS and
|
||||
# ${Backend}_LDFLAGS or ${Backend}_LIBRARIES
|
||||
function(EFL_OPTION_BACKEND _name _help)
|
||||
cmake_parse_arguments(PARAMS "" "" "DEPENDS" ${ARGN})
|
||||
|
||||
EFL_BACKEND_CHOICES(${_name} ${PARAMS_UNPARSED_ARGUMENTS})
|
||||
|
||||
EFL_OPTION(${_name} "${_help}" "${${_name}_DEFAULT}"
|
||||
CHOICE ${${_name}_CHOICES}
|
||||
DEPENDS ${PARAMS_DEPENDS})
|
||||
|
||||
if(NOT ${_name} STREQUAL "none")
|
||||
string(TOUPPER "${${_name}}" _backend)
|
||||
if(DEFINED ${_backend}_CFLAGS)
|
||||
set(_cflags ${${_backend}_CFLAGS})
|
||||
else()
|
||||
set(_cflags "")
|
||||
foreach(_d ${${_backend}_INCLUDE_DIR} ${${_backend}_INCLUDE_DIRS})
|
||||
list(APPEND _cflags "-I${_d}")
|
||||
endforeach()
|
||||
endif()
|
||||
if(DEFINED ${_backend}_LDFLAGS)
|
||||
set(_ldflags ${${_backend}_LDFLAGS})
|
||||
else()
|
||||
set(_ldflags "")
|
||||
foreach(_d ${${_backend}_LIBRARIES})
|
||||
list(APPEND _ldflags "-l${_d}")
|
||||
endforeach()
|
||||
else()
|
||||
endif()
|
||||
SET_GLOBAL(${_name}_CFLAGS "${_cflags}")
|
||||
SET_GLOBAL(${_name}_LDFLAGS "${_ldflags}")
|
||||
SET_GLOBAL(${_name}_ENABLED ON)
|
||||
else()
|
||||
unset(${_name}_CFLAGS CACHE)
|
||||
unset(${_name}_LDFLAGS CACHE)
|
||||
SET_GLOBAL(${_name}_ENABLED OFF)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# EFL_OPTION(Name Help Default [STRING|BOOL|FILEPATH|PATH]
|
||||
# [CHOICE c1;...;cN]
|
||||
# [DEPENDS "COND1; COND2; NOT COND3" FAILED_VALUE])
|
||||
|
@ -441,6 +494,21 @@ function(EFL_PKG_CONFIG_EVAL_TO _var _name)
|
|||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
unset(${_var}_CFLAGS CACHE)
|
||||
unset(${_var}_LDFLAGS CACHE)
|
||||
unset(PKG_CONFIG_${_var} CACHE)
|
||||
unset(PKG_CONFIG_${_var}_CFLAGS CACHE)
|
||||
unset(PKG_CONFIG_${_var}_FOUND CACHE)
|
||||
unset(PKG_CONFIG_${_var}_INCLUDE_DIRS CACHE)
|
||||
unset(PKG_CONFIG_${_var}_INCLUDEDIR CACHE)
|
||||
unset(PKG_CONFIG_${_var}_LDFLAGS CACHE)
|
||||
unset(PKG_CONFIG_${_var}_LIBDIR CACHE)
|
||||
unset(PKG_CONFIG_${_var}_LIBRARIES CACHE)
|
||||
unset(PKG_CONFIG_${_var}_LIBRARIES CACHE)
|
||||
unset(PKG_CONFIG_${_var}_LIBRARIES_DIR CACHE)
|
||||
unset(PKG_CONFIG_${_var}_LIBS CACHE)
|
||||
unset(PKG_CONFIG_${_var}_VERSION CACHE)
|
||||
if(NOT _missing)
|
||||
SET_GLOBAL(${_var} "${_found}")
|
||||
SET_GLOBAL(${_var}_MISSING "${_missing_optional}")
|
||||
|
@ -1380,3 +1448,37 @@ function(EFL_CREATE_EO_RULES target source_dir generation_dir)
|
|||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# EFL_BACKEND_CHOICES(Prefix Choice1 .. ChoiceN)
|
||||
#
|
||||
# Helper that will check ${ChoiceN}_FOUND and if so append to
|
||||
# ${_prefix}_CHOICES as well set the first found option (in order!) as
|
||||
# ${_prefix}_DEFAULT and ${_prefix}_FOUND to ON if at least one was
|
||||
# found.
|
||||
function(EFL_BACKEND_CHOICES _prefix)
|
||||
cmake_parse_arguments(PARAMS "REQUIRED" "" "" ${ARGN})
|
||||
|
||||
set(_choices "")
|
||||
set(_defval "none")
|
||||
set(_found OFF)
|
||||
foreach(c ${PARAMS_UNPARSED_ARGUMENTS})
|
||||
if(${c}_FOUND)
|
||||
string(TOLOWER "${c}" c_lc)
|
||||
if(_defval STREQUAL "none")
|
||||
set(_defval ${c_lc})
|
||||
endif()
|
||||
set(_found ON)
|
||||
list(APPEND _choices ${c_lc})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(PARAMS_REQUIRED AND NOT _found)
|
||||
message(FATAL_ERROR "${_prefix} backend was required (one of ${PARAMS_UNPARSED_ARGUMENTS}) but none was found!")
|
||||
elseif(NOT PARAMS_REQUIRED)
|
||||
list(APPEND _choices "none")
|
||||
endif()
|
||||
|
||||
set(${_prefix}_FOUND ${_found} PARENT_SCOPE)
|
||||
set(${_prefix}_CHOICES ${_choices} PARENT_SCOPE)
|
||||
set(${_prefix}_DEFAULT ${_defval} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
set(DESCRIPTION "Library for simplified serialization, compression and ciphering")
|
||||
|
||||
set(PKG_CONFIG_REQUIRES_PRIVATE
|
||||
zlib>=1.2.3
|
||||
libjpeg
|
||||
)
|
||||
|
||||
set(LIBRARIES
|
||||
eina
|
||||
m
|
||||
)
|
||||
|
||||
set(PUBLIC_HEADERS
|
||||
Emile.h
|
||||
emile_base64.h
|
||||
emile_cipher.h
|
||||
emile_compress.h
|
||||
emile_image.h
|
||||
)
|
||||
|
||||
set(SOURCES
|
||||
emile_base64.c
|
||||
emile_compress.c
|
||||
emile_image.c
|
||||
emile_main.c
|
||||
emile_private.h
|
||||
${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/etc2_encoder.c
|
||||
${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/rg_etc1.c
|
||||
${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/rg_etc1.h
|
||||
${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/rg_etc2.c
|
||||
)
|
||||
|
||||
set(INCLUDE_DIRECTORIES
|
||||
${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc
|
||||
)
|
||||
|
||||
if(WITH_CRYPTO STREQUAL "gnutls")
|
||||
list(APPEND SOURCES emile_cipher_gnutls.c)
|
||||
list(APPEND PKG_CONFIG_REQUIRES_PRIVATE gnutls)
|
||||
elseif(WITH_CRYPTO STREQUAL "openssl")
|
||||
list(APPEND SOURCES emile_cipher_openssl.c)
|
||||
list(APPEND PKG_CONFIG_REQUIRES_PRIVATE openssl)
|
||||
else()
|
||||
list(APPEND SOURCES emile_cipher.c)
|
||||
endif()
|
||||
|
||||
if(WITH_LZ4 STREQUAL "system")
|
||||
list(APPEND PKG_CONFIG_REQUIRES_PRIVATE liblz4)
|
||||
else()
|
||||
list(APPEND SOURCES
|
||||
${CMAKE_SOURCE_DIR}/src/static_libs/lz4/lz4.c
|
||||
${CMAKE_SOURCE_DIR}/src/static_libs/lz4/lz4.h
|
||||
${CMAKE_SOURCE_DIR}/src/static_libs/lz4/lz4hc.c
|
||||
${CMAKE_SOURCE_DIR}/src/static_libs/lz4/lz4hc.h
|
||||
)
|
||||
list(APPEND INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/src/static_libs/lz4)
|
||||
endif()
|
|
@ -0,0 +1,10 @@
|
|||
set(SOURCES
|
||||
emile_suite.c
|
||||
emile_test_base.c
|
||||
emile_test_base64.c
|
||||
emile_suite.h
|
||||
)
|
||||
|
||||
set(LIBRARIES
|
||||
eina
|
||||
)
|
Loading…
Reference in New Issue