${CMAKE_BINARY_DIR}/include
)
-if(WIN32)
- set(INCLUDES ${INCLUDES} ${CMAKE_HOME_DIRECTORY}/include/xbt ${CMAKE_HOME_DIRECTORY}/src/xbt) #for win32_ucontext.[ch]
-endif()
-
if(NOT CMAKE_CROSSCOMPILING AND EXISTS /usr/include/)
set(INCLUDES ${INCLUDES} /usr/include/)
endif()
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})
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(rt clock_gettime "" HAVE_POSIX_GETTIME)
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
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)
CHECK_FUNCTION_EXISTS(popen HAVE_POPEN)
CHECK_SYMBOL_EXISTS(vasprintf stdio.h HAVE_VASPRINTF)
-
if(MINGW)
# The detection of vasprintf fails on MinGW, assumingly because it's
# defined as an inline function in stdio.h instead of a regular
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
SET(HAVE_MMALLOC 0)
endif()
-
-if(WIN32) # Those files are not detected despite being present
- set(HAVE_UCONTEXT_H 1)
- set(HAVE_MAKECONTEXT 1)
-endif()
-
set(HAVE_UCONTEXT_CONTEXTS 0)
set(HAVE_THREAD_CONTEXTS 0)
### Check for GNU dynamic linker
CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H)
if (HAVE_DLFCN_H)
- if(HAVE_DLOPEN_IN_LIBDL)
- set(DL_LIBRARY "-ldl")
- endif(HAVE_DLOPEN_IN_LIBDL)
- execute_process(COMMAND ${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_gnu_dynlinker.c ${DL_LIBRARY} -o test_gnu_ld
+ execute_process(COMMAND ${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_gnu_dynlinker.c -ldl -o test_gnu_ld
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
OUTPUT_VARIABLE HAVE_GNU_LD_compil
)
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")
#--------------------------------------------------------------------------------------------------
set(makecontext_CPPFLAGS_2 "")
-if(HAVE_MAKECONTEXT OR WIN32)
+if(HAVE_UCONTEXT_H)
set(makecontext_CPPFLAGS "-DTEST_makecontext")
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")
- endif()
-
file(REMOVE ${CMAKE_BINARY_DIR}/conftestval)
if(CMAKE_CROSSCOMPILING)
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()
endif()
endif()
-### Print ARGS
-include(${CMAKE_HOME_DIRECTORY}/tools/cmake/PrintArgs.cmake)
+### Print the result of configuration
+message("")
+message("______________________________________________________________________")
+message("______________________________________________________________________ DEBUG")
+message("CMAKE_HOME_DIRECTORY ........: ${CMAKE_HOME_DIRECTORY}")
+message("")
+message("PTH_STACKGROWTH .............: ${PTH_STACKGROWTH}")
+message("")
+message("\#define pth_skaddr_makecontext(skaddr,sksize) (${makecontext_addr})")
+message("\#define pth_sksize_makecontext(skaddr,sksize) (${makecontext_size})")
+message("\#define __VA_COPY_USE ${__VA_COPY_USE}")
+message("HAVE_UCONTEXT ...............: ${HAVE_UCONTEXT}")
+message("")
+message("HAVE_PTHREAD ................: ${HAVE_PTHREAD}")
+message("HAVE_SEM_INIT ...............: ${HAVE_SEM_INIT_LIB}")
+message("HAVE_POSIX_GETTIME ..........: ${HAVE_POSIX_GETTIME}")
+message("")
+message("HAVE_VALGRIND_VALGRIND_H ....: ${HAVE_VALGRIND_VALGRIND_H}")
+message("HAVE_UNISTD_H ...............: ${HAVE_UNISTD_H}")
+message("HAVE_EXECINFO_H .............: ${HAVE_EXECINFO_H}")
+message("HAVE_SIGNAL_H ...............: ${HAVE_SIGNAL_H}")
+
+message("")
+message("HAVE_GETTIMEOFDAY ...........: ${HAVE_GETTIMEOFDAY}")
+message("HAVE_NANOSLEEP ..............: ${HAVE_NANOSLEEP}")
+message("HAVE_GETDTABLESIZE ..........: ${HAVE_GETDTABLESIZE}")
+message("HAVE_SYSCONF ................: ${HAVE_SYSCONF}")
+message("HAVE_POPEN ..................: ${HAVE_POPEN}")
+message("HAVE_VASPRINTF ..............: ${HAVE_VASPRINTF}")
+message("HAVE_MMAP ...................: ${HAVE_MMAP}")
+message("HAVE_PRIVATIZATION ..........: ${HAVE_PRIVATIZATION}")
+message("HAVE_PROCESS_VM_READV .......: ${HAVE_PROCESS_VM_READV}")
+message("HAVE_THREAD_LOCAL_STORAGE ...: ${HAVE_THREAD_LOCAL_STORAGE}")
+message("HAVE_MMALLOC ................: ${HAVE_MMALLOC}")
+message("")
+message("HAVE_THREAD_CONTEXTS .............: ${HAVE_THREAD_CONTEXTS}")
+message("HAVE_UCONTEXT_CONTEXTS ............: ${HAVE_UCONTEXT_CONTEXTS}")
+message("______________________________________________________________________")
+message("______________________________________________________________________ DEBUG END")
+message("")
+
+
+message("\nConfiguration of package `simgrid':")
+message(" Build Name ..................: ${BUILDNAME}")
+message(" Cmake Generator .............: ${CMAKE_GENERATOR}")
+message(" SITE ........................: ${SITE}")
+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(" Compile MPI testsuite .......: ${enable_smpi_MPICH3_testsuite}")
+message(" Compile Smpi f77 ............: ${SMPI_FORTRAN}")
+message(" Compile Smpi f90 ............: ${SMPI_FORTRAN}")
+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(" Tracing mode ................: ${enable_tracing}")
+message(" Jedule mode ................: ${enable_jedule}")
+message(" Graphviz mode ...............: ${HAVE_GRAPHVIZ}")
+message(" Sigc++ mode .................: ${SIMGRID_HAVE_LIBSIG}")
+message(" Mallocators .................: ${enable_mallocators}")
+message("")
+message(" Simgrid dependencies ........: ${SIMGRID_DEP}")
+message("")
+message(" INSTALL_PREFIX ..............: ${CMAKE_INSTALL_PREFIX}")
+
+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)