X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/58dd63caceb0776f540d49648f15ab21264fa4d0..a76a7b411c150890491e70a4c7d314fa2a589005:/buildtools/Cmake/CompleteInFiles.cmake diff --git a/buildtools/Cmake/CompleteInFiles.cmake b/buildtools/Cmake/CompleteInFiles.cmake index b63317412a..f540230562 100644 --- a/buildtools/Cmake/CompleteInFiles.cmake +++ b/buildtools/Cmake/CompleteInFiles.cmake @@ -12,8 +12,8 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$") message(STATUS "System processor: ${CMAKE_SYSTEM_PROCESSOR}") ELSE(${ARCH_32_BITS}) message(STATUS "System processor: amd64") - set(PROCESSOR_x86_64 true) - set(PROCESSOR_i686 false) + set(PROCESSOR_x86_64 1) + set(PROCESSOR_i686 0) ENDIF(${ARCH_32_BITS}) set(HAVE_RAWCTX 1) @@ -88,6 +88,7 @@ endif(enable_ns3) # Checks for header libraries functions. CHECK_LIBRARY_EXISTS(pthread pthread_create "" pthread) CHECK_LIBRARY_EXISTS(pthread sem_init "" HAVE_SEM_INIT_LIB) +CHECK_LIBRARY_EXISTS(pthread sem_open "" HAVE_SEM_OPEN_LIB) CHECK_LIBRARY_EXISTS(pthread sem_timedwait "" HAVE_SEM_TIMEDWAIT_LIB) CHECK_LIBRARY_EXISTS(pthread pthread_mutex_timedlock "" HAVE_MUTEX_TIMEDLOCK_LIB) CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_POSIX_GETTIME) @@ -205,18 +206,47 @@ elseif(pthread) endif(pthread) if(pthread) - ### HAVE_SEM_INIT + ### Test that we have a way to create semaphores + if(HAVE_SEM_OPEN_LIB) + exec_program("${CMAKE_C_COMPILER} -lpthread ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_sem_open.c -o testprog" + OUTPUT_VARIABLE HAVE_SEM_OPEN_run) + if(HAVE_SEM_OPEN_run) + set(HAVE_SEM_OPEN 0) + else(HAVE_SEM_OPEN_run) + exec_program("./testprog" RETURN_VALUE HAVE_SEM_OPEN_run2 OUTPUT_VARIABLE var_compil) + if(HAVE_SEM_OPEN_run2) + set(HAVE_SEM_OPEN 0) + else(HAVE_SEM_OPEN_run2) + set(HAVE_SEM_OPEN 1) + endif(HAVE_SEM_OPEN_run2) + endif(HAVE_SEM_OPEN_run) + else(HAVE_SEM_OPEN_LIB) + set(HAVE_SEM_OPEN 0) + endif(HAVE_SEM_OPEN_LIB) + if(HAVE_SEM_INIT_LIB) - exec_program("${CMAKE_C_COMPILER} -lpthread ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_sem_init.c" OUTPUT_VARIABLE HAVE_SEM_INIT_run) + exec_program("${CMAKE_C_COMPILER} -lpthread ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_sem_init.c -o testprog" + OUTPUT_VARIABLE HAVE_SEM_INIT_run) if(HAVE_SEM_INIT_run) set(HAVE_SEM_INIT 0) else(HAVE_SEM_INIT_run) - set(HAVE_SEM_INIT 1) + exec_program("./testprog" RETURN_VALUE HAVE_SEM_INIT_run OUTPUT_VARIABLE var_compil) + if(HAVE_SEM_INIT_run) + set(HAVE_SEM_INIT 0) + else(HAVE_SEM_INIT_run) + set(HAVE_SEM_INIT 1) + endif(HAVE_SEM_INIT_run) endif(HAVE_SEM_INIT_run) + else(HAVE_SEM_INIT_LIB) + set(HAVE_SEM_INIT 0) endif(HAVE_SEM_INIT_LIB) - ### HAVE_SEM_TIMEDWAIT + if(NOT HAVE_SEM_OPEN AND NOT HAVE_SEM_INIT) + message(FATAL_ERROR "Semaphores are not usable, but they are mandatory to threads (you may need to mount /dev).") + endif(NOT HAVE_SEM_OPEN AND NOT HAVE_SEM_INIT) + + ### Test that we have a way to timewait for semaphores if(HAVE_SEM_TIMEDWAIT_LIB) exec_program("${CMAKE_C_COMPILER} -lpthread ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_sem_timedwait.c" OUTPUT_VARIABLE HAVE_SEM_TIMEDWAIT_run) @@ -271,12 +301,8 @@ ELSE(CMAKE_CROSSCOMPILING) file(READ "${simgrid_BINARY_DIR}/conftestval" mcsc) STRING(REPLACE "\n" "" mcsc "${mcsc}") if(mcsc) - 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) + set(mcsc "yes") + set(HAVE_UCONTEXT_H 1) else(mcsc) set(mcsc "no") endif(mcsc) @@ -560,9 +586,9 @@ foreach(fct ${diff_va}) } va_end(ap); } - int main(int argc, char *argv[]) + int main(void) { - test("test", 1, 2, 3, 4, 5, 6, 7, 8, 9); + test(\"test\", 1, 2, 3, 4, 5, 6, 7, 8, 9); exit(0); }" ) @@ -697,6 +723,16 @@ if(ADDR2LINE) set(ADDR2LINE "${ADDR2LINE}/addr2line") endif(ADDR2LINE) + + +### 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) + endif(APPLE_NEED_GCC_VERSION GREATER COMPILER_C_VERSION_MAJOR_MINOR) +endif(APPLE) + ### File to create configure_file("${CMAKE_HOME_DIRECTORY}/src/context_sysv_config.h.in" "${CMAKE_BINARY_DIR}/src/context_sysv_config.h" @ONLY IMMEDIATE) @@ -759,8 +795,8 @@ else("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_HOME_DIRECTORY}") 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/msg/tracing/platform.xml ${CMAKE_BINARY_DIR}/examples/msg/tracing/platform.xml COPYONLY) - set(generate_files_to_clean - ${generate_files_to_clean} + set(generated_files_to_clean + ${generated_files_to_clean} ${CMAKE_BINARY_DIR}/examples/smpi/hostfile ${CMAKE_BINARY_DIR}/examples/msg/small_platform.xml ${CMAKE_BINARY_DIR}/examples/msg/small_platform_with_routers.xml @@ -768,5 +804,15 @@ else("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_HOME_DIRECTORY}") ) endif("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_HOME_DIRECTORY}") +message("generated_files_to_clean:\n${generated_files_to_clean}") + SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES -"${generate_files_to_clean}") +"${generated_files_to_clean}") + + +IF(${ARCH_32_BITS}) + set(WIN_ARCH "32") +ELSE(${ARCH_32_BITS}) + set(WIN_ARCH "64") +ENDIF(${ARCH_32_BITS}) +configure_file("${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/simgrid.nsi.in" "${CMAKE_BINARY_DIR}/simgrid.nsi" @ONLY IMMEDIATE)