From c2badb4c162ed635b60f40a19df239f5b1ad9bea Mon Sep 17 00:00:00 2001
From: Robert K <robertk@posteo.org>
Date: Tue, 13 Oct 2015 11:46:25 +0200
Subject: [PATCH] [bugfix] fix DLMalloc check that was broke after rerun of
 cmake.

---
 cmake/modules/FindDLMalloc.cmake | 49 +++++++++++++++++---------------
 1 file changed, 26 insertions(+), 23 deletions(-)

diff --git a/cmake/modules/FindDLMalloc.cmake b/cmake/modules/FindDLMalloc.cmake
index f46357320..409a2ba32 100644
--- a/cmake/modules/FindDLMalloc.cmake
+++ b/cmake/modules/FindDLMalloc.cmake
@@ -12,30 +12,37 @@
 set(DLMALLOC_ROOT "" CACHE PATH "Path list to search for DLMALLOC")
 mark_as_advanced(DLMALLOC_ROOT)
 
-#message("dlmalloc: ${DLMALLOC_ROOT}")
-
 #look for header files at positions given by the user
 find_path(DLMALLOC_INCLUDE_DIR malloc.c
   PATHS ${DLMALLOC_DIR} ${DLMALLOC_ROOT}
   NO_DEFAULT_PATH
 )
 
-IF(DLMALLOC_INCLUDE_DIR)
+# unset DLMALLOC_SOURCE_USABLE to force a rerun of CHECK_C_SOURCE_COMPILES
+unset(DLMALLOC_SOURCE_USABLE CACHE)
+if(DLMALLOC_INCLUDE_DIR)
   set(DLMALLOC_SOURCE_INCLUDE "\"${DLMALLOC_INCLUDE_DIR}/malloc.c\"")
-ELSE()
-  #look for header files at positions given by the user
-  find_path(DLMALLOC_INCLUDE_DIR malloc-2.8.6.c
-    PATHS ${DLMALLOC_DIR} ${DLMALLOC_ROOT}
-    NO_DEFAULT_PATH
-  )
-  IF(DLMALLOC_INCLUDE_DIR)
-    set(DLMALLOC_SOURCE_INCLUDE "\"${DLMALLOC_INCLUDE_DIR}/malloc-2.8.6.c\"")
-  ENDIF()
-ENDIF()
-
-# check if dlmalloc can be compiled
-CHECK_C_SOURCE_COMPILES( "#include ${DLMALLOC_SOURCE_INCLUDE}
-                          int main () { return 0; }" DLMALLOC_SOURCE_USABLE )
+  # check if dlmalloc can be compiled
+  CHECK_C_SOURCE_COMPILES( "#include ${DLMALLOC_SOURCE_INCLUDE}
+                            int main () { return 0; }" DLMALLOC_SOURCE_USABLE )
+endif()
+
+if(NOT DLMALLOC_SOURCE_USABLE)
+    unset(DLMALLOC_SOURCE_USABLE CACHE)
+    #look for header files at positions given by the user
+    find_path(DLMALLOC_INCLUDE_DIR malloc-2.8.6.c
+      PATHS ${DLMALLOC_DIR} ${DLMALLOC_ROOT}
+      NO_DEFAULT_PATH
+    )
+    if(DLMALLOC_INCLUDE_DIR)
+      set(DLMALLOC_SOURCE_INCLUDE "\"${DLMALLOC_INCLUDE_DIR}/malloc-2.8.6.c\"")
+      # check if dlmalloc can be compiled
+      CHECK_C_SOURCE_COMPILES( "#include ${DLMALLOC_SOURCE_INCLUDE}
+                                int main () { return 0; }" DLMALLOC_SOURCE_USABLE )
+    else()
+      unset( DLMALLOC_SOURCE_USABLE CACHE)
+    endif()
+endif()
 
 
 # behave like a CMake module is supposed to behave
@@ -44,7 +51,7 @@ find_package_handle_standard_args(
   "DLMalloc"
   DEFAULT_MSG
   DLMALLOC_INCLUDE_DIR
-  DLMALLOC_SOURCE_USABLE
+  DLMALLOC_SOURCE_INCLUDE
 )
 
 mark_as_advanced(DLMALLOC_INCLUDE_DIR)
@@ -52,12 +59,8 @@ mark_as_advanced(DLMALLOC_INCLUDE_DIR)
 # if found, store some results
 if(DLMALLOC_FOUND)
     message(STATUS "${DLMALLOC_SOURCE_INCLUDE} found.")
+    set(DLMALLOC_SOURCE_INCLUDE CACHE STRING ${DLMALLOC_SOURCE_INCLUDE})
 endif(DLMALLOC_FOUND)
 
 #set HAVE_DLMALLOC for config.h
 set(HAVE_DLMALLOC ${DLMALLOC_FOUND})
-
-# register package
-if(DLMALLOC_FOUND)
-  dune_register_package_flags(INCLUDE_DIRS ${DLMALLOC_SOURCE_INCLUDE})
-endif()
-- 
GitLab