diff --git a/eekboard/Makefile.am b/eekboard/Makefile.am
index 0588f54d..61c8a172 100644
--- a/eekboard/Makefile.am
+++ b/eekboard/Makefile.am
@@ -27,7 +27,7 @@ libeekboard_sources =				\
 	eekboard-context.c
 
 libeekboard_la_SOURCES = $(libeekboard_sources)
-libeekboard_la_CFLAGS = -I$(top_srcdir) $(GIO2_CFLAGS)
+libeekboard_la_CFLAGS = -DEEKBOARD_COMPILATION=1 -I$(top_srcdir) $(GIO2_CFLAGS)
 libeekboard_la_LIBADD = $(top_builddir)/eek/libeek.la $(GIO2_LIBS)
 
 eekboarddir = $(includedir)/eekboard-$(EEK_API_VERSION)/eekboard
diff --git a/eekboard/eekboard-context.h b/eekboard/eekboard-context.h
index 829c645e..79fcb004 100644
--- a/eekboard/eekboard-context.h
+++ b/eekboard/eekboard-context.h
@@ -15,6 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see .
  */
+
+#if !defined(__EEKBOARD_H_INSIDE__) && !defined(EEKBOARD_COMPILATION)
+#error "Only  can be included directly."
+#endif
+
 #ifndef EEKBOARD_CONTEXT_H
 #define EEKBOARD_CONTEXT_H 1
 
diff --git a/eekboard/eekboard-eekboard.h b/eekboard/eekboard-eekboard.h
index bf944004..c0e06270 100644
--- a/eekboard/eekboard-eekboard.h
+++ b/eekboard/eekboard-eekboard.h
@@ -15,6 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see .
  */
+
+#if !defined(__EEKBOARD_H_INSIDE__) && !defined(EEKBOARD_COMPILATION)
+#error "Only  can be included directly."
+#endif
+
 #ifndef EEKBOARD_EEKBOARD_H
 #define EEKBOARD_EEKBOARD_H 1
 
diff --git a/eekboard/eekboard.h b/eekboard/eekboard.h
index 4b9e152a..cb6a8498 100644
--- a/eekboard/eekboard.h
+++ b/eekboard/eekboard.h
@@ -18,6 +18,8 @@
 #ifndef EEKBOARD_H
 #define EEKBOARD_H 1
 
+#define __EEKBOARD_H_INSIDE__ 1
+
 #include "eekboard/eekboard-eekboard.h"
 #include "eekboard/eekboard-context.h"