diff --git a/flash.h b/flash.h
index a571be7..c5234dc 100644
--- a/flash.h
+++ b/flash.h
@@ -86,7 +86,9 @@
 	PROGRAMMER_NIC3COM,
 	PROGRAMMER_SATASII,
 	PROGRAMMER_IT87SPI,
+#if FT2232_SPI_SUPPORT == 1
 	PROGRAMMER_FT2232SPI,
+#endif
 #if SERPROG_SUPPORT == 1
 	PROGRAMMER_SERPROG,
 #endif
@@ -436,9 +438,13 @@
 	SPI_CONTROLLER_SB600,
 	SPI_CONTROLLER_VIA,
 	SPI_CONTROLLER_WBSIO,
+#if FT2232_SPI_SUPPORT == 1
 	SPI_CONTROLLER_FT2232,
+#endif
 	SPI_CONTROLLER_DUMMY,
+	SPI_CONTROLLER_INVALID /* This must always be the last entry. */
 };
+extern const int spi_programmer_count;
 struct spi_command {
 	unsigned int writecnt;
 	unsigned int readcnt;
diff --git a/flashrom.c b/flashrom.c
index acdb38b..fb45bd0 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -122,6 +122,7 @@
 		.delay			= internal_delay,
 	},
 
+#if FT2232_SPI_SUPPORT == 1
 	{
 		.name			= "ft2232spi",
 		.init			= ft2232_spi_init,
@@ -138,6 +139,7 @@
 		.chip_writen		= fallback_chip_writen,
 		.delay			= internal_delay,
 	},
+#endif
 
 #if SERPROG_SUPPORT == 1
 	{
@@ -610,6 +612,10 @@
 		fprintf(stderr, "Programmer table miscompilation!\n");
 		exit(1);
 	}
+	if (spi_programmer_count - 1 != SPI_CONTROLLER_INVALID) {
+		fprintf(stderr, "SPI programmer table miscompilation!\n");
+		exit(1);
+	}
 
 	setbuf(stdout, NULL);
 	while ((opt = getopt_long(argc, argv, "rRwvnVEfc:m:l:i:p:Lzh",
diff --git a/ft2232_spi.c b/ft2232_spi.c
index db4db17..00490fe 100644
--- a/ft2232_spi.c
+++ b/ft2232_spi.c
@@ -18,6 +18,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#if FT2232_SPI_SUPPORT == 1
+
 #include <stdio.h>
 #include <stdint.h>
 #include <string.h>
@@ -25,9 +27,6 @@
 #include <ctype.h>
 #include "flash.h"
 #include "spi.h"
-
-#if FT2232_SPI_SUPPORT == 1
-
 #include <ftdi.h>
 
 /* the 'H' chips can run internally at either 12Mhz or 60Mhz.
@@ -297,29 +296,4 @@
 	return 0;
 }
 
-#else
-int ft2232_spi_init(void)
-{
-	fprintf(stderr, "FT2232 SPI support was not compiled in\n");
-	exit(1);
-}
-
-int ft2232_spi_send_command(unsigned int writecnt, unsigned int readcnt,
-		const unsigned char *writearr, unsigned char *readarr)
-{
-	fprintf(stderr, "FT2232 SPI support was not compiled in\n");
-	exit(1);
-}
-
-int ft2232_spi_read(struct flashchip *flash, uint8_t *buf, int start, int len)
-{
-	fprintf(stderr, "FT2232 SPI support was not compiled in\n");
-	exit(1);
-}
-
-int ft2232_spi_write_256(struct flashchip *flash, uint8_t *buf)
-{
-	fprintf(stderr, "FT2232 SPI support was not compiled in\n");
-	exit(1);
-}
 #endif
diff --git a/spi.c b/spi.c
index 85d1e47..7f678a1 100644
--- a/spi.c
+++ b/spi.c
@@ -82,12 +82,14 @@
 		.write_256 = wbsio_spi_write_1,
 	},
 
+#if FT2232_SPI_SUPPORT == 1
 	{ /* SPI_CONTROLLER_FT2232 */
 		.command = ft2232_spi_send_command,
 		.multicommand = default_spi_send_multicommand,
 		.read = ft2232_spi_read,
 		.write_256 = ft2232_spi_write_256,
 	},
+#endif
 
 	{ /* SPI_CONTROLLER_DUMMY */
 		.command = dummy_spi_send_command,
@@ -95,8 +97,11 @@
 		.read = NULL,
 		.write_256 = NULL,
 	},
+
+	{}, /* This entry corresponds to SPI_CONTROLLER_INVALID. */
 };
 
+const int spi_programmer_count = ARRAY_SIZE(spi_programmer);
 
 int spi_send_command(unsigned int writecnt, unsigned int readcnt,
 		const unsigned char *writearr, unsigned char *readarr)
@@ -293,7 +298,9 @@
 	case SPI_CONTROLLER_VIA:
 	case SPI_CONTROLLER_SB600:
 	case SPI_CONTROLLER_WBSIO:
+#if FT2232_SPI_SUPPORT == 1
 	case SPI_CONTROLLER_FT2232:
+#endif
 	case SPI_CONTROLLER_DUMMY:
 		return probe_spi_rdid_generic(flash, 4);
 	default:
