diff --git a/src/jtag/amt_jtagaccel.c b/src/jtag/amt_jtagaccel.c
index 0271c018692e682ed76a56170ebacd1411235fce..df44da004f3e2960a2069540d7ef9862228f7395 100644
--- a/src/jtag/amt_jtagaccel.c
+++ b/src/jtag/amt_jtagaccel.c
@@ -21,6 +21,7 @@
 #include "config.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 
 
diff --git a/src/jtag/arm-jtag-ew.c b/src/jtag/arm-jtag-ew.c
index 180f40d105dfbef4f1ff3b78cb08080099887b70..a997956cacfd368fd82c60b29c53e19f6685adec 100644
--- a/src/jtag/arm-jtag-ew.c
+++ b/src/jtag/arm-jtag-ew.c
@@ -24,6 +24,7 @@
 #include "config.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 #include <usb.h>
 
diff --git a/src/jtag/at91rm9200.c b/src/jtag/at91rm9200.c
index 9f15b1a09f5b065a67687b8ecc659969adc86c39..d324978845fde7bde529d1f7a7027f36370f2e70 100644
--- a/src/jtag/at91rm9200.c
+++ b/src/jtag/at91rm9200.c
@@ -21,6 +21,7 @@
 #include "config.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 #include "bitbang.h"
 
diff --git a/src/jtag/bitbang.c b/src/jtag/bitbang.c
index ce4fa19ff7335a1a74446af176d403478bd3bb1a..9d50dcc8db35b98a3e042a1c3e4f2e2ff22fa479 100644
--- a/src/jtag/bitbang.c
+++ b/src/jtag/bitbang.c
@@ -25,6 +25,7 @@
 #endif
 
 #include "bitbang.h"
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 
 /**
diff --git a/src/jtag/bitq.c b/src/jtag/bitq.c
index eaf7a63e0f2581f37586b86ac46e37ff58e98cde..40b704b9ed04f8d5b396af094f09a81395eed4da 100644
--- a/src/jtag/bitq.c
+++ b/src/jtag/bitq.c
@@ -21,6 +21,7 @@
 #include "config.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "bitq.h"
 
 
diff --git a/src/jtag/dummy.c b/src/jtag/dummy.c
index bbed1d4cbe4cc69079a35474bd5280275185bb5c..cc799faa9478a1f55b4d564ad91c3b7ddc183728 100644
--- a/src/jtag/dummy.c
+++ b/src/jtag/dummy.c
@@ -21,6 +21,7 @@
 #include "config.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 #include "bitbang.h"
 
diff --git a/src/jtag/ep93xx.c b/src/jtag/ep93xx.c
index 1f422314827b59d526b5f1c2c72df147eaaf31da..0ac4c2f0ab8a698b47cb849d771317ba9236a4f1 100644
--- a/src/jtag/ep93xx.c
+++ b/src/jtag/ep93xx.c
@@ -21,6 +21,7 @@
 #include "config.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 #include "bitbang.h"
 
diff --git a/src/jtag/ft2232.c b/src/jtag/ft2232.c
index 779923ec1d9941e5a51d0ed7f1af2e48bc4b687e..b4415983f96f8aa0771ce2afe37d8fcde2c13569 100644
--- a/src/jtag/ft2232.c
+++ b/src/jtag/ft2232.c
@@ -40,6 +40,7 @@
 #endif
 
 /* project specific includes */
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 #include "time_support.h"
 
diff --git a/src/jtag/gw16012.c b/src/jtag/gw16012.c
index f5f8b8660cb1d441e5090e53c8e019defbee6d05..8d59e25dd45e41cd183cb098cca55c02cb9b53c5 100644
--- a/src/jtag/gw16012.c
+++ b/src/jtag/gw16012.c
@@ -21,6 +21,7 @@
 #include "config.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 
 
diff --git a/src/jtag/jlink.c b/src/jtag/jlink.c
index 4a800f7a213b39c54e282ed27150e67db05e1836..accc6b5f9adc02c69520dadad63037460f873219 100644
--- a/src/jtag/jlink.c
+++ b/src/jtag/jlink.c
@@ -25,6 +25,7 @@
 #include "config.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 
 #include <usb.h>
diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c
index 303b43416629b1fdd349cac40c1d7ce73243c70c..d0cb43321396cdd4e849a462ba21f7b0b747a11c 100644
--- a/src/jtag/jtag.c
+++ b/src/jtag/jtag.c
@@ -29,6 +29,7 @@
 #endif
 
 #define INCLUDE_JTAG_MINIDRIVER_H
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 
 #ifdef HAVE_STRINGS_H
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h
index 81d8748b75be068c0de364bbbb4bd9c6ecc4cdcb..83ce28af9c7ac7c6de223d337f8174b55db7a6f5 100644
--- a/src/jtag/jtag.h
+++ b/src/jtag/jtag.h
@@ -105,6 +105,8 @@ typedef struct tap_transition_s
 //extern tap_transition_t tap_transitions[16];    /* describe the TAP state diagram */
 
 
+#ifdef INCLUDE_JTAG_INTERFACE_H
+
 /*-----<Cable Helper API>-------------------------------------------*/
 
 /* The "Cable Helper API" is what the cable drivers can use to help implement
@@ -254,6 +256,8 @@ static inline tap_state_t jtag_debug_state_machine(const void *tms_buf,
 
 /*-----</Cable Helper API>------------------------------------------*/
 
+#endif // INCLUDE_JTAG_INTERFACE_H
+
 
 extern tap_state_t cmd_queue_end_state;         /* finish DR scans in dr_end_state */
 extern tap_state_t cmd_queue_cur_state;         /* current TAP state */
@@ -428,6 +432,8 @@ enum reset_line_mode {
 	LINE_PUSH_PULL  = 0x1,
 };
 
+#ifdef INCLUDE_JTAG_INTERFACE_H
+
 typedef struct jtag_interface_s
 {
 	char* name;
@@ -477,6 +483,8 @@ typedef struct jtag_interface_s
 	int (*srst_asserted)(int* srst_asserted);
 } jtag_interface_t;
 
+#endif // INCLUDE_JTAG_INTERFACE_H
+
 enum jtag_event {
 	JTAG_TRST_ASSERTED
 };
diff --git a/src/jtag/parport.c b/src/jtag/parport.c
index 74c01208ff856bec76e739e53f14f16900e4f663..4bb5e7437c710ad7952f14f2f0af93c782812a52 100644
--- a/src/jtag/parport.c
+++ b/src/jtag/parport.c
@@ -24,6 +24,7 @@
 #include "config.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 #include "bitbang.h"
 
diff --git a/src/jtag/presto.c b/src/jtag/presto.c
index 334db76e907dca6a7084e4bf601af31078e209e1..56543e6ab8033459bf091899a9000279f5f55fdf 100644
--- a/src/jtag/presto.c
+++ b/src/jtag/presto.c
@@ -25,6 +25,7 @@
 #include "windows.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 #include "time_support.h"
 #include "bitq.h"
diff --git a/src/jtag/rlink/rlink.c b/src/jtag/rlink/rlink.c
index 7cebfcd9349bb421f857d0dd2fc97ac2a01108d5..adb5f34f542618458469a2216668df10dd1d4e16 100644
--- a/src/jtag/rlink/rlink.c
+++ b/src/jtag/rlink/rlink.c
@@ -28,6 +28,7 @@
 #endif
 
 /* project specific includes */
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 #include "rlink.h"
 #include "st7.h"
diff --git a/src/jtag/usbprog.c b/src/jtag/usbprog.c
index dfde29551f2f9548e79763947c47763d11ef4e80..7e843901fe7fbdf0bf2afe708285488c9eafeb22 100644
--- a/src/jtag/usbprog.c
+++ b/src/jtag/usbprog.c
@@ -34,6 +34,7 @@
 #include "config.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 
 #include <usb.h>
diff --git a/src/jtag/vsllink.c b/src/jtag/vsllink.c
index 79444a9f7c66ce0c368787da1c6d2fc39354749b..b3a475b0461ffd2c202e35543af958211e93137d 100644
--- a/src/jtag/vsllink.c
+++ b/src/jtag/vsllink.c
@@ -26,6 +26,7 @@
 #include "config.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "jtag.h"
 
 #include <usb.h>
diff --git a/src/jtag/zy1000.c b/src/jtag/zy1000.c
index 3db893a2923c9d36aaf42d205be67397d36edd87..cfe40f4c2166939bce89c14d8115283776fc0958 100644
--- a/src/jtag/zy1000.c
+++ b/src/jtag/zy1000.c
@@ -21,6 +21,7 @@
 #endif
 
 #define INCLUDE_JTAG_MINIDRIVER_H
+#define INCLUDE_JTAG_INTERFACE_H
 #include "embeddedice.h"
 #include "bitbang.h"
 
diff --git a/src/xsvf/xsvf.c b/src/xsvf/xsvf.c
index 0ec9f4dca23a37a1498094f09da8abbc70e29a22..6d355911810f3994a33bf7dd177ae15d70ffbee8 100644
--- a/src/xsvf/xsvf.c
+++ b/src/xsvf/xsvf.c
@@ -41,6 +41,7 @@
 #include "config.h"
 #endif
 
+#define INCLUDE_JTAG_INTERFACE_H
 #include "xsvf.h"
 #include "jtag.h"