diff --git a/HsOpenSSL.cabal b/HsOpenSSL.cabal
--- a/HsOpenSSL.cabal
+++ b/HsOpenSSL.cabal
@@ -1,5 +1,5 @@
 Name:         HsOpenSSL
-Synopsis:     (Incomplete) OpenSSL binding for Haskell
+Synopsis:     Partial OpenSSL binding for Haskell
 Description:
     .
     HsOpenSSL is an OpenSSL binding for Haskell. It can generate RSA
@@ -7,17 +7,12 @@
     sign and verify messages, encrypt and decrypt messages. It has
     also some capabilities of creating SSL clients and servers.
     .
-    Please note that this project has started at the time when there
-    were no pure-Haskell implementations of TLS. Now there is tls
-    package (<http://hackage.haskell.org/package/tls>), which looks
-    pretty saner than HsOpenSSL especially for initialisation and
-    error handlings. So PHO (the initial author of HsOpenSSL) wants to
-    encourage you to use and improve the tls package instead as long
-    as possible. The only problem is that the tls package has not
-    received as much review as OpenSSL from cryptography specialists
-    yet, thus we can't assume it's secure enough.
+    This package is in production use by a number of Haskell based
+    systems and stable. You may also be interested in the @tls@ package,
+    <http://hackage.haskell.org/package/tls>, which is a pure Haskell
+    implementation of SSL.
     .
-Version:       0.10.3.3
+Version:       0.10.3.4
 License:       PublicDomain
 License-File:  COPYING
 Author:        Adam Langley, Mikhail Vorozhtsov, PHO, Taru Karttunen
@@ -26,7 +21,7 @@
 Homepage:      https://github.com/phonohawk/HsOpenSSL
 Bug-Reports:   https://github.com/phonohawk/HsOpenSSL/issues
 Category:      Cryptography
-Tested-With:   GHC == 7.0.3
+Tested-With:   GHC == 7.6.2
 Cabal-Version: >= 1.6
 Build-Type:    Simple
 Extra-Source-Files:
diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,12 @@
 -*- coding: utf-8 -*-
 
+Changes from 0.10.3.3 to 0.10.3.4
+---------------------------------
+* Fix a compilation issue that occurs when using a different builddir
+  with "cabal build --builddir=DIR", reported by Bit Connor (#23),
+  Gregory Collins (#24) and Bas van Dijk (#25).
+
+
 Changes from 0.10.3.2 to 0.10.3.3
 ---------------------------------
 * Merged #17 "Use MVar instead of QSem in OpenSSL.Session" by Mikhail
diff --git a/cbits/HsOpenSSL.c b/cbits/HsOpenSSL.c
--- a/cbits/HsOpenSSL.c
+++ b/cbits/HsOpenSSL.c
@@ -1,3 +1,4 @@
+#define HSOPENSSL_NEED_NOT_INCLUDE_CABAL_MACROS_H 1
 #include "HsOpenSSL.h"
 #include <stdint.h>
 #include "mutex.h"
@@ -205,7 +206,7 @@
 
 void HsOpenSSL_setupMutex() {
     int i;
-    
+
     mutex_at = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(*mutex_at));
 
     for (i = 0; i < CRYPTO_num_locks(); i++) {
@@ -214,7 +215,7 @@
 
     CRYPTO_set_locking_callback(HsOpenSSL_lockingCallback);
     CRYPTO_set_id_callback(HsOpenSSL_idCallback);
-    
+
     CRYPTO_set_dynlock_create_callback(HsOpenSSL_dynlockCreateCallback);
     CRYPTO_set_dynlock_lock_callback(HsOpenSSL_dynlockLockCallback);
     CRYPTO_set_dynlock_destroy_callback(HsOpenSSL_dynlockDestroyCallback);
diff --git a/cbits/HsOpenSSL.h b/cbits/HsOpenSSL.h
--- a/cbits/HsOpenSSL.h
+++ b/cbits/HsOpenSSL.h
@@ -23,10 +23,12 @@
 /* A dirty hack to work around for broken versions of Cabal:
  * https://github.com/phonohawk/HsOpenSSL/issues/8
  *
- * The trick is to abuse the fact that -Icbits is always passed to
- * hsc2hs so we can reach the cabal_macros.h from cbits.
+ * The trick is to abuse the fact that -Icbits is (almost) always
+ * passed to hsc2hs so we can reach the cabal_macros.h from cbits, but
+ * see #23, #24 and #25...
  */
-#if !defined(MIN_VERSION_base)
+#if !defined(MIN_VERSION_base) && \
+    !defined(HSOPENSSL_NEED_NOT_INCLUDE_CABAL_MACROS_H)
 #  include "../dist/build/autogen/cabal_macros.h"
 #endif
 
