- ### 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 _XBT_WIN32
- INCLUDE_DIRECTORIES
- ${CMAKE_HOME_DIRECTORY}/src/include
- ${CMAKE_HOME_DIRECTORY}/src/xbt
- )
-else()
- # 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)
-endif()
-
-#If can have both context
-
-if(HAVE_UCONTEXT)
- set(CONTEXT_UCONTEXT 1)
- message("-- Support for ucontext factory")
-endif()
-
-if(HAVE_PTHREAD)
- set(CONTEXT_THREADS 1)
- message("-- Support for thread context factory")
-endif()
-
-###############
-## GIT version check
-##
-if(EXISTS ${CMAKE_HOME_DIRECTORY}/.git/)
- execute_process(COMMAND git remote
- COMMAND head -n 1
- WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/.git/
- OUTPUT_VARIABLE remote
- RESULT_VARIABLE ret
- )
- string(REPLACE "\n" "" remote "${remote}")
- #message(STATUS "Git remote: ${remote}")
- execute_process(COMMAND git config --get remote.${remote}.url
- WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/.git/
- OUTPUT_VARIABLE url
- RESULT_VARIABLE ret
- )
- string(REPLACE "\n" "" url "${url}")
- #message(STATUS "Git url: ${url}")
- if(url)
- execute_process(COMMAND git --git-dir=${CMAKE_HOME_DIRECTORY}/.git log --pretty=oneline --abbrev-commit -1
- WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/.git/
- OUTPUT_VARIABLE GIT_VERSION
- RESULT_VARIABLE ret
- )
- string(REPLACE "\n" "" GIT_VERSION "${GIT_VERSION}")
- message(STATUS "Git version: ${GIT_VERSION}")
- execute_process(COMMAND git --git-dir=${CMAKE_HOME_DIRECTORY}/.git log -n 1 --pretty=format:%ai .
- WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/.git/
- OUTPUT_VARIABLE GIT_DATE
- RESULT_VARIABLE ret
- )
- string(REPLACE "\n" "" GIT_DATE "${GIT_DATE}")
- message(STATUS "Git date: ${GIT_DATE}")
- string(REGEX REPLACE " .*" "" GIT_VERSION "${GIT_VERSION}")
-
- execute_process(COMMAND git --git-dir=${CMAKE_HOME_DIRECTORY}/.git log --pretty=format:%H -1
- WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/.git/
- OUTPUT_VARIABLE SIMGRID_GITHASH
- RESULT_VARIABLE ret
- )
- string(REPLACE "\n" "" SIMGRID_GITHASH "${SIMGRID_GITHASH}")
-
- endif()
-elseif(EXISTS ${CMAKE_HOME_DIRECTORY}/.gitversion)
- FILE(STRINGS ${CMAKE_HOME_DIRECTORY}/.gitversion GIT_VERSION)