if(WIN32)
- #Need env INCLUDE
set(CMAKE_INCLUDE_WIN "${CMAKE_C_COMPILER}")
set(CMAKE_LIB_WIN "${CMAKE_C_COMPILER}")
string(REGEX REPLACE "/bin/gcc.*" "/include" CMAKE_INCLUDE_WIN "${CMAKE_INCLUDE_WIN}")
set(INCLUDES ${INCLUDES} ${CMAKE_INCLUDE_WIN})
unset(CMAKE_INCLUDE_WIN)
- set(_XBT_WIN32 1)
-
- message(STATUS "C_COMPILER ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_VERSION}")
- message(STATUS "CXX_COMPILER ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_VERSION}")
- message(STATUS "CMAKE_RC_COMPILER ${CMAKE_RC_COMPILER}")
- message(STATUS "LIB ${CMAKE_LIB_WIN}")
- message(STATUS "MAKE_PROGRAM ${CMAKE_MAKE_PROGRAM}")
- message(STATUS "CMAKE_BUILD_TOOL ${CMAKE_BUILD_TOOL}")
- message(STATUS "LINKER ${CMAKE_LINKER}")
- message(STATUS "CMAKE_GENERATOR ${CMAKE_GENERATOR}")
- message(STATUS "GNUC ${CMAKE_COMPILER_IS_GNUCC}")
-
endif()
include_directories(${INCLUDES})
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(pthread pthread_setaffinity_np "" HAVE_PTHREAD_SETAFFINITY)
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
set(CMAKE_REQUIRED_DEFINITIONS "-D_XOPEN_SOURCE=700 -D_DARWIN_C_SOURCE")
elseif(MINGW)
- # Use the GNU version of unusual modifiers like PRIx64
+ # Use the GNU version of unusual modifiers like PRIx64
add_definitions(-D__USE_MINGW_ANSI_STDIO=1)
set(CMAKE_REQUIRED_DEFINITIONS "-D__USE_MINGW_ANSI_STDIO=1")
else()
set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE")
endif()
-CHECK_INCLUDE_FILES("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS)
CHECK_INCLUDE_FILE("valgrind/valgrind.h" HAVE_VALGRIND_VALGRIND_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)
CHECK_INCLUDE_FILE("execinfo.h" HAVE_EXECINFO_H)
CHECK_INCLUDE_FILE("signal.h" HAVE_SIGNAL_H)
-CHECK_INCLUDE_FILE("sys/time.h" HAVE_SYS_TIME_H)
CHECK_INCLUDE_FILE("sys/param.h" HAVE_SYS_PARAM_H)
CHECK_INCLUDE_FILE("sys/sysctl.h" HAVE_SYS_SYSCTL_H)
-CHECK_INCLUDE_FILE("time.h" HAVE_TIME_H)
CHECK_INCLUDE_FILE("ucontext.h" HAVE_UCONTEXT_H)
CHECK_INCLUDE_FILE("linux/futex.h" HAVE_FUTEX_H)
set(HAVE_VASPRINTF 1)
endif()
-CHECK_FUNCTION_EXISTS(makecontext HAVE_MAKECONTEXT)
CHECK_FUNCTION_EXISTS(process_vm_readv HAVE_PROCESS_VM_READV)
-
CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP)
#Check if __thread is defined
message(FATAL_ERROR "Semaphores are not usable (neither sem_open nor sem_init is both compilable and executable), but they are mandatory to threads (you may need to mount /dev).")
endif()
- ### Test that we have a way to timewait for semaphores
-
- if(HAVE_SEM_TIMEDWAIT_LIB)
-
- execute_process(
- COMMAND "${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_sem_timedwait.c -lpthread"
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
- OUTPUT_VARIABLE HAVE_SEM_TIMEDWAIT_run
- )
-
- if(HAVE_SEM_TIMEDWAIT_run)
- set(HAVE_SEM_TIMEDWAIT 0)
- message(STATUS "timedwait not compilable")
- else()
- set(HAVE_SEM_TIMEDWAIT 1)
- message(STATUS "timedwait is compilable")
- endif()
- endif()
-
- ### HAVE_MUTEX_TIMEDLOCK
-
- if(HAVE_MUTEX_TIMEDLOCK_LIB)
-
- execute_process(
- COMMAND "${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_mutex_timedlock.c -lpthread"
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
- OUTPUT_VARIABLE HAVE_MUTEX_TIMEDLOCK_run
- )
-
- if(HAVE_MUTEX_TIMEDLOCK_run)
- set(HAVE_MUTEX_TIMEDLOCK 0)
- message(STATUS "timedlock not compilable")
- else()
- message(STATUS "timedlock is compilable")
- set(HAVE_MUTEX_TIMEDLOCK 1)
- endif()
- endif()
endif()
# This is needed for ucontext on MacOS X:
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
add_definitions(-D_XOPEN_SOURCE=700 -D_DARWIN_C_SOURCE)
endif()
-
-if(WIN32)
- # We always provide our own implementation of ucontext on Windows.
- try_compile(HAVE_UCONTEXT
- ${CMAKE_BINARY_DIR}
- ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_AC_CHECK_MCSC.c
- COMPILE_DEFINITIONS -D_XBT_WIN32 -I${CMAKE_HOME_DIRECTORY}/src/include -I${CMAKE_HOME_DIRECTORY}/src/xbt
- )
-else()
- # We always provide our own implementation of ucontext on Windows.
- try_compile(HAVE_UCONTEXT
+try_compile(HAVE_UCONTEXT
${CMAKE_BINARY_DIR}
${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_AC_CHECK_MCSC.c)
-endif()
#If can have both context
-
if(HAVE_UCONTEXT)
set(HAVE_UCONTEXT_CONTEXTS 1)
message("-- Support for ucontext factory")
endif()
#--------------------------------------------------------------------------------------------------
-set(makecontext_CPPFLAGS_2 "")
-if(HAVE_MAKECONTEXT OR WIN32)
- set(makecontext_CPPFLAGS "-DTEST_makecontext")
+if(HAVE_UCONTEXT_H)
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
- set(makecontext_CPPFLAGS_2 "-D_XOPEN_SOURCE=700")
- endif()
-
- if(WIN32)
- if(ARCH_32_BITS)
- set(makecontext_CPPFLAGS "-DTEST_makecontext -D_I_X86_")
- else()
- set(makecontext_CPPFLAGS "-DTEST_makecontext -D_AMD64_")
- endif()
- set(makecontext_CPPFLAGS_2 "-D_XBT_WIN32 -I${CMAKE_HOME_DIRECTORY}/src/include -I${CMAKE_HOME_DIRECTORY}/src/xbt")
+ set(makecontext_CPPFLAGS "${makecontext_CPPFLAGS} -D_XOPEN_SOURCE=700")
endif()
file(REMOVE ${CMAKE_BINARY_DIR}/conftestval)
- if(CMAKE_CROSSCOMPILING)
- set(RUN_makecontext_VAR "cross")
- set(COMPILE_makecontext_VAR "cross")
- else()
+ if(NOT CMAKE_CROSSCOMPILING)
try_run(RUN_makecontext_VAR COMPILE_makecontext_VAR
${CMAKE_BINARY_DIR}
${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_stacksetup.c
- COMPILE_DEFINITIONS "${makecontext_CPPFLAGS} ${makecontext_CPPFLAGS_2}"
+ COMPILE_DEFINITIONS "${makecontext_CPPFLAGS}"
)
endif()
string(REPLACE "," "" makecontext_size "${MAKECONTEXT_SIZE}")
set(pth_skaddr_makecontext "#define pth_skaddr_makecontext(skaddr,sksize) (${makecontext_addr})")
set(pth_sksize_makecontext "#define pth_sksize_makecontext(skaddr,sksize) (${makecontext_size})")
- else()
- # message(FATAL_ERROR "makecontext is not compilable")
endif()
endif()
### File to create
-configure_file("${CMAKE_HOME_DIRECTORY}/src/context_sysv_config.h.in"
- "${CMAKE_BINARY_DIR}/src/context_sysv_config.h" @ONLY IMMEDIATE)
-
SET( CMAKEDEFINE "#cmakedefine" )
configure_file("${CMAKE_HOME_DIRECTORY}/tools/cmake/src/internal_config.h.in" "${CMAKE_BINARY_DIR}/src/internal_config.h" @ONLY IMMEDIATE)
configure_file("${CMAKE_BINARY_DIR}/src/internal_config.h" "${CMAKE_BINARY_DIR}/src/internal_config.h" @ONLY IMMEDIATE)
)
set(generated_headers
- ${CMAKE_CURRENT_BINARY_DIR}/src/context_sysv_config.h
${CMAKE_CURRENT_BINARY_DIR}/src/internal_config.h
)
endif()
endif()
-### Print ARGS
-include(${CMAKE_HOME_DIRECTORY}/tools/cmake/PrintArgs.cmake)
+### Print the result of configuration
+message("")
+message("##########################################")
+message("#### Content of src/internal_config.h ####")
+file(STRINGS ${CMAKE_CURRENT_BINARY_DIR}/src/internal_config.h config_output)
+LIST(REMOVE_AT config_output 0 1 2 3 4 5 6 7 8) # Pass the file header
+foreach(line ${config_output})
+ message(" ${line}")
+endforeach()
+message("#### end of src/internal_config.h ####")
+message("##########################################")
+
+message("\nConfiguration of package `simgrid':")
+message(" Home directory ..............: ${CMAKE_HOME_DIRECTORY}")
+message(" Build Name ..................: ${BUILDNAME}")
+message(" Cmake Generator .............: ${CMAKE_GENERATOR}")
+message(" Site ........................: ${SITE}")
+message(" Install prefix ..............: ${CMAKE_INSTALL_PREFIX}")
+if(release)
+ message(" Release .....................: simgrid-${release_version}${SIMGRID_VERSION_EXTRA} (release build)")
+else()
+ message(" Release .....................: simgrid-${release_version}${SIMGRID_VERSION_EXTRA} (development build)")
+endif()
+message("")
+message(" Compiler: C .................: ${CMAKE_C_COMPILER} (id: ${CMAKE_C_COMPILER_ID})")
+message(" version .............: ${CMAKE_C_COMPILER_VERSION}")
+message(" is gnu ..............: ${CMAKE_COMPILER_IS_GNUCC}")
+message(" Compiler: C++ ...............: ${CMAKE_CXX_COMPILER} (id: ${CMAKE_CXX_COMPILER_ID})")
+message(" version .............: ${CMAKE_CXX_COMPILER_VERSION}")
+if(${Java_FOUND})
+ message(" Compiler: Javac .............: ${Java_JAVAC_EXECUTABLE}")
+ message(" version .............: ${Java_VERSION_STRING}")
+if(${SWIG_FOUND})
+ message(" SWIG ................: Version ${SWIG_VERSION} found.")
+else()
+ message(" SWIG ................: Missing.")
+endif()
+endif()
+if(CMAKE_Fortran_COMPILER)
+ message(" Compiler: Fortran ...........: ${CMAKE_Fortran_COMPILER} (id: ${CMAKE_Fortran_COMPILER_ID})")
+ message(" version .............: ${CMAKE_Fortran_COMPILER_VERSION}")
+endif()
+message(" Linker: .....................: ${CMAKE_LINKER}")
+message(" version .............: ${LINKER_VERSION}")
+message(" Make program: ...............: ${CMAKE_MAKE_PROGRAM}")
+message("")
+message(" CFlags ......................: ${CMAKE_C_FLAGS}")
+message(" CXXFlags ....................: ${CMAKE_CXX_FLAGS}")
+message(" LDFlags .....................: ${CMAKE_C_LINK_FLAGS}")
+message(" with LTO ....................: ${enable_lto}")
+message("")
+
+if (HAVE_NS3)
+ message(" Compile NS-3 ................: yes (path: ${NS3_PATH})")
+else()
+ message(" Compile NS-3 ................: NO (hint: ${NS3_HINT})")
+endif()
+
+if (${Java_FOUND})
+ message(" Compile Java ................: yes")
+ message(" Native lib in jar .........: ${enable_lib_in_jar}")
+else()
+ message(" Compile Java ................: NO")
+endif()
+message(" Compile Lua .................: ${HAVE_LUA}")
+message(" Compile Smpi ................: ${HAVE_SMPI}")
+message(" Smpi fortran ..............: ${SMPI_FORTRAN}")
+message(" MPICH3 testsuite ..........: ${enable_smpi_MPICH3_testsuite}")
+message(" Privatization .............: ${HAVE_PRIVATIZATION}")
+message(" Compile Boost.Context support: ${HAVE_BOOST_CONTEXTS}")
+message("")
+message(" Maintainer mode .............: ${enable_maintainer_mode}")
+message(" Documentation................: ${enable_documentation}")
+message(" Model checking ..............: ${HAVE_MC}")
+message(" Jedule mode ................: ${HAVE_JEDULE}")
+message(" Graphviz mode ...............: ${HAVE_GRAPHVIZ}")
+message(" Sigc++ mode .................: ${SIMGRID_HAVE_LIBSIG}")
+message(" Mallocators .................: ${enable_mallocators}")
+message("")
+message(" Simgrid dependencies ........: ${SIMGRID_DEP}")
+message("")
+
+exec_program("${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/Testing/Notes/" OUTPUT_VARIABLE OKIDOKI)
+file(WRITE ${PROJECT_BINARY_DIR}/Testing/Notes/Build "GIT version : ${GIT_VERSION}\n")
+file(APPEND ${PROJECT_BINARY_DIR}/Testing/Notes/Build "Release : simgrid-${release_version}\n")
INCLUDE(Dart)