set(PROCESSOR_i686 1)
set(SIMGRID_SYSTEM_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}")
message(STATUS "System processor: ${CMAKE_SYSTEM_PROCESSOR}")
set(PROCESSOR_i686 1)
set(SIMGRID_SYSTEM_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}")
message(STATUS "System processor: ${CMAKE_SYSTEM_PROCESSOR}")
# 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" AND NOT "${CMAKE_SYSTEM}" MATCHES "GNU")
SET(HAVE_MMAP 0)
message(STATUS "Warning: MMAP is thought as non functional on this architecture (${CMAKE_SYSTEM})")
# 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" AND NOT "${CMAKE_SYSTEM}" MATCHES "GNU")
SET(HAVE_MMAP 0)
message(STATUS "Warning: MMAP is thought as non functional on this architecture (${CMAKE_SYSTEM})")
if(enable_gtnets)
message(STATUS "Warning : Turning latency_bound_tracking to ON because GTNeTs is ON")
SET(enable_latency_bound_tracking ON)
SET(HAVE_LATENCY_BOUND_TRACKING 1)
if(enable_gtnets)
message(STATUS "Warning : Turning latency_bound_tracking to ON because GTNeTs is ON")
SET(enable_latency_bound_tracking ON)
SET(HAVE_LATENCY_BOUND_TRACKING 1)
#--------------------------------------------------------------------------------------------------
### Check for some architecture dependent values
#--------------------------------------------------------------------------------------------------
### Check for some architecture dependent values
set(HAVE_SEM_OPEN 0)
message(STATUS "Warning: sem_open not compilable")
message(STATUS "HAVE_SEM_OPEN_comp_output: ${HAVE_SEM_OPEN_comp_output}")
set(HAVE_SEM_OPEN 0)
message(STATUS "Warning: sem_open not compilable")
message(STATUS "HAVE_SEM_OPEN_comp_output: ${HAVE_SEM_OPEN_comp_output}")
exec_program("${CMAKE_BINARY_DIR}/testprog" RETURN_VALUE HAVE_SEM_OPEN_run OUTPUT_VARIABLE var_compil)
file(REMOVE "${CMAKE_BINARY_DIR}/testprog*")
exec_program("${CMAKE_BINARY_DIR}/testprog" RETURN_VALUE HAVE_SEM_OPEN_run OUTPUT_VARIABLE var_compil)
file(REMOVE "${CMAKE_BINARY_DIR}/testprog*")
set(HAVE_SEM_INIT 0)
message(STATUS "Warning: sem_init not compilable")
message(STATUS "HAVE_SEM_INIT_comp_output: ${HAVE_SEM_OPEN_comp_output}")
set(HAVE_SEM_INIT 0)
message(STATUS "Warning: sem_init not compilable")
message(STATUS "HAVE_SEM_INIT_comp_output: ${HAVE_SEM_OPEN_comp_output}")
exec_program("${CMAKE_BINARY_DIR}/testprog" RETURN_VALUE HAVE_SEM_INIT_run OUTPUT_VARIABLE var_compil)
file(REMOVE "${CMAKE_BINARY_DIR}/testprog*")
exec_program("${CMAKE_BINARY_DIR}/testprog" RETURN_VALUE HAVE_SEM_INIT_run OUTPUT_VARIABLE var_compil)
file(REMOVE "${CMAKE_BINARY_DIR}/testprog*")
if(NOT HAVE_SEM_OPEN AND NOT HAVE_SEM_INIT)
message(FATAL_ERROR "Semaphores are not usable (neither sem_open nor sem_init is both compilable and executable), but they are mandatory to threads (you may need to mount /dev).")
if(NOT HAVE_SEM_OPEN AND NOT HAVE_SEM_INIT)
message(FATAL_ERROR "Semaphores are not usable (neither sem_open nor sem_init is both compilable and executable), but they are mandatory to threads (you may need to mount /dev).")
if(HAVE_SEM_TIMEDWAIT_run)
set(HAVE_SEM_TIMEDWAIT 0)
message(STATUS "timedwait not compilable")
if(HAVE_SEM_TIMEDWAIT_run)
set(HAVE_SEM_TIMEDWAIT 0)
message(STATUS "timedwait not compilable")
if(HAVE_MUTEX_TIMEDLOCK_run)
set(HAVE_MUTEX_TIMEDLOCK 0)
message(STATUS "timedlock not compilable")
if(HAVE_MUTEX_TIMEDLOCK_run)
set(HAVE_MUTEX_TIMEDLOCK 0)
message(STATUS "timedlock not compilable")
# AC_CHECK_MCSC(mcsc=yes, mcsc=no)
set(mcsc_flags "")
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
set(mcsc_flags "-D_XOPEN_SOURCE")
# AC_CHECK_MCSC(mcsc=yes, mcsc=no)
set(mcsc_flags "")
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
set(mcsc_flags "-D_XOPEN_SOURCE")
if(NOT COMPILE_mcsc_VAR)
message(STATUS "prog_AC_CHECK_MCSC.c is compilable")
exec_program("${CMAKE_BINARY_DIR}/testprog" OUTPUT_VARIABLE var_compil)
if(NOT COMPILE_mcsc_VAR)
message(STATUS "prog_AC_CHECK_MCSC.c is compilable")
exec_program("${CMAKE_BINARY_DIR}/testprog" OUTPUT_VARIABLE var_compil)
STRING(REPLACE " +0000" "" GIT_DATE ${GIT_DATE})
STRING(REPLACE " " "~" GIT_DATE ${GIT_DATE})
STRING(REPLACE ":" "-" GIT_DATE ${GIT_DATE})
STRING(REPLACE " +0000" "" GIT_DATE ${GIT_DATE})
STRING(REPLACE " " "~" GIT_DATE ${GIT_DATE})
STRING(REPLACE ":" "-" GIT_DATE ${GIT_DATE})
# The syntax of this magic string is given in src/xbt/datadesc/ddt_convert.c
# It kinda matches the values that the xbt_arch_desc_t structure can take
# The syntax of this magic string is given in src/xbt/datadesc/ddt_convert.c
# It kinda matches the values that the xbt_arch_desc_t structure can take
if(val_big MATCHES "l_C:1/1:_I:2/2:4/2:4/2:8/2:_P:4/2:4/2:_D:4/2:8/2:")
#gras_arch=1; gras_size=32; gras_arch_name=little32_2;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 1)
if(val_big MATCHES "l_C:1/1:_I:2/2:4/2:4/2:8/2:_P:4/2:4/2:_D:4/2:8/2:")
#gras_arch=1; gras_size=32; gras_arch_name=little32_2;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 1)
if(val_big MATCHES "l_C:1/1:_I:2/2:4/4:4/4:8/4:_P:4/4:4/4:_D:4/4:8/4:")
#gras_arch=2; gras_size=32; gras_arch_name=little32_4;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 2)
if(val_big MATCHES "l_C:1/1:_I:2/2:4/4:4/4:8/4:_P:4/4:4/4:_D:4/4:8/4:")
#gras_arch=2; gras_size=32; gras_arch_name=little32_4;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 2)
if(val_big MATCHES "l_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/8:")
#gras_arch=3; gras_size=32; gras_arch_name=little32_8;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 3)
if(val_big MATCHES "l_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/8:")
#gras_arch=3; gras_size=32; gras_arch_name=little32_8;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 3)
if(val_big MATCHES "l_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/8:")
#gras_arch=4; gras_size=64; gras_arch_name=little64;
SET(GRAS_ARCH_32_BITS 0)
SET(GRAS_THISARCH 4)
if(val_big MATCHES "l_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/8:")
#gras_arch=4; gras_size=64; gras_arch_name=little64;
SET(GRAS_ARCH_32_BITS 0)
SET(GRAS_THISARCH 4)
if(val_big MATCHES "l_C:1/1:_I:2/2:4/4:4/4:8/8:_P:8/8:8/8:_D:4/4:8/8:")
#gras_arch=5; gras_size=64; gras_arch_name=little64_2;
SET(GRAS_ARCH_32_BITS 0)
SET(GRAS_THISARCH 5)
if(val_big MATCHES "l_C:1/1:_I:2/2:4/4:4/4:8/8:_P:8/8:8/8:_D:4/4:8/8:")
#gras_arch=5; gras_size=64; gras_arch_name=little64_2;
SET(GRAS_ARCH_32_BITS 0)
SET(GRAS_THISARCH 5)
if(val_big MATCHES "B_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/8:")
#gras_arch=6; gras_size=32; gras_arch_name=big32_8;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 6)
if(val_big MATCHES "B_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/8:")
#gras_arch=6; gras_size=32; gras_arch_name=big32_8;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 6)
if(val_big MATCHES "B_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/4:")
#gras_arch=7; gras_size=32; gras_arch_name=big32_8_4;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 7)
if(val_big MATCHES "B_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/4:")
#gras_arch=7; gras_size=32; gras_arch_name=big32_8_4;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 7)
if(val_big MATCHES "B_C:1/1:_I:2/2:4/4:4/4:8/4:_P:4/4:4/4:_D:4/4:8/4:")
#gras_arch=8; gras_size=32; gras_arch_name=big32_4;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 8)
if(val_big MATCHES "B_C:1/1:_I:2/2:4/4:4/4:8/4:_P:4/4:4/4:_D:4/4:8/4:")
#gras_arch=8; gras_size=32; gras_arch_name=big32_4;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 8)
if(val_big MATCHES "B_C:1/1:_I:2/2:4/2:4/2:8/2:_P:4/2:4/2:_D:4/2:8/2:")
#gras_arch=9; gras_size=32; gras_arch_name=big32_2;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 9)
if(val_big MATCHES "B_C:1/1:_I:2/2:4/2:4/2:8/2:_P:4/2:4/2:_D:4/2:8/2:")
#gras_arch=9; gras_size=32; gras_arch_name=big32_2;
SET(GRAS_ARCH_32_BITS 1)
SET(GRAS_THISARCH 9)
if(val_big MATCHES "B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/8:")
#gras_arch=10; gras_size=64; gras_arch_name=big64;
SET(GRAS_ARCH_32_BITS 0)
SET(GRAS_THISARCH 10)
if(val_big MATCHES "B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/8:")
#gras_arch=10; gras_size=64; gras_arch_name=big64;
SET(GRAS_ARCH_32_BITS 0)
SET(GRAS_THISARCH 10)
if(val_big MATCHES "B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/4:")
#gras_arch=11; gras_size=64; gras_arch_name=big64_8_4;
SET(GRAS_ARCH_32_BITS 0)
SET(GRAS_THISARCH 11)
if(val_big MATCHES "B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/4:")
#gras_arch=11; gras_size=64; gras_arch_name=big64_8_4;
SET(GRAS_ARCH_32_BITS 0)
SET(GRAS_THISARCH 11)
if(GRAS_THISARCH MATCHES "none")
message(STATUS "architecture: ${val_big}")
message(FATAL_ERROR "GRAS_THISARCH is empty: '${GRAS_THISARCH}'")
if(GRAS_THISARCH MATCHES "none")
message(STATUS "architecture: ${val_big}")
message(FATAL_ERROR "GRAS_THISARCH is empty: '${GRAS_THISARCH}'")
set(makecontext_CPPFLAGS "-DTEST_makecontext")
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
set(makecontext_CPPFLAGS_2 "-D_XOPEN_SOURCE")
set(makecontext_CPPFLAGS "-DTEST_makecontext")
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
set(makecontext_CPPFLAGS_2 "-D_XOPEN_SOURCE")
set(pth_sksize_makecontext "#define pth_sksize_makecontext(skaddr,sksize) (${makecontext_size})")
message(STATUS "${pth_skaddr_makecontext}")
message(STATUS "${pth_sksize_makecontext}")
set(pth_sksize_makecontext "#define pth_sksize_makecontext(skaddr,sksize) (${makecontext_size})")
message(STATUS "${pth_skaddr_makecontext}")
message(STATUS "${pth_sksize_makecontext}")
if(${fctbis} STREQUAL "VA_COPY((d),(s))")
set(ac_cv_va_copy "GCM")
set(__VA_COPY_USE_GCM "VA_COPY((d),(s))")
if(${fctbis} STREQUAL "VA_COPY((d),(s))")
set(ac_cv_va_copy "GCM")
set(__VA_COPY_USE_GCM "VA_COPY((d),(s))")
if(${fctbis} STREQUAL "__va_copy((d),(s))")
set(ac_cv_va_copy "GCH")
set(__VA_COPY_USE_GCH "__va_copy((d),(s))")
if(${fctbis} STREQUAL "__va_copy((d),(s))")
set(ac_cv_va_copy "GCH")
set(__VA_COPY_USE_GCH "__va_copy((d),(s))")
if(${fctbis} STREQUAL "__builtin_va_copy((d),(s))")
set(ac_cv_va_copy "GCB")
set(__VA_COPY_USE_GCB "__builtin_va_copy((d),(s))")
if(${fctbis} STREQUAL "__builtin_va_copy((d),(s))")
set(ac_cv_va_copy "GCB")
set(__VA_COPY_USE_GCB "__builtin_va_copy((d),(s))")
if(${fctbis} STREQUAL "do { (d) = (s) } while (0)")
set(ac_cv_va_copy "ASS")
set(__VA_COPY_USE_ASS "do { (d) = (s); } while (0)")
if(${fctbis} STREQUAL "do { (d) = (s) } while (0)")
set(ac_cv_va_copy "ASS")
set(__VA_COPY_USE_ASS "do { (d) = (s); } while (0)")
if(${fctbis} STREQUAL "do { *(d) = *(s) } while (0)")
set(ac_cv_va_copy "ASP")
set(__VA_COPY_USE_ASP "do { *(d) = *(s); } while (0)")
if(${fctbis} STREQUAL "do { *(d) = *(s) } while (0)")
set(ac_cv_va_copy "ASP")
set(__VA_COPY_USE_ASP "do { *(d) = *(s); } while (0)")
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))")
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))")
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)))")
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)))")
if(NOT COMPILE_RESULT_VAR)
SET(need_getline "#define SIMGRID_NEED_GETLINE 1")
SET(SIMGRID_NEED_GETLINE 1)
if(NOT COMPILE_RESULT_VAR)
SET(need_getline "#define SIMGRID_NEED_GETLINE 1")
SET(SIMGRID_NEED_GETLINE 1)
try_run(RUN_SNPRINTF_FUNC_VAR COMPILE_SNPRINTF_FUNC_VAR
${CMAKE_BINARY_DIR}
${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_snprintf.c
)
try_run(RUN_SNPRINTF_FUNC_VAR COMPILE_SNPRINTF_FUNC_VAR
${CMAKE_BINARY_DIR}
${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_snprintf.c
)
try_run(RUN_VSNPRINTF_FUNC_VAR COMPILE_VSNPRINTF_FUNC_VAR
${CMAKE_BINARY_DIR}
${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_vsnprintf.c
)
try_run(RUN_VSNPRINTF_FUNC_VAR COMPILE_VSNPRINTF_FUNC_VAR
${CMAKE_BINARY_DIR}
${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_vsnprintf.c
)
set(PREFER_PORTABLE_SNPRINTF 0)
if(RUN_VSNPRINTF_FUNC_VAR MATCHES "FAILED_TO_RUN")
set(PREFER_PORTABLE_SNPRINTF 1)
set(PREFER_PORTABLE_SNPRINTF 0)
if(RUN_VSNPRINTF_FUNC_VAR MATCHES "FAILED_TO_RUN")
set(PREFER_PORTABLE_SNPRINTF 1)
### Check if OSX can compile with ucontext (with gcc 4.[1-5] it is broken)
if(APPLE)
if(APPLE_NEED_GCC_VERSION GREATER COMPILER_C_VERSION_MAJOR_MINOR)
message(STATUS "Ucontext can't be used with this version of gcc (must be greater than 4.5)")
set(HAVE_UCONTEXT_H 0)
### Check if OSX can compile with ucontext (with gcc 4.[1-5] it is broken)
if(APPLE)
if(APPLE_NEED_GCC_VERSION GREATER COMPILER_C_VERSION_MAJOR_MINOR)
message(STATUS "Ucontext can't be used with this version of gcc (must be greater than 4.5)")
set(HAVE_UCONTEXT_H 0)
exec_program("chmod a=rwx ${CMAKE_BINARY_DIR}/bin/smpif2c" OUTPUT_VARIABLE OKITOKI)
exec_program("chmod a=rwx ${CMAKE_BINARY_DIR}/bin/smpiff" OUTPUT_VARIABLE OKITOKI)
exec_program("chmod a=rwx ${CMAKE_BINARY_DIR}/bin/smpirun" OUTPUT_VARIABLE OKITOKI)
exec_program("chmod a=rwx ${CMAKE_BINARY_DIR}/bin/smpif2c" OUTPUT_VARIABLE OKITOKI)
exec_program("chmod a=rwx ${CMAKE_BINARY_DIR}/bin/smpiff" OUTPUT_VARIABLE OKITOKI)
exec_program("chmod a=rwx ${CMAKE_BINARY_DIR}/bin/smpirun" OUTPUT_VARIABLE OKITOKI)
configure_file(${CMAKE_HOME_DIRECTORY}/examples/smpi/hostfile ${CMAKE_BINARY_DIR}/examples/smpi/hostfile COPYONLY)
configure_file(${CMAKE_HOME_DIRECTORY}/examples/msg/small_platform.xml ${CMAKE_BINARY_DIR}/examples/msg/small_platform.xml COPYONLY)
configure_file(${CMAKE_HOME_DIRECTORY}/examples/msg/small_platform_with_routers.xml ${CMAKE_BINARY_DIR}/examples/msg/small_platform_with_routers.xml COPYONLY)
configure_file(${CMAKE_HOME_DIRECTORY}/examples/smpi/hostfile ${CMAKE_BINARY_DIR}/examples/smpi/hostfile COPYONLY)
configure_file(${CMAKE_HOME_DIRECTORY}/examples/msg/small_platform.xml ${CMAKE_BINARY_DIR}/examples/msg/small_platform.xml COPYONLY)
configure_file(${CMAKE_HOME_DIRECTORY}/examples/msg/small_platform_with_routers.xml ${CMAKE_BINARY_DIR}/examples/msg/small_platform_with_routers.xml COPYONLY)
${CMAKE_BINARY_DIR}/examples/smpi/replay/actions_bcast.txt
${CMAKE_BINARY_DIR}/teshsuite/smpi/hostfile
)
${CMAKE_BINARY_DIR}/examples/smpi/replay/actions_bcast.txt
${CMAKE_BINARY_DIR}/teshsuite/smpi/hostfile
)