[flashrom] Building on Windows with mingw
Antonio Ospite
ao2 at ao2.it
Tue Feb 27 23:13:58 CET 2018
On Tue, 27 Feb 2018 20:12:20 +0100
Márton Miklós <martonmiklosqdev at gmail.com> wrote:
[...]
> Hey Antonio,
>
> Thank you very much for your email, it solves one part of the problem on
> Windows.
> Now I got the following warnings:
>
> dummyflasher.c: In function 'dummy_init':
> dummyflasher.c:379:12: warning: unknown conversion type character 'j' in
> format [-Wformat=]
> msg_pdbg("Found persistent image %s, %jd B ",
> ^
> flash.h:350:49: note: in definition of macro 'msg_pdbg'
> #define msg_pdbg(...) print(FLASHROM_MSG_DEBUG, __VA_ARGS__) /*
> programmer debug */
> ^~~~~~~~~~~
> dummyflasher.c:379:12: warning: too many arguments for format
> [-Wformat-extra-args]
> msg_pdbg("Found persistent image %s, %jd B ",
> ^
>
This is one of the possible warnings I was talking about, and it
derives from the very fact that __MINGW_PRINTF_FORMAT is not defined in
your installation, and the default "printf" format is not enough.
The proper solution would be to get a MinGW version which defines
__MINGW_PRINTF_FORMAT, I see that it has been added "only" in 2012 :)
https://sourceforge.net/p/mingw-w64/mingw-w64/ci/77bc5d6103b5fb9f59fbddab1583e69549913312/
Anyways, one possible workaround to support older MinGW versions would
be to use "gnu_printf" directly as a printf format, like this:
diff --git a/flash.h b/flash.h
index a80a9c2..40a7f1a 100644
--- a/flash.h
+++ b/flash.h
@@ -360,6 +360,9 @@ int flashrom_print_cb(enum flashrom_log_level level, const char *fmt, va_list ap
/* Let gcc and clang check for correct printf-style format strings. */
int print(enum flashrom_log_level level, const char *fmt, ...)
#ifdef __MINGW32__
+# ifndef __MINGW_PRINTF_FORMAT
+# define __MINGW_PRINTF_FORMAT gnu_printf
+# endif
__attribute__((format(__MINGW_PRINTF_FORMAT, 2, 3)));
#else
__attribute__((format(printf, 2, 3)));
This should be OK because the define is only applied when using MinGW.
JFYI I decided for a less backward compatible solution in the other
project:
https://git.ao2.it/libam7xxx.git/commitdiff/bbebd199987581ee6f344c89bfb02237dc0ab0bd
Ciao,
Antonio
--
Antonio Ospite
https://ao2.it
https://twitter.com/ao2it
A: Because it messes up the order in which people normally read text.
See http://en.wikipedia.org/wiki/Posting_style
Q: Why is top-posting such a bad thing?
More information about the flashrom
mailing list