From 364c5c4cd8508121e98e640fead39abf724d93a1 Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Wed, 1 Feb 2017 12:25:43 -0200 Subject: [PATCH] cmake: handle 'FindXXX.cmake' standard with 'find-XXX' libraries. One can use virtual 'find-XXX' entries in LIBRARIES or PUBLIC_LIBRARIES to use XXX_LIBRARIES and XXX_INCLUDE_DIR. --- cmake/helpers/EflMacros.cmake | 84 +++++++++++++++++++++++++++++++++++ src/lib/eet/CMakeLists.txt | 2 +- src/lib/emile/CMakeLists.txt | 3 +- 3 files changed, 86 insertions(+), 3 deletions(-) diff --git a/cmake/helpers/EflMacros.cmake b/cmake/helpers/EflMacros.cmake index c48270e1f2..98ac3f7392 100644 --- a/cmake/helpers/EflMacros.cmake +++ b/cmake/helpers/EflMacros.cmake @@ -870,6 +870,30 @@ function(EFL_SUPPORT_LIB _target) set(_compile_flags "${_compile_flags} ${_c}") endforeach() + set(_libraries) + foreach(_l ${LIBRARIES}) + if(${_l} MATCHES "^find-") + string(REGEX REPLACE "^find-" "" _v "${_l}") + list(APPEND _libraries ${${_v}_LIBRARIES}) + list(APPEND SYSTEM_INCLUDE_DIRECTORIES ${${_v}_INCLUDE_DIR}) + else() + list(APPEND _libraries ${_l}) + endif() + endforeach() + set(LIBRARIES ${_libraries}) + + set(_public_libraries) + foreach(_l ${PUBLIC_LIBRARIES}) + if(${_l} MATCHES "^find-") + string(REGEX REPLACE "^find-" "" _v "${_l}") + list(APPEND _public_libraries ${${_v}_LIBRARIES}) + list(APPEND SYSTEM_INCLUDE_DIRECTORIES ${${_v}_INCLUDE_DIR}) + else() + list(APPEND _public_libraries ${_l}) + endif() + endforeach() + set(PUBLIC_LIBRARIES ${_public_libraries}) + add_library(support-${_target} ${LIBRARY_TYPE} ${_sources} ${_headers}) set_target_properties(support-${_target} PROPERTIES OBJECT_DEPENDS "${_obj_deps}" @@ -1080,6 +1104,30 @@ function(EFL_LIB _target) set(_compile_flags "${_compile_flags} ${_c}") endforeach() + set(_libraries) + foreach(_l ${LIBRARIES}) + if(${_l} MATCHES "^find-") + string(REGEX REPLACE "^find-" "" _v "${_l}") + list(APPEND _libraries ${${_v}_LIBRARIES}) + list(APPEND SYSTEM_INCLUDE_DIRECTORIES ${${_v}_INCLUDE_DIR}) + else() + list(APPEND _libraries ${_l}) + endif() + endforeach() + set(LIBRARIES ${_libraries}) + + set(_public_libraries) + foreach(_l ${PUBLIC_LIBRARIES}) + if(${_l} MATCHES "^find-") + string(REGEX REPLACE "^find-" "" _v "${_l}") + list(APPEND _public_libraries ${${_v}_LIBRARIES}) + list(APPEND SYSTEM_INCLUDE_DIRECTORIES ${${_v}_INCLUDE_DIR}) + else() + list(APPEND _public_libraries ${_l}) + endif() + endforeach() + set(PUBLIC_LIBRARIES ${_public_libraries}) + add_library(${_target} ${LIBRARY_TYPE} ${_sources} ${_headers}) set_target_properties(${_target} PROPERTIES FRAMEWORK TRUE @@ -1253,6 +1301,18 @@ function(EFL_BIN _binname) EFL_PKG_CONFIG_EVAL(${_bintarget} "${PKG_CONFIG_REQUIRES_PRIVATE}" "") + set(_libraries) + foreach(_l ${LIBRARIES}) + if(${_l} MATCHES "^find-") + string(REGEX REPLACE "^find-" "" _v "${_l}") + list(APPEND _libraries ${${_v}_LIBRARIES}) + list(APPEND SYSTEM_INCLUDE_DIRECTORIES ${${_v}_INCLUDE_DIR}) + else() + list(APPEND _libraries ${_l}) + endif() + endforeach() + set(LIBRARIES ${_libraries}) + add_executable(${_bintarget} ${_sources}) if(_obj_deps) @@ -1383,6 +1443,18 @@ function(EFL_TEST _testname) EFL_PKG_CONFIG_EVAL(${_testtarget} "${PKG_CONFIG_REQUIRES_PRIVATE}" "") + set(_libraries) + foreach(_l ${LIBRARIES}) + if(${_l} MATCHES "^find-") + string(REGEX REPLACE "^find-" "" _v "${_l}") + list(APPEND _libraries ${${_v}_LIBRARIES}) + list(APPEND SYSTEM_INCLUDE_DIRECTORIES ${${_v}_INCLUDE_DIR}) + else() + list(APPEND _libraries ${_l}) + endif() + endforeach() + set(LIBRARIES ${_libraries}) + add_executable(${_testtarget} EXCLUDE_FROM_ALL ${_sources}) if(_obj_deps) @@ -1530,6 +1602,18 @@ function(EFL_MODULE _modname) EFL_PKG_CONFIG_EVAL(${_modtarget} "${PKG_CONFIG_REQUIRES_PRIVATE}" "") + set(_libraries) + foreach(_l ${LIBRARIES}) + if(${_l} MATCHES "^find-") + string(REGEX REPLACE "^find-" "" _v "${_l}") + list(APPEND _libraries ${${_v}_LIBRARIES}) + list(APPEND SYSTEM_INCLUDE_DIRECTORIES ${${_v}_INCLUDE_DIR}) + else() + list(APPEND _libraries ${_l}) + endif() + endforeach() + set(LIBRARIES ${_libraries}) + add_library(${_modtarget} ${_modtype} ${_sources}) set_target_properties(${_modtarget} PROPERTIES OBJECT_DEPENDS "${_obj_deps}" diff --git a/src/lib/eet/CMakeLists.txt b/src/lib/eet/CMakeLists.txt index 76b71a47b5..fb2c02d297 100644 --- a/src/lib/eet/CMakeLists.txt +++ b/src/lib/eet/CMakeLists.txt @@ -2,7 +2,6 @@ set(DESCRIPTION "Library for speedy data storage, retrieval, and compression") set(PKG_CONFIG_REQUIRES_PRIVATE zlib>=1.2.3 - #libjpeg is hard to find. there is a cmake module that does find it. and thats checked in common.cmake ) set(PUBLIC_LIBRARIES @@ -13,6 +12,7 @@ set(PUBLIC_LIBRARIES set(LIBRARIES m support-rg_etc + find-JPEG ) set(PUBLIC_HEADERS diff --git a/src/lib/emile/CMakeLists.txt b/src/lib/emile/CMakeLists.txt index 544a50d925..5ea77fdbc1 100644 --- a/src/lib/emile/CMakeLists.txt +++ b/src/lib/emile/CMakeLists.txt @@ -2,8 +2,6 @@ set(DESCRIPTION "Library for simplified serialization, compression and ciphering set(PKG_CONFIG_REQUIRES_PRIVATE zlib>=1.2.3 - #libjpeg is hard to find. there is a cmake module that does find it. and thats checked in common.cmake - #libjpeg ) set(LIBRARIES @@ -11,6 +9,7 @@ set(LIBRARIES efl m support-rg_etc + find-JPEG ) set(PUBLIC_HEADERS