Various cross-platform fixes

Improve compilation with libpayload (compiling flashrom.c and
linking is still broken):
 - disable Ponyprog (which enforced serial.c compilation)
 - make errno available where it is needed

Fix internal.c for non-x86 and enable cb parsing on ARM.

Fix mingw builds by using its __USE_MINGW_ANSI_STDIO macro
and gnu_printf definition for printf format style checking.
See http://sourceforge.net/apps/trac/mingw-w64/wiki/gnu%20printf
This requires inclusion of stdio.h in flash.h.

Fix order of libraries in the Makefile:
FEATURE_LIBS needs to come *after* PCILIBS in case ZLIB is needed by it.

Corresponding to flashrom svn r1697.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
diff --git a/physmap.c b/physmap.c
index 3c3f27b..6e3d646 100644
--- a/physmap.c
+++ b/physmap.c
@@ -24,14 +24,14 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <errno.h>
 #include "flash.h"
 #include "hwaccess.h"
 
-/* Do we need any file access or ioctl for physmap or MSR? */
 #if !defined(__DJGPP__) && !defined(__LIBPAYLOAD__)
+/* No file access needed/possible to get mmap access permissions or access MSR. */
 #include <sys/stat.h>
 #include <fcntl.h>
-#include <errno.h>
 #endif
 
 #ifdef __DJGPP__
@@ -120,15 +120,6 @@
 void physunmap(void *virt_addr, size_t len)
 {
 }
-
-int setup_cpu_msr(int cpu)
-{
-	return 0;
-}
-
-void cleanup_cpu_msr(void)
-{
-}
 #elif defined(__MACH__) && defined(__APPLE__)
 
 #define MEM_DEV "DirectHW"
@@ -569,6 +560,15 @@
 	_wrmsr(addr, msr.lo | ((unsigned long long)msr.hi << 32));
 	return 0;
 }
+
+int setup_cpu_msr(int cpu)
+{
+	return 0;
+}
+
+void cleanup_cpu_msr(void)
+{
+}
 #else
 /* default MSR implementation */
 msr_t rdmsr(int addr)