]> Creatis software - crea.git/blob - cmake/CREAMacro_FindAndUseLibraries.cmake
#2499 crea Feature New Normal - wt-version wtLibrary
[crea.git] / cmake / CREAMacro_FindAndUseLibraries.cmake
1
2
3 MACRO(CREA_FIND_AND_USE_LIBRARIES)
4
5 IF(INCLUDE_CTEST)
6         include(CTest) 
7 ENDIF(INCLUDE_CTEST)
8
9
10 set(USE_DEBUG_LIB "" CACHE BOOL "Use Debug Libraries" )
11
12 #-----------------------------------------------------------------------------
13 # If one can invoke this macro then crea has already been found !!
14 # However if one whishes to link against crea and crea was built 
15 # with wx or vtk then we have to find them.
16 # This USE_CREA var is made to resolve this dependency.
17 IF(USE_CREA)
18   IF(CREA_BUILT_WITH_WX)
19     SET(USE_WXWIDGETS ON)
20   ENDIF(CREA_BUILT_WITH_WX)
21   IF(CREA_BUILT_WITH_VTK)
22     SET(USE_VTK ON)
23   ENDIF(CREA_BUILT_WITH_VTK)
24 ENDIF(USE_CREA)
25 #-----------------------------------------------------------------------------
26
27
28 #-----------------------------------------------------------------------------
29
30 IF(USE_QT4)
31   IF(NOT QT_FOUND)      
32   
33         INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseQt.cmake)
34         #FIND_PACKAGE(Qt4 REQUIRED)     
35         
36     IF(QT_FOUND)
37       MESSAGE ( STATUS "=======================================")
38       MESSAGE ( STATUS "Looking for QT4... found")
39       MESSAGE ( STATUS "* Inc Dir = ${QT_INCLUDE_DIR}")
40       MESSAGE ( STATUS "* Version = ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}")
41       INCLUDE(${QT_USE_FILE})
42          
43       CREA_DEFINE( USE_QT )
44
45    ENDIF(QT_FOUND)
46   ENDIF(NOT QT_FOUND)
47 ENDIF(USE_QT4)
48
49
50 #JFGA Pruebas WT
51
52 MESSAGE (  "======================================= SET CMAKE USE_WT JFGA CREAMacro_FindAndUseLibraries.cmake")   
53 SET(USE_WT ON)
54
55
56 #-----------------------------------------------------------------------------
57
58 #-----------------------------------------------------------------------------
59 IF(USE_VTK)
60   INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseVTK.cmake)
61   CREA_FIND_AND_USE_VTK()  
62 ENDIF(USE_VTK)
63 #-----------------------------------------------------------------------------
64
65 #-----------------------------------------------------------------------------
66 IF(USE_KWWIDGETS)
67   IF(NOT KWWidgets_FOUND)
68     # Search KWWidgets
69     FIND_PACKAGE(KWWidgets)
70     # If found
71     IF(KWWidgets_FOUND)
72       MESSAGE ( STATUS "=======================================")
73       MESSAGE ( STATUS "Looking for KWWidgets... found")
74       MESSAGE ( STATUS "* Dir     = ${KWWidgets_DIR}")
75       MESSAGE ( STATUS "* Version = ${KWWidgets_MAJOR_VERSION}.${KWWidgets_MINOR_VERSION}.${KWWidgets_BUILD_VERSION}")
76       IF (USE_VTK)
77          # KWWidgets must not search again for vtk !
78         SET(KWWidgets_NO_USE_VTK ON)
79       ENDIF (USE_VTK)
80
81       INCLUDE(${KWWidgets_USE_FILE})
82       CREA_DEFINE( USE_KWWIDGETS )
83       SET(KWWIDGETS_LIBRARIES
84         ${KWWidgets_LIBRARIES}
85         ) 
86       MARK_AS_ADVANCED(KWWidgets_DIR)
87     ELSE(KWWidgets_FOUND)
88       message(FATAL_ERROR "KWWidgets_DIR not found")
89     ENDIF(KWWidgets_FOUND)
90   ENDIF(NOT KWWidgets_FOUND)
91 ENDIF(USE_KWWIDGETS)
92 #-----------------------------------------------------------------------------
93
94 #  --- W A R N I N G :
95 #  Always let ITK *BEFORE* GDCM
96 #  It allows to use 'system installed gdcm' instead of 'itk embedded gdcm'
97 #
98
99 #-----------------------------------------------------------------------------
100 IF(USE_ITK)
101   IF(NOT ITK_FOUND)
102     # Search ITK
103     FIND_PACKAGE(ITK)
104     # If itk found
105     IF(ITK_FOUND)
106       MESSAGE ( STATUS "=======================================")
107       MESSAGE ( STATUS "Looking for ITK... found")
108       MESSAGE ( STATUS "* Dir     = ${ITK_DIR}")
109       MESSAGE ( STATUS "* Version = ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")
110       SET(SKIP_ITK_BUILD_SETTINGS_FILE ON)
111       INCLUDE(${ITK_USE_FILE})
112       CREA_DEFINE( USE_ITK )
113       CREA_DEFINE( _USE_ITK_ )
114           If (${ITK_VERSION_MAJOR} MATCHES "4")
115            MESSAGE ( STATUS "* Version = ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")
116                 SET(ITK_LIBRARIES
117                 ${ITK_LIBRARIES}) 
118                  MESSAGE ( STATUS "${ITK_LIBRARIES}")
119                 ELSEIF()
120                 SET(ITK_LIBRARIES
121                         ITKCommon ITKIO ITKBasicFilters ITKAlgorithms)
122                 ENDIF()
123       MARK_AS_ADVANCED(ITK_DIR)
124     ELSE(ITK_FOUND)
125       message(FATAL_ERROR "ITK_DIR not found")
126     ENDIF(ITK_FOUND)
127   ENDIF(NOT ITK_FOUND)
128 ENDIF(USE_ITK)
129 #-----------------------------------------------------------------------------
130
131
132 #-----------------------------------------------------------------------------
133
134 IF(USE_GDCM)
135   IF (USE_GDCM2)
136     MESSAGE(ERROR "CANNOT USE BOTH gdcm AND gdcm2 !")
137   ENDIF (USE_GDCM2)
138
139   IF(NOT GDCM_FOUND)
140     # Search GDCM
141     FIND_PACKAGE(GDCM)
142     # If gdcm found
143     IF(GDCM_FOUND)
144       INCLUDE(${GDCM_USE_FILE})
145       CREA_DEFINE( USE_GDCM )
146
147       MESSAGE ( STATUS "=======================================")
148       MESSAGE ( STATUS "Looking for GDCM... found")
149       MESSAGE ( STATUS "* Dir       = ${GDCM_DIR}")
150       MESSAGE ( STATUS "* Version   = ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}")
151       MESSAGE ( STATUS "* Namespace = ${GDCM_NAME_SPACE}")
152
153       # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with 
154       # embedded gdcm in ITK and will result in hard seg faults !
155       IF(USE_ITK)
156         IF (GDCM_NAME_SPACE STREQUAL "gdcm")
157           MESSAGE(FATAL_ERROR "GDCM_NAME_SPACE value is 'gdcm' which conflicts with ITK embededd gdcm namespace : rebuild gdcm with another GDCM_NAME_SPACE value")
158         ENDIF (GDCM_NAME_SPACE STREQUAL "gdcm")
159       ENDIF(USE_ITK)
160
161       MARK_AS_ADVANCED(GDCM_DIR)
162
163       SET(GDCM_LIBRARIES
164         ${GDCM_LIBRARIES} 
165         )
166
167       # TODO : Test that GDCM was built with option "vtkgdcm"
168       IF(USE_GDCM_VTK)
169         IF(USE_VTK)
170           SET(GDCM_LIBRARIES
171             ${GDCM_LIBRARIES}
172             vtkgdcm  
173             )
174         ENDIF(USE_VTK)
175       ENDIF(USE_GDCM_VTK)
176
177     ELSE(GDCM_FOUND)     
178           MESSAGE(FATAL_ERROR "GDCM not found....")
179     ENDIF(GDCM_FOUND)
180
181   ENDIF(NOT GDCM_FOUND)
182 ENDIF(USE_GDCM)
183
184 #-----------------------------------------------------------------------------
185
186 IF(USE_GDCM2)
187   IF (USE_GDCM)
188     MESSAGE(ERROR "CANNOT USE BOTH gdcm AND gdcm2 !")
189   ENDIF (USE_GDCM)
190
191 #  IF(NOT USE_ITK) # JPR : ITK vs GDCM (avoid cmake break)
192     # Search GDCM2
193
194     FIND_PACKAGE(GDCM REQUIRED)
195     INCLUDE(${GDCM_USE_FILE})
196
197       IF(NOT ${GDCM_MAJOR_VERSION} EQUAL 2)
198         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")
199       ENDIF(NOT ${GDCM_MAJOR_VERSION} EQUAL 2)
200       
201       CREA_DEFINE( USE_GDCM2 )
202           MARK_AS_ADVANCED(GDCM_DIR)
203       CREA_DEFINE_WITH_VAL( GDCM_NAME_SPACE gdcm )
204       
205       MESSAGE ( STATUS "=======================================")
206       MESSAGE ( STATUS "Looking for GDCM2... found")
207       MESSAGE ( STATUS "* Dir       = ${GDCM_DIR}")
208       MESSAGE ( STATUS "* Version   = ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}")
209       MESSAGE ( STATUS "* Namespace = ${GDCM_NAME_SPACE}")
210       
211       # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with 
212       # embedded gdcm in ITK and will result in hard seg faults !
213                    INCLUDE_DIRECTORIES(${GDCM_INCLUDE_DIRS})     
214                         LINK_DIRECTORIES( ${GDCM_LIBRARY_DIRS}) 
215                         
216       SET(GDCM2_LIBRARIES
217         ${GDCM_LIBRARIES} 
218         )
219
220       IF(USE_GDCM_VTK)
221         IF(USE_VTK)
222                 IF(WIN32)
223                   SET(GDCM_LIBRARIES
224                         ${GDCM_LIBRARIES}
225                         vtkgdcm
226                         gdcmIOD
227                         gdcmMSFF
228                         gdcmexpat
229                         gdcmCommon
230                         gdcmMEXD
231                         gdcmexpat
232                         gdcmDSED
233                         gdcmDICT
234                         gdcmjpeg8
235                         gdcmjpeg12
236                         gdcmjpeg16
237                         socketxx
238                         gdcmopenjpeg
239                         gdcmcharls
240                      )
241                 ELSE(WIN32)
242                     SET(GDCM_LIBRARIES
243                         ${GDCM_LIBRARIES}
244                         vtkgdcm
245                         gdcmIOD
246                         )
247                 ENDIF(WIN32)
248                 
249         ENDIF(USE_VTK)
250       ENDIF(USE_GDCM_VTK)
251  # ENDIF(NOT USE_ITK) # JPR : ITK vs GDCM (avoid cmake break)
252
253 ENDIF(USE_GDCM2)
254
255 #-----------------------------------------------------------------------------
256
257 #-----------------------------------------------------------------------------
258
259 #-------------------- JFGA ---
260 IF(USE_WT)
261         MESSAGE (  "======================================= JFGA ------------USE WT CREAMacro_FindAndUseLibraries.cmake")
262         INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseWt.cmake)
263         CREA_FINDANDUSEWT()
264 ENDIF(USE_WT)
265
266 #-----------------------------------------------------------------------------
267 IF(USE_WXWIDGETS)
268   IF(NOT wxWidgets_FOUND)
269     INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseWxWidgets.cmake)
270     CREA_FIND_WXWIDGETS(${USE_DEBUG_LIB})
271     CREA_USE_WXWIDGETS()
272   ENDIF(NOT wxWidgets_FOUND)
273 ENDIF(USE_WXWIDGETS)
274 #-----------------------------------------------------------------------------
275
276
277
278 #-----------------------------------------------------------------------------
279 IF(USE_DOXYGEN) 
280   IF(NOT DOXYGEN)
281     MESSAGE ( STATUS "=======================================")
282     FIND_PACKAGE(Doxygen REQUIRED)
283     #  MESSAGE(STATUS "Looking for doxygen... - found ${DOXYGEN}")
284     #  IF(DOXYGEN)
285     #    
286     #  ELSE(DOXYGEN)
287     #    MESSAGE(FATAL_ERROR "Doxygen not found. Required to build the doxygen documentation")
288   ENDIF(NOT DOXYGEN)
289 ENDIF(USE_DOXYGEN)
290 #-----------------------------------------------------------------------------
291
292
293 #-----------------------------------------------------------------------------
294 IF(USE_LATEX)
295         IF (NOT LATEX_COMPILER)
296                 FIND_PACKAGE(LATEX REQUIRED)
297                 MESSAGE ( STATUS "=======================================")
298                 MESSAGE(STATUS "Looking for latex... - found ${LATEX_COMPILER}")
299                 IF (NOT LATEX_FOUND)
300                    MESSAGE(FATAL_ERROR "LATEX_COMPILER NOT FOUND. Example:latex  (MacOS:/opt/local/bin/latex)")
301                 ENDIF (NOT LATEX_FOUND)
302         ENDIF (NOT LATEX_COMPILER)
303   
304 ENDIF(USE_LATEX) 
305 #-----------------------------------------------------------------------------
306
307 #-----------------------------------------------------------------------------
308 IF(USE_TTH) 
309   IF (NOT TTH_EXECUTABLE)
310     FIND_FILE( TTH_EXECUTABLE NAME tth tth.exe PATHS . $ENV{CREATIS}/tth_exe/ ~/Creatis/tth ~/Creatis/tth_linux $ENV{TTH}) 
311
312     IF (NOT TTH_EXECUTABLE)
313       MESSAGE(FATAL_ERROR "TTH not found (LATEX_tth_CONVERTER). Required to build the HTML documentation from tex source")
314     ELSE (NOT  TTH_EXECUTABLE)
315       MESSAGE ( STATUS "=======================================")
316       MESSAGE ( STATUS "Looking for tth... - found ${TTH_EXECUTABLE}")
317     ENDIF(NOT TTH_EXECUTABLE)
318     MARK_AS_ADVANCED( TTH_EXECUTABLE )
319   ENDIF(NOT TTH_EXECUTABLE)
320 ENDIF(USE_TTH)
321 #-----------------------------------------------------------------------------
322 #-----------------------------------------------------------------------------
323 IF(USE_BOOST)
324   IF(NOT Boost_FOUND)
325         add_definitions( -DBOOST_ALL_NO_LIB )
326         add_definitions( -DBOOST_ALL_DYN_LINK )
327     FIND_PACKAGE(Boost COMPONENTS filesystem system signals date_time thread regex program_options REQUIRED)
328     IF(Boost_FOUND) 
329           ADD_DEFINITIONS(-DBOOST_FILESYSTEM_VERSION=3)
330       MESSAGE ( STATUS "=======================================")
331       MESSAGE ( STATUS "Looking for boost C++ library... - found in ${Boost_INCLUDE_DIR}")
332       INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})         
333           LINK_DIRECTORIES( ${Boost_LIBRARY_DIRS})
334           IF(WIN32)
335                 CREA_DEFINE( USE_BOOST )
336                 ADD_DEFINITIONS(-DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED)
337                 SET(BOOST_LIBRARIES
338                         ${Boost_LIBRARIES}
339                         )
340                         
341 # FCY with cmake boost, it's useless. 
342 # But if it is not working, uncomment   
343 #
344 #       IF(USE_DEBUG_LIB)
345 #                       SET(BOOST_LIBRARIES
346 #                               boost_signals-vc90-mt-gd-1_40
347 #                               boost_filesystem-vc90-mt-gd-1_40
348 #                               boost_date_time-vc90-mt-gd-1_40                    
349 #                          #what about boost_thread? JPR
350 #                       )
351 #               ELSE(NOT USE_DEBUG_LIB)
352 #                       SET(BOOST_LIBRARIES
353 #                               boost_signals-vc90-mt-1_40
354 #                               boost_filesystem-vc90-mt-1_40
355 #                               boost_date_time-vc90-mt-1_40
356 #                       )
357 #               ENDIF(USE_DEBUG_LIB)    
358           ENDIF(WIN32)
359       IF(NOT WIN32)
360
361                   SET(BOOST_LIBRARIES
362
363                         ${Boost_LIBRARIES}
364 #EED 10 Fev 2014
365 #EED                    boost_system-mt
366 #EED                    boost_thread-mt     
367 #EED                    boost_program_options-mt
368
369 #EED 03 mars 2011
370 #EED                    boost_signals-mt
371 #EED                    boost_filesystem-mt
372 #EED                    boost_date_time-mt
373 #EED                    boost_system-mt
374 #EED                    boost_program_options-mt
375 #EED                    boost_regex-mt
376 #EED                    boost_thread-mt     
377
378                         )
379       ENDIF(NOT WIN32)
380
381           MARK_AS_ADVANCED(Boost_INCLUDE_DIR)
382           MARK_AS_ADVANCED(Boost_LIBRARY_DIRS)
383      
384     ELSE(Boost_FOUND)
385       MESSAGE( STATUS "boost C++ library not found - Set Boost_INCLUDE_DIR to the directory containing boost headers")
386     ENDIF(Boost_FOUND)
387   ENDIF(NOT Boost_FOUND)
388  
389
390 ENDIF(USE_BOOST)
391 #-----------------------------------------------------------
392
393 IF(USE_XERCES)
394
395         # FIND xerces
396         IF(WIN32)
397         
398                 SET(XERCES_LIB_DIR $ENV{XERCES_DIR})
399         
400                 IF(NOT XERCES_LIB_DIR)  
401                   MESSAGE(FATAL_ERROR "XERCES_DIR not found")  
402                 ELSE(NOT XERCES_LIB_DIR)
403                   
404                 INCLUDE_DIRECTORIES( ${XERCES_LIB_DIR}/include )                
405                 LINK_DIRECTORIES(  ${XERCES_LIB_DIR}/lib )
406                   
407                 ENDIF(NOT XERCES_LIB_DIR)       
408                 
409                 IF(USE_DEBUG_LIB)
410                         set(XERCES_LIBRARIES  xerces-c_3D)
411                 ELSE(USE_DEBUG_LIB)
412                         set(XERCES_LIBRARIES  xerces-c_3)
413                 ENDIF(USE_DEBUG_LIB)
414                 
415                 MARK_AS_ADVANCED(XERCES_LIB_DIR)
416         ENDIF(WIN32)
417
418
419         IF(UNIX)
420                 IF(APPLE)
421                         SET(XERCES_LIBRARIES xerces-c )
422                          INCLUDE_DIRECTORIES( /opt/local/include )
423                          LINK_DIRECTORIES(  /opt/local/lib ) 
424 #JCP 10/01/11                    
425                 ELSE(NOT APPLE) 
426                         SET(XERCES_LIBRARIES xerces-c )
427                          INCLUDE_DIRECTORIES( /usr/local/include )
428                          LINK_DIRECTORIES(  /usr/local/lib /usr/lib) 
429                         #FIND_PACKAGE(Xerces)
430                         # Use if found
431                         #IF(Xerces_FOUND)
432                          #  INCLUDE_DIRECTORIES( ${XERCES_INCLUDE_DIR} ) 
433                         #ENDIF(Xerces_FOUND)            
434                 ENDIF(APPLE)
435         ENDIF(UNIX)     
436   
437 ENDIF(USE_XERCES)
438
439
440 ENDMACRO(CREA_FIND_AND_USE_LIBRARIES)