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