X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/553822fb3e37ffb31efd16af1a4d841a9dbbfb2d..b62758fb895c6e9b4473c7289d8f3811b5e900ad:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index daeb9d899e..d16dc1b652 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -119,6 +119,11 @@ endif() execute_process(COMMAND ${CMAKE_LINKER} -version OUTPUT_VARIABLE LINKER_VERSION) string(REGEX MATCH "[0-9].[0-9]*" LINKER_VERSION "${LINKER_VERSION}") +### Set the library providing dlopen +if("${CMAKE_SYSTEM}" MATCHES "Linux") + find_library(dl DL_LIBRARY) +endif("${CMAKE_SYSTEM}" MATCHES "Linux") + ### Find programs and paths FIND_PROGRAM(GCOV_PATH gcov) include(FindPerl) @@ -154,13 +159,6 @@ if(NOT CMAKE_CROSSCOMPILING AND EXISTS /usr/include/) set(INCLUDES ${INCLUDES} /usr/include/) endif() -### Check 32bits or 64bits -IF(CMAKE_SIZEOF_VOID_P EQUAL 4) - SET(ARCH_32_BITS 1) -ELSE() - SET(ARCH_32_BITS 0) -ENDIF() - if(WIN32) set(CMAKE_INCLUDE_WIN "${CMAKE_C_COMPILER}") set(CMAKE_LIB_WIN "${CMAKE_C_COMPILER}") @@ -172,13 +170,14 @@ endif() include_directories(${INCLUDES}) - +# library dependency cannot start with a space (CMP0004), so initialize it with something that is never desactivated. +set(SIMGRID_DEP "-lm") ### Determine the assembly flavor that we need today set(HAVE_RAW_CONTEXTS 0) include(CMakeDetermineSystem) IF(CMAKE_SYSTEM_PROCESSOR MATCHES ".86|AMD64|amd64") - IF(${ARCH_32_BITS}) + IF(CMAKE_SIZEOF_VOID_P EQUAL 4) # 32 bits message(STATUS "System processor: i686 (${CMAKE_SYSTEM_PROCESSOR}, 32 bits)") set(PROCESSOR_i686 1) set(PROCESSOR_x86_64 0) @@ -275,18 +274,6 @@ else() endif() 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(rt clock_gettime "" HAVE_POSIX_GETTIME) @@ -325,6 +312,7 @@ CHECK_FUNCTION_EXISTS(sysconf HAVE_SYSCONF) CHECK_FUNCTION_EXISTS(popen HAVE_POPEN) CHECK_FUNCTION_EXISTS(process_vm_readv HAVE_PROCESS_VM_READV) CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP) +CHECK_FUNCTION_EXISTS(mremap HAVE_MREMAP) CHECK_SYMBOL_EXISTS(vasprintf stdio.h HAVE_VASPRINTF) if(MINGW) @@ -346,20 +334,19 @@ else() set(HAVE_THREAD_LOCAL_STORAGE 0) endif() -# Our usage of mmap is Linux-specific (flag MAP_ANONYMOUS), but kFreeBSD uses a GNU libc -IF(HAVE_MMAP AND - NOT "${CMAKE_SYSTEM}" MATCHES "Linux" AND - NOT "${CMAKE_SYSTEM}" MATCHES "kFreeBSD" AND - NOT "${CMAKE_SYSTEM}" MATCHES "GNU" AND - NOT "${CMAKE_SYSTEM}" MATCHES "Darwin") - SET(HAVE_MMAP 0) - message(STATUS "Warning: MMAP is thought as non functional on this architecture (${CMAKE_SYSTEM})") -ENDIF() +if(enable_model-checking AND NOT "${CMAKE_SYSTEM}" MATCHES "Linux") + message(WARNING "Support for model-checking has not been enabled on ${CMAKE_SYSTEM}: disabling it") + set(enable_model-checking FALSE) +endif() if(HAVE_MMAP AND HAVE_THREAD_LOCAL_STORAGE) SET(HAVE_MMALLOC 1) else() SET(HAVE_MMALLOC 0) + if(enable_model-checking) + message(STATUS "Warning: support for model-checking has been disabled because you are missing either mmap or __thread.") + endif() + SET(enable_model-checking 0) endif() if(enable_jedule) @@ -374,16 +361,33 @@ else() SET(HAVE_MALLOCATOR 0) endif() -if(enable_model-checking AND HAVE_MMALLOC) - SET(HAVE_MC 1) - include(FindLibunwind) - include(FindLibdw) +include(FindLibunwind) +if(HAVE_LIBUNWIND) + SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind") + if("${CMAKE_SYSTEM}" MATCHES "Linux") + set(SIMGRID_DEP "${SIMGRID_DEP} -lunwind-ptrace") + # This supposes that the host machine is either an AMD or a X86. + # This is deeply wrong, and should be fixed by manually loading -lunwind-PLAT (FIXME) + if(PROCESSOR_x86_64) + SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind-x86_64") + else() + SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind-x86") + endif() + endif() else() if(enable_model-checking) - message(STATUS "Warning: support for model-checking has been disabled because you are missing either mmap or __thread.") + message(FATAL_ERROR "Please either install the libunwind7-dev package (or equivalent) or turn off the model-checking option of SimGrid.") endif() - SET(HAVE_MC 0) - SET(HAVE_MMALLOC 0) +endif() + +if(enable_model-checking) + SET(HAVE_MC 1) + + include(FindLibdw) + SET(SIMGRID_DEP "${SIMGRID_DEP} -ldw") +else() + SET(HAVE_MC 0) + set(HAVE_MMALLOC 0) endif() if (enable_model-checking AND enable_ns3) @@ -392,12 +396,9 @@ endif() if(enable_smpi) SET(HAVE_SMPI 1) - if("${CMAKE_SYSTEM}" MATCHES "Linux") + if("${CMAKE_SYSTEM}" MATCHES "Linux|FreeBSD") SET(USE_LIBUTIL 0) SET(HAVE_PRIVATIZATION 1) - elseif("${CMAKE_SYSTEM}" MATCHES "^FreeBSD") - SET(USE_LIBUTIL 0) - SET(HAVE_PRIVATIZATION 0) else() message (STATUS "Warning: no support for SMPI automatic privatization on this platform") SET(HAVE_PRIVATIZATION 0) @@ -410,7 +411,7 @@ endif() ### Check for GNU dynamic linker CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H) if (HAVE_DLFCN_H) - execute_process(COMMAND ${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_gnu_dynlinker.c -ldl -o test_gnu_ld + execute_process(COMMAND ${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_gnu_dynlinker.c ${DL_LIBRARY} -o test_gnu_ld WORKING_DIRECTORY ${CMAKE_BINARY_DIR} OUTPUT_VARIABLE HAVE_GNU_LD_compil )