build: Prepare config.h for inclusion in examples/tests

There are certain games played in the examples and tests source to
account for differences in build environments and target platforms. This
can be simplified by including config.h and using the definitions there.

To that end, move the printf function attribute definition from
libusbi.h to config.h and leverage it where it is used in the examples
and tests.

Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
diff --git a/Xcode/config.h b/Xcode/config.h
index cbb7d26..59f3463 100644
--- a/Xcode/config.h
+++ b/Xcode/config.h
@@ -29,5 +29,9 @@
 /* Define to 1 if compiling for a POSIX platform. */
 #define PLATFORM_POSIX 1
 
+/* Define to the attribute for enabling parameter checks on printf-like
+   functions. */
+#define PRINTF_FORMAT(a, b) __attribute__ ((__format__ (__printf__, a, b)))
+
 /* Enable GNU extensions. */
 #define _GNU_SOURCE 1
diff --git a/android/config.h b/android/config.h
index 12172f6..1092f65 100644
--- a/android/config.h
+++ b/android/config.h
@@ -44,6 +44,10 @@
 /* Define to 1 if compiling for a POSIX platform. */
 #define PLATFORM_POSIX 1
 
+/* Define to the attribute for enabling parameter checks on printf-like
+   functions. */
+#define PRINTF_FORMAT(a, b) __attribute__ ((__format__ (__printf__, a, b)))
+
 /* Define to 1 to output logging messages to the systemwide log. */
 #define USE_SYSTEM_LOGGING_FACILITY 1
 
diff --git a/configure.ac b/configure.ac
index 4025649..9806c24 100644
--- a/configure.ac
+++ b/configure.ac
@@ -67,6 +67,7 @@
 
 AC_DEFINE([_GNU_SOURCE], [1], [Enable GNU extensions.])
 AC_DEFINE([DEFAULT_VISIBILITY], [__attribute__ ((visibility ("default")))], [Define to the attribute for default visibility.])
+AC_DEFINE([PRINTF_FORMAT(a, b)], [__attribute__ ((__format__ (__printf__, a, b)))], [Define to the attribute for enabling parameter checks on printf-like functions.])
 
 create_import_lib=
 is_android_linux=
diff --git a/examples/ezusb.c b/examples/ezusb.c
index 4fe9e65..6abd47d 100644
--- a/examples/ezusb.c
+++ b/examples/ezusb.c
@@ -20,6 +20,9 @@
  *    along with this program; if not, write to the Free Software
  *    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
+
+#include <config.h>
+
 #include <stdio.h>
 #include <errno.h>
 #include <stdlib.h>
@@ -29,9 +32,6 @@
 #include "libusb.h"
 #include "ezusb.h"
 
-extern void logerror(const char *format, ...)
-	__attribute__ ((format(printf, 1, 2)));
-
 /*
  * This file contains functions for uploading firmware into Cypress
  * EZ-USB microcontrollers. These chips use control endpoint 0 and vendor
diff --git a/examples/ezusb.h b/examples/ezusb.h
index 12d3d9d..62062c4 100644
--- a/examples/ezusb.h
+++ b/examples/ezusb.h
@@ -21,12 +21,7 @@
  *    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
 
-#if defined(_MSC_VER)
-#define __attribute__(x)
-#if defined(_PREFAST_)
-#pragma warning(disable:28193)
-#endif
-#endif
+#include <config.h>
 
 #include <stdbool.h>
 
@@ -105,6 +100,8 @@
 /* Verbosity level (default 1). Can be increased or decreased with options v/q  */
 extern int verbose;
 
+extern void logerror(const char *format, ...) PRINTF_FORMAT(1, 2);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/examples/fxload.c b/examples/fxload.c
index 114b19b..541c3d3 100644
--- a/examples/fxload.c
+++ b/examples/fxload.c
@@ -21,6 +21,8 @@
  *    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
 
+#include <config.h>
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -48,9 +50,6 @@
 #endif
 
 void logerror(const char *format, ...)
-	__attribute__ ((format (__printf__, 1, 2)));
-
-void logerror(const char *format, ...)
 {
 	va_list ap;
 	va_start(ap, format);
diff --git a/libusb/libusbi.h b/libusb/libusbi.h
index 1249983..491114b 100644
--- a/libusb/libusbi.h
+++ b/libusb/libusbi.h
@@ -101,16 +101,6 @@
  */
 #define API_EXPORTED LIBUSB_CALL DEFAULT_VISIBILITY
 
-/* Macro to decorate printf-like functions, in order to get
- * compiler warnings about format string mistakes.
- */
-#ifndef _MSC_VER
-#define USBI_PRINTFLIKE(formatarg, firstvararg) \
-	__attribute__ ((__format__ (__printf__, formatarg, firstvararg)))
-#else
-#define USBI_PRINTFLIKE(formatarg, firstvararg)
-#endif
-
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -292,7 +282,7 @@
 #endif /* defined(_MSC_VER) && (_MSC_VER < 1900) */
 
 void usbi_log(struct libusb_context *ctx, enum libusb_log_level level,
-	const char *function, const char *format, ...) USBI_PRINTFLIKE(4, 5);
+	const char *function, const char *format, ...) PRINTF_FORMAT(4, 5);
 
 #define _usbi_log(ctx, level, ...) usbi_log(ctx, level, __func__, __VA_ARGS__)
 
diff --git a/libusb/version_nano.h b/libusb/version_nano.h
index 593d086..3105725 100644
--- a/libusb/version_nano.h
+++ b/libusb/version_nano.h
@@ -1 +1 @@
-#define LIBUSB_NANO 11576
+#define LIBUSB_NANO 11577
diff --git a/msvc/config.h b/msvc/config.h
index 2e0a01a..8aafd9d 100644
--- a/msvc/config.h
+++ b/msvc/config.h
@@ -50,5 +50,9 @@
 /* Define to 1 if compiling for a Windows platform. */
 #define PLATFORM_WINDOWS 1
 
+/* Define to the attribute for enabling parameter checks on printf-like
+   functions. */
+#define PRINTF_FORMAT(a, b) /**/
+
 /* Define to 1 to output logging messages to the systemwide log. */
 /* #undef USE_SYSTEM_LOGGING_FACILITY */
diff --git a/msvc/fxload_2013.vcxproj b/msvc/fxload_2013.vcxproj
index 00f5c8d..2419fe9 100644
--- a/msvc/fxload_2013.vcxproj
+++ b/msvc/fxload_2013.vcxproj
@@ -73,6 +73,7 @@
     <ClCompile Include="..\examples\fxload.c" />
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h" />
     <ClInclude Include="..\examples\ezusb.h" />
   </ItemGroup>
   <ItemGroup>
diff --git a/msvc/fxload_2013.vcxproj.filters b/msvc/fxload_2013.vcxproj.filters
index 2d6fbc9..fa1bb78 100644
--- a/msvc/fxload_2013.vcxproj.filters
+++ b/msvc/fxload_2013.vcxproj.filters
@@ -11,6 +11,9 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\examples\ezusb.h">
       <Filter>Header Files</Filter>
     </ClInclude>
diff --git a/msvc/fxload_2015.vcxproj b/msvc/fxload_2015.vcxproj
index bd4a851..9e8ae62 100644
--- a/msvc/fxload_2015.vcxproj
+++ b/msvc/fxload_2015.vcxproj
@@ -73,6 +73,7 @@
     <ClCompile Include="..\examples\fxload.c" />
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h" />
     <ClInclude Include="..\examples\ezusb.h" />
   </ItemGroup>
   <ItemGroup>
diff --git a/msvc/fxload_2015.vcxproj.filters b/msvc/fxload_2015.vcxproj.filters
index 2d6fbc9..fa1bb78 100644
--- a/msvc/fxload_2015.vcxproj.filters
+++ b/msvc/fxload_2015.vcxproj.filters
@@ -11,6 +11,9 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\examples\ezusb.h">
       <Filter>Header Files</Filter>
     </ClInclude>
diff --git a/msvc/fxload_2017.vcxproj b/msvc/fxload_2017.vcxproj
index 61f312b..9db5072 100644
--- a/msvc/fxload_2017.vcxproj
+++ b/msvc/fxload_2017.vcxproj
@@ -92,6 +92,7 @@
     <ClCompile Include="..\examples\fxload.c" />
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h" />
     <ClInclude Include="..\examples\ezusb.h" />
   </ItemGroup>
   <ItemGroup>
diff --git a/msvc/fxload_2017.vcxproj.filters b/msvc/fxload_2017.vcxproj.filters
index 2d6fbc9..fa1bb78 100644
--- a/msvc/fxload_2017.vcxproj.filters
+++ b/msvc/fxload_2017.vcxproj.filters
@@ -11,6 +11,9 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\examples\ezusb.h">
       <Filter>Header Files</Filter>
     </ClInclude>
diff --git a/msvc/fxload_2019.vcxproj b/msvc/fxload_2019.vcxproj
index 131c82a..7a98720 100644
--- a/msvc/fxload_2019.vcxproj
+++ b/msvc/fxload_2019.vcxproj
@@ -92,6 +92,7 @@
     <ClCompile Include="..\examples\fxload.c" />
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h" />
     <ClInclude Include="..\examples\ezusb.h" />
   </ItemGroup>
   <ItemGroup>
diff --git a/msvc/fxload_2019.vcxproj.filters b/msvc/fxload_2019.vcxproj.filters
index 2d6fbc9..fa1bb78 100644
--- a/msvc/fxload_2019.vcxproj.filters
+++ b/msvc/fxload_2019.vcxproj.filters
@@ -11,6 +11,9 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\examples\ezusb.h">
       <Filter>Header Files</Filter>
     </ClInclude>
diff --git a/msvc/hotplugtest_2013.vcxproj b/msvc/hotplugtest_2013.vcxproj
index 915392c..4e71963 100644
--- a/msvc/hotplugtest_2013.vcxproj
+++ b/msvc/hotplugtest_2013.vcxproj
@@ -45,7 +45,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/hotplugtest_2015.vcxproj b/msvc/hotplugtest_2015.vcxproj
index 2b39f6e..4af9f30 100644
--- a/msvc/hotplugtest_2015.vcxproj
+++ b/msvc/hotplugtest_2015.vcxproj
@@ -46,7 +46,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/hotplugtest_2017.vcxproj b/msvc/hotplugtest_2017.vcxproj
index 2c48c78..9342d7d 100644
--- a/msvc/hotplugtest_2017.vcxproj
+++ b/msvc/hotplugtest_2017.vcxproj
@@ -65,7 +65,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/hotplugtest_2019.vcxproj b/msvc/hotplugtest_2019.vcxproj
index 0aa1db6..9adec6b 100644
--- a/msvc/hotplugtest_2019.vcxproj
+++ b/msvc/hotplugtest_2019.vcxproj
@@ -65,7 +65,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/listdevs_2013.vcxproj b/msvc/listdevs_2013.vcxproj
index b1c51fd..99b364a 100644
--- a/msvc/listdevs_2013.vcxproj
+++ b/msvc/listdevs_2013.vcxproj
@@ -45,7 +45,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/listdevs_2015.vcxproj b/msvc/listdevs_2015.vcxproj
index 110fa5a..f259d12 100644
--- a/msvc/listdevs_2015.vcxproj
+++ b/msvc/listdevs_2015.vcxproj
@@ -46,7 +46,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/listdevs_2017.vcxproj b/msvc/listdevs_2017.vcxproj
index b685238..9f10864 100644
--- a/msvc/listdevs_2017.vcxproj
+++ b/msvc/listdevs_2017.vcxproj
@@ -65,7 +65,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/listdevs_2019.vcxproj b/msvc/listdevs_2019.vcxproj
index cbab3d4..b414615 100644
--- a/msvc/listdevs_2019.vcxproj
+++ b/msvc/listdevs_2019.vcxproj
@@ -65,7 +65,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/stress_2013.vcxproj b/msvc/stress_2013.vcxproj
index 83c1f16..cc762cc 100644
--- a/msvc/stress_2013.vcxproj
+++ b/msvc/stress_2013.vcxproj
@@ -73,6 +73,7 @@
     <ClCompile Include="..\tests\testlib.c" />
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h" />
     <ClInclude Include="..\tests\libusb_testlib.h" />
   </ItemGroup>
   <ItemGroup>
diff --git a/msvc/stress_2013.vcxproj.filters b/msvc/stress_2013.vcxproj.filters
index 9d821b3..51b38c8 100644
--- a/msvc/stress_2013.vcxproj.filters
+++ b/msvc/stress_2013.vcxproj.filters
@@ -11,6 +11,9 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\tests\libusb_testlib.h">
       <Filter>Header Files</Filter>
     </ClInclude>
diff --git a/msvc/stress_2015.vcxproj b/msvc/stress_2015.vcxproj
index 85a2cc3..21d42ef 100644
--- a/msvc/stress_2015.vcxproj
+++ b/msvc/stress_2015.vcxproj
@@ -73,6 +73,7 @@
     <ClCompile Include="..\tests\testlib.c" />
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h" />
     <ClInclude Include="..\tests\libusb_testlib.h" />
   </ItemGroup>
   <ItemGroup>
diff --git a/msvc/stress_2015.vcxproj.filters b/msvc/stress_2015.vcxproj.filters
index 9d821b3..51b38c8 100644
--- a/msvc/stress_2015.vcxproj.filters
+++ b/msvc/stress_2015.vcxproj.filters
@@ -11,6 +11,9 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\tests\libusb_testlib.h">
       <Filter>Header Files</Filter>
     </ClInclude>
diff --git a/msvc/stress_2017.vcxproj b/msvc/stress_2017.vcxproj
index d2dea81..064f21d 100644
--- a/msvc/stress_2017.vcxproj
+++ b/msvc/stress_2017.vcxproj
@@ -92,6 +92,7 @@
     <ClCompile Include="..\tests\testlib.c" />
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h" />
     <ClInclude Include="..\tests\libusb_testlib.h" />
   </ItemGroup>
   <ItemGroup>
diff --git a/msvc/stress_2017.vcxproj.filters b/msvc/stress_2017.vcxproj.filters
index 9d821b3..51b38c8 100644
--- a/msvc/stress_2017.vcxproj.filters
+++ b/msvc/stress_2017.vcxproj.filters
@@ -11,6 +11,9 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\tests\libusb_testlib.h">
       <Filter>Header Files</Filter>
     </ClInclude>
diff --git a/msvc/stress_2019.vcxproj b/msvc/stress_2019.vcxproj
index a89920f..0eed3cc 100644
--- a/msvc/stress_2019.vcxproj
+++ b/msvc/stress_2019.vcxproj
@@ -92,6 +92,7 @@
     <ClCompile Include="..\tests\testlib.c" />
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h" />
     <ClInclude Include="..\tests\libusb_testlib.h" />
   </ItemGroup>
   <ItemGroup>
diff --git a/msvc/stress_2019.vcxproj.filters b/msvc/stress_2019.vcxproj.filters
index 9d821b3..51b38c8 100644
--- a/msvc/stress_2019.vcxproj.filters
+++ b/msvc/stress_2019.vcxproj.filters
@@ -11,6 +11,9 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include=".\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\tests\libusb_testlib.h">
       <Filter>Header Files</Filter>
     </ClInclude>
diff --git a/msvc/testlibusb_2013.vcxproj b/msvc/testlibusb_2013.vcxproj
index 4c8a107..0117503 100644
--- a/msvc/testlibusb_2013.vcxproj
+++ b/msvc/testlibusb_2013.vcxproj
@@ -45,7 +45,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/testlibusb_2015.vcxproj b/msvc/testlibusb_2015.vcxproj
index 609e23a..1cf7ee4 100644
--- a/msvc/testlibusb_2015.vcxproj
+++ b/msvc/testlibusb_2015.vcxproj
@@ -46,7 +46,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/testlibusb_2017.vcxproj b/msvc/testlibusb_2017.vcxproj
index 67c7c88..029e3bd 100644
--- a/msvc/testlibusb_2017.vcxproj
+++ b/msvc/testlibusb_2017.vcxproj
@@ -65,7 +65,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/testlibusb_2019.vcxproj b/msvc/testlibusb_2019.vcxproj
index aec8c07..d7a54b2 100644
--- a/msvc/testlibusb_2019.vcxproj
+++ b/msvc/testlibusb_2019.vcxproj
@@ -65,7 +65,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/xusb_2013.vcxproj b/msvc/xusb_2013.vcxproj
index 195c73d..df27d9c 100644
--- a/msvc/xusb_2013.vcxproj
+++ b/msvc/xusb_2013.vcxproj
@@ -45,7 +45,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/xusb_2015.vcxproj b/msvc/xusb_2015.vcxproj
index 1393007..ab88230 100644
--- a/msvc/xusb_2015.vcxproj
+++ b/msvc/xusb_2015.vcxproj
@@ -46,7 +46,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/xusb_2017.vcxproj b/msvc/xusb_2017.vcxproj
index 7ffb546..30be16c 100644
--- a/msvc/xusb_2017.vcxproj
+++ b/msvc/xusb_2017.vcxproj
@@ -65,7 +65,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/msvc/xusb_2019.vcxproj b/msvc/xusb_2019.vcxproj
index adefefb..44a165f 100644
--- a/msvc/xusb_2019.vcxproj
+++ b/msvc/xusb_2019.vcxproj
@@ -65,7 +65,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;..\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
diff --git a/tests/libusb_testlib.h b/tests/libusb_testlib.h
index b3dbaae..145f4e6 100644
--- a/tests/libusb_testlib.h
+++ b/tests/libusb_testlib.h
@@ -20,6 +20,8 @@
 #ifndef LIBUSB_TESTLIB_H
 #define LIBUSB_TESTLIB_H
 
+#include <config.h>
+
 /** Values returned from a test function to indicate test result */
 typedef enum {
 	/** Indicates that the test ran successfully. */
@@ -36,7 +38,7 @@
 /**
  * Logs some test information or state
  */
-void libusb_testlib_logf(const char *fmt, ...);
+void libusb_testlib_logf(const char *fmt, ...) PRINTF_FORMAT(1, 2);
 
 /**
  * Structure holding a test description.
diff --git a/tests/stress.c b/tests/stress.c
index 5c8c315..6dcb8f3 100644
--- a/tests/stress.c
+++ b/tests/stress.c
@@ -17,6 +17,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include <config.h>
+
 #include <string.h>
 
 #include "libusb.h"
diff --git a/tests/testlib.c b/tests/testlib.c
index fb4fee6..3825341 100644
--- a/tests/testlib.c
+++ b/tests/testlib.c
@@ -17,7 +17,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "libusb_testlib.h"
+#include <config.h>
 
 #include <errno.h>
 #include <stdarg.h>
@@ -25,10 +25,12 @@
 #include <stdio.h>
 #include <string.h>
 
-#if defined(_WIN32)
-#define NULL_PATH "nul"
-#else
+#include "libusb_testlib.h"
+
+#if defined(PLATFORM_POSIX)
 #define NULL_PATH "/dev/null"
+#elif defined(PLATFORM_WINDOWS)
+#define NULL_PATH "nul"
 #endif
 
 /**