From d82170d757d62c8e1d6e73fa1fa75ed4ed8b4fd0 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Mon, 21 Jul 2014 17:26:57 +0200 Subject: [PATCH] domtop: Fix build on mingw Firstly, there's no sigaction() nor struct sigaction on mingw. We have to use the one implemented by gnulib (and hence link with gnulib). Then, for some reason one header file from windows defines ERROR symbol. Yes it does. Sigh. Signed-off-by: Michal Privoznik --- examples/domtop/Makefile.am | 6 ++++-- examples/domtop/domtop.c | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/examples/domtop/Makefile.am b/examples/domtop/Makefile.am index c5cb6c73b4..dbebb4638b 100644 --- a/examples/domtop/Makefile.am +++ b/examples/domtop/Makefile.am @@ -16,9 +16,11 @@ ## License along with this library. If not, see ## . -INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ + -I$(top_builddir)/gnulib/lib -I$(top_srcdir)/gnulib/lib \ + -I$(top_srcdir) LDADDS = $(STATIC_BINARIES) $(WARN_CFLAGS) $(top_builddir)/src/libvirt.la \ - $(COVERAGE_LDFLAGS) + $(top_builddir)/gnulib/lib/libgnu.la $(COVERAGE_LDFLAGS) noinst_PROGRAMS=domtop diff --git a/examples/domtop/domtop.c b/examples/domtop/domtop.c index 4ac7889221..af5da4625b 100644 --- a/examples/domtop/domtop.c +++ b/examples/domtop/domtop.c @@ -20,6 +20,8 @@ * Author: Michal Privoznik */ +#include + #include #include #include @@ -35,6 +37,21 @@ static bool debug; static bool run_top; +/* On mingw, there's a header file that poisons the well: + * + * + * CC domtop.o + *domtop.c:40:0: warning: "ERROR" redefined [enabled by default] + * #define ERROR(...) \ + * ^ + *In file included from /usr/i686-w64-mingw32/sys-root/mingw/include/windows.h:71:0, + * from /usr/i686-w64-mingw32/sys-root/mingw/include/winsock2.h:23, + * from ../../gnulib/lib/unistd.h:48, + * from domtop.c:35: + * /usr/i686-w64-mingw32/sys-root/mingw/include/wingdi.h:75:0: note: this is the location of the previous definition + * #define ERROR 0 + */ +#undef ERROR #define ERROR(...) \ do { \ fprintf(stderr, "ERROR %s:%d : ", __FUNCTION__, __LINE__); \