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