]> Creatis software - bbtk.git/blobdiff - kernel/cmake/BBTKFindLibraries.cmake
*** empty log message ***
[bbtk.git] / kernel / cmake / BBTKFindLibraries.cmake
index 4b7316405e9e7906fbdd13f0439a7c089811a5c1..e781d61838ad78bdbe6e77d2ab1f1d0a5fafc4f5 100644 (file)
@@ -1,3 +1,5 @@
+
+
 #-----------------------------------------------------------------------------
 #OPTION(USE_VTK "Build VTK-based black boxes" OFF)
 IF(USE_VTK)
@@ -5,15 +7,25 @@ IF(USE_VTK)
   FIND_PACKAGE(VTK)
   # If vtk found
   IF(VTK_FOUND)
-    MESSAGE ( STATUS "VTK FOUND - VERSION = ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}.${VTK_BUILD_VERSION}")
+    MESSAGE ( STATUS "Looking for VTK... found")
+    MESSAGE ( STATUS "* Dir     = ${VTK_DIR}")
+    MESSAGE ( STATUS "* Version = ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}.${VTK_BUILD_VERSION}")
     INCLUDE(${VTK_USE_FILE})
     ADD_DEF( _USE_VTK_ )
     SET(BBTK_VTK_LIBRARIES
-      #     vtkCommon 
-      vtkImaging  vtkGraphics vtkRendering vtkFiltering vtkCommon vtkWidgets
-      # LG : removed vtkIO because conflict with itktiff lib in ITKIO 
-      ) 
+      vtkCommon     # Mandatory
+      vtkFiltering  # vtkImageData
+      vtkRendering  # vtkProp3D
+      vtkWidgets    # vtkImagePlaneWidget
+      vtkIO         # vtkMetaImageReader/Writer
+      vtkImaging    # filters such as vtkImageAnisotropicDiffusion3D
+      vtkGraphics   # vtkContourFilter, sources
+      vtkVolumeRendering # Mappers 
+#      vtkGenericFiltering
+     ) 
     MARK_AS_ADVANCED(VTK_DIR)
+  ELSE(VTK_FOUND)
+     message(FATAL_ERROR "VTK_DIR not found")
   ENDIF(VTK_FOUND)
 ENDIF(USE_VTK)
 #-----------------------------------------------------------------------------
@@ -26,7 +38,9 @@ IF(USE_ITK)
   FIND_PACKAGE(ITK)
   # If itk found
   IF(ITK_FOUND)
-     MESSAGE ( STATUS "ITK FOUND - VERSION = ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")
+    MESSAGE ( STATUS "Looking for ITK... found")
+    MESSAGE ( STATUS "* Dir     = ${ITK_DIR}")
+    MESSAGE ( STATUS "* Version = ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")
     INCLUDE(${ITK_USE_FILE})
     ADD_DEF( _USE_ITK_ )
     SET(BBTK_ITK_LIBRARIES
@@ -89,10 +103,13 @@ IF(USE_ITK)
     IF ( itk_IMAGE_TYPE_DOUBLE ) 
       ADD_DEF( BBTK_ITK_IMAGE_TYPE_double )
     ENDIF ( itk_IMAGE_TYPE_DOUBLE )
+  ELSE(ITK_FOUND)
+     message(FATAL_ERROR "ITK_DIR not found")
   ENDIF(ITK_FOUND)
 ENDIF(USE_ITK)
 #-----------------------------------------------------------------------------
 
+
 #-----------------------------------------------------------------------------
 #OPTION(USE_GDCM "Build GDCM-based black boxes" OFF)
 IF(USE_GDCM)
@@ -102,79 +119,45 @@ IF(USE_GDCM)
   IF(GDCM_FOUND)
     INCLUDE(${GDCM_USE_FILE})
     ADD_DEF( _USE_GDCM_ )
+
+    MESSAGE ( STATUS "Looking for GDCM... found")
+    MESSAGE ( STATUS "* Dir       = ${GDCM_DIR}")
+    MESSAGE ( STATUS "* Version   = ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}")
+    MESSAGE ( STATUS "* Namespace = ${GDCM_NAME_SPACE}")
+
+    # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with 
+    # embedded gdcm in ITK and will result in hard seg faults !
+    IF (GDCM_NAME_SPACE STREQUAL "gdcm")
+      MESSAGE(FATAL_ERROR "GDCM_NAME_SPACE value is 'gdcm' which conflicts with ITK embededd gdcm namespace : rebuild gdcm with another GDCM_NAME_SPACE value")
+    ENDIF (GDCM_NAME_SPACE STREQUAL "gdcm")
+
+    MARK_AS_ADVANCED(GDCM_DIR)
     
     SET(BBTK_GDCM_LIBRARIES
 # TO DO : USE GDCM LINK LIBRARIES !!!
-      libgdcm libgdcmjpeg8 libgdcmjpeg12libgdcmjpeg16
+# IF gdcm WAS NOT COMPILE WITH VTK THE ABOVE FORCED LINK WITH vtkgdcm DOES NOT WORK
+        ${GDCM_LIBRARIES} 
+#gdcm  gdcmjpeg8  gdcmjpeg12  gdcmjpeg16
       )
+
+         
+#     IF(USE_VTK )
+#         SET(BBTK_GDCM_LIBRARIES
+#                 ${BBTK_GDCM_LIBRARIES}
+#                   vtkgdcm  
+#         )
+#     ENDIF(USE_VTK)
+
   ENDIF(GDCM_FOUND)
 ENDIF(USE_GDCM)
+
 #-----------------------------------------------------------------------------
 
 #-----------------------------------------------------------------------------
-#OPTION(USE_WXWIDGETS "Build wxWidgets-based black boxes" OFF)
 IF(USE_WXWIDGETS)
-
-IF(WIN32)
-  # Search WXWIDGETS
-
-  #  WXWINDOWS_LIBRARY         = full path to the wxWindows library and linker flags on unix
-  #  CMAKE_WX_CXX_FLAGS        = compiler flags for building wxWindows 
-  #  WXWINDOWS_INCLUDE_PATH    = include path of wxWindows
-  SET(WXWINDOWS_USE_GL 1)
-
-  #wxWidgets build related stuff
-  SET(WXW_USE_DEBUG ON)
-  SET(WXW_USE_UNICODE OFF)
-  SET(WXW_USE_SHARED ON)
-  SET(WXW_USE_UNIV OFF)
-  SET(WXW_USE_MONO OFF)
-  SET(WXW_FILE_VERSION "28")
-  SET(WXW_VERSION "2.8")
-
-  #CMake Options
-  # Why forcing verbosity ?
-  # SET(CMAKE_VERBOSE_MAKEFILE TRUE)
-
-  INCLUDE (${BBTK_DIR}/BBTKFindWX_WIN)
-  #
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}${WXWIDGETS_CXX_FLAGS}")
-  SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}${WXWIDGETS_EXE_LINKER_FLAGS}")
-  ADD_DEFINITIONS( ${WXWIDGETS_DEFINITIONS}  )
-  #
-  INCLUDE_DIRECTORIES(${WXWIDGETS_INCLUDE_DIR})
-  LINK_DIRECTORIES( ${WXWIDGETS_LINK_DIRECTORIES} )
-  SET(THE_WXWIDGETS_LIBRARIES
-    ${WXWIDGETS_LIBRARIES}     
-    debug msvcrtd
-    debug msvcprtd
-    optimized msvcrt
-    optimized msvcprt
-    )
-ENDIF(WIN32)
-IF(UNIX)
-  # GTK2
-  INCLUDE(${BBTK_DIR}/BBTKFindGTK2.cmake)
-  INCLUDE_DIRECTORIES(${GTK2_INCLUDE_DIRS})
-  LINK_DIRECTORIES(${GTK2_LIBRARY_DIRS})
-  LINK_LIBRARIES(${GTK2_LIBRARIES})
-  # WX
-  # LG : Do not force but use what is installed !
-  # SET(wxWidgets_USE_LIBS base core gl)
-  FIND_PACKAGE( wxWidgets REQUIRED) 
-  INCLUDE( ${wxWidgets_USE_FILE} )
-  MARK_AS_ADVANCED(wxWidgets_CONFIG_EXECUTABLE)
-  SET(THE_WXWIDGETS_LIBRARIES
-    ${GTK2_LIBRARIES}
-    ${wxWidgets_LIBRARIES}
-   )
-ENDIF(UNIX)
-
-ADD_DEF( _USE_WXWIDGETS_ )
-SET(BBTK_WXWIDGETS_LIBRARIES
-  ${THE_WXWIDGETS_LIBRARIES}
-  )
-
+  INCLUDE(${BBTK_CMAKE_DIR}/BBTKWxWidgets.cmake)
+  BBTK_FIND_WXWIDGETS()
+  BBTK_USE_WXWIDGETS()
 ENDIF(USE_WXWIDGETS)
 #-----------------------------------------------------------------------------
 
@@ -184,11 +167,11 @@ ENDIF(USE_WXWIDGETS)
 IF(USE_DOXYGEN) 
   FIND_PACKAGE(Doxygen REQUIRED)
 #  MESSAGE(STATUS "Looking for doxygen... - found ${DOXYGEN}")
-  #  IF(DOXYGEN)
-#    
-#  ELSE(DOXYGEN)
-#    MESSAGE(FATAL_ERROR "Doxygen not found. Required to build the doxygen documentation")
-#  ENDIF(DOXYGEN)
+  IF(DOXYGEN)
+    
+  ELSE(DOXYGEN)
+    MESSAGE(FATAL_ERROR "Doxygen not found. Required to build the doxygen documentation")
+  ENDIF(DOXYGEN)
 ENDIF(USE_DOXYGEN)
 #-----------------------------------------------------------------------------
 
@@ -202,7 +185,7 @@ ENDIF(USE_LATEX)
 
 #-----------------------------------------------------------------------------
 IF(USE_TTH) 
-  FIND_FILE(LATEX_tth_CONVERTER NAME tth tth.exe PATHS . c:/Creatis/tth_exe/ ~/Creatis/tth ~/Creatis/tth_linux)
+  FIND_FILE(LATEX_tth_CONVERTER NAME tth tth.exe PATHS . $ENV{CREATIS}/tth_exe/ ~/Creatis/tth ~/Creatis/tth_linux)
   IF (NOT LATEX_tth_CONVERTER)
     MESSAGE(FATAL_ERROR "TTH not found (LATEX_tth_CONVERTER). Required to build the HTML documentation from tex source")
   ELSE (NOT LATEX_tth_CONVERTER)
@@ -211,3 +194,33 @@ IF(USE_TTH)
   MARK_AS_ADVANCED(LATEX_tth_CONVERTER)
 ENDIF(USE_TTH)
 #-----------------------------------------------------------------------------
+
+#-----------------------------------------------------------------------------
+IF(USE_BOOST)
+  IF(BBTK_USE_SHIPPED_BOOST)
+    MESSAGE(STATUS "bbtk uses shipped boost C++ library (${BBTK_SHIPPED_BOOST})")
+    INCLUDE_DIRECTORIES( 
+      ${PROJECT_SOURCE_DIR}/kernel/src/ThirdParty/${BBTK_SHIPPED_BOOST})
+
+    # TO DO : CLEANLY BLOCK auto_link.hpp INCLUSION 
+    #ADD_DEF(BOOST_SIGNALS_NO_LIB)
+    SET(BBTK_BOOST_LIBRARIES
+      bbtk_boost_signals
+      )  
+
+  ELSE(BBTK_USE_SHIPPED_BOOST)
+    FIND_PACKAGE(Boost REQUIRED)
+    MARK_AS_ADVANCED(Boost_INCLUDE_DIR)
+    IF(Boost_FOUND)
+      MESSAGE(STATUS "Looking for boost C++ library... - found in ${Boost_INCLUDE_DIR}")
+      INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
+      LINK_DIRECTORIES( ${Boost_LIBRARY_DIRS} )
+      SET(BBTK_BOOST_LIBRARIES
+       boost_signals
+       )
+    ELSE(Boost_FOUND)
+      MESSAGE(FATAL_ERRO "boost C++ library not found - either set Boost_INCLUDE_DIR or set BBTK_USE_SHIPPED_BOOST to ON to use shipped ${BBTK_SHIPPED_BOOST}")
+    ENDIF(Boost_FOUND)
+  ENDIF(BBTK_USE_SHIPPED_BOOST)
+ENDIF(USE_BOOST)
+#-----------------------------------------------------------------------------