libftdi Archives

Subject: [PATCH 1/3] Fix mingw build issue caused by "interface" preprocessor definition

From: Paul Fertser <fercerpav@xxxxxxxxx>
To: libftdi@xxxxxxxxxxxxxxxxxxxxxxx
Cc: Paul Fertser <fercerpav@xxxxxxxxx>
Date: Wed, 7 Aug 2013 14:35:46 +0400
Due to a weird odditie of windows, mingw has to redefine "interface" to
"struct" in its headers as described e.g. at
https://bugzilla.redhat.com/show_bug.cgi?id=980270

So if some software includes windows.h before ftdi.h, it'll lead to a
build failure. This snippet, borrowed from libusb, fixes it.

Signed-off-by: Paul Fertser <fercerpav@xxxxxxxxx>
---
 src/ftdi.h |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/src/ftdi.h b/src/ftdi.h
index 15067c7..3d97dd9 100644
--- a/src/ftdi.h
+++ b/src/ftdi.h
@@ -20,6 +20,18 @@
 #include <stdint.h>
 #include <sys/time.h>
 
+/* 'interface' might be defined as a macro on Windows, so we need to
+ * undefine it so as not to break the current libftdi API, because
+ * struct ftdi_context has an 'interface' member
+ * As this can be problematic if you include windows.h after ftdi.h
+ * in your sources, we force windows.h to be included first. */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+#include <windows.h>
+#if defined(interface)
+#undef interface
+#endif
+#endif
+
 /** FTDI chip type */
 enum ftdi_chip_type
 {
-- 
1.7.7


--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx   

Current Thread