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 <mprivozn@redhat.com>
This commit is contained in:
Michal Privoznik 2014-07-21 17:26:57 +02:00
parent 72823b4443
commit d82170d757
2 changed files with 21 additions and 2 deletions

View File

@ -16,9 +16,11 @@
## License along with this library. If not, see
## <http://www.gnu.org/licenses/>.
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

View File

@ -20,6 +20,8 @@
* Author: Michal Privoznik <mprivozn@redhat.com>
*/
#include <config.h>
#include <errno.h>
#include <getopt.h>
#include <libvirt/libvirt.h>
@ -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__); \