X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/31deaa1f1d3611d22f25f646044051d76b55679f..6b651ddf5d1e4bcfe238d270f6917bd89a9fa040:/buildtools/Cmake/CompleteInFiles.cmake diff --git a/buildtools/Cmake/CompleteInFiles.cmake b/buildtools/Cmake/CompleteInFiles.cmake index eb46988be7..e865cdcbe5 100644 --- a/buildtools/Cmake/CompleteInFiles.cmake +++ b/buildtools/Cmake/CompleteInFiles.cmake @@ -2,9 +2,15 @@ include(CheckFunctionExists) include(CheckIncludeFile) include(CheckIncludeFiles) include(CheckLibraryExists) +include(TestBigEndian) + +TEST_BIG_ENDIAN(BIGENDIAN) # Checks for header libraries functions. +find_library(HAVE_CGRAPH_LIB cgraph) +find_file(HAVE_CGRAPH_H graphviz/cgraph.h) + CHECK_LIBRARY_EXISTS(pthread pthread_create NO_DEFAULT_PATHS pthread) CHECK_LIBRARY_EXISTS(pthread sem_init NO_DEFAULT_PATHS HAVE_SEM_INIT_LIB) CHECK_LIBRARY_EXISTS(pthread sem_timedwait NO_DEFAULT_PATHS HAVE_SEM_TIMEDWAIT_LIB) @@ -13,28 +19,29 @@ CHECK_LIBRARY_EXISTS(rt clock_gettime NO_DEFAULT_PATHS HAVE_POSIX_GETTIME) CHECK_INCLUDE_FILES("time.h;sys/time.h" TIME_WITH_SYS_TIME) CHECK_INCLUDE_FILES("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) -CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H) -CHECK_INCLUDE_FILE(valgrind/valgrind.h HAVE_VALGRIND_VALGRIND_H) -CHECK_INCLUDE_FILE(socket.h HAVE_SOCKET_H) -CHECK_INCLUDE_FILE(sys/socket.h HAVE_SYS_SOCKET_H) -CHECK_INCLUDE_FILE(stat.h HAVE_STAT_H) -CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H) -CHECK_INCLUDE_FILE(windows.h HAVE_WINDOWS_H) -CHECK_INCLUDE_FILE(winsock.h HAVE_WINSOCK_H) -CHECK_INCLUDE_FILE(winsock2.h HAVE_WINSOCK2_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(time.h HAVE_TIME_H) -CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H) -CHECK_INCLUDE_FILE(inttypes.h HAVE_INTTYPES_H) -CHECK_INCLUDE_FILE(memory.h HAVE_MEMORY_H) -CHECK_INCLUDE_FILE(stdlib.h HAVE_STDLIB_H) -CHECK_INCLUDE_FILE(strings.h HAVE_STRINGS_H) -CHECK_INCLUDE_FILE(string.h HAVE_STRING_H) -CHECK_INCLUDE_FILE(ucontext.h HAVE_UCONTEXT_H) +CHECK_INCLUDE_FILE("pthread.h" HAVE_PTHREAD_H) +CHECK_INCLUDE_FILE("valgrind/valgrind.h" HAVE_VALGRIND_VALGRIND_H) +CHECK_INCLUDE_FILE("socket.h" HAVE_SOCKET_H) +CHECK_INCLUDE_FILE("sys/socket.h" HAVE_SYS_SOCKET_H) +CHECK_INCLUDE_FILE("stat.h" HAVE_STAT_H) +CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H) +CHECK_INCLUDE_FILE("windows.h" HAVE_WINDOWS_H) +CHECK_INCLUDE_FILE("winsock.h" HAVE_WINSOCK_H) +CHECK_INCLUDE_FILE("winsock2.h" HAVE_WINSOCK2_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("time.h" HAVE_TIME_H) +CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H) +CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H) +CHECK_INCLUDE_FILE("memory.h" HAVE_MEMORY_H) +CHECK_INCLUDE_FILE("stdlib.h" HAVE_STDLIB_H) +CHECK_INCLUDE_FILE("strings.h" HAVE_STRINGS_H) +CHECK_INCLUDE_FILE("string.h" HAVE_STRING_H) +CHECK_INCLUDE_FILE("ucontext.h" HAVE_UCONTEXT_H) +CHECK_INCLUDE_FILE("stdio.h" HAVE_STDIO_H) CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) CHECK_FUNCTION_EXISTS(usleep HAVE_USLEEP) @@ -50,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) @@ -66,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) @@ -75,75 +95,23 @@ else(enable_model-checking AND HAVE_MMAP) endif(enable_model-checking AND HAVE_MMAP) if(enable_lua) - exec_program("lua -v" OUTPUT_VARIABLE LUA_VERSION) - string(REGEX MATCH "[0-9]+[.]+[0-9]+[.]+[0-9]+" LUA_VERSION "${LUA_VERSION}") - string(REGEX MATCH "^[0-9]+" LUA_MAJOR_VERSION "${LUA_VERSION}") - string(REGEX MATCH "[0-9]+[.]+[0-9]+$" LUA_VERSION "${LUA_VERSION}") - string(REGEX MATCH "^[0-9]+" LUA_MINOR_VERSION "${LUA_VERSION}") - string(REGEX MATCH "[0-9]+$" LUA_PATCH_VERSION "${LUA_VERSION}") - - if(LUA_MAJOR_VERSION MATCHES "5" AND LUA_MINOR_VERSION MATCHES "1") - - find_path(HAVE_LUA5_1_LUALIB_H - NAMES lualib.h - PATHS "/sw/include/" "/usr/include/lua${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}/" - ) - find_path(HAVE_LUA5_1_LAUXLIB_H - NAMES lauxlib.h - PATHS "/sw/include/" "/usr/include/lua${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}/" - ) - find_library(LUA_LIB_PATH_1 - NAMES lua${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION} - PATHS /usr - ) - find_library(LUA_LIB_PATH_2 - NAMES lua-${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION} - PATHS /usr - ) - find_library(LUA_LIB_PATH_3 - NAMES lua.${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}.${LUA_PATCH_VERSION} - PATHS /sw - ) - - if(HAVE_LUA5_1_LUALIB_H AND HAVE_LUA5_1_LAUXLIB_H) - set(HAVE_LUA 1) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${HAVE_LUA5_1_LUALIB_H} ") - - if(NOT HAVE_LUA5_1_LUALIB_H STREQUAL HAVE_LUA5_1_LAUXLIB_H) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${HAVE_LUA5_1_LAUXLIB_H} ") - #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}-I${HAVE_LUA5_1_LAUXLIB_H} ") - endif(NOT HAVE_LUA5_1_LUALIB_H STREQUAL HAVE_LUA5_1_LAUXLIB_H) - endif(HAVE_LUA5_1_LUALIB_H AND HAVE_LUA5_1_LAUXLIB_H) - - if(LUA_LIB_PATH_1) - set(liblua lua${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}) - set(lua_lib_path_to_use ${LUA_LIB_PATH_1}) - endif(LUA_LIB_PATH_1) - - if(LUA_LIB_PATH_2) - set(liblua lua-${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}) - set(lua_lib_path_to_use ${LUA_LIB_PATH_2}) - endif(LUA_LIB_PATH_2) - - if(LUA_LIB_PATH_3) - set(liblua lua.${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}.${LUA_PATCH_VERSION}) - set(lua_lib_path_to_use ${LUA_LIB_PATH_3}) - endif(LUA_LIB_PATH_3) - - if(NOT LUA_LIB_PATH_1 AND NOT LUA_LIB_PATH_2 AND NOT LUA_LIB_PATH_3) - set(HAVE_LUA 0) - else(NOT LUA_LIB_PATH_1 AND NOT LUA_LIB_PATH_2 AND NOT LUA_LIB_PATH_3) - string(REGEX REPLACE "liblua.*" "" lua_lib_path_to_use ${lua_lib_path_to_use}) - string(REGEX MATCH "-L${lua_lib_path_to_use}" operation "${CMAKE_EXE_LINKER_FLAGS}") - if(NOT operation) - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}-L${lua_lib_path_to_use} ") - endif(NOT operation) - endif(NOT LUA_LIB_PATH_1 AND NOT LUA_LIB_PATH_2 AND NOT LUA_LIB_PATH_3) - - else(LUA_MAJOR_VERSION MATCHES "5" AND LUA_MINOR_VERSION MATCHES "1") - message("Lua binding need version 5.1.x actually version ${LUA_MAJOR_VERSION}.${LUA_MINOR_VERSION}.x") - endif(LUA_MAJOR_VERSION MATCHES "5" AND LUA_MINOR_VERSION MATCHES "1") - + include(FindLua51) + if(LUA51_FOUND) + set(HAVE_LUA 1) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${LUA_INCLUDE_DIR} ") + foreach(path_lua ${LUA_LIBRARIES}) + string(REGEX REPLACE "liblua.*" "" path_lua_to_use ${path_lua}) + string(REGEX MATCH ".*lua.*" operation "${path_lua}") + if(operation) + string(REGEX REPLACE "${path_lua_to_use}" "" liblua ${path_lua}) + string(REPLACE "lib" "" liblua "${liblua}") + string(REGEX REPLACE "[.][^.]*$" "" liblua "${liblua}") + endif(operation) + endforeach(path_lua ${LUA_LIBRARIES}) + else(LUA51_FOUND) + message("Lua binding need version 5.1 and cmake version 2.8") + message("Cmake version ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}") + endif(LUA51_FOUND) endif(enable_lua) if(enable_ruby) @@ -155,8 +123,7 @@ if(enable_ruby) if(NOT RUBY_LIBRARY_NAME) set(RUBY_LIBRARY_NAME ruby) endif(NOT RUBY_LIBRARY_NAME) - string(REGEX REPLACE "libruby.*$" "" RUBY_LIBRARY ${RUBY_LIBRARY}) - SET(CMAKE_EXE_LINKER_FLAGS "-L${RUBY_LIBRARY} ") + string(REGEX REPLACE "/libruby.*$" "" RUBY_LIBRARY ${RUBY_LIBRARY}) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${RUBY_CONFIG_INCLUDE_DIR} ") #path to config.h string(COMPARE EQUAL "${RUBY_INCLUDE_DIR}" "${RUBY_CONFIG_INCLUDE_DIR}" operation) if(NOT operation) @@ -210,11 +177,55 @@ else(NOT enable_gtnets OR enable_supernovae) SET(HAVE_GTNETS 0) else(COMPILE_GTNETS_VAR) SET(HAVE_GTNETS 1) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}${GTNETS_LDFLAGS} ${GTNETS_CPPFLAGS} ") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}${GTNETS_LDFLAGS} ${GTNETS_CPPFLAGS} ") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}${GTNETS_CPPFLAGS} ${GTNETS_LDFLAGS} ") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}${GTNETS_CPPFLAGS} ${GTNETS_LDFLAGS} ") + string(REGEX MATCH "${gtnets_path}/lib" operation "$ENV{LD_LIBRARY_PATH}") + if(NOT operation) + message(FATAL_ERROR "\n\nTo use GTNETS don't forget to set LD_LIBRARY_PATH with \n\texport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${gtnets_path}/lib\n\n") + endif(NOT operation) endif(COMPILE_GTNETS_VAR) endif(NOT enable_gtnets OR enable_supernovae) +#-------------------------------------------------------------------------------------------------- +### Initialize of cgraph +mark_as_advanced(HAVE_CGRAPH_LIB) +mark_as_advanced(HAVE_CGRAPH_H) + +if(HAVE_CGRAPH_LIB AND HAVE_CGRAPH_H) + string(REGEX REPLACE "/libcgraph.*" "" lib_cgraph ${HAVE_CGRAPH_LIB}) + string(REPLACE "/cgraph.h" "" file_cgraph_h ${HAVE_CGRAPH_H}) + string(REGEX MATCH "-I${file_cgraph_h} " operation "${CMAKE_C_FLAGS}") + if(NOT operation) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${file_cgraph_h} ") + endif(NOT operation) + string(REGEX MATCH "-L${lib_cgraph} " operation "${CMAKE_C_FLAGS}") + if(NOT operation) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-L${lib_cgraph} ") + endif(NOT operation) + +endif(HAVE_CGRAPH_LIB AND HAVE_CGRAPH_H) + +#-------------------------------------------------------------------------------------------------- +### Initialize of pcre +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) + 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) +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 @@ -265,23 +276,40 @@ if(CMAKE_SYSTEM_NAME MATCHES "Darwin") set(mcsc_flags "-D_XOPEN_SOURCE") endif(CMAKE_SYSTEM_NAME MATCHES "Darwin") -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}" - ) - -if(EXISTS "${simgrid_BINARY_DIR}/conftestval") - 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") - set(mcsc "no") -endif(EXISTS "${simgrid_BINARY_DIR}/conftestval") +if(WIN32) + if(__VISUALC__) + set(mcsc_flags "/D_XBT_WIN32 /I${PROJECT_DIRECTORY}/include/xbt /I${PROJECT_DIRECTORY}/src/xbt") + endif(__VISUALC__) + if(__GNUC__) + set(mcsc_flags "-D_XBT_WIN32 -I${PROJECT_DIRECTORY}/include/xbt -I${PROJECT_DIRECTORY}/src/xbt") + endif(__GNUC__) +endif(WIN32) + +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) @@ -378,8 +406,8 @@ endif(IS_DIRECTORY ${PROJECT_DIRECTORY}/.git) ################################### ## SimGrid and GRAS specific checks ## -include(TestBigEndian) -TEST_BIG_ENDIAN(BIGENDIAN) + +IF(NOT CMAKE_CROSSCOMPILING) # Check architecture signature begin try_run(RUN_GRAS_VAR COMPILE_GRAS_VAR ${PROJECT_DIRECTORY} @@ -387,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:") @@ -470,6 +498,7 @@ try_run(RUN_SM_VAR COMPILE_SM_VAR RUN_OUTPUT_VARIABLE var3 ) SET(SIZEOF_MAX ${var3}) +ENDIF(NOT CMAKE_CROSSCOMPILING) #-------------------------------------------------------------------------------------------------- @@ -480,10 +509,16 @@ if(HAVE_MAKECONTEXT OR WIN32) set(makecontext_CPPFLAGS_2 "-DOSX") endif(CMAKE_SYSTEM_NAME MATCHES "Darwin") - if(WIN32) - set(makecontext_CPPFLAGS_2 "-D_XBT_WIN32 ${INCLUDES}") - endif(WIN32) - + if(WIN32) + if(__VISUALC__) + set(makecontext_CPPFLAGS "/DTEST_makecontext") + set(makecontext_CPPFLAGS_2 "/D_XBT_WIN32 /I${PROJECT_DIRECTORY}/include/xbt /I${PROJECT_DIRECTORY}/src/xbt") + 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") + endif(__GNUC__) + else(WIN32) try_run(RUN_makecontext_VAR COMPILE_makecontext_VAR ${PROJECT_DIRECTORY} ${PROJECT_DIRECTORY}/buildtools/Cmake/test_prog/prog_stacksetup.c @@ -497,13 +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 @@ -516,6 +551,7 @@ if(stack MATCHES "up") set(PTH_STACKGROWTH "1") endif(stack MATCHES "up") +endif(NOT CMAKE_CROSSCOMPILING) ############### ## System checks ## @@ -547,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}) @@ -618,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)") @@ -638,37 +674,47 @@ 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) SET(need_getline "#define SIMGRID_NEED_GETLINE 1") +SET(SIMGRID_NEED_GETLINE 1) else(NOT COMPILE_RESULT_VAR) SET(need_getline "") +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) @@ -676,19 +722,23 @@ 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) - SET(need_asprintf "") + SET(simgrid_need_asprintf "") + SET(NEED_ASPRINTF 0) else(HAVE_ASPRINTF) - SET(need_asprintf "#define SIMGRID_NEED_ASPRINTF 1") + SET(simgrid_need_asprintf "#define SIMGRID_NEED_ASPRINTF 1") + SET(NEED_ASPRINTF 1) endif(HAVE_ASPRINTF) if(HAVE_VASPRINTF) - SET(need_vasprintf "") + SET(simgrid_need_vasprintf "") + SET(NEED_VASPRINTF 0) else(HAVE_VASPRINTF) - SET(need_vasprintf "#define SIMGRID_NEED_VASPRINTF 1") + SET(simgrid_need_vasprintf "#define SIMGRID_NEED_VASPRINTF 1") + SET(NEED_VASPRINTF 1) endif(HAVE_VASPRINTF) ### check for addr2line @@ -706,8 +756,8 @@ SET( CMAKEDEFINE "#cmakedefine" ) configure_file("${PROJECT_DIRECTORY}/buildtools/Cmake/gras_config.h.in" "${PROJECT_DIRECTORY}/src/gras_config.h" @ONLY IMMEDIATE) configure_file("${PROJECT_DIRECTORY}/src/gras_config.h" "${PROJECT_DIRECTORY}/src/gras_config.h" @ONLY IMMEDIATE) configure_file("${PROJECT_DIRECTORY}/include/simgrid_config.h.in" "${PROJECT_DIRECTORY}/include/simgrid_config.h" @ONLY IMMEDIATE) -configure_file("${PROJECT_DIRECTORY}/buildtools/Cmake/tracing_config.h.in" "${PROJECT_DIRECTORY}/include/instr/tracing_config.h" @ONLY IMMEDIATE) -configure_file("${PROJECT_DIRECTORY}/include/instr/tracing_config.h" "${PROJECT_DIRECTORY}/include/instr/tracing_config.h" @ONLY IMMEDIATE) +#configure_file("${PROJECT_DIRECTORY}/buildtools/Cmake/tracing_config.h.in" "${PROJECT_DIRECTORY}/include/instr/tracing_config.h" @ONLY IMMEDIATE) +#configure_file("${PROJECT_DIRECTORY}/include/instr/tracing_config.h" "${PROJECT_DIRECTORY}/include/instr/tracing_config.h" @ONLY IMMEDIATE) set(top_srcdir "${PROJECT_DIRECTORY}") set(srcdir "${PROJECT_DIRECTORY}/src") @@ -717,9 +767,13 @@ set(includedir ${prefix}/include) set(top_builddir ${PROJECT_DIRECTORY}) set(libdir ${exec_prefix}/lib) set(CMAKE_LINKARGS "${CMAKE_CURRENT_BINARY_DIR}/lib") +set(CMAKE_SMPI_COMMAND "export LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}/lib:${gtnets_path}/lib:$LD_LIBRARY_PATH") configure_file(${PROJECT_DIRECTORY}/src/smpi/smpicc.in ${CMAKE_CURRENT_BINARY_DIR}/bin/smpicc @ONLY) 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)