]> Creatis software - crea.git/blob - cmake/CREAMacro_FindAndUseLibraries.cmake
CMake 2.6 compatibility :
[crea.git] / cmake / CREAMacro_FindAndUseLibraries.cmake
1
2
3 MACRO(CREA_FIND_AND_USE_LIBRARIES)
4
5 #-----------------------------------------------------------------------------
6 IF(USE_VTK)
7   # Search VTK
8   FIND_PACKAGE(VTK)
9   # If vtk found
10   IF(VTK_FOUND)
11     MESSAGE ( STATUS "Looking for VTK... found")
12     MESSAGE ( STATUS "* Dir     = ${VTK_DIR}")
13     MESSAGE ( STATUS "* Version = ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}.${VTK_BUILD_VERSION}")
14     INCLUDE(${VTK_USE_FILE})
15     CREA_DEFINE( USE_VTK )
16     SET(VTK_LIBRARIES
17       vtkImaging  vtkGraphics vtkRendering vtkFiltering vtkCommon vtkWidgets
18       vtkVolumeRendering
19       # LG : removed vtkIO because conflict with itktiff lib in ITKIO 
20       ) 
21     IF(NOT USE_ITK)
22      SET(VTK_LIBRARIES ${VTK_LIBRARIES} vtkIO)
23     ENDIF(NOT USE_ITK)
24     MARK_AS_ADVANCED(VTK_DIR)
25   ELSE(VTK_FOUND)
26      message(FATAL_ERROR "VTK_DIR not found")
27   ENDIF(VTK_FOUND)
28 ENDIF(USE_VTK)
29 #-----------------------------------------------------------------------------
30
31
32 #-----------------------------------------------------------------------------
33 IF(USE_ITK)
34   # Search ITK
35   FIND_PACKAGE(ITK)
36   # If itk found
37   IF(ITK_FOUND)
38     MESSAGE ( STATUS "Looking for ITK... found")
39     MESSAGE ( STATUS "* Dir     = ${ITK_DIR}")
40     MESSAGE ( STATUS "* Version = ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")
41     INCLUDE(${ITK_USE_FILE})
42     CREA_DEFINE( USE_ITK )
43     SET(ITK_LIBRARIES
44       ITKCommon ITKIO ITKBasicFilters ITKAlgorithms
45       )  
46     MARK_AS_ADVANCED(ITK_DIR)
47    # images compilation option 
48     OPTION ( itk_IMAGE_DIM_2 "itk : Compile 2D images" ON)
49     OPTION ( itk_IMAGE_DIM_3 "itk : Compile 3D images" ON)
50     OPTION ( itk_IMAGE_DIM_4 "itk : Compile 4D images" ON)
51     OPTION ( itk_IMAGE_TYPE_CHAR "itk : Compile char images" ON)
52     OPTION ( itk_IMAGE_TYPE_UCHAR "itk : Compile unsigned char images" ON)
53     OPTION ( itk_IMAGE_TYPE_SHORT "itk : Compile short images" ON)
54     OPTION ( itk_IMAGE_TYPE_USHORT "itk : Compile unsigned short images" ON)
55     OPTION ( itk_IMAGE_TYPE_INT "itk : Compile int images" ON)
56     OPTION ( itk_IMAGE_TYPE_UINT "itk : Compile unsigned int images" ON)
57     OPTION ( itk_IMAGE_TYPE_FLOAT "itk : Compile float images" ON)
58     OPTION ( itk_IMAGE_TYPE_DOUBLE "itk : Compile double images" ON)
59     
60     IF ( itk_IMAGE_DIM_2 ) 
61       CREA_DEFINE( BBTK_ITK_IMAGE_DIM_2 )
62     ENDIF ( itk_IMAGE_DIM_2 )
63     
64     IF ( itk_IMAGE_DIM_3 ) 
65       CREA_DEFINE( BBTK_ITK_IMAGE_DIM_3 )
66     ENDIF ( itk_IMAGE_DIM_3 )
67     
68     IF ( itk_IMAGE_DIM_4 ) 
69       CREA_DEFINE( BBTK_ITK_IMAGE_DIM_4 )
70     ENDIF ( itk_IMAGE_DIM_4 )
71
72     IF ( itk_IMAGE_TYPE_CHAR ) 
73       CREA_DEFINE( BBTK_ITK_IMAGE_TYPE_int8_t )
74     ENDIF ( itk_IMAGE_TYPE_CHAR )
75
76     IF ( itk_IMAGE_TYPE_UCHAR ) 
77       CREA_DEFINE( BBTK_ITK_IMAGE_TYPE_uint8_t )
78     ENDIF ( itk_IMAGE_TYPE_UCHAR )
79     
80     IF ( itk_IMAGE_TYPE_SHORT ) 
81       CREA_DEFINE( BBTK_ITK_IMAGE_TYPE_int16_t )
82     ENDIF ( itk_IMAGE_TYPE_SHORT )
83     
84     IF ( itk_IMAGE_TYPE_USHORT ) 
85       CREA_DEFINE( BBTK_ITK_IMAGE_TYPE_uint16_t )
86     ENDIF ( itk_IMAGE_TYPE_USHORT )
87     
88     IF ( itk_IMAGE_TYPE_INT ) 
89       CREA_DEFINE( BBTK_ITK_IMAGE_TYPE_int32_t )
90     ENDIF ( itk_IMAGE_TYPE_INT )
91     
92     IF ( itk_IMAGE_TYPE_UINT ) 
93       CREA_DEFINE( BBTK_ITK_IMAGE_TYPE_uint32_t )
94     ENDIF ( itk_IMAGE_TYPE_UINT )
95     
96     IF ( itk_IMAGE_TYPE_FLOAT ) 
97       CREA_DEFINE( BBTK_ITK_IMAGE_TYPE_float )
98     ENDIF ( itk_IMAGE_TYPE_FLOAT )
99     
100     IF ( itk_IMAGE_TYPE_DOUBLE ) 
101       CREA_DEFINE( BBTK_ITK_IMAGE_TYPE_double )
102     ENDIF ( itk_IMAGE_TYPE_DOUBLE )
103   ELSE(ITK_FOUND)
104      message(FATAL_ERROR "ITK_DIR not found")
105   ENDIF(ITK_FOUND)
106 ENDIF(USE_ITK)
107 #-----------------------------------------------------------------------------
108
109
110 #-----------------------------------------------------------------------------
111 IF(USE_GDCM)
112   # Search GDCM
113   FIND_PACKAGE(GDCM)
114   # If gdcm found
115   IF(GDCM_FOUND)
116     INCLUDE(${GDCM_USE_FILE})
117     CREA_DEFINE( USE_GDCM )
118
119     MESSAGE ( STATUS "Looking for GDCM... found")
120     MESSAGE ( STATUS "* Dir       = ${GDCM_DIR}")
121     MESSAGE ( STATUS "* Version   = ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}")
122     MESSAGE ( STATUS "* Namespace = ${GDCM_NAME_SPACE}")
123
124     # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with 
125     # embedded gdcm in ITK and will result in hard seg faults !
126     IF(USE_ITK)
127       IF (GDCM_NAME_SPACE STREQUAL "gdcm")
128         MESSAGE(FATAL_ERROR "GDCM_NAME_SPACE value is 'gdcm' which conflicts with ITK embededd gdcm namespace : rebuild gdcm with another GDCM_NAME_SPACE value")
129       ENDIF (GDCM_NAME_SPACE STREQUAL "gdcm")
130     ENDIF(USE_ITK)
131     
132     MARK_AS_ADVANCED(GDCM_DIR)
133     
134     SET(GDCM_LIBRARIES
135         ${GDCM_LIBRARIES} 
136       )
137
138 # TODO : Test that GDCM was built with option "vtkgdcm"
139     IF(USE_GDCM_VTK)
140      IF(USE_VTK)
141        SET(GDCM_LIBRARIES
142          ${GDCM_LIBRARIES}
143          vtkgdcm  
144          )
145      ENDIF(USE_VTK)
146     ENDIF(USE_GDCM_VTK)
147
148   ENDIF(GDCM_FOUND)
149 ENDIF(USE_GDCM)
150
151 #-----------------------------------------------------------------------------
152
153 #-----------------------------------------------------------------------------
154 IF(USE_GDCM2)
155   # Search GDCM2
156   FIND_PACKAGE(GDCM)
157   # If gdcm found
158   IF(GDCM_FOUND)
159     INCLUDE(${GDCM_USE_FILE})
160     
161     IF(NOT ${GDCM_MAJOR_VERSION} EQUAL 2)
162       MESSAGE(FATAL_ERROR "gdcm version 2 needed. found ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}. Set GDCM_DIR to the gdcm version 2 directory")
163     ENDIF(NOT ${GDCM_MAJOR_VERSION} EQUAL 2)
164
165     CREA_DEFINE( USE_GDCM2 )
166     CREA_DEFINE_WITH_VAL( GDCM_NAME_SPACE gdcm )
167
168     MESSAGE ( STATUS "Looking for GDCM2... found")
169     MESSAGE ( STATUS "* Dir       = ${GDCM_DIR}")
170     MESSAGE ( STATUS "* Version   = ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}")
171     MESSAGE ( STATUS "* Namespace = ${GDCM_NAME_SPACE}")
172
173     # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with 
174     # embedded gdcm in ITK and will result in hard seg faults !
175     IF(USE_ITK)
176       IF (GDCM_NAME_SPACE STREQUAL "gdcm")
177         MESSAGE(FATAL_ERROR "GDCM_NAME_SPACE value is 'gdcm' which conflicts with ITK embededd gdcm namespace : rebuild gdcm with another GDCM_NAME_SPACE value")
178       ENDIF (GDCM_NAME_SPACE STREQUAL "gdcm")
179     ENDIF(USE_ITK)
180     
181     MARK_AS_ADVANCED(GDCM_DIR)
182     
183     SET(GDCM_LIBRARIES
184         ${GDCM_LIBRARIES} 
185       )
186
187 # TODO : Test that GDCM was built with option "vtkgdcm"
188     IF(USE_GDCM_VTK)
189      IF(USE_VTK)
190        SET(GDCM_LIBRARIES
191          ${GDCM_LIBRARIES}
192          vtkgdcm  
193          )
194      ENDIF(USE_VTK)
195     ENDIF(USE_GDCM_VTK)
196
197   ENDIF(GDCM_FOUND)
198 ENDIF(USE_GDCM2)
199
200 #-----------------------------------------------------------------------------
201
202 #-----------------------------------------------------------------------------
203 IF(USE_WXWIDGETS)
204   INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_wxWidgets.cmake)
205   CREA_FIND_WXWIDGETS()
206   CREA_USE_WXWIDGETS()
207 ENDIF(USE_WXWIDGETS)
208 #-----------------------------------------------------------------------------
209
210
211
212 #-----------------------------------------------------------------------------
213 IF(USE_DOXYGEN) 
214   FIND_PACKAGE(Doxygen REQUIRED)
215 #  MESSAGE(STATUS "Looking for doxygen... - found ${DOXYGEN}")
216   #  IF(DOXYGEN)
217 #    
218 #  ELSE(DOXYGEN)
219 #    MESSAGE(FATAL_ERROR "Doxygen not found. Required to build the doxygen documentation")
220 #  ENDIF(DOXYGEN)
221 ENDIF(USE_DOXYGEN)
222 #-----------------------------------------------------------------------------
223
224
225 #-----------------------------------------------------------------------------
226 IF(USE_LATEX) 
227   FIND_PACKAGE(LATEX REQUIRED)
228   MESSAGE(STATUS "Looking for latex... - found ${LATEX_COMPILER}")
229 ENDIF(USE_LATEX) 
230 #-----------------------------------------------------------------------------
231
232 #-----------------------------------------------------------------------------
233 IF(USE_TTH) 
234   FIND_FILE(LATEX_tth_CONVERTER NAME tth tth.exe PATHS . $ENV{CREATIS}/tth_exe/ ~/Creatis/tth ~/Creatis/tth_linux)
235   IF (NOT LATEX_tth_CONVERTER)
236     MESSAGE(FATAL_ERROR "TTH not found (LATEX_tth_CONVERTER). Required to build the HTML documentation from tex source")
237   ELSE (NOT LATEX_tth_CONVERTER)
238     MESSAGE(STATUS "Looking for tth... - found ${LATEX_tth_CONVERTER}")
239   ENDIF(NOT LATEX_tth_CONVERTER)
240   MARK_AS_ADVANCED(LATEX_tth_CONVERTER)
241 ENDIF(USE_TTH)
242 #-----------------------------------------------------------------------------
243
244 #-----------------------------------------------------------------------------
245 IF(USE_BOOST)
246   FIND_PACKAGE(Boost REQUIRED)
247   IF(Boost_FOUND)
248     MESSAGE(STATUS "Looking for boost C++ library... - found in ${Boost_INCLUDE_DIR}")
249     INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
250     LINK_DIRECTORIES( ${Boost_LIBRARY_DIRS} )
251     CREA_DEFINE( USE_BOOST )
252     IF(NOT WIN32)
253     SET(BOOST_LIBRARIES
254       boost_signals
255       boost_filesystem
256       )
257       ENDIF(NOT WIN32)
258         MARK_AS_ADVANCED(Boost_INCLUDE_DIR)
259   ELSE(Boost_FOUND)
260     MESSAGE(FATAL_ERROR "boost C++ library not found - Set Boost_INCLUDE_DIR to the directory containing boost headers")
261   ENDIF(Boost_FOUND)
262 ENDIF(USE_BOOST)
263 #-----------------------------------------------------------------------------
264
265
266 ENDMACRO(CREA_FIND_AND_USE_LIBRARIES)