From a7288328a9f5b8e89c86681b35c59ee177566bb9 Mon Sep 17 00:00:00 2001 From: Nick Connolly Date: Fri, 27 Nov 2020 11:07:26 +0000 Subject: [PATCH] eal/windows: fix debug build with MinGW Compiling with MinGW in --buildtype=debug produces a redefinition error for strncasecmp. The root cause is that rte_os.h shouldn't be injecting POSIX definitions into the environment. It is the applications responsibility to decide how to handle missing functionality. Resolving this properly will require further work, but in the meantime wrap all such definitions with #ifndef/#endif. This resolves the specific issue with strncasecmp and handles similar issues that applications may encounter. Fixes: e8428a9d89f1 ("eal/windows: add some basic functions and macros") Cc: stable@dpdk.org Reported-by: David Marchand Signed-off-by: Nick Connolly --- lib/librte_eal/windows/include/rte_os.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lib/librte_eal/windows/include/rte_os.h b/lib/librte_eal/windows/include/rte_os.h index 569ed92d51..ea3fe60e53 100644 --- a/lib/librte_eal/windows/include/rte_os.h +++ b/lib/librte_eal/windows/include/rte_os.h @@ -25,22 +25,42 @@ extern "C" { #define PATH_MAX _MAX_PATH #endif +#ifndef sleep #define sleep(x) Sleep(1000 * (x)) +#endif +#ifndef strerror_r #define strerror_r(a, b, c) strerror_s(b, c, a) +#endif +#ifndef strdup /* strdup is deprecated in Microsoft libc and _strdup is preferred */ #define strdup(str) _strdup(str) +#endif +#ifndef strtok_r #define strtok_r(str, delim, saveptr) strtok_s(str, delim, saveptr) +#endif +#ifndef index #define index(a, b) strchr(a, b) +#endif + +#ifndef rindex #define rindex(a, b) strrchr(a, b) +#endif +#ifndef strncasecmp #define strncasecmp(s1, s2, count) _strnicmp(s1, s2, count) +#endif +#ifndef close #define close _close +#endif + +#ifndef unlink #define unlink _unlink +#endif /* cpu_set macros implementation */ #define RTE_CPU_AND(dst, src1, src2) CPU_AND(dst, src1, src2) @@ -89,7 +109,9 @@ eal_strerror(int code) return buffer; } +#ifndef strerror #define strerror eal_strerror +#endif #endif /* RTE_TOOLCHAIN_GCC */ -- 2.20.1