diff --git a/cbits/hsncurses-shim.h b/cbits/hsncurses-shim.h
--- a/cbits/hsncurses-shim.h
+++ b/cbits/hsncurses-shim.h
@@ -1,3 +1,6 @@
+#ifndef HASKELL_NCURSES_SHIM_H
+#define HASKELL_NCURSES_SHIM_H
+
 #include <wchar.h>
 
 #define NCURSES_ENABLE_STDBOOL_H 0
@@ -13,3 +16,5 @@
 int hsncurses_has_mouse();
 
 int hsncurses_wget_wch(WINDOW *, wint_t *);
+
+#endif
diff --git a/lib/UI/NCurses.chs b/lib/UI/NCurses.chs
--- a/lib/UI/NCurses.chs
+++ b/lib/UI/NCurses.chs
@@ -148,7 +148,7 @@
 import qualified UI.NCurses.Enums as E
 import           UI.NCurses.Types
 
-#include <string.h>
+#include "cbits/mavericks-c2hs-workaround.h"
 
 -- Note: c2hs has a hard time with the ncurses macros, and will choke on
 -- waddwstr() if NCURSES_NOMACROS is not defined prior to including
diff --git a/lib/UI/NCurses/Enums.chs b/lib/UI/NCurses/Enums.chs
--- a/lib/UI/NCurses/Enums.chs
+++ b/lib/UI/NCurses/Enums.chs
@@ -20,6 +20,8 @@
 
 import           Prelude (Integer, error, show, (++))
 
+#include "cbits/mavericks-c2hs-workaround.h"
+
 #define NCURSES_ENABLE_STDBOOL_H 0
 #define _XOPEN_SOURCE_EXTENDED
 #define NCURSES_NOMACROS
diff --git a/lib/UI/NCurses/Panel.chs b/lib/UI/NCurses/Panel.chs
--- a/lib/UI/NCurses/Panel.chs
+++ b/lib/UI/NCurses/Panel.chs
@@ -40,6 +40,8 @@
 import           UI.NCurses (render) -- for haddock
 import           UI.NCurses.Types
 
+#include "cbits/mavericks-c2hs-workaround.h"
+
 #ifdef HSNCURSES_NARROW_HEADER
 #include <panel.h>
 #else
diff --git a/ncurses.cabal b/ncurses.cabal
--- a/ncurses.cabal
+++ b/ncurses.cabal
@@ -1,5 +1,5 @@
 name: ncurses
-version: 0.2.8
+version: 0.2.9
 license: GPL-3
 license-file: license.txt
 author: John Millikin <jmillikin@gmail.com>
@@ -56,7 +56,7 @@
 source-repository this
   type: git
   location: https://john-millikin.com/code/haskell-ncurses/
-  tag: haskell-ncurses_0.2.8
+  tag: haskell-ncurses_0.2.9
 
 -- Do not use default to using pkg-config to find ncurses libraries, because
 -- the .pc files are missing or broken in many installations.
@@ -100,8 +100,9 @@
     --
     -- Explicitly linking against libpthread.so fixes a build problem on
     -- platforms where the linker doesn't automatically follow dependencies.
-    if os(darwin) || flag(force-narrow-library)
+    if os(darwin) || os(freebsd) || flag(force-narrow-library)
       cc-options: -DHSNCURSES_NARROW_HEADER
+    if os(darwin) || flag(force-narrow-library)
       extra-libraries: panel ncurses pthread
     else
       extra-libraries: panelw ncursesw pthread
