Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
accept single quotes while converting the XML files
[simgrid.git] / CMakeLists.txt
index eced825..579a485 100644 (file)
@@ -90,8 +90,8 @@ endif()
 
 set(SIMGRID_VERSION_MAJOR "3")
 set(SIMGRID_VERSION_MINOR "13")
-set(SIMGRID_VERSION_PATCH "0")
-set(SIMGRID_VERSION_EXTRA "-devel") # Extra words to add to version string (e.g. -rc1)
+set(SIMGRID_VERSION_PATCH "90")
+set(SIMGRID_VERSION_EXTRA "-prealpha") # Extra words to add to version string (e.g. -rc1)
 
 set(SIMGRID_VERSION_DATE  "2016") # Year for copyright information
 
@@ -217,6 +217,13 @@ endif()
 if(WIN32)
   set(Boost_USE_STATIC_LIBS 1)
 endif()
+set(HAVE_PAPI 0)
+if(enable_smpi_papi)
+  include(FindPAPI)
+  if (NOT HAVE_PAPI)
+    message(FATAL_ERROR "Cannot find PAPI. Please install it (apt-get install papi-tools libpapi-dev) or disable PAPI bindings.")
+  endif()
+endif()
 
 find_package(Boost 1.48)
 if(Boost_FOUND)
@@ -232,39 +239,49 @@ else()
   endif()
 endif()
 
-# Try again to see if we have libboost-context
-find_package(Boost 1.42 COMPONENTS context)
-set(Boost_FOUND 1) # We don't care of whether this component is missing
+#Boost context 1.61 will break compatibility with our implementation.
+#Warn users about that
+find_package(Boost 1.61 COMPONENTS context)
 
 if(Boost_FOUND AND Boost_CONTEXT_FOUND)
-  # We should use feature detection for this instead:
-  if (Boost_VERSION LESS 105600)
-    message("Found Boost.Context API v1")
-    set(HAVE_BOOST_CONTEXTS 1)
+  message("WARNING : our implementation of Boost context factory is not compatible with Boost >=1.61 yet.")
+
+  set(Boost_FOUND 1)
+  set(HAVE_BOOST_CONTEXTS 0)
+else()
+# Try again to see if we have libboost-context
+  find_package(Boost 1.42 COMPONENTS context)
+  set(Boost_FOUND 1) # We don't care of whether this component is missing
+
+  if(Boost_FOUND AND Boost_CONTEXT_FOUND)
+    # We should use feature detection for this instead:
+    if (Boost_VERSION LESS 105600)
+      message("Found Boost.Context API v1")
+      set(HAVE_BOOST_CONTEXTS 1)
+    else()
+      message("Found Boost.Context API v2")
+      set(HAVE_BOOST_CONTEXTS 2)
+    endif()
   else()
-    message("Found Boost.Context API v2")
-    set(HAVE_BOOST_CONTEXTS 2)
+    message ("   boost        : found.")
+    message ("   boost-context: missing. Install libboost-context-dev for this optional feature.")
+    set(HAVE_BOOST_CONTEXTS 0)
   endif()
-else()
-  message ("   boost        : found.")
-  message ("   boost-context: missing. Install libboost-context-dev for this optional feature.")
-  set(HAVE_BOOST_CONTEXTS 0)
 endif()
 
-# Try again to see if we have libboost-context
-find_package(Boost 1.42 COMPONENTS context)
-set(Boost_FOUND 1) # We don't care of whether this component is missing
-
-if(Boost_FOUND AND Boost_GRAPH_FOUND)
-  set(HAVE_BOOST_GRAPH 1)
-else()
-  message ("   boost        : found.")
-  message ("   boost-graph  : missing. Install libboost-graph-dev for this optional feature.")
-  set(HAVE_BOOST_GRAPH 0)
-endif()
+# Try again to see if we have libboost-graph
+#find_package(Boost 1.42 COMPONENTS graph)
+#set(Boost_FOUND 1) # We don't care of whether this component is missing
+#
+#if(Boost_FOUND AND Boost_GRAPH_FOUND)
+#  set(HAVE_BOOST_GRAPH 1)
+#else()
+#  message ("   boost        : found.")
+#  message ("   boost-graph  : missing. Install libboost-graph-dev for this optional feature.")
+#  set(HAVE_BOOST_GRAPH 0)
+#endif()
 
 # Checks for header libraries functions.
-CHECK_LIBRARY_EXISTS(execinfo backtrace              "" HAVE_BACKTRACE_IN_LIBEXECINFO)
 CHECK_LIBRARY_EXISTS(rt      clock_gettime           "" HAVE_POSIX_GETTIME)
 
 CHECK_LIBRARY_EXISTS(pthread pthread_create          "" HAVE_PTHREAD)
@@ -292,6 +309,7 @@ CHECK_INCLUDE_FILE("sys/sysctl.h" HAVE_SYS_SYSCTL_H)
 CHECK_INCLUDE_FILE("ucontext.h" HAVE_UCONTEXT_H)
 CHECK_INCLUDE_FILE("linux/futex.h" HAVE_FUTEX_H)
 
+CHECK_FUNCTION_EXISTS(backtrace HAVE_BACKTRACE)
 CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
 CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP)
 CHECK_FUNCTION_EXISTS(getdtablesize HAVE_GETDTABLESIZE)
@@ -360,6 +378,10 @@ else()
   SET(HAVE_MMALLOC 0)
 endif()
 
+if (enable_model-checking AND enable_ns3)
+  message(FATAL_ERROR "Cannot activate both model-checking and NS3 bindings: NS3 pull too much dependencies for the MC to work")
+endif()
+
 if(enable_smpi)
   include(FindGFortran)
   SET(HAVE_SMPI 1)
@@ -621,7 +643,7 @@ endif()
 # So we include only where needed, and compile with -Wundef to notice the missing includes.
 # But cmake sometimes defines to the empty definition (#define HAVE_VALGRIND_H).
 # So we have to make sure that everything got a decent value before generating the files.
-foreach(var HAVE_EXECINFO_H HAVE_FUTEX_H HAVE_GETDTABLESIZE HAVE_GETTIMEOFDAY HAVE_MMAP HAVE_NANOSLEEP HAVE_POPEN
+foreach(var HAVE_BACKTRACE HAVE_EXECINFO_H HAVE_FUTEX_H HAVE_GETDTABLESIZE HAVE_GETTIMEOFDAY HAVE_MMAP HAVE_NANOSLEEP HAVE_POPEN
             HAVE_POSIX_GETTIME HAVE_PROCESS_VM_READV HAVE_SIGNAL_H HAVE_SYS_PARAM_H HAVE_SYS_SYSCTL_H HAVE_SYSCONF 
             HAVE_UCONTEXT_H HAVE_UNISTD_H HAVE_VALGRIND_H HAVE_VASPRINTF)
   if(${var})
@@ -947,6 +969,7 @@ message("        Compile Smpi ................: ${HAVE_SMPI}")
 message("          Smpi fortran ..............: ${SMPI_FORTRAN}")
 message("          MPICH3 testsuite ..........: ${enable_smpi_MPICH3_testsuite}")
 message("          Privatization .............: ${HAVE_PRIVATIZATION}")
+message("          PAPI support...............: ${HAVE_PAPI}")
 message("        Compile Boost.Context support: ${HAVE_BOOST_CONTEXTS}")
 message("")
 message("        Maintainer mode .............: ${enable_maintainer_mode}")