source: trunk/FACT++/CMakeLists.txt @ 19393

Last change on this file since 19393 was 19393, checked in by tbretz, 13 months ago
Allow to select the default observatory location during compile time. Minor changes to the ordering.
File size: 32.8 KB
Line 
1# *********************************
2# ************ cmake **************
3# *********************************
4CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
5CMAKE_POLICY(SET CMP0043 NEW)
6CMAKE_POLICY(SET CMP0048 NEW)
7
8# Enable debug symbols by default
9# must be done before project() statement
10SET(CMAKE_BUILD_TYPE_INIT Release)
11# (you can also set it on the command line: -D CMAKE_BUILD_TYPE=Debug)
12
13# Enable CLANG as default compilers, to change this use
14# cmake -DCMAKE_C_COMPILER=cc -DCMAKE_CXX_COMPILER=c++
15# Note that if compilers are switched on the fly,
16# the cache is deleted
17IF(NOT DEFINED CMAKE_C_COMPILER)
18        FIND_PROGRAM(CMAKE_C_COMPILER   NAMES $ENV{CC}  clang   gcc cc  PATHS ENV PATH NO_DEFAULT_PATH DOC "C Compiler")
19ENDIF()
20IF(NOT DEFINED CMAKE_CXX_COMPILER)
21        FIND_PROGRAM(CMAKE_CXX_COMPILER NAMES $ENV{CXX} clang++ g++ c++ PATHS ENV PATH NO_DEFAULT_PATH DOC "C++ Compiler")
22ENDIF()
23
24
25#SET(CMAKE_VERBOSE_MAKEFILE ON)
26
27
28
29# *********************************
30# ************ Project ************
31# *********************************
32
33STRING(TIMESTAMP VERSION %y.%U.%w.%H UTC)
34
35MESSAGE(STATUS "FACT++ V${VERSION}")
36
37PROJECT(fact++ VERSION ${VERSION})
38
39INCLUDE(GNUInstallDirs)
40
41# ======== For config.h.in =========
42SET(PACKAGE_MAINTAINER "Thomas Bretz")
43SET(PACKAGE_BUGREPORT  "tbretz@physik.rwth-aachen.de")
44SET(PACKAGE_URL        "https://www.fact-project.org")
45
46
47# *********************************
48# ******** FAMOUS / IceACT ********
49# *********************************
50
51IF (NOT TOOLS_ONLY)
52
53IF(EXISTS "${CMAKE_SOURCE_DIR}/famous")
54        MESSAGE(STATUS "Compilation of 'famous' enabled.")
55        SET(FOUND_FAMOUS ON)
56ENDIF()
57
58IF(EXISTS "${CMAKE_SOURCE_DIR}/iceact")
59        MESSAGE(STATUS "Compilation of 'iceact' enabled.")
60        SET(FOUND_ICEACT ON)
61ENDIF()
62
63ENDIF(NOT TOOLS_ONLY)
64
65
66# *********************************
67# ********* Requirements **********
68# *********************************
69
70# Inlclude the main source AND build dir itself
71SET(CMAKE_INCLUDE_CURRENT_DIR ON)
72SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
73
74# =========== pkg-config ============
75FIND_PACKAGE(PkgConfig)
76FIND_PACKAGE(PackageHandleStandardArgs)
77
78
79# ========== executables ==========
80FIND_PROGRAM(HELP2MAN_EXECUTABLE  help2man)
81FIND_PROGRAM(ROFF2HTML_EXECUTABLE roff2html)
82FIND_PROGRAM(ROFF2PDF_EXECUTABLE  roff2pdf)
83FIND_PROGRAM(GROFF_EXECUTABLE     groff)
84
85FIND_PACKAGE_HANDLE_STANDARD_ARGS(help2man  DEFAULT_MSG HELP2MAN_EXECUTABLE)
86FIND_PACKAGE_HANDLE_STANDARD_ARGS(roff2html DEFAULT_MSG ROFF2HTML_EXECUTABLE)
87FIND_PACKAGE_HANDLE_STANDARD_ARGS(roff2pdf  DEFAULT_MSG ROFF2PDF_EXECUTABLE)
88FIND_PACKAGE_HANDLE_STANDARD_ARGS(groff     DEFAULT_MSG GROFF_EXECUTABLE)
89
90IF (NOT HELP2MAN_EXECUTABLE OR NOT ROFF2HTML_EXECUTABLE OR NOT ROFF2PDF_EXECUTABLE OR NOT GROFF_EXECUTABLE)
91MESSAGE(STATUS "Documentation turned off (some executables missing).")
92ENDIF()
93
94IF (NOT TOOLS_ONLY)
95
96FIND_PROGRAM(JSDOC_EXECUTABLE    jsdoc)
97FIND_PROGRAM(MAILX_EXECUTABLE    mailx)
98FIND_PROGRAM(CURL_EXECUTABLE     curl)
99
100FIND_PACKAGE_HANDLE_STANDARD_ARGS(curl     DEFAULT_MSG CURL_EXECUTABLE)
101FIND_PACKAGE_HANDLE_STANDARD_ARGS(mailx    DEFAULT_MSG MAILX_EXECUTABLE)
102FIND_PACKAGE_HANDLE_STANDARD_ARGS(jsdoc    DEFAULT_MSG JSDOC_EXECUTABLE)
103
104ENDIF (NOT TOOLS_ONLY)
105
106#IF(NOT SOME_COND)
107#  MESSAGE(FATAL_ERROR "At least one required executable was not found")
108#ENDIF()
109
110# =========== libraries =============
111
112SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
113
114# FIXME: Need to check which package finders accept REQUIERED. For all others implement checks
115
116FIND_PACKAGE(Threads  REQUIRED)  # Threads::Threads
117FIND_PACKAGE(ZLIB     REQUIRED)  # ZLIB::ZLIB
118
119SET(CURSES_NEED_NCURSES ON)
120FIND_PACKAGE(Curses   REQUIRED)  # CURSES_FOUND
121# FIXME : Require  panel
122
123IF(NOT TOOLS_ONLY)
124
125FIND_PACKAGE(OpenGL   REQUIRED)  # OpenGL::GL OpenGL::GLU / OPENGL_FOUND OPENGL_GLU_FOUND
126
127# FIND_PACKAGE(DBus)    => skaypeclient
128# FIND_PACKAGE(Motif)   => did   # MOTIF_FOUND
129
130FIND_PACKAGE(Readline REQUIRED)
131FIND_PACKAGE(Panel    REQUIRED)
132FIND_PACKAGE(V8       REQUIRED)
133FIND_PACKAGE(Cfitsio  REQUIRED)
134FIND_PACKAGE(CCfits   REQUIRED)
135
136ENDIF(NOT TOOLS_ONLY)
137
138FIND_PACKAGE(Nova     REQUIRED)
139FIND_PACKAGE(OpenSSL  REQUIRED)  # Required for boost::asio::ssl
140
141#INCLUDE_DIRECTORIES("/usr/include/mysql")
142# dbus-1 dbus-glib-1
143# doxygen
144
145#MESSAGE("")
146#MESSAGE(${V8_LIBRARY})
147#MESSAGE(${MYSQLPP_LIBRARY})
148#MESSAGE(${PANEL_LIBRARY})
149#MESSAGE(${CURSES_LIBRARIES})
150#MESSAGE(${CCFITS_LIBRARY})
151#MESSAGE(${CFITSIO_LIBRARY})
152#MESSAGE(${MYSQL_LIBRARY})
153#MESSAGE(${NOVA_LIBRARY})
154#MESSAGE(${READLINE_LIBRARY})
155#MESSAGE(${OPENSSL_SSL_LIBRARY})
156#MESSAGE("")
157
158# =============== MySQL ============
159
160INCLUDE(GetPrerequisites)
161
162FIND_PACKAGE(MySQL++ REQUIRED)
163
164IF(NOT DEFINED MYSQL_LIBRARY AND NOT CMAKE_VERSION VERSION_LESS 3.6)
165        GET_PREREQUISITES(${MYSQLPP_LIBRARY} MYSQL_LIBRARY 0 0 "" "")
166        LIST(FILTER MYSQL_LIBRARY INCLUDE REGEX .*mysqlclient.*)
167        IF (DEFINED MYSQL_LIBRARY)
168                MESSAGE(STATUS "MySQL++ links to " ${MYSQL_LIBRARY})
169        ENDIF()
170ENDIF()
171
172FIND_PACKAGE(MySQL REQUIRED)
173
174INCLUDE_DIRECTORIES(${MYSQL_INCLUDE_DIR} ${MYSQLPP_INCLUDE_DIR})
175
176
177# =============== BOOST ============
178# 1.47.0 is the newest version available at ISDC
179FIND_PACKAGE(Boost 1.47.0 REQUIRED
180        date_time
181        filesystem
182        program_options
183        regex
184        system
185        thread)
186
187IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND Boost_VERSION LESS 106000 AND NOT NO_BOOST_HACK)
188    MESSAGE(STATUS "  BOOST_REGEX_NO_EXTERNAL_TEMPLATES")
189    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBOOST_REGEX_NO_EXTERNAL_TEMPLATES=1")
190ENDIF()
191
192# At least print some information for reference
193FIND_PACKAGE_HANDLE_STANDARD_ARGS(Boost FOUND_VAR Boost_FOUND REQUIRED_VARS Boost_INCLUDE_DIR)
194
195# =============== QT4 ==============
196IF(NOT TOOLS_ONLY)
197
198FIND_PACKAGE(Qt4 REQUIRED QtCore QtGui QtOpenGL QtSql QtXml)
199FIND_PACKAGE(Qwt REQUIRED)
200
201ENDIF(NOT TOOLS_ONLY)
202
203# ============== ROOT ================
204
205FIND_PROGRAM(ROOTCONFIG_EXECUTABLE NAMES root-config)
206FIND_PACKAGE_HANDLE_STANDARD_ARGS(root-config DEFAULT_MSG ROOTCONFIG_EXECUTABLE)
207IF(NOT ROOTCONFIG_EXECUTABLE)
208   MESSAGE(FATAL_ERROR "Please make sure `root-config` is accessible in your path. In case of an installation from source, you might need to source\n . [path-to-root]/bin/thisroot.sh")
209ENDIF()
210
211# You need to tell CMake where to find the ROOT installation. This can be done in a number of ways:
212#   - ROOT built with classic configure/make use the provided $ROOTSYS/etc/cmake/FindROOT.cmake
213#   - ROOT built with CMake. Add in CMAKE_PREFIX_PATH the installation prefix for ROOT
214IF(EXISTS $ENV{ROOTSYS}/ROOTConfig.cmake)
215   IF(NOT DEFINED ENV{CMAKE_PREFIX_PATH})
216      LIST(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
217   ENDIF()
218ELSE()
219   SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "$ENV{ROOTSYS}/etc/cmake")
220ENDIF()
221
222#---Locate the ROOT package and defines a number of variables (e.g. ROOT_INCLUDE_DIRS)
223IF (DEFINED TOOLS_ONLY)
224   FIND_PACKAGE(ROOT REQUIRED COMPONENTS)
225ELSE()
226   FIND_PACKAGE(ROOT REQUIRED COMPONENTS GQt)
227ENDIF()
228
229#---Locate the ROOT package and defines a number of variables (e.g. ROOT_INCLUDE_DIRS)
230IF(NOT DEFINED ROOT_CONFIG_EXECUTABLE)
231   FIND_PACKAGE_MESSAGE(RootFound "Found ROOT: ${ROOT_INCLUDE_DIRS} [${ROOT_VERSION}]" "[${ROOT_INCLUDE_DIRS}][${ROOT_LIBRARY_DIR}][${ROOT_VERSION}]")
232ENDIF()
233
234#---Define useful ROOT functions and macros (e.g. ROOT_GENERATE_DICTIONARY)
235IF(DEFINED ROOT_USE_FILE)
236   FIND_PACKAGE_MESSAGE(RootInclude "Setup ROOT: ${ROOT_USE_FILE}" "[${ROOT_USE_FILE}]")
237   INCLUDE(${ROOT_USE_FILE})
238ELSE()
239   # From RootUseFile.cmake (root 6)
240   INCLUDE_DIRECTORIES(${ROOT_INCLUDE_DIRS})
241   LINK_DIRECTORIES(${ROOT_LIBRARY_DIR})
242   ADD_DEFINITIONS(${ROOT_DEFINITIONS})
243   SET(CMAKE_CXX_FLAGS     "${CMAKE_CXX_FLAGS} ${ROOT_CXX_FLAGS}")
244   SET(CMAKE_C_FLAGS       "${CMAKE_C_FLAGS} ${ROOT_C_FLAGS}")
245   SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${ROOT_fortran_FLAGS}")
246ENDIF()
247
248# -lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree
249# -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread
250# -lASImage -lMinuit -lHistPainter -lThread
251
252#MESSAGE("INCL_DIRS: ${ROOT_INCLUDE_DIRS}")
253#MESSAGE("LIBS:      ${ROOT_LIBRARIES}")
254#MESSAGE("DEFS:      ${ROOT_DEFINITIONS}")
255#MESSAGE("CXXFLAGS:  ${ROOT_CXX_FLAGS}")
256#MESSAGE("CXFLAGS:   ${ROOT_CC_FLAGS}")
257#MESSAGE("FOUND:     ${ROOT_FOUND}")
258#MESSAGE("FILE:      ${ROOT_USE_FILE}")
259#MESSAGE("DIR:       ${CMAKE_CURRENT_SOURCE_DIR}")
260#ROOT_<library>_LIBRARY PATH    Full path for each of the ROOT libraries listed in COMPONENTS
261#ROOT_<command>_CMD     PATH    Full path for each ROOT executable (rootcling, root, hadd, etc.)
262#ROOT_<option>_FOUND    BOOL    True for each enabled build option (e.g. cocoa, python, xrootd, etc.)
263
264# function ROOT_GENERATE_DICTIONARY( dictionary
265#                                    header1 header2 ...
266#                                    LINKDEF linkdef1 ...
267#                                    OPTIONS opt1...)
268
269# *********************************
270# ********** Observatory **********
271# *********************************
272
273SET(OBSERVATORY "ORM" CACHE STRING "Select the observatory location (ORM, HAWC, SPM, RWTH: see nova.h)")
274
275IF(NOT OBSERVATORY STREQUAL "ORM"  AND
276   NOT OBSERVATORY STREQUAL "HAWC" AND
277   NOT OBSERVATORY STREQUAL "SPM"  AND
278   NOT OBSERVATORY STREQUAL "RWTH")
279   MESSAGE(FATAL_ERROR "OBSERVATORY=${OBSERVATORY} invalid. Only ORM, HAWC, SPM and RWTH allowd!")
280ENDIF()
281
282FIND_PACKAGE_MESSAGE(PresetObservatory "Preset Observatory: ${OBSERVATORY}" "[${OBSERVATORY}]")
283
284# *********************************
285# *********** Compiler ************
286# *********************************
287
288SET(CMAKE_CXX_STANDARD 11)
289
290#ADD_DEFINITIONS(-D__CMAKE__)
291
292SET(CMAKE_CXX_FLAGS
293        "${CMAKE_CXX_FLAGS} -Wall -Winit-self -Wpointer-arith \
294         -Wcast-align -Wformat=2 -Woverloaded-virtual \
295         -Wnon-virtual-dtor -Wshadow -Wno-unknown-pragmas") # -Wextra
296
297# -D__MARS__
298SET(CMAKE_CXX_FLAGS
299        "${CMAKE_CXX_FLAGS} \
300         -D_REENTRANT -D__LINUX__ \
301         -DHAVE_ZLIB -DHAVE_ROOT -DHAVE_V8 -DHAVE_SQL -DHAVE_NOVA -DHAVE_FITS -DPRESET_OBSERVATORY=k${OBSERVATORY} \
302         -DMARSVER=\\\"${VERSION}\\\" \
303         -DPACKAGE_VERSION=\\\"${VERSION}\\\" \
304         -DREVISION=\\\"${REVISION}\\\" \
305         -DPACKAGE_NAME=\\\"FACT++\\\" \
306         -DPACKAGE_STRING=\\\"FACT++\\\" \
307         -DPACKAGE_URL=\\\"${PACKAGE_URL}\\\" \
308         -DPACKAGE_BUGREPORT=\\\"${PACKAGE_BUGREPORT}\\\""
309         )
310
311#         -DBOOST_DISABLE_ASSERTS \
312#         -DBOOST_NO_STD_LOCALE=1 \
313#         -DBOOST_REXEG_NO_FWD=1 \
314#         -DBOOST_NO_MEMBER_TEMPLATES=1 \
315#         -DBOOST_HAS_ABI_HEADERS=1 \
316
317# Flags required for Dim
318SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic -DMIPSEL -DPROTOCOL=1 -Dunix -Dlinux")
319
320
321# -------------------------------------------------------
322
323INCLUDE_DIRECTORIES(pal)
324INCLUDE_DIRECTORIES(erfa/src)
325INCLUDE_DIRECTORIES(dim/dim)
326INCLUDE_DIRECTORIES(externals)
327INCLUDE_DIRECTORIES(src)
328
329# ********************************************************
330# ********************** Libraries ***********************
331# ********************************************************
332IF (NOT TOOLS_ONLY)
333
334# =================== libPointing.so ======================
335ADD_LIBRARY(Pointing SHARED
336        pal/pal.h
337        pal/palDtt.c            pal/palDat.c            pal/palMappa.c
338        pal/palPrenut.c         pal/palEvp.c            pal/palAoppa.c
339        pal/palAoppat.c         pal/palRefco.c          pal/palRefro.c
340        pal/pal1Atmt.c          pal/palDrange.c         pal/palOne2One.c
341        pal/pal1Atms.c          pal/palMapqkz.c         pal/palAopqk.c
342        pal/palRefz.c           pal/palAmpqk.c          pal/palRdplan.c
343        pal/palDt.c             pal/palPvobs.c          pal/palNut.c
344        pal/palDmoon.c          pal/palPlanet.c         pal/palNutc.c
345        pal/palDeuler.c
346        erfa/src/gd2gc.c        erfa/src/p06e.c         erfa/src/c2s.c
347        erfa/src/eform.c        erfa/src/s2c.c          erfa/src/pas.c
348        erfa/src/pmat06.c       erfa/src/epv00.c        erfa/src/plan94.c
349        erfa/src/anpm.c         erfa/src/obl06.c        erfa/src/dat.c
350        erfa/src/af2a.c         erfa/src/rxr.c          erfa/src/gmst06.c
351        erfa/src/sepp.c         erfa/src/rz.c           erfa/src/zp.c
352        erfa/src/rxpv.c         erfa/src/pn.c           erfa/src/cr.c
353        erfa/src/seps.c         erfa/src/ry.c           erfa/src/pdp.c
354        erfa/src/pnm06a.c       erfa/src/hfk5z.c        erfa/src/epj2jd.c
355        erfa/src/pv2s.c         erfa/src/tf2a.c         erfa/src/pm.c
356        erfa/src/sxp.c          erfa/src/a2af.c         erfa/src/rxp.c
357        erfa/src/pxp.c          erfa/src/fk5hip.c       erfa/src/fw2m.c
358        erfa/src/rx.c           erfa/src/tf2d.c         erfa/src/cal2jd.c
359        erfa/src/cp.c           erfa/src/nut06a.c       erfa/src/rm2v.c
360        erfa/src/nut00a.c       erfa/src/ee06a.c        erfa/src/fk5hz.c
361        erfa/src/epb2jd.c       erfa/src/refco.c        erfa/src/a2tf.c
362        erfa/src/fapa03.c       erfa/src/gst06a.c       erfa/src/faf03.c
363        erfa/src/faur03.c       erfa/src/faju03.c       erfa/src/fal03.c
364        erfa/src/fasa03.c       erfa/src/fame03.c       erfa/src/fave03.c
365        erfa/src/fama03.c       erfa/src/faom03.c       erfa/src/gst06.c
366        erfa/src/jd2cal.c       erfa/src/gd2gce.c       erfa/src/anp.c
367        erfa/src/fae03.c        erfa/src/ir.c           erfa/src/pfw06.c
368        erfa/src/bpn2xy.c       erfa/src/eors.c         erfa/src/s06.c
369        erfa/src/trxp.c         erfa/src/era00.c        erfa/src/epj.c
370        erfa/src/d2tf.c         erfa/src/epb.c          erfa/src/rv2m.c
371        erfa/src/pap.c          erfa/src/fad03.c        erfa/src/pmp.c
372        erfa/src/tr.c           erfa/src/falp03.c)
373
374# ======================= libDim.so ======================
375ADD_LIBRARY(Dim SHARED
376#       dim/dim/dic.h
377#       dim/dim/dim_common.h
378#       dim/dim/dim.h
379#       dim/dim/dim_tcpip.h
380#       dim/dim/dis.h
381        dim/src/dic.c
382        dim/src/dis.c
383        dim/src/dna.c
384        dim/src/sll.c
385        dim/src/dll.c
386        dim/src/hash.c
387        dim/src/swap.c
388        dim/src/copy_swap.c
389        dim/src/open_dns.c
390        dim/src/conn_handler.c
391        dim/src/tcpip.c
392        dim/src/dtq.c
393        dim/src/dim_thr.c
394        dim/src/utilities.c)
395
396# ================= libDimExtension.so ===================
397ADD_LIBRARY(DimExtension SHARED
398#        src/DimSetup.h
399        src/DimSetup.cc)
400
401# ===================== libDim++.so ======================
402ADD_LIBRARY(Dim++ SHARED
403#       dim/dim/dic.hxx
404#       dim/dim/dis.hxx
405#       dim/dim/dim_core.hxx
406#       dim/dim/dim.hxx
407#       dim/dim/dim_tcpip.h
408#       dim/dim/dllist.hxx
409#       dim/dim/sllist.hxx
410#       dim/dim/tokenstring.hxx
411#       src/Dim.h
412        dim/src/diccpp.cxx
413        dim/src/dimcpp.cxx
414        dim/src/discpp.cxx
415        dim/src/tokenstring.cxx)
416
417# ================= libStateMachine.so ===================
418ADD_LIBRARY(StateMachine SHARED
419        src/WindowLog.h       src/WindowLog.cc
420        src/Readline.h        src/Readline.cc
421        src/ReadlineColor.h   src/ReadlineColor.cc
422        src/ReadlineWindow.h  src/ReadlineWindow.cc
423        src/Console.h         src/Console.cc
424        src/Shell.h           src/Shell.cc
425        src/EventImp.h        src/EventImp.cc
426        src/Event.h           src/Event.cc
427        src/State.h           src/State.cc
428        src/Description.h     src/Description.cc
429        src/MessageImp.h      src/MessageImp.cc
430        src/Converter.h       src/Converter.cc
431        src/StateMachineImp.h src/StateMachineImp.cc
432        src/StateMachine.h    src/StateMachine.cc
433        src/EventDim.h
434        src/MessageDim.h         src/MessageDim.cc
435        src/StateMachineDim.h    src/StateMachineDim.cc
436        src/DimServerList.h      src/DimServerList.cc
437        src/DimServiceInfoList.h src/DimServiceInfoList.cc
438#       src/DimNetworkList.h     src/DimNetwork.cc
439        src/ServiceList.h        src/ServiceList.cc
440        src/DimErrorRedirecter.h
441        src/DimErrorRedirecter.cc
442        src/DimDescriptionService.h
443        src/DimDescriptionService.cc
444        src/Connection.h      src/Connection.cc
445        src/ConnectionUSB.h   src/ConnectionUSB.cc
446        src/ConnectionSSL.h   src/ConnectionSSL.cc
447#       FACT.h ByteOrder.h
448        src/DimWriteStatistics.h src/DimWriteStatistics.cc)
449TARGET_LINK_LIBRARIES(StateMachine OpenSSL::SSL)
450
451ENDIF (NOT TOOLS_ONLY)
452
453# ================= libConfiguration.so ==================
454ADD_LIBRARY(Configuration SHARED
455        src/Configuration.h src/Configuration.cc
456        src/FACT.h src/FACT.cc)
457TARGET_LINK_LIBRARIES(Configuration
458        Boost::regex
459        Boost::system
460        Boost::filesystem
461        Boost::program_options
462        ${MYSQL_LIBRARY} ${MYSQLPP_LIBRARY})
463
464# ===================== libTime.so =======================
465ADD_LIBRARY(Time SHARED
466        src/Time.h src/Time.cc)
467TARGET_LINK_LIBRARIES(Time ${NOVA_LIBRARY})
468
469# ===================== libTools.so ======================
470ADD_LIBRARY(Tools SHARED
471        src/tools.h src/tools.cc)
472
473
474
475# ********************************************************
476# ********************** Manuals *************************
477# ********************************************************
478
479FILE(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/man1)
480FILE(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/html)
481FILE(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/pdf)
482
483MACRO(MANPAGE program description)
484# https://samthursfield.wordpress.com/2015/11/21/cmake-dependencies-between-targets-and-files-and-custom-commands/
485IF (HELP2MAN_EXECUTABLE AND ROFF2HTML_EXECUTABLE AND ROFF2PDF_EXECUTABLE AND GROFF_EXECUTABLE)
486        ADD_CUSTOM_COMMAND(
487                OUTPUT
488                   man1/${program}.1
489                DEPENDS
490                   ${program}
491                COMMAND
492                   ${HELP2MAN_EXECUTABLE}
493                   ${PROJECT_BINARY_DIR}/${program}
494                   -n "${description}"
495                   --no-info
496                   --output=man1/${program}.1
497                COMMAND
498                   ${GROFF_EXECUTABLE}
499                   -mandoc man1/${program}.1
500                   -T html > html/${program}.html
501                COMMAND
502                   ${GROFF_EXECUTABLE}
503                   -mandoc man1/${program}.1
504                   -T pdf > pdf/${program}.pdf
505                COMMENT
506                   "Generating man-page ${program}.1"
507                VERBATIM)
508
509        ADD_CUSTOM_TARGET(${program}.man ALL DEPENDS man1/${program}.1)
510
511        INSTALL(FILES ${PROJECT_BINARY_DIR}/man1/${program}.1 DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")
512ENDIF()
513ENDMACRO()
514
515
516
517
518# ********************************************************
519# *********************** Helpers ************************
520# ********************************************************
521
522SET(HELP++LIBS Tools Configuration Time)
523
524# --------------------------------------------------------
525
526ADD_EXECUTABLE(fitsdump src/fitsdump.cc)
527TARGET_LINK_LIBRARIES(fitsdump ${HELP++LIBS} ${ROOT_LIBRARIES} ZLIB::ZLIB)
528MANPAGE(fitsdump "FACT++ - fitsdump - Read and dump contents of a FITStable")
529
530#ADD_EXECUTABLE(fitsloader src/fitsloader.cc)
531#TARGET_LINK_LIBRARIES(fitsloader ${HELP++LIBS})
532#MANPAGE(fitsloader "")
533
534#ADD_EXECUTABLE(fitscheck src/fitscheck.cc)
535#TARGET_LINK_LIBRARIES(fitscheck ${HELP++LIBS} ZLIB::ZLIB)
536#MANPAGE(fitscheck "")
537
538#ADD_EXECUTABLE(fitsCompressor src/fitsCompressor.cc)
539#TARGET_LINK_LIBRARIES(fitsCompressor ${HELP++LIBS} ZLIB::ZLIB)
540#MANPAGE(fitsCompressor "")
541
542#ADD_EXECUTABLE(fitsselect src/fitsselect.cc)
543#TARGET_LINK_LIBRARIES(fitsselect ${HELP++LIBS} ZLIB::ZLIB)
544#MANPAGE(fitsselect "")
545
546#ADD_EXECUTABLE(readfits src/readfits.cc)
547#TARGET_LINK_LIBRARIES(readfits ${HELP++LIBS} ZLIB::ZLIB)
548#MANPAGE(readfits "")
549
550ADD_EXECUTABLE(rootifysql src/rootifysql.cc)
551TARGET_LINK_LIBRARIES(rootifysql ${HELP++LIBS} ${ROOT_LIBRARIES})
552MANPAGE(rootifysql "FACT++ - rootifysql - Write result of a SQL query into a root-file")
553
554ADD_EXECUTABLE(root2sql src/root2sql.cc)
555TARGET_LINK_LIBRARIES(root2sql ${HELP++LIBS} ${ROOT_LIBRARIES})
556MANPAGE(root2sql "FACT++ - root2sql - Fill contents of a root-tree into a MySQL database")
557
558ADD_EXECUTABLE(fits2sql src/fits2sql.cc)
559TARGET_LINK_LIBRARIES(fits2sql ${HELP++LIBS}  ZLIB::ZLIB)
560MANPAGE(fits2sql "FACT++ - fits2sql - Fill contents of a FITS table into a MySQL database")
561
562ADD_EXECUTABLE(showlog src/showlog.cc src/WindowLog.cc)
563TARGET_LINK_LIBRARIES(showlog Threads::Threads ${HELP++LIBS} ${CURSES_LIBRARIES})
564MANPAGE(showlog "")
565
566ADD_EXECUTABLE(zfits src/zfits.cc)
567TARGET_LINK_LIBRARIES(zfits ${HELP++LIBS} ZLIB::ZLIB)
568MANPAGE(zfits "")
569
570ADD_EXECUTABLE(calcsource src/calcsource.cc)
571TARGET_LINK_LIBRARIES(calcsource ${HELP++LIBS} ${ROOT_LIBRARIES})
572MANPAGE(calcsource "")
573
574ADD_EXECUTABLE(getevent src/getevent.cc)
575TARGET_LINK_LIBRARIES(getevent ${HELP++LIBS} ZLIB::ZLIB)
576MANPAGE(getevent "")
577
578IF (NOT TOOLS_ONLY)
579
580ADD_EXECUTABLE(makeplots src/makeplots.cc)
581TARGET_LINK_LIBRARIES(makeplots  ${HELP++LIBS} ${ROOT_LIBRARIES})
582MANPAGE(makeplots "")
583
584ADD_EXECUTABLE(makedata src/makedata.cc)
585TARGET_LINK_LIBRARIES(makedata ${HELP++LIBS})
586MANPAGE(makedata "")
587
588ADD_EXECUTABLE(makeschedule src/makeschedule.cc)
589TARGET_LINK_LIBRARIES(makeschedule ${HELP++LIBS})
590MANPAGE(makeschedule "")
591
592# ********************************************************
593# ********************* Operation ************************
594# ********************************************************
595
596SET(FACT++LIBS
597        StateMachine Tools Configuration Time Dim++ Dim DimExtension
598        readline ${CURSES_LIBRARIES} panel Boost::thread) # HAVE_SQL
599
600# --------------------------------------------------------
601
602ADD_EXECUTABLE(dns src/dns.c)
603TARGET_LINK_LIBRARIES(dns ${FACT++LIBS})
604MANPAGE(dns "")
605
606ADD_EXECUTABLE(agilentctrl src/agilentctrl.cc)
607TARGET_LINK_LIBRARIES(agilentctrl ${FACT++LIBS})
608MANPAGE(agilentctrl "")
609
610ADD_EXECUTABLE(biasctrl src/biasctrl.cc)
611TARGET_LINK_LIBRARIES(biasctrl ${FACT++LIBS})
612MANPAGE(biasctrl "")
613
614ADD_EXECUTABLE(biastemp src/biastemp.cc)
615TARGET_LINK_LIBRARIES(biastemp ${FACT++LIBS})
616MANPAGE(biastemp "")
617
618ADD_EXECUTABLE(chatserv src/chatserv.cc)
619TARGET_LINK_LIBRARIES(chatserv ${FACT++LIBS}) # does not require libpanel
620MANPAGE(chatserv "")
621
622ADD_EXECUTABLE(chatclient src/chatclient.cc)
623TARGET_LINK_LIBRARIES(chatclient ${FACT++LIBS}) # does not require libpanel
624MANPAGE(chatclient "")
625
626#ADD_EXECUTABLE(cosyctrl src/cosyctrl.cc)# src/LocalControl.h
627#TARGET_LINK_LIBRARIES(cosyctrl
628#       StateMachine Tools Configuration Time Dim++ Dim DimExtension
629#        ${Boost_LIBRARIES} readline ${CURSES_LIBRARIES})
630
631ADD_EXECUTABLE(datalogger src/datalogger.cc
632        src/DimState.cc
633        src/FitsFile.cc src/Fits.cc)
634TARGET_LINK_LIBRARIES(datalogger ${FACT++LIBS} cfitsio CCfits)
635MANPAGE(datalogger "")
636
637ADD_EXECUTABLE(dimctrl src/dimctrl.cc
638        src/StateMachineDimControl.cc
639        src/RemoteControl.cc
640        src/InterpreterV8.cc
641        src/DimState.cc)
642TARGET_LINK_LIBRARIES(dimctrl ${FACT++LIBS} Pointing ZLIB::ZLIB v8)
643MANPAGE(dimctrl "")
644
645ADD_CUSTOM_TARGET(dimserver ALL
646        COMMAND ln -sf dimctrl dimserver
647        COMMENT "Creating symlink for dimserver"
648        DEPENDS dimctrl)
649
650ADD_EXECUTABLE(drivectrl src/drivectrl.cc)
651TARGET_LINK_LIBRARIES(drivectrl ${FACT++LIBS} Pointing)
652MANPAGE(drivectrl "")
653
654ADD_EXECUTABLE(evtserver src/evtserver.cc)
655TARGET_LINK_LIBRARIES(evtserver ${FACT++LIBS} ZLIB::ZLIB)
656MANPAGE(evtserver "")
657
658ADD_EXECUTABLE(fadctrl src/fadctrl.cc src/HeadersFAD.cc
659        src/EventBuilder.cc
660        src/FitsFile.cc
661        src/DataCalib.cc
662        src/DataWriteRaw.cc
663        src/DataWriteFits.cc
664        src/DataWriteFits2.cc
665        src/DataProcessorImp.cc)
666TARGET_LINK_LIBRARIES(fadctrl ${FACT++LIBS} cfitsio CCfits ZLIB::ZLIB)
667MANPAGE(fadctrl "")
668
669ADD_EXECUTABLE(feedback src/feedback.cc)
670TARGET_LINK_LIBRARIES(feedback ${FACT++LIBS})
671MANPAGE(feedback "")
672
673ADD_EXECUTABLE(fscctrl src/fscctrl.cc src/HeadersFTM.cc)
674TARGET_LINK_LIBRARIES(fscctrl ${FACT++LIBS})
675MANPAGE(fscctrl "")
676
677ADD_EXECUTABLE(ftmctrl src/ftmctrl.cc src/HeadersFTM.cc)
678TARGET_LINK_LIBRARIES(ftmctrl ${FACT++LIBS})
679MANPAGE(ftmctrl "")
680
681ADD_EXECUTABLE(gcn src/gcn.cc)
682TARGET_LINK_LIBRARIES(gcn ${FACT++LIBS} Qt4::QtXml)
683MANPAGE(gcn "")
684
685ADD_EXECUTABLE(gpsctrl src/gpsctrl.cc)
686TARGET_LINK_LIBRARIES(gpsctrl ${FACT++LIBS})
687MANPAGE(gpsctrl "")
688
689ADD_EXECUTABLE(lidctrl src/lidctrl.cc)
690TARGET_LINK_LIBRARIES(lidctrl ${FACT++LIBS} Qt4::QtXml)
691MANPAGE(lidctrl "")
692
693ADD_EXECUTABLE(magiclidar src/magiclidar.cc)
694TARGET_LINK_LIBRARIES(magiclidar ${FACT++LIBS})
695MANPAGE(magiclidar "")
696
697ADD_EXECUTABLE(magicweather src/magicweather.cc)
698TARGET_LINK_LIBRARIES(magicweather ${FACT++LIBS})
699MANPAGE(magicweather "")
700
701ADD_EXECUTABLE(mcp src/mcp.cc)
702TARGET_LINK_LIBRARIES(mcp ${FACT++LIBS})
703MANPAGE(mcp "")
704
705ADD_EXECUTABLE(pfminictrl src/pfminictrl.cc)
706TARGET_LINK_LIBRARIES(pfminictrl ${FACT++LIBS})
707MANPAGE(pfminictrl "")
708
709ADD_EXECUTABLE(pwrctrl src/pwrctrl.cc src/HeadersPower.cc)
710TARGET_LINK_LIBRARIES(pwrctrl ${FACT++LIBS} Qt4::QtXml)
711MANPAGE(pwrctrl "")
712
713ADD_EXECUTABLE(rainsensor src/rainsensor.cc)
714TARGET_LINK_LIBRARIES(rainsensor ${FACT++LIBS})
715MANPAGE(rainsensor "")
716
717ADD_EXECUTABLE(ratecontrol src/ratecontrol.cc)
718TARGET_LINK_LIBRARIES(ratecontrol ${FACT++LIBS})
719MANPAGE(ratecontrol "")
720
721ADD_EXECUTABLE(ratescan src/ratescan.cc)
722TARGET_LINK_LIBRARIES(ratescan ${FACT++LIBS})
723MANPAGE(ratescan "")
724
725#ADD_EXECUTABLE(scheduler src/scheduler.cc)
726#TARGET_LINK_LIBRARIES(scheduler ${FACT++LIBS})
727#MANPAGE(scheduler "")
728
729#ADD_EXECUTABLE(skypeclient src/skypeclient.cc)
730#TARGET_LINK_LIBRARIES(skypeclient ${FACT++LIBS})
731#MANPAGE(skypeclient "")
732
733ADD_EXECUTABLE(sqmctrl src/sqmctrl.cc)
734TARGET_LINK_LIBRARIES(sqmctrl ${FACT++LIBS})
735MANPAGE(sqmctrl "")
736
737ADD_EXECUTABLE(smartfact src/smartfact.cc)
738TARGET_LINK_LIBRARIES(smartfact ${FACT++LIBS}) # HAVE_NOVA
739MANPAGE(smartfact "")
740
741ADD_EXECUTABLE(temperature src/temperature.cc)
742TARGET_LINK_LIBRARIES(temperature ${FACT++LIBS})
743MANPAGE(temperature "")
744
745ADD_EXECUTABLE(timecheck src/timecheck.cc)
746TARGET_LINK_LIBRARIES(timecheck ${FACT++LIBS})
747MANPAGE(timecheck "")
748
749ADD_EXECUTABLE(tngweather src/tngweather.cc)
750TARGET_LINK_LIBRARIES(tngweather ${FACT++LIBS} Qt4::QtXml)
751MANPAGE(tngweather "")
752
753#ADD_EXECUTABLE(triggerschedule src/triggerschedule.cc)
754#TARGET_LINK_LIBRARIES(triggerschedule ${FACT++LIBS})
755#MANPAGE(triggerschedule "")
756
757
758
759# ********************************************************
760# ****************** GUI Applications ********************
761# ********************************************************
762
763INCLUDE_DIRECTORIES(${QWT_INCLUDE_DIR}/qwt-qt4 gui gui/RawEventsViewer)
764
765# --------------------------------------------------------
766
767QT4_WRAP_UI(VIEWER_QT_HEADERS gui/RawEventsViewer/viewer.ui)
768
769QT4_WRAP_CPP(VIEWER_QT_SOURCES
770        gui/RawEventsViewer/RawEventsViewer.h
771        gui/BasicGlCamera.h
772        gui/QCameraWidget.h
773        gui/Q3DCameraWidget.h)
774
775ADD_EXECUTABLE(viewer
776        gui/RawEventsViewer/RawEventsViewer.cc
777        gui/BasicGlCamera.cc
778        gui/QCameraWidget.cc
779        gui/Q3DCameraWidget.cc
780        ${VIEWER_QT_HEADERS}
781        ${VIEWER_QT_SOURCES})
782
783TARGET_LINK_LIBRARIES(viewer
784        ${Boost_LIBRARIES} Configuration
785        Qt4::QtGui Qt4::QtOpenGL
786        ${OPENGL_LIBRARIES} # OpenGL::GL OpenGL::GLU
787        qwt-qt4 ZLIB::ZLIB)
788
789# --------------------------------------------------------
790
791QT4_ADD_RESOURCES(FACT_QT_RESOURCES gui/design.qrc)
792
793QT4_WRAP_UI(FACT_QT_HEADERS gui/design.ui)
794
795QT4_WRAP_CPP(FACT_QT_SOURCES
796        gui/DockWindow.h
797        gui/MainWindow.h
798        gui/QCameraWidget.h
799        gui/BasicGlCamera.h)
800
801ADD_EXECUTABLE(fact gui/fact.cc
802        gui/DockWindow.cc
803        gui/MainWindow.cc
804        gui/QCameraWidget.cc
805        gui/BasicGlCamera.cc
806        gui/HtmlDelegate.cc
807        gui/CheckBoxDelegate.cc
808        src/DimNetwork.cc
809        ${FACT_QT_HEADERS}
810        ${FACT_QT_SOURCES}
811        ${FACT_QT_RESOURCES})
812
813TARGET_LINK_LIBRARIES(fact
814        ${FACT++LIBS}
815        ${ROOT_LIBRARIES}
816        Qt4::QtGui Qt4::QtOpenGL Qt4::QtSql
817        ${OPENGL_LIBRARIES} # OpenGL::GL OpenGL::GLU
818        qwt-qt4 ZLIB::ZLIB)
819
820
821#dclient5_SOURCES = src/dclient5.cc src/LocalControl.h
822#dclient5_LDADD   = libDim++.la libDim.la libStateMachine.la libTime.la libTools.la \
823#    libConfiguration.la
824
825#argv_SOURCES = src/argv.cc
826#argv_LDADD = libConfiguration.la
827
828#time_SOURCES = src/time.cc
829#time_LDADD = libTime.la
830
831#test_SOURCES = src/test.cc
832#test_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
833
834ENDIF(NOT TOOLS_ONLY)
835
836
837# ********************************************************
838# ********************** FAMOUS **************************
839# ********************************************************
840
841IF(FOUND_FAMOUS)
842        INCLUDE_DIRECTORIES(famous/ui)
843        INCLUDE_DIRECTORIES(famous/src)
844
845        ADD_EXECUTABLE(famousbias famous/src/biasctrl.cc)
846        TARGET_LINK_LIBRARIES(famousbias ${FACT++LIBS})
847        MANPAGE(famousbias "")
848
849        ADD_EXECUTABLE(famousui famous/ui/famousui.cc)
850        TARGET_LINK_LIBRARIES(famousui ${FACT++LIBS})
851        MANPAGE(famousui "")
852
853        ADD_EXECUTABLE(ftuctrl famous/src/ftuctrl.cc)
854        TARGET_LINK_LIBRARIES(ftuctrl ${FACT++LIBS})
855        MANPAGE(ftuctrl "")
856
857        ADD_EXECUTABLE(miniftmctrl famous/src/miniftmctrl.cc)
858        TARGET_LINK_LIBRARIES(miniftmctrl ${FACT++LIBS})
859        MANPAGE(miniftmctrl "")
860
861        ADD_EXECUTABLE(fpgaftmctrl famous/src/fpgaftmctrl.cc)
862        TARGET_LINK_LIBRARIES(fpgaftmctrl ${FACT++LIBS})
863        MANPAGE(fpgaftmctrl "")
864
865        ADD_EXECUTABLE(famousrate famous/src/ratecontrol.cc)
866        TARGET_LINK_LIBRARIES(famousrate ${FACT++LIBS})
867        MANPAGE(famousrate "")
868ENDIF()
869
870
871
872# ********************************************************
873# ********************** IceACT **************************
874# ********************************************************
875
876IF(FOUND_ICEACT)
877        ADD_EXECUTABLE(iceactpsu iceact/src/psuctrl.cc)
878        TARGET_LINK_LIBRARIES(iceactpsu ${FACT++LIBS})
879        MANPAGE(iceactpsu "")
880
881        ADD_EXECUTABLE(tmonctrl iceact/src/tmonctrl.cc)
882        TARGET_LINK_LIBRARIES(tmonctrl ${FACT++LIBS})
883        MANPAGE(tmonctrl "")
884ENDIF()
885
886
887# *********************************
888# ********** Installation *********
889# *********************************
890
891# ======== Setup directories ======
892
893# MESSAGE("")
894# MESSAGE("PREFIX:         "${CMAKE_INSTALL_PREFIX})
895# MESSAGE("")
896# MESSAGE("BINDIR:         "${CMAKE_INSTALL_FULL_BINDIR})
897# MESSAGE("SBINDIR:        "${CMAKE_INSTALL_FULL_SBINDIR})
898# MESSAGE("LIBEXECDIR:     "${CMAKE_INSTALL_FULL_LIBEXECDIR})
899# MESSAGE("SHAREDSTATEDIR: "${CMAKE_INSTALL_FULL_SHAREDSTATEDIR})
900# MESSAGE("LOCALSTATEDIR:  "${CMAKE_INSTALL_FULL_LOCALSTATEDIR})
901# MESSAGE("RUNSTATEDIR:    "${CMAKE_INSTALL_FULL_RUNSTATEDIR})
902# MESSAGE("LIBDIR:         "${CMAKE_INSTALL_FULL_LIBDIR})
903# MESSAGE("INCLUDEDIR:     "${CMAKE_INSTALL_FULL_INCLUDEDIR})
904# MESSAGE("DATAROOTDIR:    "${CMAKE_INSTALL_FULL_DATAROOTDIR})
905# MESSAGE("DATADIR:        "${CMAKE_INSTALL_FULL_DATADIR})
906# MESSAGE("INFODIR:        "${CMAKE_INSTALL_FULL_INFODIR})
907# MESSAGE("LOCALDIR:       "${CMAKE_INSTALL_FULL_LOCALDIR})
908# MESSAGE("MANDIR:         "${CMAKE_INSTALL_FULL_MANDIR})
909# MESSAGE("DOCDIR:         "${CMAKE_INSTALL_FULL_DOCDIR})
910# MESSAGE("")
911# MESSAGE("BINDIR:         "${CMAKE_INSTALL_BINDIR})
912# MESSAGE("SBINDIR:        "${CMAKE_INSTALL_SBINDIR})
913# MESSAGE("LIBEXECDIR:     "${CMAKE_INSTALL_LIBEXECDIR})
914# MESSAGE("SHAREDSTATEDIR: "${CMAKE_INSTALL_SHAREDSTATEDIR})
915# MESSAGE("LOCALSTATEDIR:  "${CMAKE_INSTALL_LOCALSTATEDIR})
916# MESSAGE("RUNSTATEDIR:    "${CMAKE_INSTALL_RUNSTATEDIR})
917# MESSAGE("LIBDIR:         "${CMAKE_INSTALL_LIBDIR})
918# MESSAGE("INCLUDEDIR:     "${CMAKE_INSTALL_INCLUDEDIR})
919# MESSAGE("DATAROOTDIR:    "${CMAKE_INSTALL_DATAROOTDIR})
920# MESSAGE("DATADIR:        "${CMAKE_INSTALL_DATADIR})
921# MESSAGE("INFODIR:        "${CMAKE_INSTALL_INFODIR})
922# MESSAGE("LOCALDIR:       "${CMAKE_INSTALL_LOCALDIR})
923# MESSAGE("MANDIR:         "${CMAKE_INSTALL_MANDIR})
924# MESSAGE("DOCDIR:         "${CMAKE_INSTALL_DOCDIR})
925# MESSAGE("")
926
927SET(PKG_SHARE    "${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}")
928SET(PKG_APPS     "${CMAKE_INSTALL_DATAROOTDIR}/applications")
929SET(PKG_PIXMAPS  "${CMAKE_INSTALL_DATAROOTDIR}/pixmaps")
930
931# ====== Installation targets =====
932
933INSTALL(TARGETS  fits2sql       DESTINATION "${CMAKE_INSTALL_BINDIR}")
934INSTALL(TARGETS  root2sql       DESTINATION "${CMAKE_INSTALL_BINDIR}")
935INSTALL(TARGETS  fitsdump       DESTINATION "${CMAKE_INSTALL_BINDIR}")
936INSTALL(TARGETS  zfits          DESTINATION "${CMAKE_INSTALL_BINDIR}")
937INSTALL(TARGETS  calcsource     DESTINATION "${CMAKE_INSTALL_BINDIR}")
938INSTALL(TARGETS  showlog        DESTINATION "${CMAKE_INSTALL_BINDIR}")
939INSTALL(TARGETS  rootifysql     DESTINATION "${CMAKE_INSTALL_BINDIR}")
940INSTALL(TARGETS  Configuration  DESTINATION "${CMAKE_INSTALL_LIBDIR}")
941INSTALL(TARGETS  Time           DESTINATION "${CMAKE_INSTALL_LIBDIR}")
942INSTALL(TARGETS  Tools          DESTINATION "${CMAKE_INSTALL_LIBDIR}")
943
944#INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/html DESTINATION  "${PKG_SHARE}" FILES_MATCHING PATTERN "*.html")
945#INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/pdf  DESTINATION  "${PKG_SHARE}" FILES_MATCHING PATTERN "*.pdf")
946
947# *********************************
948# ************ Packaging **********
949# *********************************
950
951# ======== General packaging ======
952# https://cmake.org/cmake/help/latest/module/CPack.html
953
954INCLUDE(InstallRequiredSystemLibraries)
955
956# SET(CPACK_STRIP_FILES ON) # Strip debug sysmbold from files
957
958SET(CPACK_PACKAGE_VERSION       "${fact++_VERSION}")
959SET(CPACK_PACKAGE_CONTACT       "${PACKAGE_BUGREPORT}")
960SET(CPACK_PACKAGE_MAINTAINER    "${PACKAGE_MAINTAINER}")
961SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING")
962#SET(CPACK_PACKAGE_VENDOR "Me, myself, and I")
963
964
965SET(CPACK_SOURCE_IGNORE_FILES "/old/;/build/;/[.].*/;/autom4te[.]cache/;.*~;.log$")
966
967# Maybe the text displayed in synaptic?
968SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README")
969SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "FACT++ - Toolset")
970#CPACK_RESOURCE_FILE_README     ReadMe file to be embedded in the installer.
971
972SET(CPACK_GENERATOR        TBZ2 DEB) # TGZ
973SET(CPACK_SOURCE_GENERATOR TBZ2)     # TGZ
974#SET(CPACK_PROJECT_CONFIG_FILE ${CMAKE_SOURCE_DIR}/cmake/Package.txt)
975#SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
976
977
978# ======== Debian packaging =======
979# https://cmake.org/cmake/help/latest/module/CPackDeb.html
980# https://www.debian.org/doc/debian-policy
981
982#SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libao4 (>=1.0), libsfm-system2.3v5 (>=2.3), libsfml-graphicsv2.3v5 (>=2.3), libsfml-audio2.3v5 (>=2.3), libsfm-window2.3v5 (>2.3)")
983SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS 1) # generate better (atomatic?) dependecies
984SET(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=")
985SET(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION TRUE)
986SET(CPACK_DEBIAN_PACKAGE_SECTION utils)
987SET(CPACK_DEBIAN_PACKAGE_HOMEPAGE "${PACKAGE_URL}")
988SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION
989"${CPACK_PACKAGE_DESCRIPTION_SUMMARY}
990 This package contains some tools which are part of FACT++ to deal with databases, fits files and root-files.")
991#indent the long description with spaces
992
993#CPACK_INSTALL_CMAKE_PROJECTS
994#List of four values that specify what project to install. Build directory, Project Name, Project Component, Directory.
995
996INCLUDE(CPack)
Note: See TracBrowser for help on using the repository browser.