diff --git a/flashrom.c b/flashrom.c
index c7ad92c..d08c130 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -27,9 +27,7 @@
 #include <stdlib.h>
 #include <errno.h>
 #include <ctype.h>
-#if HAVE_UTSNAME == 1
-#include <sys/utsname.h>
-#endif
+
 #include "flash.h"
 #include "flashchips.h"
 #include "programmer.h"
@@ -1378,86 +1376,6 @@
 	}
 }
 
-static void print_sysinfo(void)
-{
-#if IS_WINDOWS
-	SYSTEM_INFO si = { 0 };
-	OSVERSIONINFOEX osvi = { 0 };
-
-	msg_ginfo(" on Windows");
-	/* Tell Windows which version of the structure we want. */
-	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
-	if (GetVersionEx((OSVERSIONINFO*) &osvi))
-		msg_ginfo(" %lu.%lu", osvi.dwMajorVersion, osvi.dwMinorVersion);
-	else
-		msg_ginfo(" unknown version");
-	GetSystemInfo(&si);
-	switch (si.wProcessorArchitecture) {
-	case PROCESSOR_ARCHITECTURE_AMD64:
-		msg_ginfo(" (x86_64)");
-		break;
-	case PROCESSOR_ARCHITECTURE_INTEL:
-		msg_ginfo(" (x86)");
-		break;
-	default:
-		msg_ginfo(" (unknown arch)");
-		break;
-	}
-#elif HAVE_UTSNAME == 1
-	struct utsname osinfo;
-
-	uname(&osinfo);
-	msg_ginfo(" on %s %s (%s)", osinfo.sysname, osinfo.release,
-		  osinfo.machine);
-#else
-	msg_ginfo(" on unknown machine");
-#endif
-}
-
-void print_buildinfo(void)
-{
-	msg_gdbg("flashrom was built with");
-#ifdef __clang__
-	msg_gdbg(" LLVM Clang");
-#ifdef __clang_version__
-	msg_gdbg(" %s,", __clang_version__);
-#else
-	msg_gdbg(" unknown version (before r102686),");
-#endif
-#elif defined(__GNUC__)
-	msg_gdbg(" GCC");
-#ifdef __VERSION__
-	msg_gdbg(" %s,", __VERSION__);
-#else
-	msg_gdbg(" unknown version,");
-#endif
-#else
-	msg_gdbg(" unknown compiler,");
-#endif
-#if defined (__FLASHROM_LITTLE_ENDIAN__)
-	msg_gdbg(" little endian");
-#elif defined (__FLASHROM_BIG_ENDIAN__)
-	msg_gdbg(" big endian");
-#else
-#error Endianness could not be determined
-#endif
-	msg_gdbg("\n");
-}
-
-void print_version(void)
-{
-	msg_ginfo("flashrom-stable %s", flashrom_version);
-	print_sysinfo();
-	msg_ginfo("\n");
-}
-
-void print_banner(void)
-{
-	msg_ginfo("flashrom is free software, get the source code at "
-		  "https://flashrom.org\n");
-	msg_ginfo("\n");
-}
-
 int selfcheck(void)
 {
 	unsigned int i;
diff --git a/include/flash.h b/include/flash.h
index 27b3aae..38e583a 100644
--- a/include/flash.h
+++ b/include/flash.h
@@ -383,6 +383,9 @@
 void chip_readn(const struct flashctx *flash, uint8_t *buf, const chipaddr addr, size_t len);
 
 /* print.c */
+void print_buildinfo(void);
+void print_version(void);
+void print_banner(void);
 int print_supported(void);
 void print_supported_wiki(void);
 
@@ -418,9 +421,6 @@
 int probe_flash(struct registered_master *mst, int startchip, struct flashctx *fill_flash, int force);
 int verify_range(struct flashctx *flash, const uint8_t *cmpbuf, unsigned int start, unsigned int len);
 void emergency_help_message(void);
-void print_version(void);
-void print_buildinfo(void);
-void print_banner(void);
 void list_programmers_linebreak(int startcol, int cols, int paren);
 int selfcheck(void);
 int read_buf_from_file(unsigned char *buf, unsigned long size, const char *filename);
diff --git a/print.c b/print.c
index 1f6bece..b1511ad 100644
--- a/print.c
+++ b/print.c
@@ -20,9 +20,98 @@
 #include <string.h>
 #include <stdlib.h>
 #include <stddef.h>
+#if HAVE_UTSNAME == 1
+#include <sys/utsname.h>
+#endif
+#if IS_WINDOWS
+#include <windows.h>
+#undef min
+#undef max
+#endif
+
 #include "flash.h"
 #include "programmer.h"
 
+static void print_sysinfo(void)
+{
+#if IS_WINDOWS
+	SYSTEM_INFO si = { 0 };
+	OSVERSIONINFOEX osvi = { 0 };
+
+	msg_ginfo(" on Windows");
+	/* Tell Windows which version of the structure we want. */
+	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+	if (GetVersionEx((OSVERSIONINFO*) &osvi))
+		msg_ginfo(" %lu.%lu", osvi.dwMajorVersion, osvi.dwMinorVersion);
+	else
+		msg_ginfo(" unknown version");
+	GetSystemInfo(&si);
+	switch (si.wProcessorArchitecture) {
+	case PROCESSOR_ARCHITECTURE_AMD64:
+		msg_ginfo(" (x86_64)");
+		break;
+	case PROCESSOR_ARCHITECTURE_INTEL:
+		msg_ginfo(" (x86)");
+		break;
+	default:
+		msg_ginfo(" (unknown arch)");
+		break;
+	}
+#elif HAVE_UTSNAME == 1
+	struct utsname osinfo;
+
+	uname(&osinfo);
+	msg_ginfo(" on %s %s (%s)", osinfo.sysname, osinfo.release,
+		  osinfo.machine);
+#else
+	msg_ginfo(" on unknown machine");
+#endif
+}
+
+void print_buildinfo(void)
+{
+	msg_gdbg("flashrom was built with");
+#ifdef __clang__
+	msg_gdbg(" LLVM Clang");
+#ifdef __clang_version__
+	msg_gdbg(" %s,", __clang_version__);
+#else
+	msg_gdbg(" unknown version (before r102686),");
+#endif
+#elif defined(__GNUC__)
+	msg_gdbg(" GCC");
+#ifdef __VERSION__
+	msg_gdbg(" %s,", __VERSION__);
+#else
+	msg_gdbg(" unknown version,");
+#endif
+#else
+	msg_gdbg(" unknown compiler,");
+#endif
+#if defined (__FLASHROM_LITTLE_ENDIAN__)
+	msg_gdbg(" little endian");
+#elif defined (__FLASHROM_BIG_ENDIAN__)
+	msg_gdbg(" big endian");
+#else
+#error Endianness could not be determined
+#endif
+	msg_gdbg("\n");
+}
+
+void print_version(void)
+{
+	msg_ginfo("flashrom-stable %s", flashrom_version);
+	print_sysinfo();
+	msg_ginfo("\n");
+}
+
+void print_banner(void)
+{
+	msg_ginfo("flashrom is free software, get the source code at "
+		  "https://flashrom.org\n");
+	msg_ginfo("\n");
+}
+
 static const char *test_state_to_text(enum test_state test_state)
 {
 	switch (test_state) {
