diff --git a/Makefile b/Makefile index 8aca92f0b..f91f3b0a1 100644 --- a/Makefile +++ b/Makefile @@ -167,13 +167,10 @@ recurse-all: $(SUBDIR_RULES) $(ROMSUBDIR_RULES) bt-host.o: QEMU_CFLAGS += $(BLUEZ_CFLAGS) version.o: $(SRC_PATH)/version.rc config-host.h | version.lo - $(call quiet-command,$(WINDRES) -I. -o $@ $<," RC $(TARGET_DIR)$@") version.lo: $(SRC_PATH)/version.rc config-host.h - $(call quiet-command,$(LIBTOOL) --mode=compile --tag=RC $(WINDRES) -I. -o $@ $<,"lt RC $(TARGET_DIR)$@") version-obj-$(CONFIG_WIN32) += version.o -version-lobj-$(CONFIG_WIN32) += $(if $(LIBTOOL),version.lo) -Makefile: $(version-obj-y) $(version-lobj-y) +version-lobj-$(CONFIG_WIN32) += version.lo ###################################################################### diff --git a/Makefile.target b/Makefile.target index 7e4c77a26..6583b0548 100644 --- a/Makefile.target +++ b/Makefile.target @@ -18,7 +18,7 @@ ifdef CONFIG_USER_ONLY QEMU_PROG=qemu-$(TARGET_ARCH2) else # system emulator name -ifneq (,$(findstring -mwindows,$(LIBS))) +ifneq (,$(findstring -mwindows,$(libs_softmmu))) # Terminate program name with a 'w' because the linker builds a windows executable. QEMU_PROGW=qemu-system-$(TARGET_ARCH2)w$(EXESUF) endif # windows executable diff --git a/include/qemu-common.h b/include/qemu-common.h index a39cdba27..b399d855c 100644 --- a/include/qemu-common.h +++ b/include/qemu-common.h @@ -84,20 +84,6 @@ # error Unknown pointer size #endif -#ifndef CONFIG_IOVEC -#define CONFIG_IOVEC -struct iovec { - void *iov_base; - size_t iov_len; -}; -/* - * Use the same value as Linux for now. - */ -#define IOV_MAX 1024 -#else -#include -#endif - typedef int (*fprintf_function)(FILE *f, const char *fmt, ...) GCC_FMT_ATTR(2, 3); @@ -122,16 +108,12 @@ static inline char *realpath(const char *path, char *resolved_path) void configure_icount(const char *option); extern int use_icount; -/* FIXME: Remove NEED_CPU_H. */ -#ifndef NEED_CPU_H - #include "qemu/osdep.h" #include "qemu/bswap.h" -#else - +/* FIXME: Remove NEED_CPU_H. */ +#ifdef NEED_CPU_H #include "cpu.h" - #endif /* !defined(NEED_CPU_H) */ /* main function, renamed */ diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 8b465fdf2..42545bcbd 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -1,6 +1,7 @@ #ifndef QEMU_OSDEP_H #define QEMU_OSDEP_H +#include "config-host.h" #include #include #include @@ -161,6 +162,22 @@ int qemu_close(int fd); int qemu_create_pidfile(const char *filename); int qemu_get_thread_id(void); +#ifndef CONFIG_IOVEC +struct iovec { + void *iov_base; + size_t iov_len; +}; +/* + * Use the same value as Linux for now. + */ +#define IOV_MAX 1024 + +ssize_t readv(int fd, const struct iovec *iov, int iov_cnt); +ssize_t writev(int fd, const struct iovec *iov, int iov_cnt); +#else +#include +#endif + #ifdef _WIN32 static inline void qemu_timersub(const struct timeval *val1, const struct timeval *val2, diff --git a/rules.mak b/rules.mak index 292a42299..197a9d7ab 100644 --- a/rules.mak +++ b/rules.mak @@ -19,6 +19,10 @@ QEMU_CFLAGS += -I$( 0) { + ret += r; + } else if (!r) { + break; + } else if (errno == EINTR) { + continue; + } else { + /* else it is some "other" error, + * only return if there was no data processed. */ + if (ret == 0) { + ret = -1; + } + break; + } + i++; + } + return ret; +} + +ssize_t +readv(int fd, const struct iovec *iov, int iov_cnt) +{ + return readv_writev(fd, iov, iov_cnt, false); +} + +ssize_t +writev(int fd, const struct iovec *iov, int iov_cnt) +{ + return readv_writev(fd, iov, iov_cnt, true); +} +#endif