1# BAREOS® - Backup Archiving REcovery Open Sourced 2# 3# Copyright (C) 2017-2021 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 20include(systemdservice) 21if(${SYSTEMD_FOUND}) 22 set(HAVE_SYSTEMD 1) 23endif() 24 25if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") 26 set(HAVE_PYTHON 1) 27 set(Python2_FOUND 1) 28 set(Python2_EXT_SUFFIX ".dll") 29 30 set(Python3_FOUND 1) 31 set(Python3_EXT_SUFFIX ".pyd") 32 33 # Python Plugins currently cannot be built for Solaris 34elseif(${CMAKE_SYSTEM_NAME} MATCHES "SunOS") 35 set(HAVE_PYTHON 0) 36 set(Python2_FOUND 0) 37 set(Python3_FOUND 0) 38 39else() 40 if(python) 41 find_package(Python3 COMPONENTS Interpreter Development) 42 43 set(Python3_VERSION_MAJOR 44 ${Python3_VERSION_MAJOR} 45 PARENT_SCOPE 46 ) 47 48 set(Python3_VERSION_MINOR 49 ${Python3_VERSION_MINOR} 50 PARENT_SCOPE 51 ) 52 53 if(${Python3_FOUND}) 54 set(HAVE_PYTHON 1) 55 endif() 56 57 if(${Python3_FOUND}) 58 set(PYTHON_EXECUTABLE 59 ${Python3_EXECUTABLE} 60 PARENT_SCOPE 61 ) 62 set(Python3_EXECUTABLE 63 ${Python3_EXECUTABLE} 64 PARENT_SCOPE 65 ) 66 execute_process( 67 COMMAND ${Python3_EXECUTABLE} 68 ${CMAKE_CURRENT_SOURCE_DIR}/cmake/get_python_compile_settings.py 69 OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/py3settings.cmake 70 ) 71 include(${CMAKE_CURRENT_BINARY_DIR}/py3settings.cmake) 72 endif() 73 endif() 74endif() 75 76if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows") 77 include(FindPostgreSQL) 78endif() 79 80include(CMakeUserFindMySQL) 81 82if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 83 set(OPENSSL_USE_STATIC_LIBS 1) 84endif() 85include(FindOpenSSL) 86 87if(${OPENSSL_FOUND}) 88 set(HAVE_OPENSSL 1) 89 if(OPENSSL_VERSION VERSION_LESS "1.0.2") 90 message(FATAL_ERROR "Need at least OpenSSL version 1.0.2") 91 endif() 92endif() 93 94include(BareosFindLibraryAndHeaders) 95 96bareosfindlibraryandheaders( 97 "vixDiskLib" "vixDiskLib.h" 98 "/usr/lib/vmware-vix-disklib-distrib;/usr/lib/vmware-vix-disklib" 99) 100 101# check for structmember physicalSectorSize in struct VixDiskLibCreateParams 102if(VIXDISKLIB_FOUND) 103 include(CheckStructHasMember) 104 check_struct_has_member( 105 "VixDiskLibCreateParams" physicalSectorSize 106 ${VIXDISKLIB_INCLUDE_DIRS}/vixDiskLib.h 107 VIXDISKLIBCREATEPARAMS_HAS_PHYSICALSECTORSIZE 108 ) 109endif() 110 111if(VIXDISKLIB_FOUND) 112 if((NOT DEFINED vmware_server) 113 OR (NOT DEFINED vmware_user) 114 OR (NOT DEFINED vmware_password) 115 OR (NOT DEFINED vmware_datacenter) 116 OR (NOT DEFINED vmware_folder) 117 ) 118 string( 119 CONCAT MSG 120 "VMware Vix Disklib was found. To enable the vmware plugin test, " 121 "please provide the required information:" 122 "example:" 123 " -Dvmware_user=Administrator@vsphere.local " 124 " -Dvmware_password=\"@one2threeBareos\" " 125 " -Dvmware_vm_name=testvm1 " 126 " -Dvmware_datacenter=mydc1 " 127 " -Dvmware_folder=\"/webservers\" " 128 " -Dvmware_server=139.178.73.195" 129 ) 130 message(WARNING ${MSG}) 131 else() 132 set(enable_vmware_test 133 1 134 PARENT_SCOPE 135 ) 136 endif() 137elseif( 138 (DEFINED vmware_server) 139 OR (DEFINED vmware_user) 140 OR (DEFINED vmware_password) 141 OR (DEFINED vmware_datacenter) 142 OR (DEFINED vmware_folder) 143) 144 message( 145 FATAL_ERROR 146 "vmware options were set but VMware Vix Disklib was not found. Cannot run vmware tests." 147 ) 148endif() 149 150bareosfindlibraryandheaders("jansson" "jansson.h" "") 151if(rados) 152 bareosfindlibraryandheaders("rados" "rados/librados.h" "") 153 bareosfindlibraryandheaders("radosstriper" "radosstriper/libradosstriper.h" "") 154endif() 155if(cephfs) 156 bareosfindlibraryandheaders("cephfs" "cephfs/libcephfs.h" "") 157endif() 158bareosfindlibraryandheaders("pthread" "pthread.h" "") 159bareosfindlibraryandheaders("cap" "sys/capability.h" "") 160if(gfapi) 161 bareosfindlibraryandheaders("gfapi" "glusterfs/api/glfs.h" "") 162endif() 163 164bareosfindlibraryandheaders("pam" "security/pam_appl.h" "") 165 166bareosfindlibraryandheaders("lzo2" "lzo/lzoconf.h" "") 167if(${LZO2_FOUND}) 168 set(HAVE_LZO 1) 169 if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 170 set(LZO2_LIBRARIES "/usr/local/opt/lzo/lib/liblzo2.a") 171 endif() 172endif() 173 174include(BareosFindLibrary) 175 176bareosfindlibrary("tirpc") 177bareosfindlibrary("util") 178bareosfindlibrary("dl") 179bareosfindlibrary("acl") 180# BareosFindLibrary("wrap") 181if(NOT ${CMAKE_CXX_COMPILER_ID} MATCHES SunPro) 182 bareosfindlibrary("gtest") 183 bareosfindlibrary("gtest_main") 184 bareosfindlibrary("gmock") 185endif() 186 187bareosfindlibrary("pam_wrapper") 188 189if(${HAVE_CAP}) 190 set(HAVE_LIBCAP 1) 191endif() 192 193find_package(ZLIB) 194if(${ZLIB_FOUND}) 195 set(HAVE_LIBZ 1) 196endif() 197 198find_package(Readline) 199include(thread) 200