| # - Set of macros and functions that are useful for building the EFL port. |
| # |
| # The following functions are currently defined: |
| # FIND_EFL_LIBRARY(<name> HEADERS <header1> ... HEADER_PREFIXES <prefix1> ... LIBRARY <libname>) |
| # Looks for the header files inside the given prefix directories, and for the library |
| # passed to the LIBRARY parameter. |
| # Two #defines in the form <UPPERCASED_NAME>_VERSION_MAJOR and <UPPERCASED_NAME>_VERSION_MINOR |
| # are looked for in all the given headers, and the first occurrence is used to build the library's |
| # version number. |
| # This function defines the following variables: |
| # - <UPPERCASED_NAME>_INCLUDE_DIRS: All the directories required by this library's headers. |
| # - <UPPERCASED_NAME>_LIBRARIES: All the libraries required to link against this library. |
| # - <UPPERCASED_NAME>_VERSION: The library's version in the format "major.minor". |
| # |
| # Copyright (C) 2012 Intel Corporation. All rights reserved. |
| # |
| # Redistribution and use in source and binary forms, with or without |
| # modification, are permitted provided that the following conditions |
| # are met: |
| # 1. Redistributions of source code must retain the above copyright |
| # notice, this list of conditions and the following disclaimer. |
| # 2. Redistributions in binary form must reproduce the above copyright |
| # notice, this list of conditions and the following disclaimer in the |
| # documentation and/or other materials provided with the distribution. |
| # |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS |
| # IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS |
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
| # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
| # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
| # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
| # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| include(CMakeParseArguments) |
| |
| function(FIND_EFL_LIBRARY _name) |
| CMAKE_PARSE_ARGUMENTS(PARAM "" "LIBRARY" "HEADERS;HEADER_PREFIXES" ${ARGN}) |
| |
| string(TOUPPER ${_name} _name_upper) |
| set(_version_found FALSE) |
| |
| foreach (_current_header ${PARAM_HEADERS}) |
| find_path(${_current_header}_INCLUDE_DIR NAMES ${_current_header} PATH_SUFFIXES ${PARAM_HEADER_PREFIXES}) |
| |
| set(_header_path "${${_current_header}_INCLUDE_DIR}/${_current_header}") |
| if (EXISTS ${_header_path}) |
| list(APPEND ${_name}_INCLUDE_DIRS "${${_current_header}_INCLUDE_DIR}") |
| |
| if (NOT _version_found) |
| file(READ "${_header_path}" _header_contents) |
| |
| string(REGEX MATCH "#define +${_name_upper}_VERSION_MAJOR +([0-9]+)" _dummy "${_header_contents}") |
| set(_version_major "${CMAKE_MATCH_1}") |
| string(REGEX MATCH "#define +${_name_upper}_VERSION_MINOR +([0-9]+)" _dummy "${_header_contents}") |
| set(_version_minor "${CMAKE_MATCH_1}") |
| |
| if (_version_major AND _version_minor) |
| set(_version_found TRUE) |
| endif () |
| endif () |
| endif () |
| endforeach () |
| |
| find_library(${_name}_LIBRARIES NAMES ${PARAM_LIBRARY}) |
| |
| set(${_name}_INCLUDE_DIRS ${${_name}_INCLUDE_DIRS} PARENT_SCOPE) |
| set(${_name}_LIBRARIES ${${_name}_LIBRARIES} PARENT_SCOPE) |
| set(${_name}_VERSION "${_version_major}.${_version_minor}" PARENT_SCOPE) |
| endfunction() |