|
| 1 | +#------------------------------------------------------------------------------------ |
| 2 | +# ITNOA |
| 3 | +# |
| 4 | +# This file is based on https://github.com/snikulov/cmake-modules |
| 5 | +# |
| 6 | +# Locate OPAL library (http://www.opalvoip.org/) |
| 7 | +# This module defines |
| 8 | +# OPAL_FOUND, if false, do not try to link to OPAL |
| 9 | +# OPAL_LIBRARIES |
| 10 | +# OPAL_INCLUDE_DIRS, where to find opal headers |
| 11 | +# |
| 12 | +# 2013/03/19 - aagenosov |
| 13 | +# Module created |
| 14 | +# 2013/03/21 - aagenosov |
| 15 | +# Added macro to define version of OPAL |
| 16 | +# 2015/08/13 - snikulov |
| 17 | +# Added linux support |
| 18 | +#------------------------------------------------------------------------------------- |
| 19 | + |
| 20 | +# get version macro |
| 21 | +# first param - path to include |
| 22 | +macro(opal_get_version _include_PATH version) |
| 23 | + if (EXISTS "${_include_PATH}/opal/buildopts.h") |
| 24 | + file(STRINGS "${_include_PATH}/opal/buildopts.h" _VER_STRING_AUX REGEX ".*#define[ ]+OPAL_VERSION[ ]+") |
| 25 | + else() |
| 26 | + file(STRINGS "${_include_PATH}/opal_config.h" _VER_STRING_AUX REGEX ".*#define[ ]+OPAL_VERSION[ ]+") |
| 27 | + endif() |
| 28 | + string(REGEX MATCHALL "[0-9]+[.][0-9]+[.][0-9]+" ${version} "${_VER_STRING_AUX}") |
| 29 | +endmacro() |
| 30 | + |
| 31 | +find_package(PTLib REQUIRED) |
| 32 | + |
| 33 | +include(FindPkgConfig) |
| 34 | +PKG_CHECK_MODULES(PC_OPAL "opal") |
| 35 | + |
| 36 | +find_path(OPAL_INCLUDE_DIRS opal.h |
| 37 | + PATHS |
| 38 | + ${PC_OPAL_INCLUDE_DIRS} |
| 39 | + /usr/local/include |
| 40 | + /usr/include |
| 41 | + /opt/local/include |
| 42 | + /opt/csw/include |
| 43 | + /opt/include |
| 44 | + $ENV{OPAL_DIR}/include |
| 45 | + ${OPAL_DIR}/include |
| 46 | + ) |
| 47 | + |
| 48 | +if(PC_OPAL_FOUND) |
| 49 | + |
| 50 | + set(OPAL_VERSION ${PC_OPAL_VERSION}) |
| 51 | + set(OPAL_INCLUDE_DIRS ${PC_OPAL_INCLUDE_DIRS}) |
| 52 | + |
| 53 | + find_library(OPAL_LIBRARIES |
| 54 | + NAMES ${PC_OPAL_LIBRARIES} |
| 55 | + PATH ${PC_OPAL_LIBRARY_DIRS}) |
| 56 | + |
| 57 | +else() |
| 58 | + |
| 59 | + if(OPAL_USE_STATIC_LIBS) |
| 60 | + set(opal_postfix "${opal_postfix}S") |
| 61 | + endif() |
| 62 | + |
| 63 | + set(OPAL_NAME_RELEASE "opal${opal_postfix}") |
| 64 | + set(OPAL_NAME_DEBUG "opal${opal_postfix}D") |
| 65 | + set(OPAL64_NAME_RELEASE "opal64${opal_postfix}") |
| 66 | + set(OPAL64_NAME_DEBUG "opal64${opal_postfix}D") |
| 67 | + |
| 68 | + |
| 69 | + find_library(OPAL_LIBRARY_RELEASE |
| 70 | + NAMES |
| 71 | + ${OPAL_NAME_RELEASE} |
| 72 | + ${OPAL64_NAME_RELEASE} |
| 73 | + PATHS |
| 74 | + /usr/local |
| 75 | + /usr |
| 76 | + /sw |
| 77 | + /opt/local |
| 78 | + /opt/csw |
| 79 | + /opt |
| 80 | + $ENV{OPAL_DIR}/lib |
| 81 | + ${OPAL_DIR}/lib |
| 82 | + NO_DEFAULT_PATH |
| 83 | + ) |
| 84 | + |
| 85 | + find_library(OPAL_LIBRARY_DEBUG |
| 86 | + NAMES |
| 87 | + ${OPAL_NAME_DEBUG} |
| 88 | + ${OPAL64_NAME_DEBUG} |
| 89 | + PATHS |
| 90 | + /usr/local |
| 91 | + /usr |
| 92 | + /sw |
| 93 | + /opt/local |
| 94 | + /opt/csw |
| 95 | + /opt |
| 96 | + $ENV{OPAL_DIR}/lib |
| 97 | + ${OPAL_DIR}/lib |
| 98 | + NO_DEFAULT_PATH |
| 99 | + ) |
| 100 | + |
| 101 | + if(OPAL_INCLUDE_DIRS) |
| 102 | + opal_get_version(${OPAL_INCLUDE_DIRS} OPAL_VERSION) |
| 103 | + endif() |
| 104 | + |
| 105 | + if(OPAL_LIBRARY_DEBUG AND OPAL_LIBRARY_RELEASE) |
| 106 | + set(OPAL_LIBRARIES |
| 107 | + debug ${OPAL_LIBRARY_DEBUG} |
| 108 | + optimized ${OPAL_LIBRARY_RELEASE} |
| 109 | + CACHE STRING "OPAL Libraries") |
| 110 | + endif() |
| 111 | +endif() |
| 112 | + |
| 113 | +include(FindPackageHandleStandardArgs) |
| 114 | + |
| 115 | +# handle the QUIETLY and REQUIRED arguments and set OPAL_FOUND to TRUE if |
| 116 | +# all listed variables are TRUE |
| 117 | +FIND_PACKAGE_HANDLE_STANDARD_ARGS(OPAL DEFAULT_MSG OPAL_LIBRARIES OPAL_INCLUDE_DIRS) |
| 118 | + |
| 119 | +MARK_AS_ADVANCED(OPAL_INCLUDE_DIRS OPAL_LIBRARIES |
| 120 | + OPAL_LIBRARY_DEBUG OPAL_LIBRARY_RELEASE) |
| 121 | + |
| 122 | +if(OPAL_FOUND) |
| 123 | + message("-- OPAL version is: ${OPAL_VERSION}") |
| 124 | + # short hack for install and copy |
| 125 | + if(NOT OPAL_USE_STATIC_LIBS AND CMAKE_SYSTEM_NAME STREQUAL "Windows") |
| 126 | + find_file(OPAL_DLL_RELEASE |
| 127 | + NAMES |
| 128 | + ${OPAL_NAME_RELEASE}.dll ${OPAL64_NAME_RELEASE}.dll |
| 129 | + PATHS |
| 130 | + $ENV{OPAL_DIR}/bin |
| 131 | + ${OPAL_DIR}/bin |
| 132 | + NO_DEFAULT_PATH |
| 133 | + ) |
| 134 | + |
| 135 | + find_file(OPAL_DLL_DEBUG |
| 136 | + NAMES |
| 137 | + ${OPAL_NAME_DEBUG}.dll ${OPAL64_NAME_DEBUG}.dll |
| 138 | + PATHS |
| 139 | + $ENV{OPAL_DIR}/bin |
| 140 | + ${OPAL_DIR}/bin |
| 141 | + NO_DEFAULT_PATH |
| 142 | + ) |
| 143 | + get_filename_component(OPAL_RUNTIME_DIR ${OPAL_DLL_DEBUG} PATH) |
| 144 | + MARK_AS_ADVANCED(OPAL_DLL_DEBUG OPAL_DLL_RELEASE OPAL_RUNTIME_DIR) |
| 145 | + endif() |
| 146 | + |
| 147 | + if(CMAKE_SYSTEM_NAME STREQUAL "Windows") |
| 148 | + set(PATH_TO_OPAL_PLUGINS ${OPAL_RUNTIME_DIR}/plugins) |
| 149 | + |
| 150 | + if (EXISTS ${PATH_TO_OPAL_PLUGINS} AND IS_DIRECTORY ${PATH_TO_OPAL_PLUGINS}) |
| 151 | + file(GLOB _opal_plugins_ "${PATH_TO_OPAL_PLUGINS}/*.dll") |
| 152 | + endif() |
| 153 | + |
| 154 | + set(OPAL_PLUGINS) |
| 155 | + foreach(_plugin ${_opal_plugins_}) |
| 156 | + list(APPEND OPAL_PLUGINS ${_plugin}) |
| 157 | + endforeach() |
| 158 | + message("-- OPAL plugins: ${OPAL_PLUGINS}") |
| 159 | + MARK_AS_ADVANCED(PATH_TO_OPAL_PLUGINS OPAL_PLUGINS) |
| 160 | + endif() |
| 161 | +endif() |
0 commit comments