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