]> Creatis software - bbtk.git/blob - kernel/cmake/BBTKConfigurePackage.cmake
#3425 BBTK Feature New Normal - PlugPackage Install Linux
[bbtk.git] / kernel / cmake / BBTKConfigurePackage.cmake
1  # ---------------------------------------------------------------------
2  #
3  # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
4  #                        pour la SantÈ)
5  # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6  # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7  # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
8  #
9  #  This software is governed by the CeCILL-B license under French law and
10  #  abiding by the rules of distribution of free software. You can  use,
11  #  modify and/ or redistribute the software under the terms of the CeCILL-B
12  #  license as circulated by CEA, CNRS and INRIA at the following URL
13  #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
14  #  or in the file LICENSE.txt.
15  #
16  #  As a counterpart to the access to the source code and  rights to copy,
17  #  modify and redistribute granted by the license, users are provided only
18  #  with a limited warranty  and the software's author,  the holder of the
19  #  economic rights,  and the successive licensors  have only  limited
20  #  liability.
21  #
22  #  The fact that you are presently reading this means that you have had
23  #  knowledge of the CeCILL-B license and that you accept its terms.
24  # ------------------------------------------------------------------------ */
25
26
27 # ==================================
28 #           W A R N I N G !
29 # ==================================
30 #
31 # This file is dupplicated as BBTKConfigurePackage2.cmake
32 #
33 # Only ONE commented out line, in BBTKConfigurePackage2.cmake differs
34 # :-(
35 # In case of modification, mind to modify BBTKConfigurePackage2.cmake as well!
36 #
37
38
39 MESSAGE(STATUS "")
40 MESSAGE(STATUS "=======================================")
41 MESSAGE(STATUS "CONFIGURING BBTK PACKAGE ${BBTK_PACKAGE_NAME}")
42
43 #---------------------------------------------------------------------------
44 SET(${BBTK_PACKAGE_NAME}_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
45 #---------------------------------------------------------------------------
46
47 #---------------------------------------------------------------------------
48 IF(NOT BBTK_CORE_PACKAGE)
49   #---------------------------------------------------------------------------
50   SET(BBTK_PACKAGE_LIBS 
51     ${BBTK_PACKAGE_LIBS}
52     ${BBTK_LIBRARIES})
53   MARK_AS_ADVANCED(BBTK_DIR)
54   #-------------------------------------------------------------------------
55   # If not a core package must include necessary cmake scripts
56   INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigurePackagePaths.cmake)
57   INCLUDE(${BBTK_CMAKE_DIR}/BBTKBuildAllOption.cmake)
58   #  INCLUDE(${BBTK_CMAKE_DIR}/BBTKMacros.cmake)
59   INCLUDE(${BBTK_CMAKE_DIR}/BBTKFindLibraries.cmake)
60   #-------------------------------------------------------------------------
61   # Configure bbtk_config_build.xml.in for bbi to find the bbs
62   INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigureBbtkConfigXmlForBuildTree.cmake)
63   #------------------------------------------------------------------------- 
64   # WARNING : 
65   # FOR THE MOMENT ONLY ONE BBTK PACKAGE PER PROJECT ALLOWED!!!
66   # 
67   SET(${BBTK_PACKAGE_NAME}_BINARY_DIR  ${PROJECT_BINARY_DIR})
68   # ${CMAKE_CURRENT_BINARY_DIR})
69   #------------------------------------------------------------------------- 
70   #---------------------------------------------------------------------------
71   # CREATES THE bbtkPackage TEXT FILE
72   CONFIGURE_FILE(
73     ${BBTK_CMAKE_DIR}/bbtkPackage.in
74     ${${BBTK_PACKAGE_NAME}_BINARY_DIR}/bbtkPackage
75     @ONLY
76     )
77   IF (WIN32)
78     CONFIGURE_FILE(
79                 ${BBTK_CMAKE_DIR}/PlugPackage.bat.in
80                 ${${BBTK_PACKAGE_NAME}_BINARY_DIR}/PlugPackage.bat
81                 COPYONLY
82     )
83         INSTALL ( FILES ${${BBTK_PACKAGE_NAME}_BINARY_DIR}/bbtkPackage      DESTINATION  "." )
84     INSTALL ( FILES ${${BBTK_PACKAGE_NAME}_BINARY_DIR}/PlugPackage.bat  DESTINATION  "." )
85   ELSE(WIN32)
86     CONFIGURE_FILE(
87                 ${BBTK_CMAKE_DIR}/PlugPackage.sh.in
88                 ${${BBTK_PACKAGE_NAME}_BINARY_DIR}/PlugPackage.sh
89                 COPYONLY
90     )
91         INSTALL ( FILES ${${BBTK_PACKAGE_NAME}_BINARY_DIR}/bbtkPackage     DESTINATION  "share/bbtk" )
92     INSTALL ( FILES ${${BBTK_PACKAGE_NAME}_BINARY_DIR}/PlugPackage.sh  DESTINATION  "share/bbtk" )
93   ENDIF (WIN32)
94
95   #---------------------------------------------------------------------------
96 ELSE(NOT BBTK_CORE_PACKAGE)
97   SET(${BBTK_PACKAGE_NAME}_BINARY_DIR ${PROJECT_BINARY_DIR})
98 ENDIF(NOT BBTK_CORE_PACKAGE)
99 #---------------------------------------------------------------------------
100
101
102
103
104
105 #----------------------------------------------------------------------------
106 # USER DEFINED ADDITIONAL INCLUDE DIRS
107 INCLUDE_DIRECTORIES(${${BBTK_PACKAGE_NAME}_INCLUDE_DIRS})
108 #----------------------------------------------------------------------------
109
110
111 #---------------------------------------------------------------------------
112 # Package dependencies
113 SET(${BBTK_PACKAGE_NAME}_DEPS bb${BBTK_PACKAGE_NAME})
114 STRING(REGEX MATCH "${${BBTK_PACKAGE_NAME}_DEPS}" 
115   ${BBTK_PACKAGE_NAME}_IN_DEPS
116   "${BBTK_PACKAGES_DEPS}")
117 #---------------------------------------------------------------------------
118 #SET(BBTK_PACKAGES_DEPS "" CACHE INTERNAL "bbtk packages dependencies" FORCE)
119
120
121
122 #----------------------------------------------------------------------------
123 # VARS CONFIGURED IN bbPackage.h AND IN doc/bbdoc/header.html.in
124 SET(BBTK_PACKAGE_AUTHOR        "${${BBTK_PACKAGE_NAME}_AUTHOR}")
125 SET(BBTK_PACKAGE_DESCRIPTION   "${${BBTK_PACKAGE_NAME}_DESCRIPTION}")
126 SET(BBTK_PACKAGE_MAJOR_VERSION ${${BBTK_PACKAGE_NAME}_MAJOR_VERSION})
127 SET(BBTK_PACKAGE_MINOR_VERSION ${${BBTK_PACKAGE_NAME}_MINOR_VERSION})
128 SET(BBTK_PACKAGE_BUILD_VERSION ${${BBTK_PACKAGE_NAME}_BUILD_VERSION})
129 SET(BBTK_PACKAGE_VERSION 
130   "\"${${BBTK_PACKAGE_NAME}_MAJOR_VERSION}.${${BBTK_PACKAGE_NAME}_MINOR_VERSION}.${${BBTK_PACKAGE_NAME}_BUILD_VERSION}\"")
131 #----------------------------------------------------------------------------
132
133
134 #---------------------------------------------------------------------------
135 # If package deps not in global deps : add them
136 IF(NOT ${BBTK_PACKAGE_NAME}_IN_DEPS)
137   SET(BBTK_PACKAGES_DEPS "${${BBTK_PACKAGE_NAME}_DEPS};${BBTK_PACKAGES_DEPS}"
138     CACHE INTERNAL "bbtk packages dependencies" FORCE)
139   #   MESSAGE(STATUS "Packages=${BBTK_PACKAGES_DEPS}")
140 ENDIF(NOT ${BBTK_PACKAGE_NAME}_IN_DEPS)
141 #---------------------------------------------------------------------------
142
143 #---------------------------------------------------------------------------
144 # Package dependencies
145 IF(${BBTK_PACKAGE_NAME}_USE_VTK)
146   SET(USE_VTK ON CACHE BOOL "Use VTK" FORCE)
147   SET(${BBTK_PACKAGE_NAME}_LIBS
148     ${${BBTK_PACKAGE_NAME}_LIBS}
149     ${VTK_LIBRARIES}
150     )
151 ENDIF(${BBTK_PACKAGE_NAME}_USE_VTK)
152
153 IF(${BBTK_PACKAGE_NAME}_USE_ITK)
154   SET(USE_ITK ON CACHE BOOL "Use ITK" FORCE)
155   SET(${BBTK_PACKAGE_NAME}_LIBS
156     ${${BBTK_PACKAGE_NAME}_LIBS}
157     ${ITK_LIBRARIES}
158     )
159
160         #Need to add additional gdcm  libraries provided by system
161         IF(WIN32)
162                 IF(USE_GDCM2)
163                         SET(${BBTK_PACKAGE_NAME}_LIBS
164                                 ${${BBTK_PACKAGE_NAME}_LIBS}
165                                  vtkgdcm gdcmIOD gdcmMSFF gdcmexpat gdcmCommon gdcmMEXD gdcmDSED gdcmDICT 
166                                         gdcmjpeg8 gdcmjpeg12 gdcmjpeg16 socketxx gdcmopenjpeg gdcmcharls 
167                                 )
168                 ENDIF()
169         ENDIF(WIN32)
170 ENDIF(${BBTK_PACKAGE_NAME}_USE_ITK)
171
172 IF(${BBTK_PACKAGE_NAME}_USE_QT)
173   SET(USE_QT4 ON CACHE BOOL "Use QT" FORCE)
174   SET(${BBTK_PACKAGE_NAME}_LIBS
175     ${${BBTK_PACKAGE_NAME}_LIBS}
176     ${QT_LIBRARIES}
177     )
178 ENDIF(${BBTK_PACKAGE_NAME}_USE_QT)
179
180 #----------
181
182 IF(${BBTK_PACKAGE_NAME}_USE_GDCM)
183   SET(USE_GDCM ON CACHE BOOL "Use GDCM" )
184   SET(USE_GDCM2 OFF CACHE BOOL "Use GDCM2" )
185   SET(USE_GDCM_VTK ON CACHE BOOL "Use GDCM_VTK" FORCE)
186   SET(${BBTK_PACKAGE_NAME}_LIBS
187     ${${BBTK_PACKAGE_NAME}_LIBS}
188     ${GDCM_LIBRARIES}
189     )
190
191         IF(USE_GDCM)
192                 IF(USE_GDCM2)
193                 message(FATAL_ERROR "You cannot select both GDCM and GDCM2 (DICOM library readers)")
194                 ENDIF(USE_GDCM2)
195         ENDIF(USE_GDCM)
196 ENDIF(${BBTK_PACKAGE_NAME}_USE_GDCM)
197
198 #----------
199
200 IF(${BBTK_PACKAGE_NAME}_USE_GDCM2)
201   SET(USE_GDCM2 ON CACHE BOOL "Use GDCM2" FORCE)
202   SET(USE_GDCM2_VTK ON CACHE BOOL "Use GDCM2_VTK" FORCE)
203   #For some reasons GDCM_LIBRARY is not defined for gdcm2 in windows
204   IF(WIN32)
205         SET(${BBTK_PACKAGE_NAME}_LIBS
206                 ${${BBTK_PACKAGE_NAME}_LIBS}
207                 vtkgdcm gdcmIOD gdcmMSFF gdcmexpat gdcmCommon gdcmMEXD gdcmDSED gdcmDICT 
208                 gdcmjpeg8 gdcmjpeg12 gdcmjpeg16 socketxx gdcmopenjpeg gdcmcharls 
209                 )
210   ELSE(WIN32)
211         SET(${BBTK_PACKAGE_NAME}_LIBS
212                 ${${BBTK_PACKAGE_NAME}_LIBS}
213                 ${GDCM_LIBRARY}
214                 )
215         ENDIF(WIN32)
216                 
217         IF(USE_GDCM2)
218                 IF(USE_GDCM)
219                 message(FATAL_ERROR "You cannot select both GDCM and GDCM2 (DICOM library readers)")
220                 ENDIF(USE_GDCM)
221         ENDIF(USE_GDCM2)
222 ENDIF(${BBTK_PACKAGE_NAME}_USE_GDCM2)
223
224 #----------
225
226 IF(${BBTK_PACKAGE_NAME}_USE_GSMIS)
227   SET(USE_GSMIS ON CACHE BOOL "Use GSMIS" FORCE)
228   SET(${BBTK_PACKAGE_NAME}_LIBS
229     ${${BBTK_PACKAGE_NAME}_LIBS}
230     ${GSMIS_LIBRARIES}
231     )
232 ENDIF(${BBTK_PACKAGE_NAME}_USE_GSMIS)
233
234 IF(${BBTK_PACKAGE_NAME}_USE_WXWIDGETS)
235   IF(BBTK_CORE_PACKAGE)
236     SET(BBTK_USE_WXWIDGETS ON CACHE BOOL "Use wxWidgets" FORCE)
237     MESSAGE(STATUS "BBTK_USE_WXWIDGETS forced to ON by the compilation of the package ${BBTK_PACKAGE_NAME}")
238     # bbtk already links against wx ...
239     IF(WIN32)
240       SET(${BBTK_PACKAGE_NAME}_LIBS
241         ${${BBTK_PACKAGE_NAME}_LIBS}
242         ${WXWIDGETS_LIBRARIES}
243         )
244     ENDIF(WIN32)
245   ELSE(BBTK_CORE_PACKAGE)
246     # If linking against a non-wx bbtk : problem
247     IF(NOT BBTK_BUILT_WITH_WX)
248       MESSAGE(FATAL_ERROR "The bbtk package ${BBTK_PACKAGE_NAME} needs wxWidgets however the bbtk library which was found on your system was not compiled with wxWidgets : recompile it and rebuild the package.")
249     ELSE(NOT BBTK_BUILT_WITH_WX)
250       SET(USE_WXWIDGETS ON CACHE BOOL "Use wxWidgets" FORCE)
251       # bbtk already links against wx ...
252       IF(WIN32)
253         SET(${BBTK_PACKAGE_NAME}_LIBS
254           ${${BBTK_PACKAGE_NAME}_LIBS}
255           ${WXWIDGETS_LIBRARIES}
256           )
257       ENDIF(WIN32)
258     ENDIF(NOT BBTK_BUILT_WITH_WX)
259   ENDIF(BBTK_CORE_PACKAGE)
260 ENDIF(${BBTK_PACKAGE_NAME}_USE_WXWIDGETS)
261
262
263 #---------------------------------------------------------------------------
264
265 MESSAGE(STATUS "")
266 MESSAGE(STATUS "=======================================")
267 MESSAGE(STATUS "${BBTK_PACKAGE_NAME} link libraries:")
268 MESSAGE(STATUS "${${BBTK_PACKAGE_NAME}_LIBS}")
269 MESSAGE(STATUS "=======================================")
270 MESSAGE(STATUS "")
271
272 #---------------------------------------------------------------------------
273 # Recurse into ADD_SUBDIRECTORY
274 ADD_SUBDIRECTORY(src)
275 ADD_SUBDIRECTORY(doc)
276 ADD_SUBDIRECTORY(bbs)
277 ADD_SUBDIRECTORY(data)
278 #---------------------------------------------------------------------------
279
280 MESSAGE(STATUS "=======================================")
281 MESSAGE(STATUS "")
282
283 #-----------------------------------------------------------------------------
284 # EOF
285 #-----------------------------------------------------------------------------
286
287
288
289