]> Creatis software - crea.git/blob - cmake/CREAMacro_FindAndUseLibraries.cmake
add of ctest line
[crea.git] / cmake / CREAMacro_FindAndUseLibraries.cmake
1
2
3 MACRO(CREA_FIND_AND_USE_LIBRARIES)
4 #MESSAGE(ERROR "EED CREAMacrp_FindAndUseLibraries")
5 IF(INCLUDE_CTEST)
6         include(CTEST)
7 ENDIF(INCLUDE_CTEST)
8
9 set(USE_DEBUG_LIB "" CACHE BOOL "Use Debug Libraries" )
10
11 #-----------------------------------------------------------------------------
12 # If one can invoke this macro then crea has already been found !!
13 # However if one whishes to link against crea and crea was built 
14 # with wx or vtk then we have to find them.
15 # This USE_CREA var is made to resolve this dependency.
16 IF(USE_CREA)
17   IF(CREA_BUILT_WITH_WX)
18     SET(USE_WXWIDGETS ON)
19   ENDIF(CREA_BUILT_WITH_WX)
20   IF(CREA_BUILT_WITH_VTK)
21     SET(USE_VTK ON)
22   ENDIF(CREA_BUILT_WITH_VTK)
23 ENDIF(USE_CREA)
24 #-----------------------------------------------------------------------------
25
26
27 #-----------------------------------------------------------------------------
28 IF(USE_QT4)
29   IF(NOT QT_FOUND)      
30   
31         INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseQt.cmake)
32         #FIND_PACKAGE(Qt4 REQUIRED)     
33         
34     IF(QT_FOUND)
35       MESSAGE ( STATUS "=======================================")
36       MESSAGE ( STATUS "Looking for QT4... found")
37       MESSAGE ( STATUS "* Inc Dir = ${QT_INCLUDE_DIR}")
38       MESSAGE ( STATUS "* Version = ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}")
39       INCLUDE(${QT_USE_FILE})
40          
41       CREA_DEFINE( USE_QT )
42     #    SET(QT_LIBRARIES
43     #      ${QT_LIBRARIES}
44     #      ) 
45     #  MARK_AS_ADVANCED(Qt4_DIR)
46    ENDIF(QT_FOUND)
47   ENDIF(NOT QT_FOUND)
48 ENDIF(USE_QT4)
49 #-----------------------------------------------------------------------------
50
51 #-----------------------------------------------------------------------------
52 IF(USE_VTK)
53   INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseVTK.cmake)
54   CREA_FIND_AND_USE_VTK()  
55 ENDIF(USE_VTK)
56 #-----------------------------------------------------------------------------
57
58 #-----------------------------------------------------------------------------
59 IF(USE_KWWIDGETS)
60   IF(NOT KWWidgets_FOUND)
61     # Search KWWidgets
62     FIND_PACKAGE(KWWidgets)
63     # If found
64     IF(KWWidgets_FOUND)
65       MESSAGE ( STATUS "=======================================")
66       MESSAGE ( STATUS "Looking for KWWidgets... found")
67       MESSAGE ( STATUS "* Dir     = ${KWWidgets_DIR}")
68       MESSAGE ( STATUS "* Version = ${KWWidgets_MAJOR_VERSION}.${KWWidgets_MINOR_VERSION}.${KWWidgets_BUILD_VERSION}")
69       IF (USE_VTK)
70          # KWWidgets must not search again for vtk !
71         SET(KWWidgets_NO_USE_VTK ON)
72       ENDIF (USE_VTK)
73
74       INCLUDE(${KWWidgets_USE_FILE})
75       CREA_DEFINE( USE_KWWIDGETS )
76       SET(KWWIDGETS_LIBRARIES
77         ${KWWidgets_LIBRARIES}
78         ) 
79       MARK_AS_ADVANCED(KWWidgets_DIR)
80     ELSE(KWWidgets_FOUND)
81       message(FATAL_ERROR "KWWidgets_DIR not found")
82     ENDIF(KWWidgets_FOUND)
83   ENDIF(NOT KWWidgets_FOUND)
84 ENDIF(USE_KWWIDGETS)
85 #-----------------------------------------------------------------------------
86
87
88
89 #-----------------------------------------------------------------------------
90 IF(USE_ITK)
91   IF(NOT ITK_FOUND)
92     # Search ITK
93     FIND_PACKAGE(ITK)
94     # If itk found
95     IF(ITK_FOUND)
96       MESSAGE ( STATUS "=======================================")
97       MESSAGE ( STATUS "Looking for ITK... found")
98       MESSAGE ( STATUS "* Dir     = ${ITK_DIR}")
99       MESSAGE ( STATUS "* Version = ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")
100       SET(SKIP_ITK_BUILD_SETTINGS_FILE ON)
101       INCLUDE(${ITK_USE_FILE})
102       CREA_DEFINE( USE_ITK )
103       CREA_DEFINE( _USE_ITK_ )
104       SET(ITK_LIBRARIES
105         ITKCommon ITKIO ITKBasicFilters ITKAlgorithms
106         )  
107       MARK_AS_ADVANCED(ITK_DIR)
108     ELSE(ITK_FOUND)
109       message(FATAL_ERROR "ITK_DIR not found")
110     ENDIF(ITK_FOUND)
111   ENDIF(NOT ITK_FOUND)
112 ENDIF(USE_ITK)
113 #-----------------------------------------------------------------------------
114
115
116 #-----------------------------------------------------------------------------
117 IF(USE_GDCM)
118   IF (USE_GDCM2)
119     MESSAGE(ERROR "CANNOT USE BOTH gdcm AND gdcm2 !")
120   ENDIF (USE_GDCM2)
121
122   IF(NOT GDCM_FOUND)
123     # Search GDCM
124     FIND_PACKAGE(GDCM)
125     # If gdcm found
126     IF(GDCM_FOUND)
127       INCLUDE(${GDCM_USE_FILE})
128       CREA_DEFINE( USE_GDCM )
129
130       MESSAGE ( STATUS "=======================================")
131       MESSAGE ( STATUS "Looking for GDCM... found")
132       MESSAGE ( STATUS "* Dir       = ${GDCM_DIR}")
133       MESSAGE ( STATUS "* Version   = ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}")
134       MESSAGE ( STATUS "* Namespace = ${GDCM_NAME_SPACE}")
135
136       # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with 
137       # embedded gdcm in ITK and will result in hard seg faults !
138       IF(USE_ITK)
139         IF (GDCM_NAME_SPACE STREQUAL "gdcm")
140           MESSAGE(FATAL_ERROR "GDCM_NAME_SPACE value is 'gdcm' which conflicts with ITK embededd gdcm namespace : rebuild gdcm with another GDCM_NAME_SPACE value")
141         ENDIF (GDCM_NAME_SPACE STREQUAL "gdcm")
142       ENDIF(USE_ITK)
143
144       MARK_AS_ADVANCED(GDCM_DIR)
145
146       SET(GDCM_LIBRARIES
147         ${GDCM_LIBRARIES} 
148         )
149
150       # TODO : Test that GDCM was built with option "vtkgdcm"
151       IF(USE_GDCM_VTK)
152         IF(USE_VTK)
153           SET(GDCM_LIBRARIES
154             ${GDCM_LIBRARIES}
155             vtkgdcm  
156             )
157         ENDIF(USE_VTK)
158       ENDIF(USE_GDCM_VTK)
159     ELSE(GDCM_FOUND)     
160           MESSAGE(FATAL_ERROR "GDCM not found....")
161     ENDIF(GDCM_FOUND)
162   ENDIF(NOT GDCM_FOUND)
163 ENDIF(USE_GDCM)
164
165 #-----------------------------------------------------------------------------
166 IF(USE_GDCM2)
167     # Search GDCM2
168     FIND_PACKAGE(GDCM REQUIRED)
169     INCLUDE(${GDCM_USE_FILE})
170
171       IF(NOT ${GDCM_MAJOR_VERSION} EQUAL 2)
172         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")
173       ENDIF(NOT ${GDCM_MAJOR_VERSION} EQUAL 2)
174       
175       CREA_DEFINE( USE_GDCM2 )
176           MARK_AS_ADVANCED(GDCM_DIR)
177       CREA_DEFINE_WITH_VAL( GDCM_NAME_SPACE gdcm )
178       
179       MESSAGE ( STATUS "=======================================")
180       MESSAGE ( STATUS "Looking for GDCM2... found")
181       MESSAGE ( STATUS "* Dir       = ${GDCM_DIR}")
182       MESSAGE ( STATUS "* Version   = ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}")
183       MESSAGE ( STATUS "* Namespace = ${GDCM_NAME_SPACE}")
184       
185       # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with 
186       # embedded gdcm in ITK and will result in hard seg faults !
187
188
189       SET(GDCM2_LIBRARIES
190         ${GDCM_LIBRARIES} 
191         )
192
193       IF(USE_GDCM_VTK)
194         IF(USE_VTK)
195           SET(GDCM_LIBRARIES
196             ${GDCM_LIBRARIES}
197                 vtkgdcm2
198                 gdcm2vtk
199             )
200         ENDIF(USE_VTK)
201       ENDIF(USE_GDCM_VTK)
202       
203
204 ENDIF(USE_GDCM2)
205
206
207
208 #-----------------------------------------------------------------------------
209
210 #-----------------------------------------------------------------------------
211
212 #-----------------------------------------------------------------------------
213 IF(USE_WXWIDGETS)
214   IF(NOT wxWidgets_FOUND)
215     INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseWxWidgets.cmake)
216     CREA_FIND_WXWIDGETS(${USE_DEBUG_LIB})
217     CREA_USE_WXWIDGETS()
218   ENDIF(NOT wxWidgets_FOUND)
219 ENDIF(USE_WXWIDGETS)
220 #-----------------------------------------------------------------------------
221
222
223
224 #-----------------------------------------------------------------------------
225 IF(USE_DOXYGEN) 
226   IF(NOT DOXYGEN)
227     MESSAGE ( STATUS "=======================================")
228     FIND_PACKAGE(Doxygen REQUIRED)
229     #  MESSAGE(STATUS "Looking for doxygen... - found ${DOXYGEN}")
230     #  IF(DOXYGEN)
231     #    
232     #  ELSE(DOXYGEN)
233     #    MESSAGE(FATAL_ERROR "Doxygen not found. Required to build the doxygen documentation")
234   ENDIF(NOT DOXYGEN)
235 ENDIF(USE_DOXYGEN)
236 #-----------------------------------------------------------------------------
237
238
239 #-----------------------------------------------------------------------------
240 IF(USE_LATEX)
241         IF (NOT LATEX_COMPILER)
242                 FIND_PACKAGE(LATEX REQUIRED)
243                 MESSAGE ( STATUS "=======================================")
244                 MESSAGE(STATUS "Looking for latex... - found ${LATEX_COMPILER}")
245                 IF (NOT LATEX_FOUND)
246                    MESSAGE(FATAL_ERROR "LATEX_COMPILER NOT FOUND. Example:latex  (MacOS:/opt/local/bin/latex)")
247                 ENDIF (NOT LATEX_FOUND)
248         ENDIF (NOT LATEX_COMPILER)
249   
250 ENDIF(USE_LATEX) 
251 #-----------------------------------------------------------------------------
252
253 #-----------------------------------------------------------------------------
254 IF(USE_TTH) 
255   IF (NOT TTH_EXECUTABLE)
256     FIND_FILE( TTH_EXECUTABLE NAME tth tth.exe PATHS . $ENV{CREATIS}/tth_exe/ ~/Creatis/tth ~/Creatis/tth_linux $ENV{TTH}) 
257
258     IF (NOT TTH_EXECUTABLE)
259       MESSAGE(FATAL_ERROR "TTH not found (LATEX_tth_CONVERTER). Required to build the HTML documentation from tex source")
260     ELSE (NOT  TTH_EXECUTABLE)
261       MESSAGE ( STATUS "=======================================")
262       MESSAGE ( STATUS "Looking for tth... - found ${TTH_EXECUTABLE}")
263     ENDIF(NOT TTH_EXECUTABLE)
264     MARK_AS_ADVANCED( TTH_EXECUTABLE )
265   ENDIF(NOT TTH_EXECUTABLE)
266 ENDIF(USE_TTH)
267 #-----------------------------------------------------------------------------
268
269 #-----------------------------------------------------------------------------
270 IF(USE_BOOST)
271   IF(NOT Boost_FOUND)
272     FIND_PACKAGE(Boost REQUIRED)
273     IF(Boost_FOUND)
274       MESSAGE ( STATUS "=======================================")
275       MESSAGE ( STATUS "Looking for boost C++ library... - found in ${Boost_INCLUDE_DIR}")
276       INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})         
277       LINK_DIRECTORIES( ${Boost_LIBRARY_DIRS} )
278
279       CREA_DEFINE( USE_BOOST )
280           IF(WIN32)
281                 
282                 LINK_DIRECTORIES( ${Boost_INCLUDE_DIRS}/Bin/lib) 
283                 #message("creamacro find and use lib = ${Boost_SIGNALS_LIBRARY}")
284                 IF(USE_DEBUG_LIB)
285                         SET(BOOST_LIBRARIES
286                                 boost_signals-vc90-mt-gd-1_40
287                                 boost_filesystem-vc90-mt-gd-1_40
288                                 boost_date_time-vc90-mt-gd-1_40                    
289                            #what about boost_thread? JPR
290                         )
291                 ELSE(NOT USE_DEBUG_LIB)
292                         SET(BOOST_LIBRARIES
293                                 boost_signals-vc90-mt-1_40
294                                 boost_filesystem-vc90-mt-1_40
295                                 boost_date_time-vc90-mt-1_40
296                         )
297                 ENDIF(USE_DEBUG_LIB)
298           ENDIF(WIN32)
299       IF(NOT WIN32)
300                   SET(BOOST_LIBRARIES
301                         boost_signals-mt
302                         boost_filesystem-mt
303                         boost_date_time-mt
304                         boost_system-mt
305                         boost_program_options-mt
306                         boost_regex-mt
307                         boost_thread-mt     
308                         )
309       ENDIF(NOT WIN32)
310
311       MARK_AS_ADVANCED(Boost_INCLUDE_DIR)
312     ELSE(Boost_FOUND)
313       MESSAGE(FATAL_ERROR "boost C++ library not found - Set Boost_INCLUDE_DIR to the directory containing boost headers")
314     ENDIF(Boost_FOUND)
315   ENDIF(NOT Boost_FOUND)
316 ENDIF(USE_BOOST)
317 #-----------------------------------------------------------------------------
318
319 IF(USE_XERCES)
320
321         # FIND xerces
322         IF(WIN32)       
323                 SET(XERCES_LIB_DIR $ENV{XERCES_DIR})
324                 IF(NOT XERCES_LIB_DIR)  
325                   MESSAGE(FATAL_ERROR "XERCES_DIR not found")  
326                 ELSE(NOT XERCES_LIB_DIR)
327 ##EED             INCLUDE_DIRECTORIES( ${XERCES_LIB_DIR}/src )          
328 ##EED             LINK_DIRECTORIES(  ${XERCES_LIB_DIR}/Build/Win32/VC9/Debug )
329                   INCLUDE_DIRECTORIES( ${XERCES_LIB_DIR}/include )              
330                   LINK_DIRECTORIES(  ${XERCES_LIB_DIR}/lib )
331                 ENDIF(NOT XERCES_LIB_DIR)       
332                 IF(USE_DEBUG_LIB)
333 ##EED             set(XERCES_LIBRARIES  ${XERCES_LIB_DIR}/Build/Win32/VC9/Debug/xerces-c_3D)
334                   set(XERCES_LIBRARIES  xerces-c_3D)
335                 ELSE(USE_DEBUG_LIB)
336 #EED              set(XERCES_LIBRARIES  ${XERCES_LIB_DIR}/Build/Win32/VC9/Release/xerces-c_3)
337                   set(XERCES_LIBRARIES  xerces-c_3)
338                 ENDIF(USE_DEBUG_LIB)
339                 MARK_AS_ADVANCED(XERCES_LIB_DIR)
340         ENDIF(WIN32)
341
342         IF(UNIX)
343                 IF(APPLE)
344                         SET(XERCES_LIBRARIES xerces-c )
345                          INCLUDE_DIRECTORIES( /opt/local/include )
346                          LINK_DIRECTORIES(  /opt/local/lib ) 
347                 ELSEIF(APPLE)
348                         SET(XERCES_LIBRARIES libxerces-c.so )
349                          INCLUDE_DIRECTORIES( /usr/local/include )
350                          LINK_DIRECTORIES(  /usr/local/lib ) 
351                         #FIND_PACKAGE(Xerces)
352                         # Use if found
353                         #IF(Xerces_FOUND)
354                          #  INCLUDE_DIRECTORIES( ${XERCES_INCLUDE_DIR} ) 
355                         #ENDIF(Xerces_FOUND)            
356                 ENDIF(APPLE)
357         ENDIF(UNIX)     
358   
359 ENDIF(USE_XERCES)
360
361
362 ENDMACRO(CREA_FIND_AND_USE_LIBRARIES)