CMakeLists.txt 17.4 KB
Newer Older
1
2
3
# CMake version check. 3.14 mimimum available from EPEL.
# 3.15 is required on Windows, but is not available in EPEL yet.
cmake_minimum_required(VERSION 3.14)
4
5

# Define the project name.
6
project(Mantid)
7

8
# Policy settings
9
10
11
if(POLICY CMP0022)
  cmake_policy(SET CMP0022 NEW)
endif()
12

13
14
15
if(POLICY CMP0072)
  cmake_policy(SET CMP0072 OLD)
endif()
16

17
18
19
if(POLICY CMP0074)
  cmake_policy(SET CMP0074 NEW)
endif()
20

21
22
23
24
# System package target is important for the windows builds as it allows us to
# package only the dlls and exes and exclude libs. Defaults to empty for other
# platforms.
set(SYSTEM_PACKAGE_TARGET "")
25

26
# Add the path to our custom 'find' modules
27
28
29
30
31
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/buildconfig/CMake")
# Send libraries to common place, reference in several places so must be at top
# level
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
32

33
option(ENABLE_MANTIDPLOT "Enable Qt4-based gui & components" OFF)
34
option(ENABLE_WORKBENCH "Enable Qt5-based gui & components" ON)
35

36
set(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_BINARY_DIR}" "Mantid" "ALL" "/")
37

38
39
40
41
# Ensure that if we are running any sanitizers the compiler options are
# known in sub targets
include(Sanitizers)

42
# Quick exit if we only want data targets
43
44
if(DATA_TARGETS_ONLY)
  include(SetupDataTargets)
45
  # System test config files
46
  add_subdirectory(Testing/SystemTests/scripts)
47
48
49
  return()
endif()

50
# Packaging configuration
51
52
set(CPACK_PACKAGE_SUFFIX "unstable"
    CACHE STRING "suffix used to determine the deployment type")
53
54
55
56
57
58
set_property(CACHE CPACK_PACKAGE_SUFFIX
             PROPERTY STRINGS
                      nightly
                      unstable
                      "")
# empty string and release are treated as the same thing
59
60
61
62
63
64
65
if(CPACK_PACKAGE_SUFFIX)
  # Camelcase version of suffix for Windows/Mac
  string(TOUPPER ${CPACK_PACKAGE_SUFFIX} CPACK_PACKAGE_SUFFIX_CAMELCASE)
  string(SUBSTRING ${CPACK_PACKAGE_SUFFIX_CAMELCASE} 0 1 CPACK_PACKAGE_SUFFIX_CAMELCASE)
  string(SUBSTRING ${CPACK_PACKAGE_SUFFIX} 1 -1 _tmp_suffix_remainder)
  string(CONCAT CPACK_PACKAGE_SUFFIX_CAMELCASE ${CPACK_PACKAGE_SUFFIX_CAMELCASE} ${_tmp_suffix_remainder})
endif()
66

67
68
# Set package name here
set(CPACK_PACKAGE_NAME "mantid${CPACK_PACKAGE_SUFFIX}")
69

70
# Bootstrap any dependencies
71
include(Bootstrap)
72

73
# Configure Eigen early
74
include(Eigen)
75

Hahn, Steven's avatar
Hahn, Steven committed
76
77
include(Span)

78
# Set ParaView information since later items depend on it
Alice Russell's avatar
Alice Russell committed
79

80
# VATES flag. Requires ParaView
81
option(MAKE_VATES "Switch for compiling the Vates project")
82
83
84
85
if(ENABLE_MANTIDPLOT AND MAKE_VATES)
  find_package(ParaView)
  if(ParaView_FOUND)
    add_definitions(-DMAKE_VATES)
Hahn, Steven's avatar
Hahn, Steven committed
86
    # Poco::File throws an exception when a backslash is used.
87
88
89
90
91
92
93
94
95
96
    string(REPLACE "\\"
                   "/"
                   ParaView_DIR
                   ${ParaView_DIR})
  endif()
endif()
if(ENABLE_MANTIDPLOT)
  include(ParaViewSetup)
endif()

Martyn Gigg's avatar
Martyn Gigg committed
97
98
99
if( MSVC )
  include ( MSVCSetup )
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
100
101
  include(DarwinSetup)
endif()
102

103
# Cross-platform setup
104
include(CommonSetup)
105

106
# Find OpenGL
Dan Nixon's avatar
Dan Nixon committed
107
108
109
110
111
112
if(ENABLE_OPENGL)
  find_package(OpenGL REQUIRED)
  # FindOpenGL does not (as of CMake 2.6.4) take notice of the REQUIRED
  if(NOT OPENGL_FOUND)
    message(FATAL_ERROR "OpenGL was not found.")
  endif()
113
endif()
114

115
116
find_package(TBB REQUIRED)

Hahn, Steven's avatar
Hahn, Steven committed
117
118
119
# We probably don't want this to run on every build.
option(COVERALLS "Generate coveralls data" OFF)

120
121
122
if(COVERALLS)
  include(Coveralls)
  coveralls_turn_on_coverage()
Hahn, Steven's avatar
Hahn, Steven committed
123
124
endif()

125
# Qt/Qwt/PyQt/sip
126
127
128
129
if(ENABLE_MANTIDPLOT)
  set(QT_USE_IMPORTED_TARGETS ON)
  find_package(Qt4
               COMPONENTS QtCore
Martyn Gigg's avatar
Martyn Gigg committed
130
                          QtDesigner
131
132
                          QtGui
                          QtOpenGL
Martyn Gigg's avatar
Martyn Gigg committed
133
                          QtScript
134
                          QtSvg
Martyn Gigg's avatar
Martyn Gigg committed
135
                          QtXml
136
               REQUIRED)
Martyn Gigg's avatar
Martyn Gigg committed
137
  find_package(QScintillaQt4 REQUIRED)
138
139
140
141
142
  find_package(Qwt5 REQUIRED)
  if(QWT5_VERSION VERSION_LESS 5.0
     OR QWT5_VERSION VERSION_EQUAL 6.0
     OR QWT5_VERSION VERSION_GREATER 6.0)
    message(FATAL_ERROR "Qwt version 5 is required, found: ${QWT5_VERSION}")
143
  endif()
144

Martyn Gigg's avatar
Martyn Gigg committed
145
  if(UNIX_DIST MATCHES "RedHatEnterprise" AND UNIX_RELEASE MATCHES "7\..*")
146
147
148
149
150
151
    set(USE_PRIVATE_SIPPYQT4 ON)
    include(ExternalSipPyQt4)
  else()
    find_package(PyQt4 REQUIRED)
    find_package(SIP REQUIRED)
  endif()
152
  separate_arguments(PYQT4_SIP_FLAGS)
153
endif()
154

155
156
157
158
159
160
if(ENABLE_WORKBENCH)
  find_package(Qt5
               COMPONENTS Core
                          Gui
                          Widgets
                          OpenGL
161
                          Test
162
163
164
               REQUIRED)
  if(Qt5_FOUND)
    message(STATUS "Found Qt ${Qt5_VERSION}: ${Qt5_DIR}")
165
  endif()
166
  find_package(QScintillaQt5 REQUIRED)
167
168
169
  find_package(PyQt5 REQUIRED)
  find_package(SIP REQUIRED)
  separate_arguments(PYQT5_SIP_FLAGS)
170
171
endif()

172
# Now add in all the components
Alice Russell's avatar
Alice Russell committed
173

174
# Flag that this is a full build, i.e not framework only
175
176
177
178
set(FULL_PACKAGE_BUILD 1)
# Set the path to the built docs directory here so that it can be used in the
# Kernel project for populating the properties file
set(DOCS_BUILDDIR ${CMAKE_BINARY_DIR}/docs)
179

180
# Framework Build options
181
182
option(CXXTEST_ADD_PERFORMANCE
       "Switch to add Performance tests to the list of tests run by ctest?")
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220

add_subdirectory(Framework)

include_directories(Framework/Kernel/inc)
include_directories(Framework/HistogramData/inc)
include_directories(Framework/Indexing/inc)
include_directories(Framework/Parallel/inc)
include_directories(Framework/Beamline/inc)
include_directories(Framework/Geometry/inc)
include_directories(Framework/API/inc)
include_directories(Framework/Types/inc)
include_directories(Framework/NexusGeometry/inc)

set(CORE_MANTIDLIBS Kernel HistogramData Indexing Beamline Geometry API Types)

if(ENABLE_MANTIDPLOT AND MAKE_VATES)

  if(NOT APPLE)
    list(APPEND CPACK_INSTALL_CMAKE_PROJECTS
                "${ParaView_DIR}"
                "ParaView Runtime Libs"
                "Runtime"
                "${INBUNDLE}/")
    list(APPEND CPACK_INSTALL_CMAKE_PROJECTS
                "${ParaView_DIR}"
                "VTK Runtime Libs"
                "RuntimeLibraries"
                "${INBUNDLE}/")
    list(APPEND CPACK_INSTALL_CMAKE_PROJECTS
                "${ParaView_DIR}"
                "HDF5 Core Library"
                "libraries"
                "${INBUNDLE}/")
    list(APPEND CPACK_INSTALL_CMAKE_PROJECTS
                "${ParaView_DIR}"
                "HDF5 HL Library"
                "hllibraries"
                "${INBUNDLE}/")
221
222
  endif()

223
endif(ENABLE_MANTIDPLOT AND MAKE_VATES)
224

225
226
if(UNIX)
  # Experimental feature. Unix only at this point.
227
228
  option(UNITY_BUILD
         "Switch for utilising unity builds. Faster builds for selected components.")
229
endif(UNIX)
230

231
232
233
if(MSVC)
  add_definitions(-DQWT_DLL)
endif()
234

235
236
add_custom_target(AllTests)
add_dependencies(AllTests FrameworkTests)
237

238
239
240
if(ENABLE_MANTIDPLOT OR ENABLE_WORKBENCH)
  add_custom_target(GUITests)
  add_dependencies(check GUITests)
241
  # Collect all tests together
242
243
  add_dependencies(AllTests GUITests)
  add_subdirectory(qt)
244
endif()
245

246
247
if(ENABLE_MANTIDPLOT)
  add_subdirectory(MantidPlot)
248
endif()
249

250
add_subdirectory(scripts)
251

252
# Docs requirements
253
254
option(ENABLE_DOCS "Enable Building user and developer documentation" ON)
if (ENABLE_DOCS)
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
  find_package(Sphinx REQUIRED)
  # run python to see if the theme is installed
  execute_process(COMMAND ${Python_EXECUTABLE} -c
                          "import sphinx_bootstrap_theme"
                  OUTPUT_VARIABLE SPHINX_BOOTSTRAP_THEME_OUT
                  ERROR_VARIABLE SPHINX_BOOTSTRAP_THEME_ERR
                  OUTPUT_STRIP_TRAILING_WHITESPACE
                  ERROR_STRIP_TRAILING_WHITESPACE)
  if(SPHINX_BOOTSTRAP_THEME_ERR)
    message(ERROR " Did not find sphinx_bootstrap_theme")
    message(STATUS "${Python_EXECUTABLE} -c \"import sphinx_bootstrap_theme\"")
    message(STATUS "${SPHINX_BOOTSTRAP_THEME_ERR}")
    message(
      FATAL_ERROR
        " Install instructions at https://pypi.python.org/pypi/sphinx-bootstrap-theme/"
      )
271
  endif()
272
273
274

  add_subdirectory(dev-docs)
  add_subdirectory(docs)
275
endif()
276

277
# System test data target
278
add_subdirectory(Testing/SystemTests/scripts)
279

280
if(COVERALLS)
281
  get_property(ALL_SRCS GLOBAL PROPERTY COVERAGE_SRCS)
282
283
284
285
286
287
  set(SRCS_FILE "")
  foreach(SRC ${ALL_SRCS})
    set(SRCS_FILE "${SRCS_FILE}\n${SRC}")
  endforeach()
  # remove initial \n
  string(SUBSTRING ${SRCS_FILE}
288
289
290
291
                   1
                   -1
                   SRCS_FILE)
  set(SRCS_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/sources.txt")
292
  file(WRITE ${SRCS_FILENAME} ${SRCS_FILE})
293
  coveralls_setup(${SRCS_FILENAME} OFF "${CMAKE_SOURCE_DIR}/buildconfig/CMake")
294
295
endif()

296
# Installation settings
297

298
299
300
301
if(ENABLE_MANTIDPLOT)
  # N.B. INBUNDLE variable is empty except on Mac (set in DarwinSetup.cmake)
  install(DIRECTORY installers/colormaps/ DESTINATION ${INBUNDLE}colormaps)
endif()
302

303
304
305
306
307
308
309
310
311
312
# Install the files (.desktop and icon) to create a menu items
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
  function(uppercase_first_letter output_var input)
  string(LENGTH ${input} _inputlen)
  string(TOUPPER ${input} _allupper)
  string(SUBSTRING ${_allupper} 0 1 _first)
  string(SUBSTRING ${input} 1 ${_inputlen} _rest)
  set(${output_var} ${_first}${_rest} PARENT_SCOPE)
  endfunction()

313
  function(install_desktop_files filename app_name exec_cmd icon_file icon_install_file)
314
315
    set(DESKTOP_NAME ${app_name})
    set(DESKTOP_EXEC_CMD ${exec_cmd})
316
    get_filename_component(DESKTOP_ICON ${icon_install_file} NAME_WE)
317
318
319
320
321
322
323
324
325
    set(_output_file ${CMAKE_CURRENT_BINARY_DIR}/${filename}.install)
    configure_file(
      ${CMAKE_CURRENT_SOURCE_DIR}/installers/LinuxInstaller/launcher-template.desktop.in
      ${_output_file} @ONLY)
    install(FILES ${_output_file}
            DESTINATION /usr/share/applications
            RENAME ${filename})
    install(FILES ${icon_file}
            DESTINATION /usr/share/pixmaps
326
            RENAME ${icon_install_file})
327
328
  endfunction()

329
330
331
332
333
334
335
336
  set(_icon_suffix)
  if(CPACK_PACKAGE_SUFFIX)
    if (${CPACK_PACKAGE_SUFFIX} STREQUAL "nightly" OR
        ${CPACK_PACKAGE_SUFFIX} STREQUAL "unstable")
      set(_icon_suffix ${CPACK_PACKAGE_SUFFIX})
    endif()
  endif()

337
338
339
340
341
342
343
  set( IMAGES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/images )
  set(_app_name_suffix)
  if(CPACK_PACKAGE_SUFFIX)
    uppercase_first_letter(_app_name_suffix ${CPACK_PACKAGE_SUFFIX})
  endif()
  if(ENABLE_MANTIDPLOT)
    set(_icon_filename ${IMAGES_DIR}/mantidplot)
344
345
    if(_icon_suffix)
      set(_icon_filename ${_icon_filename}${_icon_suffix})
346
347
    endif()
    install_desktop_files(mantidplot${CPACK_PACKAGE_SUFFIX}.desktop
348
                          "Mantid Plot ${_app_name_suffix}"
349
                          ${CMAKE_INSTALL_PREFIX}/bin/MantidPlot
350
351
                          ${_icon_filename}.png
                          mantidplot${CPACK_PACKAGE_SUFFIX}.png )
352
  endif()
353
354
355

  if(ENABLE_WORKBENCH)
    set(_icon_filename ${IMAGES_DIR}/mantid_workbench)
356
357
    if(_icon_suffix)
      set(_icon_filename ${_icon_filename}${_icon_suffix})
358
359
    endif()
    install_desktop_files(mantidworkbench${CPACK_PACKAGE_SUFFIX}.desktop
360
                          "Mantid Workbench ${_app_name_suffix}"
361
                          ${CMAKE_INSTALL_PREFIX}/bin/mantidworkbench
362
363
                          ${_icon_filename}.png
                          mantid_workbench${CPACK_PACKAGE_SUFFIX}.png)
364
  endif()
365
366
endif()

367
368
369
# THIS MUST BE THE LAST SUB_DIRECTORY ADDED. See
# Framework/PostInstall/CMakeLists for an explanation
add_subdirectory(Framework/PostInstall)
370
371

# Conda
372
option(ENABLE_CONDA "Switch to enable conda package generation")
373
374
375
if(ENABLE_CONDA)
  include(conda)
endif(ENABLE_CONDA)
376

377
378
379
# CPack settings

# Keep this in a defaulted-to-off option
380
option(ENABLE_CPACK "Switch to enable CPack package generation")
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
if(ENABLE_CPACK)
  include(CPackCommon)

  # Mac package settings
  set(CPACK_RESOURCE_FILE_LICENSE
      ${CMAKE_SOURCE_DIR}/installers/WinInstaller/License.txt)

  if(CMAKE_HOST_WIN32)
    include(WindowsNSIS)
  elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
    include(CPackLinuxSetup)

    # rhel requirements - only used if package requested is rpm
    set(
      CPACK_RPM_PACKAGE_REQUIRES
396
397
398
399
400
401
402
      "boost169-date-time,"
      "boost169-regex,"
      "boost169-serialization,"
      "boost169-filesystem,"
      "boost169-system,"
      "nexus >= 4.3.1,gsl,glibc,muParser,tbb,librdkafka,"
      "OCE-draw,OCE-foundation,OCE-modeling,OCE-ocaf,OCE-visualization,"
403
404
405
406
      "poco-crypto,poco-data,poco-mysql,poco-sqlite,poco-odbc,poco-util,poco-xml,poco-zip,poco-net,poco-netssl,poco-foundation,"
      "hdf,hdf5,jsoncpp >= 0.7.0")
    if(ENABLE_MANTIDPLOT)
      set(CPACK_RPM_PACKAGE_REQUIRES
407
          "${CPACK_RPM_PACKAGE_REQUIRES},qt4 >= 4.2,qscintilla,qwt5-qt4,qwtplot3d-qt4")
408
409
410
    endif()
    if(ENABLE_WORKBENCH)
      set(CPACK_RPM_PACKAGE_REQUIRES
411
          "${CPACK_RPM_PACKAGE_REQUIRES},qt5-qtbase,qscintilla-qt5")
412
    endif()
Martyn Gigg's avatar
Martyn Gigg committed
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
    # python requirements
    set(
      CPACK_RPM_PACKAGE_REQUIRES
      "${CPACK_RPM_PACKAGE_REQUIRES},"
      "boost169-python3,"
      "python36-numpy,python36-scipy,python36-h5py,python36-PyCifRW,"
      "python36-six,python36-PyYAML,python36-requests,python36-toml,"
      "python36-ipython,python36-ipython-notebook"
    )
    if(ENABLE_MANTIDPLOT)
      set(CPACK_RPM_PACKAGE_REQUIRES
          "${CPACK_RPM_PACKAGE_REQUIRES},python36-QtPy,"
          "python36-matplotlib-qt4,python36-ipython-gui")
    endif()
    if(ENABLE_WORKBENCH)
      set(CPACK_RPM_PACKAGE_REQUIRES
          "${CPACK_RPM_PACKAGE_REQUIRES},python36-qt5,python36-QtPy,"
          "python36-matplotlib-qt5,python36-psutil,python36-ipython-gui")
431
    endif()
432

433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
    string(REPLACE ";"
                   ","
                   CPACK_RPM_PACKAGE_REQUIRES
                   ${CPACK_RPM_PACKAGE_REQUIRES}) # fix up the fact that it was
                                                  # made as an array
    string(REPLACE ",,"
                   ","
                   CPACK_RPM_PACKAGE_REQUIRES
                   ${CPACK_RPM_PACKAGE_REQUIRES})

    # ubuntu requirements - only used if package requested is deb
    set(
      CPACK_DEBIAN_PACKAGE_DEPENDS
      "libboost-date-time${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION},"
      "libboost-regex${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION},"
      "libboost-python${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION},"
      "libboost-serialization${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION},"
      "libboost-filesystem${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION},"
      "libnexus0v5 (>= 4.3),"
      "libjsoncpp1 (>=0.7.0),"
      "libmuparser2v5,"
      "libtbb2,"
      "librdkafka1,librdkafka++1,"
      "libpocofoundation${POCO_SOLIB_VERSION},libpocoutil${POCO_SOLIB_VERSION},libpoconet${POCO_SOLIB_VERSION},libpoconetssl${POCO_SOLIB_VERSION},libpococrypto${POCO_SOLIB_VERSION},libpocoxml${POCO_SOLIB_VERSION}"
      )
    if(ENABLE_MANTIDPLOT)
      set(CPACK_DEBIAN_PACKAGE_DEPENDS
          "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqtcore4 (>= 4.2),"
          "libqtgui4 (>= 4.2),"
          "libqt4-opengl (>= 4.2),"
          "libqt4-xml (>= 4.2),"
          "libqt4-svg (>= 4.2),"
          "libqt4-qt3support (>= 4.2),"
          "qt4-dev-tools,"
          "libqwt5-qt4,"
          "libqwtplot3d-qt4-0v5,"
          "libqtwebkit4")
    endif()
471

Martyn Gigg's avatar
Martyn Gigg committed
472
    if("${UNIX_CODENAME}" STREQUAL "bionic")
473
474
475
476
477
478
479
480
481
      set(CPACK_DEBIAN_PACKAGE_DEPENDS
          "${CPACK_DEBIAN_PACKAGE_DEPENDS},libgsl23,"
          "liboce-foundation11,liboce-modeling11,"
          "libqscintilla2-qt4-13,"
          "jupyter-notebook,"
          "libhdf5-cpp-100")
      if(ENABLE_WORKBENCH)
        set(CPACK_DEBIAN_PACKAGE_DEPENDS
            "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqscintilla2-qt5-13")
482
      endif()
483
    elseif ( "${UNIX_DIST}" MATCHES "Ubuntu" )
Martyn Gigg's avatar
Martyn Gigg committed
484
      message(WARNING "Unsupported Debian-like OS: ${UNIX_CODENAME}. Packaging is unlikely to work correctly.")
485
    endif()
Martyn Gigg's avatar
Martyn Gigg committed
486
487
488
489
490
491
492
493
494
495
496
497
498
499
    # python requirements
    set(CPACK_DEBIAN_PACKAGE_DEPENDS
        "${CPACK_DEBIAN_PACKAGE_DEPENDS},python3-h5py,"
        "python3-numpy,"
        "python3-requests,"
        "python3-sip,"
        "python3-six,"
        "python3-matplotlib,"
        "python3-qtpy,"
        "python3-scipy,"
        "python3-toml,"
        "python3-pycifrw (>= 4.2.1),"
        "python3-yaml,"
        "ipython3-qtconsole") # transitional package for bionic
500

Martyn Gigg's avatar
Martyn Gigg committed
501
    if(ENABLE_MANTIDPLOT)
502
      set(CPACK_DEBIAN_PACKAGE_DEPENDS
Martyn Gigg's avatar
Martyn Gigg committed
503
504
505
          "${CPACK_DEBIAN_PACKAGE_DEPENDS},python3-pyqt4")
    endif()
    if(ENABLE_WORKBENCH)
506
      set(CPACK_DEBIAN_PACKAGE_DEPENDS
Martyn Gigg's avatar
Martyn Gigg committed
507
          "${CPACK_DEBIAN_PACKAGE_DEPENDS},python3-pyqt5,python3-psutil")
508
    endif()
Martyn Gigg's avatar
Martyn Gigg committed
509

510
511
512
513
514
515
516
517
518
519
520
    # parse list to string required for deb package
    string(REPLACE ";"
                   ","
                   CPACK_DEBIAN_PACKAGE_DEPENDS
                   ${CPACK_DEBIAN_PACKAGE_DEPENDS}) # fix up the fact that it
                                                    # was made as an array
    string(REPLACE ",,"
                   ","
                   CPACK_DEBIAN_PACKAGE_DEPENDS
                   ${CPACK_DEBIAN_PACKAGE_DEPENDS})
  endif()
521

Mathieu Tillet's avatar
Mathieu Tillet committed
522
523
524
  # soft requirement of jemalloc if selected
  if(USE_JEMALLOC)
    message(STATUS "Adding jemalloc to the package requirements")
525
    set(CPACK_RPM_PACKAGE_REQUIRES
526
        "${CPACK_RPM_PACKAGE_REQUIRES}, jemalloc >= 3.0")
527
    set(CPACK_DEBIAN_PACKAGE_DEPENDS
528
        "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libjemalloc1 (>= 3.0)")
529
530
531
532
533
534
535
536
  endif()

  # run cpack configuration
  include(CPack)
  # let people know what is coming out the other end - must be after cpack
  # generates value for rpm
  message(STATUS "CPACK_PACKAGE_FILE_NAME = ${CPACK_PACKAGE_FILE_NAME}")
endif()