Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
attempt to let it cross-compile windows from linux. Not quite yet
[simgrid.git] / buildtools / Cmake / CompleteInFiles.cmake
index 77b1af5..e865cdc 100644 (file)
@@ -57,9 +57,11 @@ CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF)
 CHECK_FUNCTION_EXISTS(makecontext HAVE_MAKECONTEXT)
 CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP)
 
-if(WIN32)
+if(WIN32) #THOSE FILES ARE FUNCTIONS ARE NOT DETECTED BUT THEY SHOULD...
     set(HAVE_UCONTEXT_H 1)
     set(HAVE_MAKECONTEXT 1)
+    set(HAVE_SNPRINTF 1)
+    set(HAVE_VSNPRINTF 1)
 endif(WIN32)
 
 set(CONTEXT_UCONTEXT 0)
@@ -73,6 +75,17 @@ if(enable_tracing)
        SET(HAVE_TRACING 1)
 endif(enable_tracing)
 
+if(enable_latency_bound_tracking)
+       SET(HAVE_LATENCY_BOUND_TRACKING 1)
+else(enable_latency_bound_tracking)
+  if(enable_gtnets)
+    SET(enable_latency_bound_tracking ON)
+    SET(HAVE_LATENCY_BOUND_TRACKING 1)
+  else(enable_gtnets)
+    SET(HAVE_LATENCY_BOUND_TRACKING 0)
+  endif(enable_gtnets)
+endif(enable_latency_bound_tracking)
+
 if(enable_model-checking AND HAVE_MMAP)
        SET(HAVE_MC 1)
        SET(MMALLOC_WANT_OVERIDE_LEGACY 1)
@@ -194,16 +207,24 @@ endif(HAVE_CGRAPH_LIB AND HAVE_CGRAPH_H)
 
 #--------------------------------------------------------------------------------------------------
 ### Initialize of pcre
-find_library(PCRE_LIB pcre "/usr/lib/" )
-
-if(PATH_PCRE_LIB)
-       string(REGEX REPLACE "/libpcre.*[.]so$" "" PATHLIBPCRE "${PCRE_LIB}")
-               string(REGEX MATCH "-L${PATHLIBPCRE} " operation "${CMAKE_C_FLAGS}")
-               if(NOT operation)
+find_library(PATH_PCRE_LIB pcre)
+find_file(PATH_PCRE_H "pcre.h")
+set(HAVE_PCRE_LIB 0)
+if(PATH_PCRE_LIB AND PATH_PCRE_H)
+       string(REGEX REPLACE "/libpcre.*[.]${LIB_EXE}$" "" PATHLIBPCRE "${PATH_PCRE_LIB}")
+       string(REGEX REPLACE "/pcre.h" "" PATH_PCRE_H "${PATH_PCRE_H}")
+       string(REGEX MATCH "-L${PATHLIBPCRE} " operation "${CMAKE_C_FLAGS}")
+          if(NOT operation)
                        SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-L${PATHLIBPCRE} ")
-               endif(NOT operation)
+          endif(NOT operation)
+          string(REGEX MATCH "-I${PATH_PCRE_H} " operation "${CMAKE_C_FLAGS}")
+          if(NOT operation)
+                       SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${PATH_PCRE_H} ")
+          endif(NOT operation)    
        set(HAVE_PCRE_LIB 1)
-endif(PATH_PCRE_LIB)
+else(PATH_PCRE_LIB)
+               message("You should install libpcre (please install the libpcre3-dev package or equivalent)")
+endif(PATH_PCRE_LIB AND PATH_PCRE_H)
 
 #--------------------------------------------------------------------------------------------------
 ### Initialize of CONTEXT THREADS
@@ -264,24 +285,31 @@ if(WIN32)
        endif(__GNUC__)
 endif(WIN32)
 
-try_run(RUN_mcsc_VAR COMPILE_mcsc_VAR
-       ${PROJECT_DIRECTORY}
-       ${PROJECT_DIRECTORY}/buildtools/Cmake/test_prog/prog_AC_CHECK_MCSC.c
-       COMPILE_DEFINITIONS "${mcsc_flags}"
-       OUTPUT_VARIABLE var_compil
-       )
-
-if(EXISTS "${simgrid_BINARY_DIR}/conftestval" AND COMPILE_mcsc_VAR)
-       file(READ "${simgrid_BINARY_DIR}/conftestval" mcsc)
-       STRING(REPLACE "\n" "" mcsc "${mcsc}")
-       if(mcsc)
-               set(mcsc "yes")
-       elseif(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)
+IF(CMAKE_CROSSCOMPILING)
+       IF(WIN32)
+               set(windows_context "yes")
+               set(IS_WINDOWS 1)       
+       ENDIF(WIN32)
+ELSE(CMAKE_CROSSCOMPILING)
+       try_run(RUN_mcsc_VAR COMPILE_mcsc_VAR
+               ${PROJECT_DIRECTORY}
+               ${PROJECT_DIRECTORY}/buildtools/Cmake/test_prog/prog_AC_CHECK_MCSC.c
+               COMPILE_DEFINITIONS "${mcsc_flags}"
+               OUTPUT_VARIABLE var_compil
+               )
+               
+               if(EXISTS "${simgrid_BINARY_DIR}/conftestval" AND COMPILE_mcsc_VAR)
+                       file(READ "${simgrid_BINARY_DIR}/conftestval" mcsc)
+                       STRING(REPLACE "\n" "" mcsc "${mcsc}")
+                       if(mcsc)
+                               set(mcsc "yes")
+                       elseif(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)
+ENDIF(CMAKE_CROSSCOMPILING)
 
 if(mcsc MATCHES "no" AND pthread)
        if(HAVE_WINDOWS_H)
@@ -379,6 +407,7 @@ endif(IS_DIRECTORY ${PROJECT_DIRECTORY}/.git)
 ## SimGrid and GRAS specific checks
 ##
 
+IF(NOT CMAKE_CROSSCOMPILING)
 # Check architecture signature begin
 try_run(RUN_GRAS_VAR COMPILE_GRAS_VAR
        ${PROJECT_DIRECTORY}
@@ -386,11 +415,11 @@ try_run(RUN_GRAS_VAR COMPILE_GRAS_VAR
        RUN_OUTPUT_VARIABLE var1
        )
 if(BIGENDIAN)
-set(val_big "B${var1}")
-set(GRAS_BIGENDIAN 1)
+  set(val_big "B${var1}")
+  set(GRAS_BIGENDIAN 1)
 else(BIGENDIAN)
-set(val_big "l${var1}")
-set(GRAS_BIGENDIAN 0)
+  set(val_big "l${var1}")
+  set(GRAS_BIGENDIAN 0)
 endif(BIGENDIAN)
 
 if(val_big MATCHES "l_C:1/1:_I:2/1:4/1:4/1:8/1:_P:4/1:4/1:_D:4/1:8/1:")
@@ -469,6 +498,7 @@ try_run(RUN_SM_VAR COMPILE_SM_VAR
        RUN_OUTPUT_VARIABLE var3
        )
 SET(SIZEOF_MAX ${var3})
+ENDIF(NOT CMAKE_CROSSCOMPILING)
 
 #--------------------------------------------------------------------------------------------------
 
@@ -486,10 +516,9 @@ if(HAVE_MAKECONTEXT OR WIN32)
        endif(__VISUALC__)
        if(__GNUC__)
            set(makecontext_CPPFLAGS "-DTEST_makecontext")
-               set(makecontext_CPPFLAGS_2 "-D_XBT_WIN32 -I${PROJECT_DIRECTORY}/include/xbt -I${PROJECT_DIRECTORY}/src/xbt")
+           set(makecontext_CPPFLAGS_2 "-D_XBT_WIN32 -I${PROJECT_DIRECTORY}/include/xbt -I${PROJECT_DIRECTORY}/src/xbt")
        endif(__GNUC__)
-    endif(WIN32)
-
+    else(WIN32)
        try_run(RUN_makecontext_VAR COMPILE_makecontext_VAR
                ${PROJECT_DIRECTORY}
                ${PROJECT_DIRECTORY}/buildtools/Cmake/test_prog/prog_stacksetup.c
@@ -503,12 +532,13 @@ if(HAVE_MAKECONTEXT OR WIN32)
        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})")
+    endif(WIN32)
 endif(HAVE_MAKECONTEXT OR WIN32)
 
 #--------------------------------------------------------------------------------------------------
 
 ### check for stackgrowth
-
+if (NOT CMAKE_CROSSCOMPILING)
        try_run(RUN_makecontext_VAR COMPILE_makecontext_VAR
                ${PROJECT_DIRECTORY}
                ${PROJECT_DIRECTORY}/buildtools/Cmake/test_prog/prog_stackgrowth.c
@@ -521,6 +551,7 @@ if(stack MATCHES "up")
        set(PTH_STACKGROWTH "1")
 endif(stack MATCHES "up")
 
+endif(NOT CMAKE_CROSSCOMPILING)
 ###############
 ## System checks
 ##
@@ -552,8 +583,8 @@ set(diff_va "va_copy((d),(s))"
 "__builtin_va_copy((d),(s))"
 "do { (d) = (s)\; } while (0)"
 "do { *(d) = *(s)\; } while (0)"
-"memcpy((void *)&(d), (void *)&(s)), sizeof((s))"
-"memcpy((void *)(d), (void *)(s)), sizeof(*(s))"
+"memcpy((void *)&(d), (void *)&(s), sizeof(s))"
+"memcpy((void *)(d), (void *)(s), sizeof(*(s)))"
 )
 
 foreach(fct ${diff_va})
@@ -623,15 +654,15 @@ foreach(fct ${diff_va})
                        set(__VA_COPY_USE_ASP "do { *(d) = *(s); } while (0)")
                endif(${fctbis} STREQUAL "do { *(d) = *(s) } while (0)")
 
-               if(${fctbis} STREQUAL "memcpy((void *)&(d), (void *)&(s)), sizeof((s))")
+               if(${fctbis} STREQUAL "memcpy((void *)&(d), (void *)&(s), sizeof(s))")
                        set(ac_cv_va_copy "CPS")
-                       set(__VA_COPY_USE_CPS "memcpy((void *)&(d), (void *)&(s)), sizeof((s))")
-               endif(${fctbis} STREQUAL "memcpy((void *)&(d), (void *)&(s)), sizeof((s))")
+                       set(__VA_COPY_USE_CPS "memcpy((void *)&(d), (void *)&(s), sizeof(s))")
+               endif(${fctbis} STREQUAL "memcpy((void *)&(d), (void *)&(s), sizeof(s))")
 
-               if(${fctbis} STREQUAL "memcpy((void *)(d), (void *)(s)), sizeof(*(s))")
+               if(${fctbis} STREQUAL "memcpy((void *)(d), (void *)(s), sizeof(*(s)))")
                        set(ac_cv_va_copy "CPP")
-                       set(__VA_COPY_USE_CPP "memcpy((void *)(d), (void *)(s)), sizeof(*(s))")
-               endif(${fctbis} STREQUAL "memcpy((void *)(d), (void *)(s)), sizeof(*(s))")
+                       set(__VA_COPY_USE_CPP "memcpy((void *)(d), (void *)(s), sizeof(*(s)))")
+               endif(${fctbis} STREQUAL "memcpy((void *)(d), (void *)(s), sizeof(*(s)))")
                                
                if(NOT STATUS_OK)
                set(__VA_COPY_USE "__VA_COPY_USE_${ac_cv_va_copy}(d, s)")
@@ -643,11 +674,10 @@ foreach(fct ${diff_va})
 endforeach(fct ${diff_va})
 
 #--------------------------------------------------------------------------------------------------
-### Try execut getline command
-try_run(RUN_RESULT_VAR COMPILE_RESULT_VAR
+### check for getline
+try_compile(COMPILE_RESULT_VAR
        ${PROJECT_DIRECTORY}
        ${PROJECT_DIRECTORY}/buildtools/Cmake/test_prog/prog_getline.c
-       OUTPUT_VARIABLE GETLINE_OUTPUT
        )
 
 if(NOT COMPILE_RESULT_VAR)
@@ -659,23 +689,32 @@ SET(SIMGRID_NEED_GETLINE 0)
 endif(NOT COMPILE_RESULT_VAR)
 
 ### check for a working snprintf
-if(HAVE_SNPRINTF AND HAVE_VSNPRINTF)
-
-       try_run(RUN_SNPRINTF_FUNC_VAR COMPILE_SNPRINTF_FUNC_VAR
-               ${PROJECT_DIRECTORY}
-               ${PROJECT_DIRECTORY}/buildtools/Cmake/test_prog/prog_snprintf.c
-               )
+if(HAVE_SNPRINTF AND HAVE_VSNPRINTF OR WIN32)
+    if(WIN32)
+        #set(HAVE_SNPRINTF 1)
+        #set(HAVE_VSNPRINTF 1)
+    endif(WIN32)
+    
        if(CMAKE_CROSSCOMPILING)
-               set(RUN_SNPRINTF_FUNC "cross") 
+               set(RUN_SNPRINTF_FUNC "cross")
+               #set(PREFER_PORTABLE_SNPRINTF 1)
+       else(CMAKE_CROSSCOMPILING)
+           try_run(RUN_SNPRINTF_FUNC_VAR COMPILE_SNPRINTF_FUNC_VAR
+               ${PROJECT_DIRECTORY}
+               ${PROJECT_DIRECTORY}/buildtools/Cmake/test_prog/prog_snprintf.c
+           )   
        endif(CMAKE_CROSSCOMPILING)
 
-       try_run(RUN_VSNPRINTF_FUNC_VAR COMPILE_VSNPRINTF_FUNC_VAR
-               ${PROJECT_DIRECTORY}
-               ${PROJECT_DIRECTORY}/buildtools/Cmake/test_prog/prog_vsnprintf.c
-               )
        if(CMAKE_CROSSCOMPILING)
                set(RUN_VSNPRINTF_FUNC "cross")
+               set(PREFER_PORTABLE_VSNPRINTF 1)
+       else(CMAKE_CROSSCOMPILING)
+          try_run(RUN_VSNPRINTF_FUNC_VAR COMPILE_VSNPRINTF_FUNC_VAR
+               ${PROJECT_DIRECTORY}
+               ${PROJECT_DIRECTORY}/buildtools/Cmake/test_prog/prog_vsnprintf.c
+          )
        endif(CMAKE_CROSSCOMPILING)
+       
        set(PREFER_PORTABLE_SNPRINTF 0)
        if(RUN_VSNPRINTF_FUNC_VAR MATCHES "FAILED_TO_RUN")
                set(PREFER_PORTABLE_SNPRINTF 1)
@@ -683,7 +722,7 @@ if(HAVE_SNPRINTF AND HAVE_VSNPRINTF)
        if(RUN_SNPRINTF_FUNC_VAR MATCHES "FAILED_TO_RUN")
                set(PREFER_PORTABLE_SNPRINTF 1)
        endif(RUN_SNPRINTF_FUNC_VAR MATCHES "FAILED_TO_RUN")
-endif(HAVE_SNPRINTF AND HAVE_VSNPRINTF)
+endif(HAVE_SNPRINTF AND HAVE_VSNPRINTF OR WIN32)
 
 ### check for asprintf function familly
 if(HAVE_ASPRINTF)
@@ -734,6 +773,7 @@ configure_file(${PROJECT_DIRECTORY}/src/smpi/smpicc.in ${CMAKE_CURRENT_BINARY_DI
 configure_file(${PROJECT_DIRECTORY}/src/smpi/smpirun.in ${CMAKE_CURRENT_BINARY_DIR}/bin/smpirun @ONLY)
 configure_file(${PROJECT_DIRECTORY}/examples/smpi/hostfile ${CMAKE_CURRENT_BINARY_DIR}/examples/smpi/hostfile COPYONLY)
 configure_file(${PROJECT_DIRECTORY}/examples/msg/small_platform.xml ${CMAKE_CURRENT_BINARY_DIR}/examples/msg/small_platform.xml COPYONLY)
+configure_file(${PROJECT_DIRECTORY}/examples/msg/small_platform_with_routers.xml ${CMAKE_CURRENT_BINARY_DIR}/examples/msg/small_platform_with_routers.xml COPYONLY)
 
 exec_program("chmod a=rwx ${CMAKE_CURRENT_BINARY_DIR}/bin/smpicc" OUTPUT_VARIABLE OKITOKI)
 exec_program("chmod a=rwx ${CMAKE_CURRENT_BINARY_DIR}/bin/smpirun" OUTPUT_VARIABLE OKITOKI)