diff --git a/lib/setup.h b/lib/setup.h
index 03154331b380fce74e61c22bf8891fdee072042a..590b939346292b0dd1c912bd10a552641ac29dcf 100644
--- a/lib/setup.h
+++ b/lib/setup.h
@@ -76,8 +76,11 @@ typedef unsigned char bool;
 #define _REENTRANT
 #endif
 
-
 #include <stdio.h>
+#ifdef HAVE_ASSERT_H
+#include <assert.h>
+#endif
+
 #ifndef OS
 #ifdef WIN32
 #define OS "win32"
@@ -116,6 +119,14 @@ defined(HAVE_LIBSSL) && defined(HAVE_LIBCRYPTO)
 #endif
 #endif
 
+#if defined(CURLDEBUG) && defined(HAVE_ASSERT_H)
+#define NDEBUG
+#define curlassert(x) assert(x)
+#else
+/* does nothing without CURLDEBUG defined */
+#define curlassert(x)
+#endif
+
 #ifdef MSG_NOSIGNAL
 /* If we have the MSG_NOSIGNAL define, we make sure to use that in the forth
    argument to send() and recv() */