From: Martin Quinson Date: Mon, 31 Oct 2016 22:08:42 +0000 (+0100) Subject: Merge branch 'master' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid X-Git-Tag: v3_14~271 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/51127994e0f96d0667dd433a801a47a46f50eae7?hp=-c Merge branch 'master' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid --- 51127994e0f96d0667dd433a801a47a46f50eae7 diff --combined CMakeLists.txt index 3973529d4c,3fdc3598f3..c6a66185ab --- a/CMakeLists.txt +++ b/CMakeLists.txt @@@ -119,6 -119,11 +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) @@@ -172,8 -177,7 +177,8 @@@ 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) @@@ -276,6 -280,18 +281,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) @@@ -314,6 -330,7 +319,7 @@@ CHECK_FUNCTION_EXISTS(sysconf HAVE_SYSC 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) @@@ -335,24 -352,10 +341,14 @@@ 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(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) @@@ -367,29 -370,21 +363,35 @@@ else( SET(HAVE_MALLOCATOR 0) endif() +include(FindLibunwind) +if(HAVE_LIBUNWIND) + SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind -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() +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.") + endif() +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) + set(HAVE_MC 0) + endif() -if(enable_model-checking AND HAVE_MMALLOC) ++ +if(enable_model-checking) SET(HAVE_MC 1) - include(FindLibunwind) - include(FindLibdw) + + include(FindLibdw) + SET(SIMGRID_DEP "${SIMGRID_DEP} -ldw") else() - if(enable_model-checking) - message(STATUS "Warning: support for model-checking has been disabled because you are missing either mmap or __thread.") - endif() - SET(HAVE_MC 0) - SET(HAVE_MMALLOC 0) + SET(HAVE_MC 0) endif() if (enable_model-checking AND enable_ns3) @@@ -398,12 -393,9 +400,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) @@@ -416,7 -408,7 +415,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 ) diff --combined tools/cmake/MakeLib.cmake index 95ce4604a1,19f94525d5..67b6933ed2 --- a/tools/cmake/MakeLib.cmake +++ b/tools/cmake/MakeLib.cmake @@@ -20,6 -20,7 +20,6 @@@ endif( # Compute the dependencies of SimGrid ##################################### -set(SIMGRID_DEP "-lm") if (HAVE_BOOST_CONTEXTS) set(SIMGRID_DEP "${SIMGRID_DEP} ${Boost_CONTEXT_LIBRARY}") endif() @@@ -52,7 -53,7 +52,7 @@@ if(HAVE_LUA COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/simdag/ COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/lib/libsimgrid.${LIB_EXE} ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE} #for test ) - SET(SIMGRID_DEP "${SIMGRID_DEP} ${LUA_LIBRARY} -ldl") + SET(SIMGRID_DEP "${SIMGRID_DEP} ${LUA_LIBRARY} ${DL_LIBRARY}") endif() if(HAVE_PAPI) @@@ -69,8 -70,25 +69,8 @@@ if(HAVE_GRAPHVIZ endif() endif() -if(HAVE_MC) - # The availability of libunwind was checked in CompleteInFiles.cmake - # (that includes FindLibunwind.cmake), so simply load it now. - - SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind -lunwind-ptrace") - - # Same for libdw - SET(SIMGRID_DEP "${SIMGRID_DEP} -ldw") - # 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() - if(HAVE_MC AND HAVE_GNU_LD) - SET(SIMGRID_DEP "${SIMGRID_DEP} -ldl") + SET(SIMGRID_DEP "${SIMGRID_DEP} ${DL_LIBRARY}") endif() if(HAVE_NS3) @@@ -81,6 -99,10 +81,10 @@@ if(HAVE_POSIX_GETTIME SET(SIMGRID_DEP "${SIMGRID_DEP} -lrt") endif() + if("${CMAKE_SYSTEM}" MATCHES "FreeBSD") + set(SIMGRID_DEP "${SIMGRID_DEP} -lprocstat") + endif() + # Compute the dependencies of SMPI ################################## if(enable_smpi AND APPLE) diff --combined tools/cmake/src/internal_config.h.in index e55e2aacf7,c09fdc13cf..2f61c5662f --- a/tools/cmake/src/internal_config.h.in +++ b/tools/cmake/src/internal_config.h.in @@@ -62,6 -62,7 +62,7 @@@ /* Other function checks */ #define HAVE_BACKTRACE @HAVE_BACKTRACE@ /* Function backtrace */ #define HAVE_MMAP @HAVE_MMAP@ /* Function mmap */ + #define HAVE_MREMAP @HAVE_MREMAP@ /* Function mremap */ #define HAVE_SEM_INIT @HAVE_SEM_INIT@ /* Function sem_init (part of XPG6 standard only) */ #define HAVE_POPEN @HAVE_POPEN@ /* Function popen */ #define HAVE_SYSCONF @HAVE_SYSCONF@ /* Function sysconf */ @@@ -70,4 -71,3 +71,4 @@@ /* Other checks */ #cmakedefine ADDR2LINE "@ADDR2LINE@" /* Path to the addr2line tool */ #define HAVE_GRAPHVIZ @HAVE_GRAPHVIZ@ /* The graphviz library */ +#define HAVE_LIBUNWIND @HAVE_LIBUNWIND@ /* The lib unwind library (for MC and backtrace display) */