Fix and improve Windows/MinGW/MSYS build

 - Makefile: Use $(OS_ARCH) to add some MinGW-specific workarounds and
   settings, so that a simple "make" is sufficient on MinGW (instead of
   manual Makefile hacking).

 - Explicitly set CC=gcc in the Makefile, otherwise you get an error like
   "cc: command not found" on MinGW.

 - MinGW doesn't have ffs(), use gcc's __builtin_ffs() instead.

 - Add /usr/local/include and /usr/local/lib to CPPFLAGS/LDFLAGS, that's
   where libusb-win32 and libftdi stuff is usually placed on MinGW/MSYS.

 - Disable serprog (no sockets) and all PCI-based programmers (no libpci)
   for now. That leaves dummy, ft2232_spi, and buspirate_spi enabled on
   MinGW per default.

 - serial.c: Use correct type for 'tmp', both on Windows/MinGW (DWORD)
   and POSIX (ssize_t).

Corresponding to flashrom svn r1363.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
diff --git a/serial.c b/serial.c
index 37ea422..5cc2fe0 100644
--- a/serial.c
+++ b/serial.c
@@ -192,7 +192,11 @@
 
 int serialport_write(unsigned char *buf, unsigned int writecnt)
 {
-	long tmp = 0;
+#ifdef _WIN32
+	DWORD tmp = 0;
+#else
+	ssize_t tmp = 0;
+#endif
 
 	while (writecnt > 0) {
 #ifdef _WIN32
@@ -215,7 +219,11 @@
 
 int serialport_read(unsigned char *buf, unsigned int readcnt)
 {
-	long tmp = 0;
+#ifdef _WIN32
+	DWORD tmp = 0;
+#else
+	ssize_t tmp = 0;
+#endif
 
 	while (readcnt > 0) {
 #ifdef _WIN32