X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/bd2cc559baa36beefbd93b6f353a948a85f257d8..e4a6f435b1ad1e4278a80d7b83bdb54dad3b29be:/buildtools/Cmake/CompleteInFiles.cmake diff --git a/buildtools/Cmake/CompleteInFiles.cmake b/buildtools/Cmake/CompleteInFiles.cmake index 01e184decb..3802ed912e 100644 --- a/buildtools/Cmake/CompleteInFiles.cmake +++ b/buildtools/Cmake/CompleteInFiles.cmake @@ -131,7 +131,7 @@ CHECK_LIBRARY_EXISTS(pthread pthread_mutex_timedlock "" HAVE_MUTEX_TIMEDLOCK_LIB CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_POSIX_GETTIME) if(CMAKE_SYSTEM_NAME MATCHES "Darwin") - set(CMAKE_REQUIRED_DEFINITIONS "-D_XOPEN_SOURCE") + set(CMAKE_REQUIRED_DEFINITIONS "-D_XOPEN_SOURCE=700") endif() CHECK_INCLUDE_FILES("time.h;sys/time.h" TIME_WITH_SYS_TIME) @@ -437,70 +437,38 @@ if(pthread) endif() endif() -# AC_CHECK_MCSC(mcsc=yes, mcsc=no) -set(mcsc_flags "") +# This is needed for ucontext on MacOS X: if(CMAKE_SYSTEM_NAME MATCHES "Darwin") - set(mcsc_flags -D_XOPEN_SOURCE) + add_definitions(-D_XOPEN_SOURCE=700) endif() if(WIN32) - if(ARCH_32_BITS) - set(mcsc_flags -D_XBT_WIN32 -D_I_X86_ -I${CMAKE_HOME_DIRECTORY}/src/include -I${CMAKE_HOME_DIRECTORY}/src/xbt) - else() - set(mcsc_flags -D_XBT_WIN32 -D_AMD64_ -I${CMAKE_HOME_DIRECTORY}/src/include -I${CMAKE_HOME_DIRECTORY}/src/xbt) - endif() -endif() - -IF(NOT CMAKE_CROSSCOMPILING) - file(REMOVE "${CMAKE_BINARY_DIR}/testprog*") - file(REMOVE ${CMAKE_BINARY_DIR}/conftestval) - set(MCSC_buildcmd ${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_AC_CHECK_MCSC.c ${mcsc_flags} -o testprog) - execute_process(COMMAND ${MCSC_buildcmd} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/ - OUTPUT_VARIABLE COMPILE_mcsc_VAR ERROR_VARIABLE COMPILE_mcsc_VAR) - - if(NOT COMPILE_mcsc_VAR) - message(STATUS "prog_AC_CHECK_MCSC.c is compilable") - execute_process(COMMAND ./testprog - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/ - OUTPUT_VARIABLE var_compil) - else() - message(STATUS "prog_AC_CHECK_MCSC.c is not compilable. \nBuild command: ${MCSC_buildcmd}\nOutput\n${COMPILE_mcsc_VAR}") - endif() - file(REMOVE "${CMAKE_BINARY_DIR}/testprog*") - - if(EXISTS "${CMAKE_BINARY_DIR}/conftestval") - file(READ "${CMAKE_BINARY_DIR}/conftestval" mcsc) - STRING(REPLACE "\n" "" mcsc "${mcsc}") - if(mcsc) - set(mcsc "yes") - set(HAVE_UCONTEXT_H 1) - else() - set(mcsc "no") - endif() - else() - set(mcsc "no") - endif() - - message(STATUS "mcsc: ${mcsc}") -ENDIF() - -#Only windows - -if(WIN32) - if(NOT HAVE_WINDOWS_H) - message(FATAL_ERROR "no appropriate backend found windows") - endif() + # We always provide our own implementation of ucontext on Windows. + try_compile(HAVE_UCONTEXT + ${CMAKE_BINARY_DIR} + ${CMAKE_HOME_DIRECTORY}/buildtools/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}/buildtools/Cmake/test_prog/prog_AC_CHECK_MCSC.c) endif() #If can have both context -if(mcsc) +if(HAVE_UCONTEXT) set(CONTEXT_UCONTEXT 1) + message("-- Support for ucontext factory") endif() if(pthread) set(CONTEXT_THREADS 1) + message("-- Support for thread context factory") endif() ############### @@ -568,7 +536,7 @@ set(makecontext_CPPFLAGS_2 "") if(HAVE_MAKECONTEXT OR WIN32) set(makecontext_CPPFLAGS "-DTEST_makecontext") if(CMAKE_SYSTEM_NAME MATCHES "Darwin") - set(makecontext_CPPFLAGS_2 "-D_XOPEN_SOURCE") + set(makecontext_CPPFLAGS_2 "-D_XOPEN_SOURCE=700") endif() if(WIN32)