]> Creatis software - crea.git/blobdiff - cmake/CREAMacro_FindAndUseLibraries.cmake
#3392 vtk9itk5wx3-macos
[crea.git] / cmake / CREAMacro_FindAndUseLibraries.cmake
index 09fa8b0115c7560b018d3cf1703fa7c9ff8517aa..59fcb7a776bd963c0107c9b31d4773ca492b0dfb 100644 (file)
@@ -24,29 +24,28 @@ IF(USE_CREA)
 ENDIF(USE_CREA)
 #-----------------------------------------------------------------------------
 
-
 #-----------------------------------------------------------------------------
+
 IF(USE_QT4)
   IF(NOT QT_FOUND)     
-  
        INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseQt.cmake)
        #FIND_PACKAGE(Qt4 REQUIRED)     
-       
     IF(QT_FOUND)
       MESSAGE ( STATUS "=======================================")
       MESSAGE ( STATUS "Looking for QT4... found")
       MESSAGE ( STATUS "* Inc Dir = ${QT_INCLUDE_DIR}")
       MESSAGE ( STATUS "* Version = ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}")
       INCLUDE(${QT_USE_FILE})
-        
       CREA_DEFINE( USE_QT )
-    #    SET(QT_LIBRARIES
-    #      ${QT_LIBRARIES}
-    #      ) 
-    #  MARK_AS_ADVANCED(Qt4_DIR)
    ENDIF(QT_FOUND)
   ENDIF(NOT QT_FOUND)
 ENDIF(USE_QT4)
+
+#JFGA Pruebas WT
+#MESSAGE (  "======================================= SET CMAKE USE_WT JFGA CREAMacro_FindAndUseLibraries.cmake")   
+#SET(USE_WT OFF)
+
+
 #-----------------------------------------------------------------------------
 
 #-----------------------------------------------------------------------------
@@ -56,6 +55,55 @@ IF(USE_VTK)
 ENDIF(USE_VTK)
 #-----------------------------------------------------------------------------
 
+#-----------------------------------------------------------------------------
+IF(USE_OPENMP)
+  IF(APPLE)
+    set(CMAKE_THREAD_LIBS_INIT "-lpthread")
+    set(CMAKE_HAVE_THREADS_LIBRARY 1)
+    set(CMAKE_USE_WIN32_THREADS_INIT 0)
+    set(CMAKE_USE_PTHREADS_INIT 1)
+    set(THREADS_PREFER_PTHREAD_FLAG ON)
+  ENDIF()
+  find_package(Threads REQUIRED)
+
+### Find OpenMP
+if(APPLE )
+    if(CMAKE_C_COMPILER_ID MATCHES "Clang")
+        set(OpenMP_C "${CMAKE_C_COMPILER}")
+        set(OpenMP_C_FLAGS "-Xclang -fopenmp=libomp -Wno-unused-command-line-argument")
+        set(OpenMP_C_LIB_NAMES "libomp" "libgomp" "libiomp5")
+        set(OpenMP_libomp_LIBRARY ${OpenMP_C_LIB_NAMES})
+        set(OpenMP_libgomp_LIBRARY ${OpenMP_C_LIB_NAMES})
+        set(OpenMP_libiomp5_LIBRARY ${OpenMP_C_LIB_NAMES})
+    endif()
+    if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+      set(OpenMP_CXX "${CMAKE_CXX_COMPILER}")
+#      set(OpenMP_CXX_FLAGS "-fopenmp=libomp -Wno-unused-command-line-argument")
+      set(OpenMP_CXX_FLAGS "-Xclang -fopenmp -Wno-unused-command-line-argument")
+      set(OpenMP_CXX_LIB_NAMES "libomp" "libgomp" "libiomp5")
+      set(OpenMP_libomp_LIBRARY ${OpenMP_CXX_LIB_NAMES})
+#EED 2022/05/15
+      set(OpenMP_libomp_LIBRARY_crea libomp.dylib )      
+#      set(OpenMP_libiomp5_LIBRARY ${OpenMP_CXX_LIB_NAMES})
+    endif()
+endif()
+  find_package(OpenMP REQUIRED)
+if (OPENMP_FOUND)
+#    include_directories("${OPENMP_INCLUDES}")
+
+    link_directories( /opt/local/lib/libomp  ) 
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+    # set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
+endif(OPENMP_FOUND)
+
+
+ENDIF(USE_OPENMP)
+
+#-----------------------------------------------------------------------------
+
+
+
 #-----------------------------------------------------------------------------
 IF(USE_KWWIDGETS)
   IF(NOT KWWidgets_FOUND)
@@ -85,9 +133,13 @@ IF(USE_KWWIDGETS)
 ENDIF(USE_KWWIDGETS)
 #-----------------------------------------------------------------------------
 
-
+#  --- W A R N I N G :
+#  Always let ITK *BEFORE* GDCM
+#  It allows to use 'system installed gdcm' instead of 'itk embedded gdcm'
+#
 
 #-----------------------------------------------------------------------------
+
 IF(USE_ITK)
   IF(NOT ITK_FOUND)
     # Search ITK
@@ -102,9 +154,13 @@ IF(USE_ITK)
       INCLUDE(${ITK_USE_FILE})
       CREA_DEFINE( USE_ITK )
       CREA_DEFINE( _USE_ITK_ )
-      SET(ITK_LIBRARIES
-       ITKCommon ITKIO ITKBasicFilters ITKAlgorithms
-       )  
+               If (${ITK_VERSION_MAJOR} MATCHES "4"  OR  ${ITK_VERSION_MAJOR} MATCHES "5"  )
+                       MESSAGE ( STATUS "* Version = ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")
+                       SET(ITK_LIBRARIES ${ITK_LIBRARIES}) 
+                       MESSAGE ( STATUS "${ITK_LIBRARIES}")
+               ELSEIF()
+                       SET(ITK_LIBRARIES ITKCommon ITKIO ITKBasicFilters ITKAlgorithms)
+               ENDIF()
       MARK_AS_ADVANCED(ITK_DIR)
     ELSE(ITK_FOUND)
       message(FATAL_ERROR "ITK_DIR not found")
@@ -115,6 +171,7 @@ ENDIF(USE_ITK)
 
 
 #-----------------------------------------------------------------------------
+
 IF(USE_GDCM)
   IF (USE_GDCM2)
     MESSAGE(ERROR "CANNOT USE BOTH gdcm AND gdcm2 !")
@@ -166,8 +223,15 @@ IF(USE_GDCM)
 ENDIF(USE_GDCM)
 
 #-----------------------------------------------------------------------------
+
 IF(USE_GDCM2)
+  IF (USE_GDCM)
+    MESSAGE(ERROR "CANNOT USE BOTH gdcm AND gdcm2 !")
+  ENDIF (USE_GDCM)
+
+#  IF(NOT USE_ITK) # JPR : ITK vs GDCM (avoid cmake break)
     # Search GDCM2
+
     FIND_PACKAGE(GDCM REQUIRED)
     INCLUDE(${GDCM_USE_FILE})
 
@@ -187,9 +251,9 @@ IF(USE_GDCM2)
       
       # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with 
       # embedded gdcm in ITK and will result in hard seg faults !
-                  INCLUDE_DIRECTORIES(${GDCM_INCLUDE_DIR})      
-                       LINK_DIRECTORIES( ${GDCM_LIBRARY_DIR}) 
-
+                  INCLUDE_DIRECTORIES(${GDCM_INCLUDE_DIRS})     
+                       LINK_DIRECTORIES( ${GDCM_LIBRARY_DIRS}) 
+                       
       SET(GDCM2_LIBRARIES
         ${GDCM_LIBRARIES} 
        )
@@ -198,35 +262,58 @@ IF(USE_GDCM2)
        IF(USE_VTK)
                IF(WIN32)
                  SET(GDCM_LIBRARIES
-                   ${GDCM_LIBRARIES}
+                       ${GDCM_LIBRARIES}
                        vtkgdcm
-                       #gdcm2vtk
+                       gdcmIOD
+                       gdcmMSFF
+                       gdcmexpat
+                       gdcmCommon
+                       gdcmMEXD
+                       gdcmexpat
+                       gdcmDSED
+                       gdcmDICT
+                       gdcmjpeg8
+                       gdcmjpeg12
+                       gdcmjpeg16
+                       socketxx
+                       gdcmopenjpeg
+                       gdcmcharls
                     )
                ELSE(WIN32)
                    SET(GDCM_LIBRARIES
-                   ${GDCM_LIBRARIES}
+                       ${GDCM_LIBRARIES}
                        vtkgdcm
+                       gdcmIOD
                        )
                ENDIF(WIN32)
                
        ENDIF(USE_VTK)
       ENDIF(USE_GDCM_VTK)
-     
+ # ENDIF(NOT USE_ITK) # JPR : ITK vs GDCM (avoid cmake break)
 
 ENDIF(USE_GDCM2)
 
-
-
 #-----------------------------------------------------------------------------
 
 #-----------------------------------------------------------------------------
 
+#-------------------- JFGA ---
+IF(USE_WT)
+       MESSAGE (  "======================================= JFGA ------------USE WT CREAMacro_FindAndUseLibraries.cmake")
+       INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseWt.cmake)
+       CREA_FINDANDUSEWT()
+ENDIF(USE_WT)
+
 #-----------------------------------------------------------------------------
 IF(USE_WXWIDGETS)
   IF(NOT wxWidgets_FOUND)
+       
     INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseWxWidgets.cmake)
     CREA_FIND_WXWIDGETS(${USE_DEBUG_LIB})
     CREA_USE_WXWIDGETS()
+       
+               
   ENDIF(NOT wxWidgets_FOUND)
 ENDIF(USE_WXWIDGETS)
 #-----------------------------------------------------------------------------
@@ -279,24 +366,37 @@ ENDIF(USE_TTH)
 #-----------------------------------------------------------------------------
 #-----------------------------------------------------------------------------
 IF(USE_BOOST)
-message(STATUS "1")
   IF(NOT Boost_FOUND)
-      FIND_PACKAGE(Boost COMPONENTS filesystem  signals date_time regex REQUIRED)
-    IF(Boost_FOUND)
-       message(STATUS "1 bis")
+       add_definitions( -DBOOST_ALL_NO_LIB )
+       add_definitions( -DBOOST_ALL_DYN_LINK )
+       IF (MINGW)
+               IF(APPLE)
+                       FIND_PACKAGE(Boost COMPONENTS filesystem-mgw71 system-mgw71 signals-mgw71 date_time-mgw71 thread-mgw71 regex-mgw71 program_options-mgw71 REQUIRED)
+               ELSE(APPLE)
+                       set( Boost_INCLUDE_DIR $ENV{BOOST_ROOT}/include/boost-1_69)
+                       FIND_PACKAGE(Boost COMPONENTS filesystem-mgw85-mt-x64-1_69  system-mgw85-mt-x64-1_69  date_time-mgw85-mt-x64-1_69 thread-mgw85-mt-x64-1_69 regex-mgw85-mt-x64-1_69 program_options-mgw85-mt-x64-1_69  REQUIRED)
+               ENDIF(APPLE)
+       ELSE (MINGW)
+#              FIND_PACKAGE(Boost COMPONENTS filesystem system signals date_time thread regex program_options REQUIRED)
+#EED 2022-07-23
+#              FIND_PACKAGE(Boost COMPONENTS filesystem system  date_time thread regex program_options REQUIRED)
+               FIND_PACKAGE(Boost COMPONENTS filesystem system  date_time  regex program_options REQUIRED)
+       ENDIF(MINGW)
+    IF(Boost_FOUND) 
+         ADD_DEFINITIONS(-DBOOST_FILESYSTEM_VERSION=3)
+         ADD_DEFINITIONS(-DBOOST_MAYOR_VERSION=${Boost_MAJOR_VERSION})
+         ADD_DEFINITIONS(-DBOOST_MINOR_VERSION=${Boost_MINOR_VERSION})
       MESSAGE ( STATUS "=======================================")
       MESSAGE ( STATUS "Looking for boost C++ library... - found in ${Boost_INCLUDE_DIR}")
       INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})        
-                       LINK_DIRECTORIES( ${Boost_LIBRARY_DIRS}) 
+         LINK_DIRECTORIES( ${Boost_LIBRARY_DIRS})
          IF(WIN32)
-         message("creamacro find and use lib = ${Boost_LIBRARIES}")
-       
-
                CREA_DEFINE( USE_BOOST )
-               
+               ADD_DEFINITIONS(-DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED)
                SET(BOOST_LIBRARIES
                        ${Boost_LIBRARIES}
                        )
+                       
 # FCY with cmake boost, it's useless. 
 # But if it is not working, uncomment  
 #
@@ -316,15 +416,25 @@ message(STATUS "1")
 #              ENDIF(USE_DEBUG_LIB)    
          ENDIF(WIN32)
       IF(NOT WIN32)
+message("EED 2021 CREAMacro_FindAndUseLibraries " ${Boost_LIBRARIES} )
 
                  SET(BOOST_LIBRARIES
-                       boost_signals-mt
-                       boost_filesystem-mt
-                       boost_date_time-mt
-                       boost_system-mt
-                       boost_program_options-mt
-                       boost_regex-mt
-                       boost_thread-mt     
+
+                        ${Boost_LIBRARIES}
+#EED 10 Fev 2014
+#EED                   boost_system-mt
+#EED                   boost_thread-mt     
+#EED                   boost_program_options-mt
+
+#EED 03 mars 2011
+#EED                   boost_signals-mt
+#EED                   boost_filesystem-mt
+#EED                   boost_date_time-mt
+#EED                   boost_system-mt
+#EED                   boost_program_options-mt
+#EED                   boost_regex-mt
+#EED                   boost_thread-mt     
+
                        )
       ENDIF(NOT WIN32)
 
@@ -332,11 +442,9 @@ message(STATUS "1")
          MARK_AS_ADVANCED(Boost_LIBRARY_DIRS)
      
     ELSE(Boost_FOUND)
-       message(STATUS "2")
-      MESSAGE( "boost C++ library not found - Set Boost_INCLUDE_DIR to the directory containing boost headers")
+      MESSAGE( STATUS "boost C++ library not found - Set Boost_INCLUDE_DIR to the directory containing boost headers")
     ENDIF(Boost_FOUND)
   ENDIF(NOT Boost_FOUND)
-  message("${Boost_FOUND}")
  
 
 ENDIF(USE_BOOST)
@@ -358,11 +466,21 @@ IF(USE_XERCES)
                  
                ENDIF(NOT XERCES_LIB_DIR)       
                
-               IF(USE_DEBUG_LIB)
-                       set(XERCES_LIBRARIES  xerces-c_3D)
-               ELSE(USE_DEBUG_LIB)
-                       set(XERCES_LIBRARIES  xerces-c_3)
-               ENDIF(USE_DEBUG_LIB)
+               IF(APPLE)
+                       IF(USE_DEBUG_LIB)
+                               set(XERCES_LIBRARIES  xerces-c_3D)
+                       ELSE(USE_DEBUG_LIB)
+                               set(XERCES_LIBRARIES  xerces-c_3)
+                       ENDIF(USE_DEBUG_LIB)
+               ELSEIF(APPLE)
+                       IF(USE_DEBUG_LIB)
+                               #EED 2019-07-03                 set(XERCES_LIBRARIES  xerces-c_3D)
+                               set(XERCES_LIBRARIES  xerces-c)
+                       ELSE(USE_DEBUG_LIB)
+                               #EED 2019-07-03                 set(XERCES_LIBRARIES  xerces-c_3)
+                               set(XERCES_LIBRARIES  xerces-c)
+                       ENDIF(USE_DEBUG_LIB)
+               ENDIF(APPLE)
                
                MARK_AS_ADVANCED(XERCES_LIB_DIR)
        ENDIF(WIN32)
@@ -373,8 +491,9 @@ IF(USE_XERCES)
                        SET(XERCES_LIBRARIES xerces-c )
                         INCLUDE_DIRECTORIES( /opt/local/include )
                         LINK_DIRECTORIES(  /opt/local/lib ) 
-               ELSEIF(APPLE)
-                       SET(XERCES_LIBRARIES libxerces-c.so )
+#JCP 10/01/11                   
+               ELSE(NOT APPLE) 
+                       SET(XERCES_LIBRARIES xerces-c )
                         INCLUDE_DIRECTORIES( /usr/local/include )
                         LINK_DIRECTORIES(  /usr/local/lib /usr/lib) 
                        #FIND_PACKAGE(Xerces)
@@ -387,5 +506,10 @@ IF(USE_XERCES)
   
 ENDIF(USE_XERCES)
 
+IF(WIN32)
+    # dlfcn.h
+       INCLUDE_DIRECTORIES(  $ENV{CREATIS_THIRDPARTYDLLS_DIRS}/../include )
+ENDIF(WIN32)
+
 
 ENDMACRO(CREA_FIND_AND_USE_LIBRARIES)