Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Let's assume that Hurd systems provide working MMAP services
[simgrid.git] / buildtools / Cmake / CompleteInFiles.cmake
index 72a6c6c..e63a6a7 100644 (file)
@@ -94,9 +94,10 @@ else(HAVE_thread_storage_run)
 endif(HAVE_thread_storage_run)
 
 # Our usage of mmap is Linux-specific (flag MAP_ANONYMOUS), but kFreeBSD uses a GNU libc
-IF(NOT "${CMAKE_SYSTEM}" MATCHES "Linux" AND NOT "${CMAKE_SYSTEM}" MATCHES "kFreeBSD")
+IF(NOT "${CMAKE_SYSTEM}" MATCHES "Linux" AND NOT "${CMAKE_SYSTEM}" MATCHES "kFreeBSD" AND NOT "${CMAKE_SYSTEM}" MATCHES "GNU")
   SET(HAVE_MMAP 0)
-ENDIF(NOT "${CMAKE_SYSTEM}" MATCHES "Linux" AND NOT "${CMAKE_SYSTEM}" MATCHES "kFreeBSD")
+  message(STATUS "Warning: MMAP is thought as non functional on this architecture (${CMAKE_SYSTEM})")
+ENDIF(NOT "${CMAKE_SYSTEM}" MATCHES "Linux" AND NOT "${CMAKE_SYSTEM}" MATCHES "kFreeBSD" AND NOT "${CMAKE_SYSTEM}" MATCHES "GNU")
 
 if(WIN32) #THOSE FILES ARE FUNCTIONS ARE NOT DETECTED BUT THEY SHOULD...
     set(HAVE_UCONTEXT_H 1)
@@ -208,7 +209,6 @@ IF(CMAKE_CROSSCOMPILING)
                set(IS_WINDOWS 1)       
        ENDIF(WIN32)
 ELSE(CMAKE_CROSSCOMPILING)
-    if(HAVE_UCONTEXT_H)
        try_run(RUN_mcsc_VAR COMPILE_mcsc_VAR
                ${simgrid_BINARY_DIR}
                ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_AC_CHECK_MCSC.c
@@ -220,16 +220,18 @@ ELSE(CMAKE_CROSSCOMPILING)
                        file(READ "${simgrid_BINARY_DIR}/conftestval" mcsc)
                        STRING(REPLACE "\n" "" mcsc "${mcsc}")
                        if(mcsc)
-                               set(mcsc "yes")
+                           if(APPLE AND NOT ucontext) # TODO for the moment ucontext don't work on MAC OSX
+                               set(mcsc "no") 
+                           else(APPLE AND NOT ucontext)
+                               set(mcsc "yes")
+                               set(HAVE_UCONTEXT_H 1)
+                               endif(APPLE AND NOT ucontext)
                        else(mcsc)
                                set(mcsc "no")
                        endif(mcsc)
            else(EXISTS "${simgrid_BINARY_DIR}/conftestval" AND COMPILE_mcsc_VAR)
                        set(mcsc "no")
                endif(EXISTS "${simgrid_BINARY_DIR}/conftestval" AND COMPILE_mcsc_VAR)
-       else(HAVE_UCONTEXT_H)
-        set(mcsc "no")   
-       endif(HAVE_UCONTEXT_H)
 ENDIF(CMAKE_CROSSCOMPILING)
 
 if(mcsc MATCHES "no" AND pthread)