]> Creatis software - bbtk.git/blob - kernel/cmake/BBTKFindLibraries.cmake
084fa2970fa01137e08470a10751a2d70d16c81d
[bbtk.git] / kernel / cmake / BBTKFindLibraries.cmake
1
2
3 #-----------------------------------------------------------------------------
4 IF(USE_KW)
5   # Search KWWidgets
6   FIND_PACKAGE(KWWidgets)
7   # If found
8   IF(KWWidgets_FOUND)
9     MESSAGE ( STATUS "=======================================")
10     MESSAGE ( STATUS "Looking for KWWidgets... found")
11     MESSAGE ( STATUS "* Dir     = ${KWWidgets_DIR}")
12     MESSAGE ( STATUS "* Version = ${KWWidgets_MAJOR_VERSION}.${KWWidgets_MINOR_VERSION}.${KWWidgets_BUILD_VERSION}")
13     INCLUDE(${KWWidgets_USE_FILE})
14     ADD_DEF( USE_KWWIDGETS )
15     SET(BBTK_KWWIDGETS_LIBRARIES
16       ${KWWidgets_LIBRARIES}
17      ) 
18     MARK_AS_ADVANCED(KWWidgets_DIR)
19   ELSE(KWWidgets_FOUND)
20      message(FATAL_ERROR "KWWidgets_DIR not found")
21   ENDIF(KWWidgets_FOUND)
22 ENDIF(USE_KW)
23 #-----------------------------------------------------------------------------
24
25 #-----------------------------------------------------------------------------
26 #OPTION(USE_VTK "Build VTK-based black boxes" OFF)
27 IF(USE_VTK)
28   # Search VTK
29   FIND_PACKAGE(VTK)
30   # If vtk found
31   IF(VTK_FOUND)
32     MESSAGE ( STATUS "=======================================")
33     MESSAGE ( STATUS "Looking for VTK... found")
34     MESSAGE ( STATUS "* Dir     = ${VTK_DIR}")
35     MESSAGE ( STATUS "* Version = ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}.${VTK_BUILD_VERSION}")
36     INCLUDE(${VTK_USE_FILE})
37     ADD_DEF( _USE_VTK_ )
38     SET(BBTK_VTK_LIBRARIES
39       vtkCommon     # Mandatory
40       vtkFiltering  # vtkImageData
41       vtkRendering  # vtkProp3D
42       vtkWidgets    # vtkImagePlaneWidget
43       vtkIO         # vtkMetaImageReader/Writer
44       vtkImaging    # filters such as vtkImageAnisotropicDiffusion3D
45       vtkGraphics   # vtkContourFilter, sources
46       vtkVolumeRendering # Mappers 
47 #      vtkGenericFiltering
48      ) 
49     MARK_AS_ADVANCED(VTK_DIR)
50   ELSE(VTK_FOUND)
51      message(FATAL_ERROR "VTK_DIR not found")
52   ENDIF(VTK_FOUND)
53 ENDIF(USE_VTK)
54 #-----------------------------------------------------------------------------
55
56
57 #-----------------------------------------------------------------------------
58 #OPTION(USE_ITK "Build ITK-based black boxes" OFF)
59 IF(USE_ITK)
60   # Search ITK
61   FIND_PACKAGE(ITK)
62   # If itk found
63   IF(ITK_FOUND)
64     MESSAGE ( STATUS "=======================================")
65     MESSAGE ( STATUS "Looking for ITK... found")
66     MESSAGE ( STATUS "* Dir     = ${ITK_DIR}")
67     MESSAGE ( STATUS "* Version = ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")
68     INCLUDE(${ITK_USE_FILE})
69     ADD_DEF( _USE_ITK_ )
70     SET(BBTK_ITK_LIBRARIES
71       ITKCommon ITKIO ITKBasicFilters ITKAlgorithms
72       )  
73     MARK_AS_ADVANCED(ITK_DIR)
74    # images compilation option 
75     OPTION ( itk_IMAGE_DIM_2 "itk : Compile 2D images" ON)
76     OPTION ( itk_IMAGE_DIM_3 "itk : Compile 3D images" ON)
77     OPTION ( itk_IMAGE_DIM_4 "itk : Compile 4D images" ON)
78     OPTION ( itk_IMAGE_TYPE_CHAR "itk : Compile char images" ON)
79     OPTION ( itk_IMAGE_TYPE_UCHAR "itk : Compile unsigned char images" ON)
80     OPTION ( itk_IMAGE_TYPE_SHORT "itk : Compile short images" ON)
81     OPTION ( itk_IMAGE_TYPE_USHORT "itk : Compile unsigned short images" ON)
82     OPTION ( itk_IMAGE_TYPE_INT "itk : Compile int images" ON)
83     OPTION ( itk_IMAGE_TYPE_UINT "itk : Compile unsigned int images" ON)
84     OPTION ( itk_IMAGE_TYPE_FLOAT "itk : Compile float images" ON)
85     OPTION ( itk_IMAGE_TYPE_DOUBLE "itk : Compile double images" ON)
86     
87     IF ( itk_IMAGE_DIM_2 ) 
88       ADD_DEF( BBTK_ITK_IMAGE_DIM_2 )
89     ENDIF ( itk_IMAGE_DIM_2 )
90     
91     IF ( itk_IMAGE_DIM_3 ) 
92       ADD_DEF( BBTK_ITK_IMAGE_DIM_3 )
93     ENDIF ( itk_IMAGE_DIM_3 )
94     
95     IF ( itk_IMAGE_DIM_4 ) 
96       ADD_DEF( BBTK_ITK_IMAGE_DIM_4 )
97     ENDIF ( itk_IMAGE_DIM_4 )
98
99     IF ( itk_IMAGE_TYPE_CHAR ) 
100       ADD_DEF( BBTK_ITK_IMAGE_TYPE_int8_t )
101     ENDIF ( itk_IMAGE_TYPE_CHAR )
102
103     IF ( itk_IMAGE_TYPE_UCHAR ) 
104       ADD_DEF( BBTK_ITK_IMAGE_TYPE_uint8_t )
105     ENDIF ( itk_IMAGE_TYPE_UCHAR )
106     
107     IF ( itk_IMAGE_TYPE_SHORT ) 
108       ADD_DEF( BBTK_ITK_IMAGE_TYPE_int16_t )
109     ENDIF ( itk_IMAGE_TYPE_SHORT )
110     
111     IF ( itk_IMAGE_TYPE_USHORT ) 
112       ADD_DEF( BBTK_ITK_IMAGE_TYPE_uint16_t )
113     ENDIF ( itk_IMAGE_TYPE_USHORT )
114     
115     IF ( itk_IMAGE_TYPE_INT ) 
116       ADD_DEF( BBTK_ITK_IMAGE_TYPE_int32_t )
117     ENDIF ( itk_IMAGE_TYPE_INT )
118     
119     IF ( itk_IMAGE_TYPE_UINT ) 
120       ADD_DEF( BBTK_ITK_IMAGE_TYPE_uint32_t )
121     ENDIF ( itk_IMAGE_TYPE_UINT )
122     
123     IF ( itk_IMAGE_TYPE_FLOAT ) 
124       ADD_DEF( BBTK_ITK_IMAGE_TYPE_float )
125     ENDIF ( itk_IMAGE_TYPE_FLOAT )
126     
127     IF ( itk_IMAGE_TYPE_DOUBLE ) 
128       ADD_DEF( BBTK_ITK_IMAGE_TYPE_double )
129     ENDIF ( itk_IMAGE_TYPE_DOUBLE )
130   ELSE(ITK_FOUND)
131      message(FATAL_ERROR "ITK_DIR not found")
132   ENDIF(ITK_FOUND)
133 ENDIF(USE_ITK)
134 #-----------------------------------------------------------------------------
135
136
137 #-----------------------------------------------------------------------------
138 #OPTION(USE_GDCM "Build GDCM-based black boxes" OFF)
139 IF(USE_GDCM)
140   # Search GDCM
141   FIND_PACKAGE(GDCM)
142   # If gdcm found
143   IF(GDCM_FOUND)
144     INCLUDE(${GDCM_USE_FILE})
145     ADD_DEF( _USE_GDCM_ )
146     MESSAGE ( STATUS "=======================================")
147     MESSAGE ( STATUS "Looking for GDCM... found")
148     MESSAGE ( STATUS "* Dir       = ${GDCM_DIR}")
149     MESSAGE ( STATUS "* Version   = ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}")
150     MESSAGE ( STATUS "* Namespace = ${GDCM_NAME_SPACE}")
151
152     # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with 
153     # embedded gdcm in ITK and will result in hard seg faults !
154     IF (GDCM_NAME_SPACE STREQUAL "gdcm")
155       MESSAGE(FATAL_ERROR "GDCM_NAME_SPACE value is 'gdcm' which conflicts with ITK embededd gdcm namespace : rebuild gdcm with another GDCM_NAME_SPACE value")
156     ENDIF (GDCM_NAME_SPACE STREQUAL "gdcm")
157
158     MARK_AS_ADVANCED(GDCM_DIR)
159     
160     SET(BBTK_GDCM_LIBRARIES
161 # TO DO : USE GDCM LINK LIBRARIES !!!
162 # IF gdcm WAS NOT COMPILE WITH VTK THE ABOVE FORCED LINK WITH vtkgdcm DOES NOT WORK
163         ${GDCM_LIBRARIES} 
164 #gdcm  gdcmjpeg8  gdcmjpeg12  gdcmjpeg16
165       )
166
167           
168 #     IF(USE_VTK )
169 #         SET(BBTK_GDCM_LIBRARIES
170 #                  ${BBTK_GDCM_LIBRARIES}
171 #                   vtkgdcm  
172 #         )
173 #     ENDIF(USE_VTK)
174
175   ENDIF(GDCM_FOUND)
176 ENDIF(USE_GDCM)
177
178 #-----------------------------------------------------------------------------
179
180 #-----------------------------------------------------------------------------
181 IF(USE_WXWIDGETS)
182   MESSAGE ( STATUS "=======================================")
183   INCLUDE(${BBTK_CMAKE_DIR}/BBTKWxWidgets.cmake)
184   BBTK_FIND_WXWIDGETS()
185   BBTK_USE_WXWIDGETS()
186 ENDIF(USE_WXWIDGETS)
187 #-----------------------------------------------------------------------------
188
189
190
191 #-----------------------------------------------------------------------------
192 IF(USE_DOXYGEN) 
193   MESSAGE ( STATUS "=======================================")
194   FIND_PACKAGE(Doxygen REQUIRED)
195 #  MESSAGE(STATUS "Looking for doxygen... - found ${DOXYGEN}")
196   IF(DOXYGEN)
197     
198   ELSE(DOXYGEN)
199     MESSAGE(FATAL_ERROR "Doxygen not found. Required to build the doxygen documentation")
200   ENDIF(DOXYGEN)
201 ENDIF(USE_DOXYGEN)
202 #-----------------------------------------------------------------------------
203
204
205 #-----------------------------------------------------------------------------
206 IF(USE_LATEX) 
207   FIND_PACKAGE(LATEX REQUIRED)
208     MESSAGE ( STATUS "=======================================")
209   MESSAGE(STATUS "Looking for latex... - found ${LATEX_COMPILER}")
210 ENDIF(USE_LATEX) 
211 #-----------------------------------------------------------------------------
212
213 #-----------------------------------------------------------------------------
214 IF(USE_TTH) 
215   FIND_FILE(LATEX_tth_CONVERTER NAME tth tth.exe PATHS . $ENV{CREATIS}/tth_exe/ ~/Creatis/tth ~/Creatis/tth_linux)
216   IF (NOT LATEX_tth_CONVERTER)
217     MESSAGE(FATAL_ERROR "TTH not found (LATEX_tth_CONVERTER). Required to build the HTML documentation from tex source")
218   ELSE (NOT LATEX_tth_CONVERTER)
219     MESSAGE ( STATUS "=======================================")
220     MESSAGE(STATUS "Looking for tth... - found ${LATEX_tth_CONVERTER}")
221   ENDIF(NOT LATEX_tth_CONVERTER)
222   MARK_AS_ADVANCED(LATEX_tth_CONVERTER)
223 ENDIF(USE_TTH)
224 #-----------------------------------------------------------------------------
225
226 #-----------------------------------------------------------------------------
227 IF(USE_BOOST)
228   IF(BBTK_USE_SHIPPED_BOOST)
229     MESSAGE ( STATUS "=======================================")
230     MESSAGE(STATUS "bbtk uses shipped boost C++ library (${BBTK_SHIPPED_BOOST})")
231     INCLUDE_DIRECTORIES( 
232       ${PROJECT_SOURCE_DIR}/kernel/src/ThirdParty/${BBTK_SHIPPED_BOOST})
233
234     # TO DO : CLEANLY BLOCK auto_link.hpp INCLUSION 
235     #ADD_DEF(BOOST_SIGNALS_NO_LIB)
236     SET(BBTK_BOOST_LIBRARIES
237       bbtk_boost_signals
238       )  
239
240   ELSE(BBTK_USE_SHIPPED_BOOST)
241     FIND_PACKAGE(Boost REQUIRED)
242     MARK_AS_ADVANCED(Boost_INCLUDE_DIR)
243     IF(Boost_FOUND)
244       MESSAGE ( STATUS "=======================================")
245       MESSAGE(STATUS "Looking for boost C++ library... - found in ${Boost_INCLUDE_DIR}")
246       INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
247       LINK_DIRECTORIES( ${Boost_LIBRARY_DIRS} )
248       SET(BBTK_BOOST_LIBRARIES
249         boost_signals
250         )
251     ELSE(Boost_FOUND)
252       MESSAGE(FATAL_ERROR "boost C++ library not found - either set Boost_INCLUDE_DIR or set BBTK_USE_SHIPPED_BOOST to ON to use shipped ${BBTK_SHIPPED_BOOST}")
253     ENDIF(Boost_FOUND)
254   ENDIF(BBTK_USE_SHIPPED_BOOST)
255 ENDIF(USE_BOOST)
256 #-----------------------------------------------------------------------------