From 8df6ac453d71409f767de147726087b22969c2bf Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Sat, 21 Jan 2017 10:20:18 -0200 Subject: [PATCH] EflMacros: automatically provide ON;OFF;STATIC option and defines. Automatically create one option to enable, disable or make it statically linked into the code, with a define to reflect build type. --- cmake/config/eina.cmake | 11 +++++------ cmake/helpers/EflMacros.cmake | 14 +++++++++++++- src/modules/eina/mp/chained_pool/CMakeLists.txt | 2 -- src/modules/eina/mp/one_big/CMakeLists.txt | 2 -- src/modules/eina/mp/pass_through/CMakeLists.txt | 2 -- 5 files changed, 18 insertions(+), 13 deletions(-) delete mode 100644 src/modules/eina/mp/chained_pool/CMakeLists.txt delete mode 100644 src/modules/eina/mp/one_big/CMakeLists.txt delete mode 100644 src/modules/eina/mp/pass_through/CMakeLists.txt diff --git a/cmake/config/eina.cmake b/cmake/config/eina.cmake index 0e760587d6..a91d76dc3e 100644 --- a/cmake/config/eina.cmake +++ b/cmake/config/eina.cmake @@ -19,17 +19,16 @@ EFL_OPTION(EINA_MAGIC_DEBUG "magic debug of eina structure" ON) EFL_OPTION(EINA_DEBUG_THREADS "debugging of eina threads" ${EINA_DEBUG_THREADS}) EFL_OPTION(ENABLE_VALGRIND "valgrind support" ${ENABLE_VALGRIND}) -EFL_OPTION(EINA_BUILD_CHAINED "Build Eina's chained mempool" "ON" CHOICE ON;OFF;STATIC) -EFL_OPTION(EINA_BUILD_ONE_BIG "Build Eina's one-big mempool" "ON" CHOICE ON;OFF;STATIC) -EFL_OPTION(EINA_BUILD_PASS_THROUGH "Build Eina's pass-through mempool" "STATIC" CHOICE ON;OFF;STATIC) +SET_GLOBAL(EINA_MODULE_TYPE_MP_PASS_THROUGH_DEFAULT "STATIC") -if(EINA_BUILD_CHAINED STREQUAL "STATIC") +# TODO: change code to avoid these +if(EINA_MODULE_TYPE_MP_PASS_THROUGH STREQUAL "STATIC") SET_GLOBAL(EINA_STATIC_BUILD_CHAINED_POOL 1) endif() -if(EINA_BUILD_ONE_BIG STREQUAL "STATIC") +if(EINA_MODULE_TYPE_MP_PASS_THROUGH STREQUAL "STATIC") SET_GLOBAL(EINA_STATIC_BUILD_ONE_BIG 1) endif() -if(EINA_BUILD_PASS_THROUGH STREQUAL "STATIC") +if(EINA_MODULE_TYPE_MP_PASS_THROUGH STREQUAL "STATIC") SET_GLOBAL(EINA_STATIC_BUILD_PASS_THROUGH 1) endif() diff --git a/cmake/helpers/EflMacros.cmake b/cmake/helpers/EflMacros.cmake index 2042c73a4a..9902a1df54 100644 --- a/cmake/helpers/EflMacros.cmake +++ b/cmake/helpers/EflMacros.cmake @@ -778,11 +778,21 @@ function(EFL_MODULE _modname) set(_modoutdir lib/${EFL_LIB_CURRENT}/modules/${EFL_MODULE_SCOPE}/${_modname}/v-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}) set(_modbindir ${EFL_MODULES_BINARY_DIR}/${EFL_MODULE_SCOPE}/${_modname}) set(_modtarget ${EFL_LIB_CURRENT}-module-${EFL_MODULE_SCOPE}-${_modname}) + string(TOUPPER "${EFL_LIB_CURRENT}_MODULE_TYPE_${EFL_MODULE_SCOPE}_${_modname}" _modoptionname) + if(NOT ${_modoptionname}_DEFAULT) + set(${_modoptionname}_DEFAULT "ON") + endif() + EFL_OPTION(${_modoptionname} "Build ${EFL_LIB_CURRENT} module ${EFL_MODULE_SCOPE}/${_modname}" ${${_modoptionname}_DEFAULT} CHOICE ON;OFF;STATIC) else() set(_modsrcdir ${EFL_MODULES_SOURCE_DIR}/${_modname}) set(_modoutdir lib/${EFL_LIB_CURRENT}/modules/${_modname}/v-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}) set(_modbindir ${EFL_MODULES_BINARY_DIR}/${_modname}) set(_modtarget ${EFL_LIB_CURRENT}-module-${_modname}) + string(TOUPPER "${EFL_LIB_CURRENT}_MODULE_TYPE_${_modname}" _modoptionname) + if(NOT ${_modoptionname}_DEFAULT) + set(${_modoptionname}_DEFAULT "ON") + endif() + EFL_OPTION(${_modoptionname} "Build ${EFL_LIB_CURRENT} module ${_modname}" ${${_modoptionname}_DEFAULT} CHOICE ON;OFF;STATIC) endif() set(SOURCES) @@ -791,7 +801,7 @@ function(EFL_MODULE _modname) set(INCLUDE_DIRECTORIES) set(SYSTEM_INCLUDE_DIRECTORIES) set(DEFINITIONS) - set(MODULE_TYPE "ON") + set(MODULE_TYPE "${${_modoptionname}}") set(INSTALL_DIR ${_modoutdir}) _EFL_INCLUDE_OR_DETECT("Module ${_modtarget}" ${_modsrcdir}) @@ -838,6 +848,7 @@ function(EFL_MODULE _modname) if("${MODULE_TYPE}" STREQUAL "STATIC") target_link_libraries(${EFL_LIB_CURRENT} LINK_PRIVATE ${_modtarget}) + target_compile_definitions(${EFL_LIB_CURRENT} PRIVATE "-D${_modoptionname}_STATIC=1") target_include_directories(${_modtarget} PRIVATE ${EFL_LIB_SOURCE_DIR} ${EFL_LIB_BINARY_DIR}) @@ -847,6 +858,7 @@ function(EFL_MODULE _modname) LIST_APPEND_GLOBAL(${EFL_LIB_CURRENT}_STATIC_MODULES ${_modtarget}) else() target_link_libraries(${_modtarget} LINK_PRIVATE ${EFL_LIB_CURRENT}) + target_compile_definitions(${EFL_LIB_CURRENT} PRIVATE "-D${_modoptionname}_DYNAMIC=1") LIST_APPEND_GLOBAL(${EFL_LIB_CURRENT}_MODULES ${_modtarget}) if(INSTALL_DIR) install(TARGETS ${_modtarget} LIBRARY DESTINATION "${INSTALL_DIR}") diff --git a/src/modules/eina/mp/chained_pool/CMakeLists.txt b/src/modules/eina/mp/chained_pool/CMakeLists.txt deleted file mode 100644 index 1fb1dd57d8..0000000000 --- a/src/modules/eina/mp/chained_pool/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -set(MODULE_TYPE ${EINA_BUILD_CHAINED}) -set(SOURCES eina_chained_mempool.c) diff --git a/src/modules/eina/mp/one_big/CMakeLists.txt b/src/modules/eina/mp/one_big/CMakeLists.txt deleted file mode 100644 index 42a3929838..0000000000 --- a/src/modules/eina/mp/one_big/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -set(MODULE_TYPE ${EINA_BUILD_ONE_BIG}) -set(SOURCES eina_one_big.c) diff --git a/src/modules/eina/mp/pass_through/CMakeLists.txt b/src/modules/eina/mp/pass_through/CMakeLists.txt deleted file mode 100644 index f863843b7c..0000000000 --- a/src/modules/eina/mp/pass_through/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -set(MODULE_TYPE ${EINA_BUILD_PASS_THROUGH}) -set(SOURCES eina_pass_through.c)