If FT2232H SPI is not enabled, it should be compiled out completely

We can't remove ft2232_spi.o from unconditional OBJS yet due to our
makefile structure (make features), but this patch adds #ifdefs around
all FT2232H code, so the net effect is the same.

Corresponding to flashrom svn r691.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
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: