Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid
authorMartin Quinson <martin.quinson@loria.fr>
Tue, 8 Mar 2016 08:37:25 +0000 (09:37 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Tue, 8 Mar 2016 08:37:25 +0000 (09:37 +0100)
CMakeLists.txt
src/simix/smx_context.cpp
src/simix/smx_private.h
tools/cmake/src/internal_config.h.in

index b0f52fe..9b3995b 100644 (file)
@@ -281,7 +281,7 @@ else()
   set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE")
 endif()
 
-CHECK_INCLUDE_FILE("valgrind/valgrind.h" HAVE_VALGRIND_VALGRIND_H)
+CHECK_INCLUDE_FILE("valgrind/valgrind.h" HAVE_VALGRIND_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)
@@ -630,12 +630,18 @@ endif()
 
 ### Generate the required headers and scripts
 #############################################
-configure_file("${CMAKE_HOME_DIRECTORY}/tools/cmake/src/internal_config.h.in" "${CMAKE_BINARY_DIR}/src/internal_config.h"    @ONLY IMMEDIATE)
-configure_file("${CMAKE_HOME_DIRECTORY}/include/simgrid_config.h.in"          "${CMAKE_BINARY_DIR}/include/simgrid_config.h" @ONLY IMMEDIATE)
+# 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)
+exec_program("${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/src/internal_config.h.generated ${CMAKE_BINARY_DIR}/src/internal_config.h")
+exec_program("${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/include/simgrid_config.h.generated ${CMAKE_BINARY_DIR}/include/simgrid_config.h")
+file(REMOVE ${CMAKE_BINARY_DIR}/src/internal_config.h.generated)
+file(REMOVE ${CMAKE_BINARY_DIR}/include/simgrid_config.h.generated)
 
 # We need two versions of the SMPI scripts because they contain the path to the library
 # so, it depends of whether SimGrid is installed, or run from the sources (during the build)
-file(READ ${CMAKE_HOME_DIRECTORY}/src/smpi/smpitools.sh SMPITOOLS_SH) # Definitions shared amongst all scripts, inlined in each of them
+
+file(READ ${CMAKE_HOME_DIRECTORY}/src/smpi/smpitools.sh SMPITOOLS_SH) # Definitions shared amongst all SMPI scripts, inlined in each of them
 
 ### SMPI script used when simgrid is installed
 set(exec_prefix ${CMAKE_INSTALL_PREFIX})
index 9e2dab9..4c3e022 100644 (file)
@@ -29,7 +29,7 @@
 #define _aligned_free  __mingw_aligned_free 
 #endif //MINGW
 
-#ifdef HAVE_VALGRIND_VALGRIND_H
+#ifdef HAVE_VALGRIND_H
 # include <valgrind/valgrind.h>
 #endif
 
@@ -160,7 +160,7 @@ void *SIMIX_context_stack_new(void)
     stack = xbt_malloc0(smx_context_stack_size);
   }
 
-#ifdef HAVE_VALGRIND_VALGRIND_H
+#ifdef HAVE_VALGRIND_H
   unsigned int valgrind_stack_id = VALGRIND_STACK_REGISTER(stack, (char *)stack + smx_context_stack_size);
   memcpy((char *)stack + smx_context_usable_stack_size, &valgrind_stack_id, sizeof valgrind_stack_id);
 #endif
@@ -173,7 +173,7 @@ void SIMIX_context_stack_delete(void *stack)
   if (!stack)
     return;
 
-#ifdef HAVE_VALGRIND_VALGRIND_H
+#ifdef HAVE_VALGRIND_H
   unsigned int valgrind_stack_id;
   memcpy(&valgrind_stack_id, (char *)stack + smx_context_usable_stack_size, sizeof valgrind_stack_id);
   VALGRIND_STACK_DEREGISTER(valgrind_stack_id);
index 89efe32..ccd2436 100644 (file)
@@ -221,7 +221,7 @@ XBT_PUBLIC_DATA(char sigsegv_stack[SIGSTKSZ]);
 /* We are using the bottom of the stack to save some information, like the
  * valgrind_stack_id. Define smx_context_usable_stack_size to give the remaining
  * size for the stack. */
-#ifdef HAVE_VALGRIND_VALGRIND_H
+#ifdef HAVE_VALGRIND_H
 # define smx_context_usable_stack_size                                  \
   (smx_context_stack_size - sizeof(unsigned int)) /* for valgrind_stack_id */
 #else
index a2afe65..e64a921 100644 (file)
@@ -9,12 +9,12 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 /* Non-standard header files */
-#cmakedefine HAVE_EXECINFO_H          @HAVE_EXECINFO_H@ /* <execinfo.h> */
-#cmakedefine HAVE_FUTEX_H             @HAVE_FUTEX_H@ /* <linux/futex.h> */
-#cmakedefine HAVE_SIGNAL_H            @HAVE_SIGNAL_H@ /* <signal.h> */
-#cmakedefine HAVE_UNISTD_H            @HAVE_UNISTD_H@ /* <unistd.h>    */
-#cmakedefine HAVE_UCONTEXT_H          @HAVE_UCONTEXT_H@ /* <ucontext.h>  */
-#cmakedefine HAVE_VALGRIND_VALGRIND_H @HAVE_VALGRIND_VALGRIND_H@ /* <valgrind/valgrind.h> */
+#cmakedefine HAVE_EXECINFO_H @HAVE_EXECINFO_H@ /* <execinfo.h> */
+#cmakedefine HAVE_FUTEX_H    @HAVE_FUTEX_H@ /* <linux/futex.h> */
+#cmakedefine HAVE_SIGNAL_H   @HAVE_SIGNAL_H@ /* <signal.h> */
+#cmakedefine HAVE_UNISTD_H   @HAVE_UNISTD_H@ /* <unistd.h> */
+#cmakedefine HAVE_UCONTEXT_H @HAVE_UCONTEXT_H@ /* <ucontext.h> */
+#cmakedefine HAVE_VALGRIND_H @HAVE_VALGRIND_H@ /* <valgrind/valgrind.h> */
 
 /* Time portability */
 #cmakedefine HAVE_GETTIMEOFDAY  @HAVE_GETTIMEOFDAY@ /* Function gettimeofday */