X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/94dd987064a8e7e3fa7ca27ed97797e8400c20ab..06cc5b34eccf67f299861b27a1a367b079fc8d3d:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index c315f2c0cf..6225d9aae8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.6) # Java requires 2.8.6 +cmake_minimum_required(VERSION 2.8.8) message(STATUS "Cmake version ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_HOME_DIRECTORY}/tools/cmake/Modules) @@ -101,7 +101,7 @@ 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_DATE "2015") # Year for copyright information +set(SIMGRID_VERSION_DATE "2016") # Year for copyright information if(${SIMGRID_VERSION_PATCH} EQUAL "0") set(release_version "${SIMGRID_VERSION_MAJOR}.${SIMGRID_VERSION_MINOR}") @@ -146,19 +146,15 @@ if (APPLE) set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) endif() - -### Set some variables for Cmake SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) ### Compute the include paths set(INCLUDES ${CMAKE_HOME_DIRECTORY} ${CMAKE_HOME_DIRECTORY}/include - ${CMAKE_HOME_DIRECTORY}/src ${CMAKE_HOME_DIRECTORY}/src/include ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/include - ${CMAKE_BINARY_DIR}/src ) if(WIN32) @@ -186,15 +182,6 @@ if(WIN32) set(INCLUDES ${INCLUDES} ${CMAKE_INCLUDE_WIN}) unset(CMAKE_INCLUDE_WIN) - find_program(NSIS_PROGRAM NAMES makensi) - set(NSIS_WIN_VERSION $ENV{PROCESSOR_ARCHITEW6432}) - if(NSIS_WIN_VERSION MATCHES "") - set(NSIS_WIN_VERSION $ENV{PROCESSOR_ARCHITECTURE}) - endif() - if(${NSIS_WIN_VERSION}) - string(TOLOWER ${NSIS_WIN_VERSION} NSIS_WIN_VERSION) - endif() - set(_XBT_WIN32 1) message(STATUS "C_COMPILER ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_VERSION}") @@ -227,7 +214,7 @@ IF(CMAKE_SYSTEM_PROCESSOR MATCHES ".86|AMD64|amd64") if (MSVC) message(STATUS "Disable fast raw contextes on Microsoft Visual.") else() - set(HAVE_RAWCTX 1) + set(HAVE_RAW_CONTEXTS 1) endif() ENDIF() @@ -242,18 +229,6 @@ include(CheckSymbolExists) include(FindGraphviz) include(FindLibSigc++) -if(enable_java) - find_package(Java REQUIRED COMPONENTS Runtime Development) - find_package(JNI REQUIRED) - message("-- [Java] JNI found: ${JNI_FOUND}") - message("-- [Java] JNI include dirs: ${JNI_INCLUDE_DIRS}") - if(enable_maintainer_mode) - find_package(SWIG REQUIRED) - include(UseSWIG) - message("-- [Java] Swig found: ${SWIG_FOUND} (version ${SWIG_VERSION})") - endif() - set(HAVE_Java 1) -endif() if(enable_scala) find_package(Scala REQUIRED) message("-- [Scala] scalac found: ${SCALA_COMPILE}") @@ -292,27 +267,30 @@ 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_CONTEXT 1) + set(HAVE_BOOST_CONTEXTS 1) else() message("Found Boost.Context API v2") - set(HAVE_BOOST_CONTEXT 2) + set(HAVE_BOOST_CONTEXTS 2) endif() else() message (" boost : found.") message (" boost-context: missing. Install libboost-context-dev for this optional feature.") - set(HAVE_BOOST_CONTEXT 0) + set(HAVE_BOOST_CONTEXTS 0) endif() # Checks for header libraries functions. CHECK_LIBRARY_EXISTS(dl dlopen "" HAVE_DLOPEN_IN_LIBDL) CHECK_LIBRARY_EXISTS(execinfo backtrace "" HAVE_BACKTRACE_IN_LIBEXECINFO) -CHECK_LIBRARY_EXISTS(pthread pthread_create "" HAVE_PTHREAD) -CHECK_LIBRARY_EXISTS(pthread sem_init "" HAVE_SEM_INIT_LIB) -CHECK_LIBRARY_EXISTS(pthread sem_open "" HAVE_SEM_OPEN_LIB) -CHECK_LIBRARY_EXISTS(pthread sem_timedwait "" HAVE_SEM_TIMEDWAIT_LIB) -CHECK_LIBRARY_EXISTS(pthread pthread_mutex_timedlock "" HAVE_MUTEX_TIMEDLOCK_LIB) CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_POSIX_GETTIME) +if(NOT WIN32) # We don't want to have winpthread-1.dll in the jarfile + CHECK_LIBRARY_EXISTS(pthread pthread_create "" HAVE_PTHREAD) + CHECK_LIBRARY_EXISTS(pthread sem_init "" HAVE_SEM_INIT_LIB) + CHECK_LIBRARY_EXISTS(pthread sem_open "" HAVE_SEM_OPEN_LIB) + CHECK_LIBRARY_EXISTS(pthread sem_timedwait "" HAVE_SEM_TIMEDWAIT_LIB) + CHECK_LIBRARY_EXISTS(pthread pthread_mutex_timedlock "" HAVE_MUTEX_TIMEDLOCK_LIB) +endif() + if(CMAKE_SYSTEM_NAME MATCHES "Darwin") set(CMAKE_REQUIRED_DEFINITIONS "-D_XOPEN_SOURCE=700 -D_DARWIN_C_SOURCE") elseif(MINGW) @@ -327,6 +305,7 @@ CHECK_INCLUDE_FILE("valgrind/valgrind.h" HAVE_VALGRIND_VALGRIND_H) CHECK_INCLUDE_FILE("socket.h" HAVE_SOCKET_H) CHECK_INCLUDE_FILE("stat.h" HAVE_STAT_H) CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H) +CHECK_INCLUDE_FILE("sys/ptrace.h" HAVE_SYS_PTRACE_H) CHECK_INCLUDE_FILE("windows.h" HAVE_WINDOWS_H) CHECK_INCLUDE_FILE("errno.h" HAVE_ERRNO_H) CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H) @@ -404,8 +383,8 @@ if(WIN32) # Those files are not detected despite being present set(HAVE_MAKECONTEXT 1) endif() -set(CONTEXT_UCONTEXT 0) -set(CONTEXT_THREADS 0) +set(HAVE_UCONTEXT_CONTEXTS 0) +set(HAVE_THREAD_CONTEXTS 0) if(enable_jedule) set(HAVE_JEDULE 1) @@ -439,14 +418,15 @@ endif() if(enable_smpi) include(FindGFortran) - #really checks for objdump for privatization - find_package(BinUtils QUIET) - mark_as_advanced(BinUtils_DIR) SET(HAVE_SMPI 1) - - if( NOT "${CMAKE_OBJDUMP}" MATCHES "CMAKE_OBJDUMP-NOTFOUND" AND HAVE_MMAP) + if("${CMAKE_SYSTEM}" MATCHES "Linux") + 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) endif() endif() @@ -646,12 +626,12 @@ endif() #If can have both context if(HAVE_UCONTEXT) - set(CONTEXT_UCONTEXT 1) + set(HAVE_UCONTEXT_CONTEXTS 1) message("-- Support for ucontext factory") endif() if(HAVE_PTHREAD) - set(CONTEXT_THREADS 1) + set(HAVE_THREAD_CONTEXTS 1) message("-- Support for thread context factory") endif() @@ -758,11 +738,12 @@ endif() ### check for stackgrowth if (NOT CMAKE_CROSSCOMPILING) - try_run(RUN_makecontext_VAR COMPILE_makecontext_VAR + try_run(RUN_stackgrowth_VAR COMPILE_stackgrowth_VAR ${CMAKE_BINARY_DIR} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_stackgrowth.c RUN_OUTPUT_VARIABLE stack - ) + COPY_FILE test_stackgrowth + ) endif() if("${stack}" STREQUAL "down") set(PTH_STACKGROWTH "-1") @@ -774,7 +755,7 @@ else() elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686") set(PTH_STACKGROWTH "-1") else() - message(ERROR "Could not figure the stack direction.") + message(FATAL_ERROR "Could not figure out the stack direction. Test prog returned: ${stack}; CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}.") endif() endif() @@ -782,123 +763,8 @@ endif() ## System checks ## -#SG_CONFIGURE_PART([System checks...]) -#AC_PROG_CC(xlC gcc cc) -auto -#AM_SANITY_CHECK -auto - -#AC_PROG_MAKE_SET - -#AC_CHECK_VA_COPY - -set(diff_va "va_copy((d),(s))" - "VA_COPY((d),(s))" - "__va_copy((d),(s))" - "__builtin_va_copy((d),(s))" - "do { (d) = (s)\; } while (0)" - "do { *(d) = *(s)\; } while (0)" - "memcpy((void *)&(d), (void *)&(s), sizeof(s))" - "memcpy((void *)(d), (void *)(s), sizeof(*(s)))" - ) - -foreach(fct ${diff_va}) - write_file("${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_va_copy.c" "#include -#include -#include -#define DO_VA_COPY(d,s) ${fct} -void test(char *str, ...) -{ - va_list ap, ap2; - int i; - va_start(ap, str); - DO_VA_COPY(ap2, ap); - for (i = 1; i <= 9; i++) { - int k = (int)va_arg(ap, int); - if (k != i) - abort(); - } - DO_VA_COPY(ap, ap2); - for (i = 1; i <= 9; i++) { - int k = (int)va_arg(ap, int); - if (k != i) - abort(); - } - va_end(ap); -} -int main(void) -{ - test(\"test\", 1, 2, 3, 4, 5, 6, 7, 8, 9); - exit(0); -}" - ) - - execute_process( - COMMAND ${CMAKE_C_COMPILER} "${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_va_copy.c" - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - RESULT_VARIABLE COMPILE_VA_NULL_VAR - OUTPUT_QUIET - ERROR_QUIET - ) - - if(NOT COMPILE_VA_NULL_VAR) - string(REGEX REPLACE "\;" "" fctbis ${fct}) - if(${fctbis} STREQUAL "va_copy((d),(s))") - set(HAVE_VA_COPY 1) - set(ac_cv_va_copy "C99") - set(__VA_COPY_USE_C99 "va_copy((d),(s))") - endif() - - if(${fctbis} STREQUAL "VA_COPY((d),(s))") - set(ac_cv_va_copy "GCM") - set(__VA_COPY_USE_GCM "VA_COPY((d),(s))") - endif() - - if(${fctbis} STREQUAL "__va_copy((d),(s))") - set(ac_cv_va_copy "GCH") - set(__VA_COPY_USE_GCH "__va_copy((d),(s))") - endif() - - if(${fctbis} STREQUAL "__builtin_va_copy((d),(s))") - set(ac_cv_va_copy "GCB") - set(__VA_COPY_USE_GCB "__builtin_va_copy((d),(s))") - endif() - - if(${fctbis} STREQUAL "do { (d) = (s) } while (0)") - set(ac_cv_va_copy "ASS") - set(__VA_COPY_USE_ASS "do { (d) = (s); } while (0)") - endif() - - if(${fctbis} STREQUAL "do { *(d) = *(s) } while (0)") - set(ac_cv_va_copy "ASP") - set(__VA_COPY_USE_ASP "do { *(d) = *(s); } while (0)") - endif() - - if(${fctbis} STREQUAL "memcpy((void *)&(d), (void *)&(s), sizeof(s))") - set(ac_cv_va_copy "CPS") - set(__VA_COPY_USE_CPS "memcpy((void *)&(d), (void *)&(s), sizeof(s))") - endif() - - if(${fctbis} STREQUAL "memcpy((void *)(d), (void *)(s), sizeof(*(s)))") - set(ac_cv_va_copy "CPP") - set(__VA_COPY_USE_CPP "memcpy((void *)(d), (void *)(s), sizeof(*(s)))") - endif() - - if(NOT STATUS_OK) - set(__VA_COPY_USE "__VA_COPY_USE_${ac_cv_va_copy}(d, s)") - endif() - set(STATUS_OK "1") - - endif() - -endforeach(fct ${diff_va}) - -#-------------------------------------------------------------------------------------------------- ### check for a working snprintf if(HAVE_SNPRINTF AND HAVE_VSNPRINTF OR WIN32) - if(WIN32) - #set(HAVE_SNPRINTF 1) - #set(HAVE_VSNPRINTF 1) - endif() - if(CMAKE_CROSSCOMPILING) set(RUN_SNPRINTF_FUNC "cross") #set(PREFER_PORTABLE_SNPRINTF 1) @@ -1148,8 +1014,6 @@ endif() SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${generated_files_to_clean}") -configure_file("${CMAKE_HOME_DIRECTORY}/tools/cmake/src/simgrid.nsi.in" "${CMAKE_BINARY_DIR}/simgrid.nsi" @ONLY IMMEDIATE) - ### Define source packages for Libs include(${CMAKE_HOME_DIRECTORY}/tools/cmake/DefinePackages.cmake) @@ -1197,7 +1061,7 @@ else() find_program(WGET_PROGRAM NAMES wget) message(STATUS "wget: ${WGET_PROGRAM}") if(WGET_PROGRAM) - ADD_CUSTOM_TARGET(simgrid_documentation + ADD_CUSTOM_TARGET(documentation COMMENT "Downloading the SimGrid documentation..." COMMAND ${WGET_PROGRAM} -r -np -nH -nd http://simgrid.gforge.inria.fr/simgrid/${release_version}/doc/ WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/doc/html