Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Don't add include directories when f77 support is disabled.
[simgrid.git] / buildtools / Cmake / Modules / FindF2c.cmake
index 3b3ff57..c370251 100644 (file)
@@ -1,70 +1,83 @@
 find_path(HAVE_F2C_H f2c.h
-    HINTS
-    $ENV{LD_LIBRARY_PATH}
-    PATH_SUFFIXES include/
-    PATHS
-    /opt
-    /opt/local
-    /opt/csw
-    /sw
-    /usr
-)
+  HINTS
+  $ENV{LD_LIBRARY_PATH}
+  PATH_SUFFIXES include/
+  PATHS
+  /opt
+  /opt/local
+  /opt/csw
+  /sw
+  /usr
+  )
 
-find_program(F2C_EXE 
-       NAME f2c
-    PATH_SUFFIXES bin/
-    PATHS
-    /opt
-    /opt/local
-    /opt/csw
-    /sw
-    /usr
-)
+find_program(F2C_EXE
+  NAME f2c
+  PATH_SUFFIXES bin/
+  PATHS
+  /opt
+  /opt/local
+  /opt/csw
+  /sw
+  /usr
+  )
 
 find_library(HAVE_F2C_LIB
-    NAME f2c
-    HINTS
-    $ENV{LD_LIBRARY_PATH}
-    PATH_SUFFIXES lib/
-    PATHS
-    /opt
-    /opt/local
-    /opt/csw
-    /sw
-    /usr
-)
+  NAME f2c
+  HINTS
+  $ENV{LD_LIBRARY_PATH}
+  PATH_SUFFIXES lib/
+  PATHS
+  /opt
+  /opt/local
+  /opt/csw
+  /sw
+  /usr
+  )
 
 if(HAVE_F2C_H)
-set(HAVE_SMPI_F2C_H 1)
-endif(HAVE_F2C_H)
+  set(HAVE_SMPI_F2C_H 1)
+endif()
 
 message(STATUS "Looking for f2c.h")
 if(HAVE_F2C_H)
-message(STATUS "Looking for f2c.h - found")
-else(HAVE_F2C_H)
-message(STATUS "Looking for f2c.h - not found")
-endif(HAVE_F2C_H)
+  message(STATUS "Looking for f2c.h - found")
+else()
+  message(STATUS "Looking for f2c.h - not found")
+endif()
 
 message(STATUS "Looking for lib f2c")
 if(HAVE_F2C_LIB)
-message(STATUS "Looking for lib f2c - found")
-else(HAVE_F2C_LIB)
-message(STATUS "Looking for lib f2c - not found")
-endif(HAVE_F2C_LIB)
+  message(STATUS "Looking for lib f2c - found")
+else()
+  message(STATUS "Looking for lib f2c - not found")
+endif()
 
+message(STATUS "Looking for bin f2c")
 if(F2C_EXE)
-message(STATUS "Found F2C: ${F2C_EXE}")
-endif(F2C_EXE)
+  message(STATUS "Found F2C: ${F2C_EXE}")
+else()
+  message(STATUS "Looking for bin f2c - not found (http://www.netlib.org/f2c/)")
+endif()
 
 mark_as_advanced(HAVE_F2C_H)
 mark_as_advanced(F2C_EXE)
 mark_as_advanced(HAVE_F2C_LIB)
 
-if(HAVE_F2C_H)
-   string(REGEX MATCH "-I${HAVE_F2C_H} " operation "${CMAKE_C_FLAGS}")
-   if(NOT operation)
-               SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${HAVE_F2C_H} ")
-   endif(NOT operation)
-else(HAVE_F2C_H)
-       message(FATAL_ERROR "You should install f2c before use smpi.")
-endif(HAVE_F2C_H)
\ No newline at end of file
+#Some old versions of 64 bits systems seem to have a different size between C and Fortran Datatypes
+#Deactivate F2C with these versions, in order to avoid breaking test cases in legacy systems (as Fedora 13)
+set(COMPILER_OK 1)
+if(PROCESSOR_x86_64 AND "${CMAKE_SYSTEM}" MATCHES "Linux" AND ${CMAKE_C_COMPILER_ID} STREQUAL "GNU" AND "4.5" STRGREATER "${COMPILER_C_VERSION_MAJOR_MINOR}" )
+    set(COMPILER_OK 0)
+    message("Your C compiler is a bit old and Fortran support is quite problematic on 64 bit platforms, F2C has been deactivated")
+endif()
+
+set(SMPI_F2C 0)
+if(HAVE_F2C_H AND F2C_EXE AND HAVE_F2C_LIB AND COMPILER_OK)
+  set(SMPI_F2C 1)
+endif()
+
+if(SMPI_F2C)
+  include_directories(${HAVE_F2C_H})
+else()
+  message("-- Fortran 77 support for smpi is disabled.")
+endif()