Add support for including headers from C++

TEST=build
BUG=chromium:351168

Change-Id: I86fcf75d1cc7010b8f832f2b558f7407b98d018e
Reviewed-on: https://chromium-review.googlesource.com/189473
Tested-by: Michael Spang <spang@chromium.org>
Reviewed-by: Michael Spang <spang@chromium.org>
Commit-Queue: Michael Spang <spang@chromium.org>
diff --git a/include/libevdev/libevdev.h b/include/libevdev/libevdev.h
index e9d615b..ffce027 100644
--- a/include/libevdev/libevdev.h
+++ b/include/libevdev/libevdev.h
@@ -10,6 +10,10 @@
 #include <libevdev/libevdev_event.h>
 #include <libevdev/libevdev_mt.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #ifndef Success
 // from X.h
 #define Success 0
@@ -83,4 +87,8 @@
 int EvdevReadInfoFromFile(FILE* file, EvdevInfoPtr info);
 int EvdevReadEventFromFile(FILE* file, struct input_event* event);
 
+#ifdef __cplusplus
+}  // extern "C"
+#endif
+
 #endif
diff --git a/include/libevdev/libevdev_event.h b/include/libevdev/libevdev_event.h
index 7d7c4ee..496f030 100755
--- a/include/libevdev/libevdev_event.h
+++ b/include/libevdev/libevdev_event.h
@@ -11,6 +11,9 @@
 #include <libevdev/libevdev_log.h>
 #include <libevdev/libevdev_mt.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /* 1 MiB debug buffer of struct input_event objects */
 #define DEBUG_BUF_SIZE      65536
@@ -64,4 +67,8 @@
 const char* Event_Type_To_String(int type);
 const char* Evdev_Get_Version();
 
+#ifdef __cplusplus
+}  // extern "C"
+#endif
+
 #endif
diff --git a/include/libevdev/libevdev_log.h b/include/libevdev/libevdev_log.h
index 6938c59..3e7870e 100644
--- a/include/libevdev/libevdev_log.h
+++ b/include/libevdev/libevdev_log.h
@@ -12,6 +12,10 @@
 #include <stdlib.h>
 #include <string.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 struct Evdev_;
 typedef struct Evdev_ *EvdevPtr;
 
@@ -32,5 +36,8 @@
     (evdev)->log((evdev)->log_udata, LOGLEVEL_WARNING, \
     "%s():%d: " format, __FUNCTION__, __LINE__, ##__VA_ARGS__)
 
+#ifdef __cplusplus
+}  // extern "C"
+#endif
 
 #endif
diff --git a/include/libevdev/libevdev_mt.h b/include/libevdev/libevdev_mt.h
index df3e1c8..3ebed3e 100644
--- a/include/libevdev/libevdev_mt.h
+++ b/include/libevdev/libevdev_mt.h
@@ -11,6 +11,10 @@
 #include <stdint.h>
 #include <libevdev/libevdev_log.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /*
  * From include/linux/input.h
  * (as per linux-2.6.git:771d6d85667d68a17c24c452979f8d37cc628082)
@@ -55,4 +59,8 @@
 
 void MT_Slot_Sync(EvdevPtr, MTSlotInfoPtr);
 
+#ifdef __cplusplus
+}  // extern "C"
+#endif
+
 #endif
diff --git a/include/libevdev/libevdev_util.h b/include/libevdev/libevdev_util.h
index 37d5593..aeff7dc 100644
--- a/include/libevdev/libevdev_util.h
+++ b/include/libevdev/libevdev_util.h
@@ -6,6 +6,10 @@
 #ifndef _LIBEVDEV_UTIL_H_
 #define _LIBEVDEV_UTIL_H_
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 // Helper for bit operations
 #define LONG_BITS (sizeof(long) * 8)
 #define NLONGS(x) (((x) + LONG_BITS - 1) / LONG_BITS)
@@ -25,5 +29,8 @@
         array[bit / LONG_BITS] &= ~mask;
 }
 
+#ifdef __cplusplus
+}  // extern "C"
+#endif
 
 #endif