1# BAREOS® - Backup Archiving REcovery Open Sourced 2# 3# Copyright (C) 2017-2020 Bareos GmbH & Co. KG 4# 5# This program is Free Software; you can redistribute it and/or 6# modify it under the terms of version three of the GNU Affero General Public 7# License as published by the Free Software Foundation and included 8# in the file LICENSE. 9# 10# This program is distributed in the hope that it will be useful, but 11# WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13# Affero General Public License for more details. 14# 15# You should have received a copy of the GNU Affero General Public License 16# along with this program; if not, write to the Free Software 17# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 18# 02110-1301, USA. 19 20# generic macro to find libraries and headers 21 22macro(BareosFindLibraryAndHeaders LIBNAME HEADERFILE ADDITIONAL_PATHS) 23 message(STATUS "checking for library ${LIBNAME} and ${HEADERFILE} header ...") 24 25 string(TOUPPER ${LIBNAME} LIBNAME_UPCASE) 26 set(INCLUDE_VAR_NAME ${LIBNAME_UPCASE}_INCLUDE_DIRS) 27 set(LIB_VAR_NAME ${LIBNAME_UPCASE}_LIBRARIES) 28 set(FOUND_VAR_NAME ${LIBNAME_UPCASE}_FOUND) 29 set(HAVE_VAR_NAME HAVE_${LIBNAME_UPCASE}) 30 31 find_path( 32 ${INCLUDE_VAR_NAME} 33 NAMES ${HEADERFILE} 34 PATHS ${ADDITIONAL_PATHS} 35 PATH_SUFFIXES include 36 ) 37 find_library( 38 ${LIB_VAR_NAME} 39 NAMES ${LIBNAME} 40 PATHS ${ADDITIONAL_PATHS} 41 PATH_SUFFIXES lib64 42 ) 43 44 # MESSAGE(STATUS "find path result for ${INCLUDE_VAR_NAME} is 45 # ${${INCLUDE_VAR_NAME}}") MESSAGE(STATUS "find library result for 46 # ${LIB_VAR_NAME} is ${${LIB_VAR_NAME}}") 47 48 # STRING(LENGTH ${${LIB_VAR_NAME}} LIBFOUND ) STRING(LENGTH 49 # ${${INCLUDE_VAR_NAME}} INCLUDEFOUND ) 50 51 set(LIBFOUND ${${LIB_VAR_NAME}}) 52 # MESSAGE(STATUS "LIBFOUND: ${LIBFOUND}") 53 set(INCLUDEFOUND ${${INCLUDE_VAR_NAME}}) 54 # MESSAGE(STATUS "INCLUDEFOUND: ${INCLUDEFOUND}") 55 56 string(REGEX MATCH "-NOTFOUND" LIBNOTFOUND ${LIBFOUND}) 57 # MESSAGE(STATUS "LIB REGEX MATCH: ${LIBNOTFOUND}") 58 string(LENGTH "${LIBNOTFOUND}" LIBNOTFOUND) 59 60 string(REGEX MATCH "-NOTFOUND" INCLUDENOTFOUND ${INCLUDEFOUND}) 61 # MESSAGE(STATUS "INC REGEX MATCH: ${INCLUDENOTFOUND}") 62 string(LENGTH "${INCLUDENOTFOUND}" INCLUDENOTFOUND) 63 64 if(NOT ${LIBNOTFOUND}) 65 # MESSAGE(STATUS "LIBFOUND is true: ${LIBFOUND}") 66 if(NOT ${INCLUDENOTFOUND}) 67 # MESSAGE(STATUS "INCLUDEFOUND is true: ${INCLUDEFOUND}") MESSAGE(STATUS 68 # "setting ${FOUND_VAR_NAME} to true") 69 set(${FOUND_VAR_NAME} TRUE) 70 set(${HAVE_VAR_NAME} 1) 71 else() 72 # MESSAGE(STATUS "INCLUDEFOUND is true: ${INCLUDEFOUND}") 73 set(${FOUND_VAR_NAME} FALSE) 74 set(${HAVE_VAR_NAME} 0) 75 endif() 76 else() 77 # MESSAGE(STATUS "LIBFOUND is false: ${LIBFOUND}") 78 set(${FOUND_VAR_NAME} FALSE) 79 set(${HAVE_VAR_NAME} 0) 80 endif() 81 82 set(FOUNDVALUE ${${FOUND_VAR_NAME}}) 83 if(${FOUNDVALUE}) 84 message(STATUS " ${FOUND_VAR_NAME}=${${FOUND_VAR_NAME}}") 85 message(STATUS " ${LIB_VAR_NAME}=${${LIB_VAR_NAME}}") 86 message(STATUS " ${INCLUDE_VAR_NAME}=${${INCLUDE_VAR_NAME}}") 87 message(STATUS " ${HAVE_VAR_NAME}=${${HAVE_VAR_NAME}}") 88 else() 89 message(STATUS " ${HAVE_VAR_NAME}=${${HAVE_VAR_NAME}}") 90 if(${LIBNOTFOUND}) 91 message(STATUS " ERROR: ${LIBNAME} libraries NOT found. ") 92 set("${LIB_VAR_NAME}" "") 93 endif() 94 if(${INCLUDENOTFOUND}) 95 message(STATUS " ERROR: ${LIBNAME} includes NOT found. ") 96 set("${INCLUDE_VAR_NAME}" "") 97 endif() 98 message(STATUS " ${FOUND_VAR_NAME}=${${FOUND_VAR_NAME}}") 99 message(STATUS " ${LIB_VAR_NAME}=${${LIB_VAR_NAME}}") 100 message(STATUS " ${INCLUDE_VAR_NAME}=${${INCLUDE_VAR_NAME}}") 101 message(STATUS " ${HAVE_VAR_NAME}=${${HAVE_VAR_NAME}}") 102 endif() 103 104 mark_as_advanced(${INCLUDE_VAR_NAME} ${LIB_VAR_NAME} ${FOUND_VAR_NAME}) 105endmacro() 106