X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/bb52ef5fabdd283019a32fb5d812b5e40127bea5..4b8be43e2c03939bc780b6112d841d8b839a79bb:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 3973529d4c..aa1e7538f0 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_LIBRARY dl) +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}") @@ -179,7 +177,7 @@ set(SIMGRID_DEP "-lm") 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) @@ -314,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) @@ -335,15 +334,10 @@ 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) @@ -369,13 +363,22 @@ 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") + if(NOT APPLE) + SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind") else() - SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind-x86") + # Apple forbids to link directly against its libunwind implementation + # So let's comply and link against the System framework + SET(SIMGRID_DEP "${SIMGRID_DEP} -lSystem") + endif() + 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) @@ -390,6 +393,7 @@ if(enable_model-checking) SET(SIMGRID_DEP "${SIMGRID_DEP} -ldw") else() SET(HAVE_MC 0) + set(HAVE_MMALLOC 0) endif() if (enable_model-checking AND enable_ns3) @@ -398,12 +402,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 +417,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 )