From f268d8b2d6fe5ea5ab0e0e2c5eec02c16d023ce5 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Thu, 26 Oct 2017 18:45:00 +0200 Subject: Fix standalone ich_descriptor_tool compilation with MinGW and DJGPP TARGET_OS as well as EXEC_SUFFIX were only set when called via the main makefile and even then __USE_MINGW_ANSI_STDIO was not set for MinGW. While at it, also replace the hardcoded gnu_printf printf format attribute with __MINGW_PRINTF_FORMAT which is set according to __USE_MINGW_ANSI_STDIO respectively. Change-Id: Id146f5ba06a0e510397c6f32a2bd7c819a405a25 Signed-off-by: Stefan Tauner Reviewed-on: https://review.coreboot.org/21838 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber --- flash.h | 2 +- util/ich_descriptors_tool/Makefile | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/flash.h b/flash.h index dfda9d253..62f2e344c 100644 --- a/flash.h +++ b/flash.h @@ -333,7 +333,7 @@ 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__ -__attribute__((format(gnu_printf, 2, 3))); +__attribute__((format(__MINGW_PRINTF_FORMAT, 2, 3))); #else __attribute__((format(printf, 2, 3))); #endif diff --git a/util/ich_descriptors_tool/Makefile b/util/ich_descriptors_tool/Makefile index e312996f9..d1b5eae92 100644 --- a/util/ich_descriptors_tool/Makefile +++ b/util/ich_descriptors_tool/Makefile @@ -21,10 +21,23 @@ CC ?= gcc # If the user has specified custom CFLAGS, all CFLAGS settings below will be # completely ignored by gnumake. CFLAGS ?= -Os -Wall -Wshadow + +override TARGET_OS := $(shell $(CC) $(CPPFLAGS) -E $(SHAREDSRCDIR)/os.h | grep -v '^\#' | grep '"' | \ + cut -f 2 -d'"') + ifeq ($(TARGET_OS), DOS) +EXEC_SUFFIX := .exe # DJGPP has odd uint*_t definitions which cause lots of format string warnings. CFLAGS += -Wno-format endif + +ifeq ($(TARGET_OS), MinGW) +EXEC_SUFFIX := .exe +# Some functions provided by Microsoft do not work as described in C99 specifications. This macro fixes that +# for MinGW. See http://sourceforge.net/p/mingw-w64/wiki2/printf%20and%20scanf%20family/ */ +FLASHROM_CFLAGS += -D__USE_MINGW_ANSI_STDIO=1 +endif + ifeq ($(WARNERROR), yes) CFLAGS += -Werror endif -- cgit v1.2.3