X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8734e90cb9ab05f4bd127c40d209af754eb00fb6..8981c65c18366f64bf8a551c60ae3e08b1714eab:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 30b29781d0..c22fc86ed1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -313,28 +313,6 @@ if(MINGW) set(HAVE_VASPRINTF 1) endif() -foreach(var - HAVE_VALGRIND_H - HAVE_UNISTD_H - HAVE_EXECINFO_H - HAVE_SIGNAL_H - HAVE_SYS_PARAM_H - HAVE_SYS_SYSCTL_H - HAVE_UCONTEXT_H - HAVE_FUTEX_H - HAVE_GETTIMEOFDAY - HAVE_NANOSLEEP - HAVE_GETDTABLESIZE - HAVE_SYSCONF - HAVE_POPEN - HAVE_PROCESS_VM_READV - HAVE_MMAP - HAVE_VASPRINTF) - if(NOT DEFINED ${var}) - set(${var} 0) - endif() -endforeach() - #Check if __thread is defined execute_process( COMMAND "${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_thread_storage.c -o testprog" @@ -653,6 +631,24 @@ endif() ### Generate the required headers and scripts ############################################# + +# gcc makes no difference between "#define HAVE_FOOBAR" and "#define HAVE_FOOBAR 0" by default, +# but this too error prone. If you forget to include the config.h, you get weird segfaults. +# If you include it everywhere, everything gets recompiled everytime. +# So we include only where needed, and compile with -Wundef to notice the missing includes. +# But cmake sometimes defines to the empty definition (#define HAVE_VALGRIND_H). +# So we have to make sure that everything got a decent value before generating the files. +foreach(var HAVE_EXECINFO_H HAVE_FUTEX_H HAVE_GETDTABLESIZE HAVE_GETTIMEOFDAY HAVE_MMAP + HAVE_NANOSLEEP HAVE_POPEN HAVE_POSIX_GETTIME HAVE_PROCESS_VM_READV HAVE_SIGNAL_H + HAVE_SYS_PARAM_H HAVE_SYS_SYSCTL_H HAVE_SYSCONF HAVE_UCONTEXT_H HAVE_UNISTD_H + HAVE_VALGRIND_H HAVE_VASPRINTF) + if(${var}) + set(${var} 1) + else() + set(${var} 0) + endif() +endforeach() + # Avoid triggering a (full) rebuild by touching the files if they did not really change configure_file("${CMAKE_HOME_DIRECTORY}/tools/cmake/src/internal_config.h.in" "${CMAKE_BINARY_DIR}/src/internal_config.h.generated" @ONLY IMMEDIATE) configure_file("${CMAKE_HOME_DIRECTORY}/include/simgrid_config.h.in" "${CMAKE_BINARY_DIR}/include/simgrid_config.h.generated" @ONLY IMMEDIATE) @@ -898,7 +894,7 @@ message("##########################################") message("#### Content of src/internal_config.h ####") message("##########################################") file(STRINGS ${CMAKE_CURRENT_BINARY_DIR}/src/internal_config.h config_output) -LIST(REMOVE_AT config_output 0 1 2 3 4 5 6 7 8) # Pass the file header +LIST(REMOVE_AT config_output 0 1 2 3 4 5 6 7 8 9 10) # Pass the file header foreach(line ${config_output}) message(" ${line}") endforeach()