set(HAVE_UCONTEXT_H 0)
endif()
+### Check threading support
+set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
+find_package(Threads)
### Setup Options
include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Option.cmake)
if(CMAKE_Fortran_COMPILER)
# Fortran compiler detected: save it, then replace by smpiff
- set(SAVED_Fortran_COMPILER "${CMAKE_Fortran_COMPILER}" CACHE FILEPATH "The real Fortran compiler")
+ set(SMPI_Fortran_COMPILER "${CMAKE_Fortran_COMPILER}" CACHE FILEPATH "The real Fortran compiler")
set(CMAKE_Fortran_COMPILER smpiff)
+
+ # Set flags/libs to be used in smpiff
+ if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
+ set(SMPI_Fortran_FLAGS "\"-fpic\" \"-ff2c\" \"-fno-second-underscore\"")
+ set(SMPI_Fortran_LIBS "\"-lgfortran\"")
+ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
+ set(SMPI_Fortran_FLAGS "\"-fPIC\" \"-nofor-main\"")
+ set(SMPI_Fortran_LIBS "\"-lifcore\"")
+ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "PGI") # flang
+ set(SMPI_Fortran_FLAGS "\"-fPIC\"")
+ set(SMPI_Fortran_LIBS "")
+ endif()
+
set(SMPI_FORTRAN 1)
endif(CMAKE_Fortran_COMPILER)
message(FATAL_ERROR "Please install Python (version 3 or higher).")
endif()
-if (APPLE)
- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
- set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-endif()
SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
### Compute the include paths
set(HAVE_GRAPHVIZ 0)
include(FindGraphviz)
-set(HAVE_LUA 0)
+set(SIMGRID_HAVE_LUA 0)
if(enable_lua)
include(FindLuaSimgrid)
endif()
-set(HAVE_NS3 0)
+set(SIMGRID_HAVE_NS3 0)
if(enable_ns3)
include(FindNS3)
- if (NOT HAVE_NS3)
+ if (SIMGRID_HAVE_NS3)
+ set(SIMGRID_HAVE_NS3 1)
+ else()
message(FATAL_ERROR "Cannot find NS3. Please install it (apt-get install ns3 libns3-dev) or disable that cmake option")
endif()
endif()
include_directories(${Boost_INCLUDE_DIRS})
else()
if(APPLE)
- message(FATAL_ERROR "Boost libraries not found. Try to install them with 'sudo fink install boost1.53.nopython'")
+ message(FATAL_ERROR "Boost libraries not found. Try to install them with 'sudo fink install boost1.53.nopython' (check the exact name with 'fink list boost') or 'sudo brew install boost'")
else()
message(FATAL_ERROR "Boost libraries not found. Install libboost-dev (>= 1.48.0).")
endif()
endif()
-#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)
- 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()
+find_package(Boost COMPONENTS context)
+set(Boost_FOUND 1) # This component is optional
+if(Boost_CONTEXT_FOUND)
+ if (Boost_VERSION LESS 105600)
+ message("Found Boost.Context API v1")
+ set(HAVE_BOOST_CONTEXTS 1)
+ elseif(Boost_VERSION LESS 106100)
+ message("Found Boost.Context API v2")
+ set(HAVE_BOOST_CONTEXTS 2)
else()
- message (" boost : found.")
- message (" boost-context: missing. Install libboost-context-dev for this optional feature.")
+ message(" WARNING : our implementation of Boost context factory is not compatible with Boost >=1.61 yet.")
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()
# Checks for header libraries functions.
CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_POSIX_GETTIME)
-CHECK_LIBRARY_EXISTS(pthread pthread_create "" HAVE_PTHREAD)
if(NOT APPLE) # OS X El Capitan deprecates this function
CHECK_LIBRARY_EXISTS(pthread sem_init "" HAVE_SEM_INIT_LIB)
endif()
set(HAVE_THREAD_LOCAL_STORAGE 0)
endif()
+CHECK_INCLUDE_FILE("sys/sendfile.h" HAVE_SENDFILE_H)
+CHECK_FUNCTION_EXISTS(sendfile HAVE_SENDFILE)
+if(HAVE_SENDFILE_H AND HAVE_SENDFILE)
+ set(HAVE_SENDFILE 1)
+else()
+ set(HAVE_SENDFILE 0)
+endif()
+
if(enable_model-checking AND NOT "${CMAKE_SYSTEM}" MATCHES "Linux|FreeBSD")
message(WARNING "Support for model-checking has not been enabled on ${CMAKE_SYSTEM}: disabling it")
set(enable_model-checking FALSE)
endif()
if(enable_jedule)
- set(HAVE_JEDULE 1)
+ set(SIMGRID_HAVE_JEDULE 1)
else()
- set(HAVE_JEDULE 0)
+ set(SIMGRID_HAVE_JEDULE 0)
endif()
if(enable_mallocators)
- SET(HAVE_MALLOCATOR 1)
+ SET(SIMGRID_HAVE_MALLOCATOR 1)
else()
- SET(HAVE_MALLOCATOR 0)
+ SET(SIMGRID_HAVE_MALLOCATOR 0)
endif()
include(FindLibunwind)
endif()
else()
if(enable_model-checking)
- message(FATAL_ERROR "Please either install the libunwind7-dev package (or equivalent) or turn off the model-checking option of SimGrid.")
+ message(FATAL_ERROR "Please install libunwind-dev libdw-dev libevent-dev if you want to compile the SimGrid model checker.")
endif()
endif()
if(enable_model-checking)
find_package(Libdw REQUIRED)
find_package(Libevent REQUIRED)
- include_directories(${LIBDW_INCLUDE_DIRS} ${LIBEVENT_INCLUDE_DIRS})
+ include_directories(${LIBDW_INCLUDE_DIR} ${LIBEVENT_INCLUDE_DIR})
set(SIMGRID_DEP "${SIMGRID_DEP} ${LIBEVENT_LIBRARIES} ${LIBDW_LIBRARIES}")
- set(HAVE_MC 1)
+ set(SIMGRID_HAVE_MC 1)
if("${CMAKE_SYSTEM}" MATCHES "FreeBSD" AND enable_java)
message(WARNING "FreeBSD + Model-Checking + Java = too much for now. Disabling java")
set(enable_java FALSE)
endif()
else()
- SET(HAVE_MC 0)
+ SET(SIMGRID_HAVE_MC 0)
set(HAVE_MMALLOC 0)
endif()
### Initialize of CONTEXT THREADS
set(HAVE_THREAD_CONTEXTS 0)
-if(HAVE_PTHREAD)
+if(CMAKE_USE_PTHREADS_INIT)
### Test that we have a way to create semaphores
if(HAVE_SEM_OPEN_LIB)
endif()
endif()
if(CMAKE_Fortran_COMPILER)
- message(" Compiler: Fortran ...........: ${SAVED_Fortran_COMPILER} (id: ${CMAKE_Fortran_COMPILER_ID})")
+ message(" Compiler: Fortran ...........: ${SMPI_Fortran_COMPILER} (id: ${CMAKE_Fortran_COMPILER_ID})")
message(" version .............: ${CMAKE_Fortran_COMPILER_VERSION}")
endif()
message(" Linker: .....................: ${CMAKE_LINKER}")
message(" with LTO ....................: ${enable_lto}")
message("")
-if (HAVE_NS3)
+if (SIMGRID_HAVE_NS3)
message(" Compile NS-3 ................: yes (path: ${NS3_PATH})")
else()
message(" Compile NS-3 ................: NO (hint: ${NS3_HINT})")
else()
message(" Compile Java ................: NO")
endif()
-message(" Compile Lua .................: ${HAVE_LUA}")
+message(" Compile Lua .................: ${SIMGRID_HAVE_LUA}")
message(" Compile Smpi ................: ${HAVE_SMPI}")
message(" Smpi fortran ..............: ${SMPI_FORTRAN}")
message(" MPICH3 testsuite ..........: ${enable_smpi_MPICH3_testsuite}")
message("")
message(" Maintainer mode .............: ${enable_maintainer_mode}")
message(" Documentation................: ${enable_documentation}")
-message(" Model checking ..............: ${HAVE_MC}")
-message(" Jedule mode ................: ${HAVE_JEDULE}")
+message(" Model checking ..............: ${SIMGRID_HAVE_MC}")
+message(" Jedule mode ................: ${SIMGRID_HAVE_JEDULE}")
message(" Graphviz mode ...............: ${HAVE_GRAPHVIZ}")
message(" Mallocators .................: ${enable_mallocators}")
message("")