2003-08-10 23:39:31 +02:00
|
|
|
include config.mak
|
2009-01-21 19:12:52 +01:00
|
|
|
include $(SRC_PATH)/rules.mak
|
2003-08-10 23:39:31 +02:00
|
|
|
|
2005-01-04 00:38:40 +01:00
|
|
|
TARGET_BASE_ARCH:=$(TARGET_ARCH)
|
|
|
|
ifeq ($(TARGET_ARCH), x86_64)
|
|
|
|
TARGET_BASE_ARCH:=i386
|
|
|
|
endif
|
2007-09-30 03:58:33 +02:00
|
|
|
ifeq ($(TARGET_ARCH), mipsn32)
|
|
|
|
TARGET_BASE_ARCH:=mips
|
|
|
|
endif
|
2007-04-01 13:16:48 +02:00
|
|
|
ifeq ($(TARGET_ARCH), mips64)
|
|
|
|
TARGET_BASE_ARCH:=mips
|
|
|
|
endif
|
2005-07-24 00:39:53 +02:00
|
|
|
ifeq ($(TARGET_ARCH), ppc64)
|
|
|
|
TARGET_BASE_ARCH:=ppc
|
|
|
|
endif
|
2007-10-14 10:38:29 +02:00
|
|
|
ifeq ($(TARGET_ARCH), ppc64h)
|
|
|
|
TARGET_BASE_ARCH:=ppc
|
|
|
|
endif
|
2007-04-24 09:34:03 +02:00
|
|
|
ifeq ($(TARGET_ARCH), ppcemb)
|
|
|
|
TARGET_BASE_ARCH:=ppc
|
|
|
|
endif
|
2005-01-30 23:43:42 +01:00
|
|
|
ifeq ($(TARGET_ARCH), sparc64)
|
|
|
|
TARGET_BASE_ARCH:=sparc
|
|
|
|
endif
|
2005-01-04 00:38:40 +01:00
|
|
|
TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
|
2007-11-07 20:24:02 +01:00
|
|
|
VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw
|
2008-06-02 04:09:09 +02:00
|
|
|
CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MT $@ -MP -DNEED_CPU_H
|
2005-01-04 00:38:40 +01:00
|
|
|
#CFLAGS+=-Werror
|
2003-08-10 23:39:31 +02:00
|
|
|
LIBS=
|
2003-09-30 22:54:24 +02:00
|
|
|
# user emulator name
|
2008-01-06 19:27:58 +01:00
|
|
|
ifndef TARGET_ARCH2
|
2006-05-03 00:52:36 +02:00
|
|
|
TARGET_ARCH2=$(TARGET_ARCH)
|
2008-01-06 19:27:58 +01:00
|
|
|
endif
|
2004-12-20 00:33:47 +01:00
|
|
|
ifeq ($(TARGET_ARCH),arm)
|
|
|
|
ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
|
2006-05-03 00:52:36 +02:00
|
|
|
TARGET_ARCH2=armeb
|
2004-12-20 00:33:47 +01:00
|
|
|
endif
|
2006-05-03 00:52:36 +02:00
|
|
|
endif
|
2006-06-18 21:16:53 +02:00
|
|
|
ifeq ($(TARGET_ARCH),sh4)
|
|
|
|
ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
|
|
|
|
TARGET_ARCH2=sh4eb
|
|
|
|
endif
|
|
|
|
endif
|
2005-12-06 22:42:17 +01:00
|
|
|
ifeq ($(TARGET_ARCH),mips)
|
2006-05-03 00:52:36 +02:00
|
|
|
ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
|
|
|
|
TARGET_ARCH2=mipsel
|
2005-12-06 22:42:17 +01:00
|
|
|
endif
|
|
|
|
endif
|
2007-09-30 03:58:33 +02:00
|
|
|
ifeq ($(TARGET_ARCH),mipsn32)
|
|
|
|
ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
|
|
|
|
TARGET_ARCH2=mipsn32el
|
|
|
|
endif
|
|
|
|
endif
|
2007-04-01 13:16:48 +02:00
|
|
|
ifeq ($(TARGET_ARCH),mips64)
|
|
|
|
ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
|
|
|
|
TARGET_ARCH2=mips64el
|
|
|
|
endif
|
|
|
|
endif
|
2008-01-31 12:32:10 +01:00
|
|
|
|
|
|
|
ifdef CONFIG_USER_ONLY
|
|
|
|
# user emulator name
|
|
|
|
QEMU_PROG=qemu-$(TARGET_ARCH2)
|
|
|
|
else
|
2003-09-30 22:54:24 +02:00
|
|
|
# system emulator name
|
2004-04-12 22:39:29 +02:00
|
|
|
ifeq ($(TARGET_ARCH), i386)
|
2008-01-31 12:32:10 +01:00
|
|
|
QEMU_PROG=qemu$(EXESUF)
|
2003-10-27 22:37:46 +01:00
|
|
|
else
|
2008-01-31 12:32:10 +01:00
|
|
|
QEMU_PROG=qemu-system-$(TARGET_ARCH2)$(EXESUF)
|
2004-04-12 22:39:29 +02:00
|
|
|
endif
|
2003-11-17 00:18:17 +01:00
|
|
|
endif
|
2003-08-10 23:39:31 +02:00
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
PROGS=$(QEMU_PROG)
|
2003-08-10 23:39:31 +02:00
|
|
|
|
2007-03-19 00:23:31 +01:00
|
|
|
# cc-option
|
2009-01-21 19:12:27 +01:00
|
|
|
# Usage: CFLAGS+=$(call cc-option, $(CFLAGS), -falign-functions=0, -malign-functions=0)
|
2007-03-19 00:23:31 +01:00
|
|
|
|
2009-01-21 19:12:27 +01:00
|
|
|
cc-option = $(shell if $(CC) $(1) $(2) -S -o /dev/null -xc /dev/null \
|
|
|
|
> /dev/null 2>&1; then echo "$(2)"; else echo "$(3)"; fi ;)
|
2007-01-05 02:00:47 +01:00
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
HELPER_CFLAGS=
|
|
|
|
|
2003-08-10 23:39:31 +02:00
|
|
|
ifeq ($(ARCH),i386)
|
2007-01-05 02:00:47 +01:00
|
|
|
HELPER_CFLAGS+=-fomit-frame-pointer
|
2004-03-18 00:46:04 +01:00
|
|
|
endif
|
|
|
|
|
2009-04-02 03:16:39 +02:00
|
|
|
ifeq ($(subst ppc64,ppc,$(ARCH))$(TARGET_BASE_ARCH),ppcppc)
|
|
|
|
translate.o: CFLAGS := $(CFLAGS) $(call cc-option, $(CFLAGS), -fno-unit-at-a-time,)
|
|
|
|
endif
|
|
|
|
|
2003-08-10 23:39:31 +02:00
|
|
|
ifeq ($(ARCH),sparc)
|
2009-01-21 19:12:27 +01:00
|
|
|
ifneq ($(CONFIG_SOLARIS),yes)
|
2008-01-31 12:32:10 +01:00
|
|
|
HELPER_CFLAGS+=-ffixed-i0
|
2007-04-16 20:27:06 +02:00
|
|
|
endif
|
2006-06-14 19:32:25 +02:00
|
|
|
endif
|
2003-08-10 23:39:31 +02:00
|
|
|
|
|
|
|
ifeq ($(ARCH),alpha)
|
|
|
|
# Ensure there's only a single GP
|
2008-01-31 12:32:10 +01:00
|
|
|
CFLAGS+=-msmall-data
|
2003-08-10 23:39:31 +02:00
|
|
|
endif
|
|
|
|
|
2008-04-12 22:14:54 +02:00
|
|
|
ifeq ($(ARCH),hppa)
|
|
|
|
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
2003-08-10 23:39:31 +02:00
|
|
|
ifeq ($(ARCH),ia64)
|
2008-01-31 12:32:10 +01:00
|
|
|
CFLAGS+=-mno-sdata
|
2004-07-05 23:25:26 +02:00
|
|
|
endif
|
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
|
|
|
|
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
|
2003-08-10 23:39:31 +02:00
|
|
|
|
2007-01-05 02:00:47 +01:00
|
|
|
CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
|
2003-08-10 23:39:31 +02:00
|
|
|
LIBS+=-lm
|
2004-04-01 01:37:16 +02:00
|
|
|
ifdef CONFIG_WIN32
|
2004-07-14 19:19:55 +02:00
|
|
|
LIBS+=-lwinmm -lws2_32 -liphlpapi
|
2004-04-01 01:37:16 +02:00
|
|
|
endif
|
2006-04-26 00:36:06 +02:00
|
|
|
ifdef CONFIG_SOLARIS
|
|
|
|
LIBS+=-lsocket -lnsl -lresolv
|
2007-04-01 20:54:44 +02:00
|
|
|
ifdef NEEDS_LIBSUNMATH
|
|
|
|
LIBS+=-lsunmath
|
|
|
|
LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
|
2008-01-31 12:32:10 +01:00
|
|
|
CFLAGS+=-I/opt/SUNWspro/prod/include/cc
|
2004-02-16 22:55:35 +01:00
|
|
|
endif
|
2007-01-18 21:06:33 +01:00
|
|
|
endif
|
|
|
|
|
2008-11-05 17:04:33 +01:00
|
|
|
kvm.o: CFLAGS+=$(KVM_CFLAGS)
|
|
|
|
kvm-all.o: CFLAGS+=$(KVM_CFLAGS)
|
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
all: $(PROGS)
|
2003-08-10 23:39:31 +02:00
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
#########################################################
|
2003-08-10 23:39:31 +02:00
|
|
|
# cpu emulator library
|
2008-02-01 11:50:11 +01:00
|
|
|
LIBOBJS=exec.o kqemu.o translate-all.o cpu-exec.o\
|
2008-03-21 19:03:09 +01:00
|
|
|
translate.o host-utils.o
|
2008-02-01 11:50:11 +01:00
|
|
|
# TCG code generator
|
2008-12-07 19:15:45 +01:00
|
|
|
LIBOBJS+= tcg/tcg.o tcg/tcg-runtime.o
|
2008-02-01 11:50:11 +01:00
|
|
|
CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
|
2008-02-27 18:53:27 +01:00
|
|
|
ifeq ($(ARCH),sparc64)
|
|
|
|
CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
|
|
|
|
endif
|
2005-03-13 17:54:06 +01:00
|
|
|
ifdef CONFIG_SOFTFLOAT
|
|
|
|
LIBOBJS+=fpu/softfloat.o
|
|
|
|
else
|
|
|
|
LIBOBJS+=fpu/softfloat-native.o
|
|
|
|
endif
|
2007-01-05 02:00:47 +01:00
|
|
|
CPPFLAGS+=-I$(SRC_PATH)/fpu
|
2004-10-01 00:22:08 +02:00
|
|
|
LIBOBJS+= op_helper.o helper.o
|
|
|
|
|
2005-02-22 20:27:29 +01:00
|
|
|
ifeq ($(TARGET_BASE_ARCH), arm)
|
2008-05-28 14:51:20 +02:00
|
|
|
LIBOBJS+= neon_helper.o iwmmxt_helper.o
|
2006-10-22 02:18:54 +02:00
|
|
|
endif
|
|
|
|
|
2007-04-05 22:46:02 +02:00
|
|
|
ifeq ($(TARGET_BASE_ARCH), alpha)
|
2008-05-28 14:51:20 +02:00
|
|
|
LIBOBJS+= alpha_palcode.o
|
2007-04-05 22:46:02 +02:00
|
|
|
endif
|
|
|
|
|
2007-10-08 15:38:27 +02:00
|
|
|
ifeq ($(TARGET_BASE_ARCH), cris)
|
|
|
|
LIBOBJS+= cris-dis.o
|
|
|
|
|
|
|
|
ifndef CONFIG_USER_ONLY
|
|
|
|
LIBOBJS+= mmu.o
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2003-08-10 23:39:31 +02:00
|
|
|
# NOTE: the disassembler code is only needed for debugging
|
2007-09-16 23:08:06 +02:00
|
|
|
LIBOBJS+=disas.o
|
2003-08-10 23:39:31 +02:00
|
|
|
ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
|
2004-03-18 00:46:04 +01:00
|
|
|
USE_I386_DIS=y
|
|
|
|
endif
|
2005-01-04 00:38:40 +01:00
|
|
|
ifeq ($(findstring x86_64, $(TARGET_ARCH) $(ARCH)),x86_64)
|
2004-03-18 00:46:04 +01:00
|
|
|
USE_I386_DIS=y
|
|
|
|
endif
|
|
|
|
ifdef USE_I386_DIS
|
2003-08-10 23:39:31 +02:00
|
|
|
LIBOBJS+=i386-dis.o
|
|
|
|
endif
|
|
|
|
ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
|
|
|
|
LIBOBJS+=alpha-dis.o
|
|
|
|
endif
|
2005-07-24 00:39:53 +02:00
|
|
|
ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
|
2003-08-10 23:39:31 +02:00
|
|
|
LIBOBJS+=ppc-dis.o
|
|
|
|
endif
|
2007-04-01 13:16:48 +02:00
|
|
|
ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
|
2005-07-02 16:58:51 +02:00
|
|
|
LIBOBJS+=mips-dis.o
|
|
|
|
endif
|
2005-01-30 23:43:42 +01:00
|
|
|
ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
|
2003-08-10 23:39:31 +02:00
|
|
|
LIBOBJS+=sparc-dis.o
|
|
|
|
endif
|
|
|
|
ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
|
|
|
|
LIBOBJS+=arm-dis.o
|
|
|
|
endif
|
2005-11-06 17:52:11 +01:00
|
|
|
ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
|
|
|
|
LIBOBJS+=m68k-dis.o
|
|
|
|
endif
|
2006-04-27 23:07:38 +02:00
|
|
|
ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
|
|
|
|
LIBOBJS+=sh4-dis.o
|
|
|
|
endif
|
2008-04-12 22:14:54 +02:00
|
|
|
ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
|
|
|
|
LIBOBJS+=hppa-dis.o
|
|
|
|
endif
|
2007-08-01 01:44:21 +02:00
|
|
|
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
|
|
|
|
LIBOBJS+=s390-dis.o
|
|
|
|
endif
|
2003-08-10 23:39:31 +02:00
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
# libqemu
|
|
|
|
|
|
|
|
libqemu.a: $(LIBOBJS)
|
|
|
|
|
2008-12-07 16:21:23 +01:00
|
|
|
translate.o: translate.c cpu.h
|
2008-01-31 12:32:10 +01:00
|
|
|
|
2008-12-07 16:21:23 +01:00
|
|
|
translate-all.o: translate-all.c cpu.h
|
2008-01-31 12:32:10 +01:00
|
|
|
|
2008-12-07 16:21:23 +01:00
|
|
|
tcg/tcg.o: cpu.h
|
2008-01-31 12:32:10 +01:00
|
|
|
|
|
|
|
# HELPER_CFLAGS is used for all the code compiled with static register
|
|
|
|
# variables
|
2009-01-21 19:12:44 +01:00
|
|
|
op_helper.o: CFLAGS += $(HELPER_CFLAGS) $(I386_CFLAGS)
|
2008-01-31 12:32:10 +01:00
|
|
|
|
2009-01-21 19:12:44 +01:00
|
|
|
cpu-exec.o: CFLAGS += $(HELPER_CFLAGS)
|
2008-01-31 12:32:10 +01:00
|
|
|
|
|
|
|
#########################################################
|
|
|
|
# Linux user emulator target
|
|
|
|
|
|
|
|
ifdef CONFIG_LINUX_USER
|
|
|
|
|
|
|
|
ifndef TARGET_ABI_DIR
|
|
|
|
TARGET_ABI_DIR=$(TARGET_ARCH)
|
|
|
|
endif
|
2008-04-09 08:53:01 +02:00
|
|
|
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
|
2008-01-31 12:32:10 +01:00
|
|
|
CPPFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
|
|
|
|
|
|
|
|
ifdef CONFIG_STATIC
|
|
|
|
LDFLAGS+=-static
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),i386)
|
|
|
|
ifdef TARGET_GPROF
|
|
|
|
USE_I386_LD=y
|
|
|
|
endif
|
|
|
|
ifdef CONFIG_STATIC
|
|
|
|
USE_I386_LD=y
|
|
|
|
endif
|
|
|
|
ifdef USE_I386_LD
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
else
|
|
|
|
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
|
|
|
|
# that the kernel ELF loader considers as an executable. I think this
|
|
|
|
# is the simplest way to make it self virtualizable!
|
|
|
|
LDFLAGS+=-Wl,-shared
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),x86_64)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),ppc)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
2008-07-23 21:17:46 +02:00
|
|
|
ifeq ($(ARCH),ppc64)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
ifeq ($(ARCH),s390)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),sparc)
|
|
|
|
# -static is used to avoid g1/g3 usage by the dynamic linker
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),sparc64)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),alpha)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),ia64)
|
|
|
|
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),arm)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),m68k)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),mips)
|
|
|
|
ifeq ($(WORDS_BIGENDIAN),yes)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
else
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),mips64)
|
|
|
|
ifeq ($(WORDS_BIGENDIAN),yes)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
else
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2008-11-06 17:15:18 +01:00
|
|
|
# profiling code
|
|
|
|
ifdef TARGET_GPROF
|
|
|
|
LDFLAGS+=-p
|
|
|
|
CFLAGS+=-p
|
|
|
|
endif
|
|
|
|
|
2008-06-09 15:47:45 +02:00
|
|
|
OBJS= main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
|
2009-01-30 20:59:17 +01:00
|
|
|
elfload.o linuxload.o uaccess.o envlist.o
|
2008-01-31 12:32:10 +01:00
|
|
|
LIBS+= $(AIOLIBS)
|
|
|
|
ifdef TARGET_HAS_BFLT
|
|
|
|
OBJS+= flatload.o
|
|
|
|
endif
|
|
|
|
ifdef TARGET_HAS_ELFLOAD32
|
|
|
|
OBJS+= elfload32.o
|
|
|
|
elfload32.o: elfload.c
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(TARGET_ARCH), i386)
|
|
|
|
OBJS+= vm86.o
|
|
|
|
endif
|
|
|
|
ifeq ($(TARGET_ARCH), arm)
|
|
|
|
OBJS+=nwfpe/fpa11.o nwfpe/fpa11_cpdo.o \
|
|
|
|
nwfpe/fpa11_cpdt.o nwfpe/fpa11_cprt.o nwfpe/fpopcode.o nwfpe/single_cpdo.o \
|
|
|
|
nwfpe/double_cpdo.o nwfpe/extended_cpdo.o arm-semi.o
|
|
|
|
endif
|
|
|
|
ifeq ($(TARGET_ARCH), m68k)
|
|
|
|
OBJS+= m68k-sim.o m68k-semi.o
|
|
|
|
endif
|
|
|
|
|
2005-04-17 21:16:13 +02:00
|
|
|
ifdef CONFIG_GDBSTUB
|
2008-10-11 19:55:29 +02:00
|
|
|
OBJS+=gdbstub.o gdbstub-xml.o
|
2005-04-17 21:16:13 +02:00
|
|
|
endif
|
2003-08-10 23:39:31 +02:00
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= libqemu.a
|
|
|
|
|
|
|
|
# Note: this is a workaround. The real fix is to avoid compiling
|
|
|
|
# cpu_signal_handler() in cpu-exec.c.
|
2009-01-21 19:12:44 +01:00
|
|
|
signal.o: CFLAGS += $(HELPER_CFLAGS)
|
2003-08-10 23:39:31 +02:00
|
|
|
|
2008-05-28 18:44:57 +02:00
|
|
|
$(QEMU_PROG): $(OBJS) ../libqemu_user.a
|
2009-01-21 19:13:02 +01:00
|
|
|
$(LINK)
|
2003-08-10 23:39:31 +02:00
|
|
|
ifeq ($(ARCH),alpha)
|
|
|
|
# Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of
|
|
|
|
# the address space (31 bit so sign extending doesn't matter)
|
|
|
|
echo -ne '\001\000\000\000' | dd of=qemu bs=1 seek=48 count=4 conv=notrunc
|
|
|
|
endif
|
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
endif #CONFIG_LINUX_USER
|
|
|
|
|
|
|
|
#########################################################
|
|
|
|
# Darwin user emulator target
|
|
|
|
|
|
|
|
ifdef CONFIG_DARWIN_USER
|
|
|
|
|
|
|
|
VPATH+=:$(SRC_PATH)/darwin-user
|
|
|
|
CPPFLAGS+=-I$(SRC_PATH)/darwin-user -I$(SRC_PATH)/darwin-user/$(TARGET_ARCH)
|
|
|
|
|
|
|
|
# Leave some space for the regular program loading zone
|
|
|
|
LDFLAGS+=-Wl,-segaddr,__STD_PROG_ZONE,0x1000 -image_base 0x0e000000
|
|
|
|
|
|
|
|
LIBS+=-lmx
|
|
|
|
|
2008-06-09 15:47:45 +02:00
|
|
|
OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o
|
2008-01-31 12:32:10 +01:00
|
|
|
|
|
|
|
OBJS+= libqemu.a
|
|
|
|
|
|
|
|
ifdef CONFIG_GDBSTUB
|
2008-10-11 19:55:29 +02:00
|
|
|
OBJS+=gdbstub.o gdbstub-xml.o
|
2008-01-31 12:32:10 +01:00
|
|
|
endif
|
|
|
|
|
|
|
|
# Note: this is a workaround. The real fix is to avoid compiling
|
|
|
|
# cpu_signal_handler() in cpu-exec.c.
|
2009-01-21 19:12:44 +01:00
|
|
|
signal.o: CFLAGS += $(HELPER_CFLAGS)
|
2008-01-31 12:32:10 +01:00
|
|
|
|
|
|
|
$(QEMU_PROG): $(OBJS)
|
2009-01-21 19:13:02 +01:00
|
|
|
$(LINK)
|
2008-01-31 12:32:10 +01:00
|
|
|
|
|
|
|
endif #CONFIG_DARWIN_USER
|
|
|
|
|
2008-10-26 21:33:16 +01:00
|
|
|
#########################################################
|
|
|
|
# BSD user emulator target
|
|
|
|
|
|
|
|
ifdef CONFIG_BSD_USER
|
|
|
|
|
|
|
|
VPATH+=:$(SRC_PATH)/bsd-user
|
|
|
|
CPPFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH)
|
|
|
|
|
|
|
|
ifdef CONFIG_STATIC
|
|
|
|
LDFLAGS+=-static
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),i386)
|
|
|
|
ifdef TARGET_GPROF
|
|
|
|
USE_I386_LD=y
|
|
|
|
endif
|
|
|
|
ifdef CONFIG_STATIC
|
|
|
|
USE_I386_LD=y
|
|
|
|
endif
|
|
|
|
ifdef USE_I386_LD
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
else
|
|
|
|
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
|
|
|
|
# that the kernel ELF loader considers as an executable. I think this
|
|
|
|
# is the simplest way to make it self virtualizable!
|
|
|
|
LDFLAGS+=-Wl,-shared
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),x86_64)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),ppc)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),ppc64)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),s390)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),sparc)
|
|
|
|
# -static is used to avoid g1/g3 usage by the dynamic linker
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),sparc64)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),alpha)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),ia64)
|
|
|
|
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),arm)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),m68k)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),mips)
|
|
|
|
ifeq ($(WORDS_BIGENDIAN),yes)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
else
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),mips64)
|
|
|
|
ifeq ($(WORDS_BIGENDIAN),yes)
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
|
|
else
|
|
|
|
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
OBJS= main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o
|
|
|
|
OBJS+= uaccess.o
|
|
|
|
|
|
|
|
OBJS+= libqemu.a
|
|
|
|
|
|
|
|
ifdef CONFIG_GDBSTUB
|
|
|
|
OBJS+=gdbstub.o
|
|
|
|
endif
|
|
|
|
|
|
|
|
# Note: this is a workaround. The real fix is to avoid compiling
|
|
|
|
# cpu_signal_handler() in cpu-exec.c.
|
2009-01-21 19:12:44 +01:00
|
|
|
signal.o: CFLAGS += $(HELPER_CFLAGS)
|
2008-10-26 21:33:16 +01:00
|
|
|
|
|
|
|
$(QEMU_PROG): $(OBJS) ../libqemu_user.a
|
2009-01-21 19:13:02 +01:00
|
|
|
$(LINK)
|
2008-10-26 21:33:16 +01:00
|
|
|
|
|
|
|
endif #CONFIG_BSD_USER
|
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
#########################################################
|
|
|
|
# System emulator target
|
|
|
|
ifndef CONFIG_USER_ONLY
|
|
|
|
|
2009-02-05 22:23:50 +01:00
|
|
|
OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o dma-helpers.o
|
2008-12-18 02:56:22 +01:00
|
|
|
# virtio has to be here due to weird dependency between PCI and virtio-net.
|
|
|
|
# need to fix this properly
|
2009-01-15 21:05:25 +01:00
|
|
|
OBJS+=virtio.o virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
|
2008-11-11 22:20:14 +01:00
|
|
|
OBJS+=fw_cfg.o
|
2008-11-05 17:04:33 +01:00
|
|
|
ifdef CONFIG_KVM
|
|
|
|
OBJS+=kvm.o kvm-all.o
|
|
|
|
endif
|
2007-12-15 18:28:36 +01:00
|
|
|
ifdef CONFIG_WIN32
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+=block-raw-win32.o
|
2007-12-15 18:28:36 +01:00
|
|
|
else
|
2008-12-12 17:41:40 +01:00
|
|
|
ifdef CONFIG_AIO
|
|
|
|
OBJS+=posix-aio-compat.o
|
|
|
|
endif
|
2008-11-11 22:20:14 +01:00
|
|
|
OBJS+=block-raw-posix.o
|
2008-09-11 20:00:19 +02:00
|
|
|
endif
|
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
LIBS+=-lz
|
2005-10-30 19:58:22 +01:00
|
|
|
ifdef CONFIG_ALSA
|
|
|
|
LIBS += -lasound
|
|
|
|
endif
|
2008-01-14 05:24:29 +01:00
|
|
|
ifdef CONFIG_ESD
|
|
|
|
LIBS += -lesd
|
|
|
|
endif
|
2008-07-02 23:03:08 +02:00
|
|
|
ifdef CONFIG_PA
|
|
|
|
LIBS += -lpulse-simple
|
|
|
|
endif
|
2005-10-30 19:58:22 +01:00
|
|
|
ifdef CONFIG_DSOUND
|
|
|
|
LIBS += -lole32 -ldxguid
|
2004-11-07 19:04:02 +01:00
|
|
|
endif
|
2004-11-14 20:57:29 +01:00
|
|
|
ifdef CONFIG_FMOD
|
|
|
|
LIBS += $(CONFIG_FMOD_LIB)
|
2004-11-07 19:04:02 +01:00
|
|
|
endif
|
2008-08-21 20:00:53 +02:00
|
|
|
ifdef CONFIG_OSS
|
|
|
|
LIBS += $(CONFIG_OSS_LIB)
|
|
|
|
endif
|
2007-11-07 20:24:02 +01:00
|
|
|
|
2009-01-08 22:03:55 +01:00
|
|
|
SOUND_HW = sb16.o es1370.o ac97.o
|
2005-10-30 19:58:22 +01:00
|
|
|
ifdef CONFIG_ADLIB
|
|
|
|
SOUND_HW += fmopl.o adlib.o
|
2008-12-11 01:14:25 +01:00
|
|
|
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
|
2005-10-30 19:58:22 +01:00
|
|
|
endif
|
2008-01-14 23:09:11 +01:00
|
|
|
ifdef CONFIG_GUS
|
|
|
|
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
|
|
|
|
endif
|
2008-06-13 12:48:22 +02:00
|
|
|
ifdef CONFIG_CS4231A
|
|
|
|
SOUND_HW += cs4231a.o
|
|
|
|
endif
|
2004-11-07 19:04:02 +01:00
|
|
|
|
2007-08-25 03:37:51 +02:00
|
|
|
ifdef CONFIG_VNC_TLS
|
|
|
|
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
|
|
|
|
LIBS += $(CONFIG_VNC_TLS_LIBS)
|
|
|
|
endif
|
|
|
|
|
Add SASL authentication support ("Daniel P. Berrange")
This patch adds the new SASL authentication protocol to the VNC server.
It is enabled by setting the 'sasl' flag when launching VNC. SASL can
optionally provide encryption via its SSF layer, if a suitable mechanism
is configured (eg, GSSAPI/Kerberos, or Digest-MD5). If an SSF layer is
not available, then it should be combined with the x509 VNC authentication
protocol which provides encryption.
eg, if using GSSAPI
qemu -vnc localhost:1,sasl
eg if using TLS/x509 for encryption
qemu -vnc localhost:1,sasl,tls,x509
By default the Cyrus SASL library will look for its configuration in
the file /etc/sasl2/qemu.conf. For non-root users, this can be overridden
by setting the SASL_CONF_PATH environment variable, eg to make it look in
$HOME/.sasl2. NB unprivileged users may not have access to the full range
of SASL mechanisms, since some of them require some administrative privileges
to configure. The patch includes an example SASL configuration file which
illustrates config for GSSAPI and Digest-MD5, though it should be noted that
the latter is not really considered secure any more.
Most of the SASL authentication code is located in a separate source file,
vnc-auth-sasl.c. The main vnc.c file only contains minimal integration
glue, specifically parsing of command line flags / setup, and calls to
start the SASL auth process, to do encoding/decoding for data.
There are several possible stacks for reading & writing of data, depending
on the combo of VNC authentication methods in use
- Clear. read/write straight to socket
- TLS. read/write via GNUTLS helpers
- SASL. encode/decode via SASL SSF layer, then read/write to socket
- SASL+TLS. encode/decode via SASL SSF layer, then read/write via GNUTLS
Hence, the vnc_client_read & vnc_client_write methods have been refactored
a little.
vnc_client_read: main entry point for reading, calls either
- vnc_client_read_plain reading, with no intermediate decoding
- vnc_client_read_sasl reading, with SASL SSF decoding
These two methods, then call vnc_client_read_buf(). This decides
whether to write to the socket directly or write via GNUTLS.
The situation is the same for writing data. More extensive comments
have been added in the code / patch. The vnc_client_read_sasl and
vnc_client_write_sasl method implementations live in the separate
vnc-auth-sasl.c file.
The state required for the SASL auth mechanism is kept in a separate
VncStateSASL struct, defined in vnc-auth-sasl.h and included in the
main VncState.
The configure script probes for SASL and automatically enables it
if found, unless --disable-vnc-sasl was given to override it.
Makefile | 7
Makefile.target | 5
b/qemu.sasl | 34 ++
b/vnc-auth-sasl.c | 626 ++++++++++++++++++++++++++++++++++++++++++++++++++++
b/vnc-auth-sasl.h | 67 +++++
configure | 34 ++
qemu-doc.texi | 97 ++++++++
vnc-auth-vencrypt.c | 12
vnc.c | 249 ++++++++++++++++++--
vnc.h | 31 ++
10 files changed, 1129 insertions(+), 33 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6724 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:28 +01:00
|
|
|
ifdef CONFIG_VNC_SASL
|
|
|
|
CPPFLAGS += $(CONFIG_VNC_SASL_CFLAGS)
|
|
|
|
LIBS += $(CONFIG_VNC_SASL_LIBS)
|
|
|
|
endif
|
|
|
|
|
2008-09-29 01:49:55 +02:00
|
|
|
ifdef CONFIG_BLUEZ
|
|
|
|
LIBS += $(CONFIG_BLUEZ_LIBS)
|
|
|
|
endif
|
|
|
|
|
2006-05-26 01:58:51 +02:00
|
|
|
# SCSI layer
|
2008-03-02 09:48:47 +01:00
|
|
|
OBJS+= lsi53c895a.o esp.o
|
2006-05-26 01:58:51 +02:00
|
|
|
|
2005-11-06 17:13:29 +01:00
|
|
|
# USB layer
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= usb-ohci.o
|
2005-11-06 17:13:29 +01:00
|
|
|
|
2006-02-05 05:14:41 +01:00
|
|
|
# PCI network cards
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS += eepro100.o
|
|
|
|
OBJS += ne2000.o
|
|
|
|
OBJS += pcnet.o
|
|
|
|
OBJS += rtl8139.o
|
2008-02-03 03:20:18 +01:00
|
|
|
OBJS += e1000.o
|
2006-02-05 05:14:41 +01:00
|
|
|
|
2005-01-04 00:38:40 +01:00
|
|
|
ifeq ($(TARGET_BASE_ARCH), i386)
|
2004-04-12 22:39:29 +02:00
|
|
|
# Hardware support
|
2009-04-11 11:04:44 +02:00
|
|
|
OBJS+= ide.o pckbd.o vga.o $(SOUND_HW) dma.o
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
|
2009-03-12 21:25:12 +01:00
|
|
|
OBJS+= cirrus_vga.o apic.o ioapic.o parallel.o acpi.o piix_pci.o
|
2008-12-18 00:28:44 +01:00
|
|
|
OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o hpet.o
|
2009-02-11 16:21:54 +01:00
|
|
|
OBJS += device-hotplug.o pci-hotplug.o
|
2007-04-30 04:22:06 +02:00
|
|
|
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
|
2004-04-01 01:37:16 +02:00
|
|
|
endif
|
2005-07-24 00:39:53 +02:00
|
|
|
ifeq ($(TARGET_BASE_ARCH), ppc)
|
2008-12-14 18:30:18 +01:00
|
|
|
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
|
2007-10-29 00:42:18 +01:00
|
|
|
# shared objects
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
|
2007-10-29 00:42:18 +01:00
|
|
|
# PREP target
|
2009-04-11 11:04:44 +02:00
|
|
|
OBJS+= pckbd.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= prep_pci.o ppc_prep.o
|
2007-10-29 00:42:18 +01:00
|
|
|
# Mac shared devices
|
2009-01-12 18:40:23 +01:00
|
|
|
OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o escc.o
|
2007-10-29 00:42:18 +01:00
|
|
|
# OldWorld PowerMac
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
|
2007-10-29 00:42:18 +01:00
|
|
|
# NewWorld PowerMac
|
2009-02-08 13:49:13 +01:00
|
|
|
OBJS+= unin_pci.o ppc_newworld.o
|
2007-10-29 00:42:18 +01:00
|
|
|
# PowerPC 4xx boards
|
2008-12-03 00:53:50 +01:00
|
|
|
OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o
|
2008-12-16 11:44:14 +01:00
|
|
|
OBJS+= ppc440.o ppc440_bamboo.o
|
2009-03-02 17:42:23 +01:00
|
|
|
# PowerPC E500 boards
|
2009-03-02 17:42:42 +01:00
|
|
|
OBJS+= ppce500_pci.o ppce500_mpc8544ds.o
|
2008-12-16 11:43:48 +01:00
|
|
|
ifdef FDT_LIBS
|
|
|
|
OBJS+= device_tree.o
|
|
|
|
LIBS+= $(FDT_LIBS)
|
|
|
|
endif
|
2008-12-16 11:43:58 +01:00
|
|
|
ifdef CONFIG_KVM
|
|
|
|
OBJS+= kvm_ppc.o
|
|
|
|
endif
|
2004-04-12 22:39:29 +02:00
|
|
|
endif
|
2007-04-01 13:16:48 +02:00
|
|
|
ifeq ($(TARGET_BASE_ARCH), mips)
|
2008-04-08 21:51:06 +02:00
|
|
|
OBJS+= mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
|
2008-04-07 21:47:14 +02:00
|
|
|
OBJS+= mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o rc4030.o
|
2009-04-15 16:57:54 +02:00
|
|
|
OBJS+= g364fb.o jazz_led.o dp8393x.o
|
2009-04-11 11:04:44 +02:00
|
|
|
OBJS+= ide.o gt64xxx.o pckbd.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
|
2008-04-07 21:47:14 +02:00
|
|
|
OBJS+= piix_pci.o parallel.o cirrus_vga.o pcspk.o $(SOUND_HW)
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= mipsnet.o
|
|
|
|
OBJS+= pflash_cfi01.o
|
2009-02-08 15:51:19 +01:00
|
|
|
OBJS+= vmware_vga.o
|
2008-04-07 21:47:14 +02:00
|
|
|
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
|
2005-07-02 16:58:51 +02:00
|
|
|
endif
|
2007-10-08 15:38:27 +02:00
|
|
|
ifeq ($(TARGET_BASE_ARCH), cris)
|
2009-01-07 13:19:50 +01:00
|
|
|
# Boards
|
|
|
|
OBJS+= etraxfs.o axis_dev88.o
|
|
|
|
|
|
|
|
# IO blocks
|
2008-05-11 17:07:19 +02:00
|
|
|
OBJS+= etraxfs_dma.o
|
2008-03-14 02:04:24 +01:00
|
|
|
OBJS+= etraxfs_pic.o
|
2008-05-11 17:07:19 +02:00
|
|
|
OBJS+= etraxfs_eth.o
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= etraxfs_timer.o
|
|
|
|
OBJS+= etraxfs_ser.o
|
2008-03-14 02:04:24 +01:00
|
|
|
|
2009-01-07 13:19:50 +01:00
|
|
|
OBJS+= pflash_cfi02.o nand.o
|
2007-10-08 15:38:27 +02:00
|
|
|
endif
|
2005-01-30 23:43:42 +01:00
|
|
|
ifeq ($(TARGET_BASE_ARCH), sparc)
|
2005-07-02 16:31:34 +02:00
|
|
|
ifeq ($(TARGET_ARCH), sparc64)
|
2009-04-11 11:04:44 +02:00
|
|
|
OBJS+= sun4u.o ide.o pckbd.o vga.o apb_pci.o
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= fdc.o mc146818rtc.o serial.o m48t59.o
|
2009-04-11 11:04:44 +02:00
|
|
|
OBJS+= cirrus_vga.o parallel.o
|
2005-07-02 16:31:34 +02:00
|
|
|
else
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
|
2009-01-12 18:33:30 +01:00
|
|
|
OBJS+= slavio_timer.o escc.o slavio_misc.o fdc.o sparc32_dma.o
|
2009-04-11 11:04:44 +02:00
|
|
|
OBJS+= cs4231.o eccmemctl.o sbi.o sun4c_intctl.o
|
2005-07-02 16:31:34 +02:00
|
|
|
endif
|
2004-10-01 00:22:08 +02:00
|
|
|
endif
|
2005-11-26 11:38:39 +01:00
|
|
|
ifeq ($(TARGET_BASE_ARCH), arm)
|
2009-04-11 11:04:44 +02:00
|
|
|
OBJS+= integratorcp.o versatilepb.o smc91c111.o arm_pic.o arm_timer.o
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
|
2009-04-11 11:04:44 +02:00
|
|
|
OBJS+= versatile_pci.o
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= realview_gic.o realview.o arm_sysctl.o mpcore.o
|
|
|
|
OBJS+= armv7m.o armv7m_nvic.o stellaris.o pl022.o stellaris_enet.o
|
|
|
|
OBJS+= pl061.o
|
|
|
|
OBJS+= arm-semi.o
|
|
|
|
OBJS+= pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o
|
|
|
|
OBJS+= pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o pxa2xx_keypad.o
|
|
|
|
OBJS+= pflash_cfi01.o gumstix.o
|
2008-06-09 02:03:13 +02:00
|
|
|
OBJS+= zaurus.o ide.o serial.o nand.o ecc.o spitz.o tosa.o tc6393xb.o
|
2008-03-06 22:07:38 +01:00
|
|
|
OBJS+= omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
|
2008-07-21 22:40:22 +02:00
|
|
|
OBJS+= omap2.o omap_dss.o soc_dma.o
|
2008-12-15 03:05:00 +01:00
|
|
|
OBJS+= omap_sx1.o palm.o tsc210x.o
|
2008-04-22 05:15:10 +02:00
|
|
|
OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= mst_fpga.o mainstone.o
|
2008-04-24 21:21:53 +02:00
|
|
|
OBJS+= musicpal.o pflash_cfi02.o
|
2009-04-01 14:27:59 +02:00
|
|
|
OBJS+= framebuffer.o
|
2007-05-02 04:11:51 +02:00
|
|
|
CPPFLAGS += -DHAS_AUDIO
|
2005-11-26 11:38:39 +01:00
|
|
|
endif
|
2006-04-27 23:07:38 +02:00
|
|
|
ifeq ($(TARGET_BASE_ARCH), sh4)
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
|
2009-04-11 11:04:44 +02:00
|
|
|
OBJS+= sh_timer.o sh_serial.o sh_intc.o sh_pci.o sm501.o serial.o
|
2008-12-07 19:41:42 +01:00
|
|
|
OBJS+= ide.o
|
2006-04-27 23:07:38 +02:00
|
|
|
endif
|
2007-05-23 21:58:11 +02:00
|
|
|
ifeq ($(TARGET_BASE_ARCH), m68k)
|
2009-04-11 11:04:44 +02:00
|
|
|
OBJS+= an5206.o mcf5206.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
|
2008-01-31 12:32:10 +01:00
|
|
|
OBJS+= m68k-semi.o dummy_m68k.o
|
2007-05-23 21:58:11 +02:00
|
|
|
endif
|
2004-04-12 22:39:29 +02:00
|
|
|
ifdef CONFIG_GDBSTUB
|
2008-10-11 19:55:29 +02:00
|
|
|
OBJS+=gdbstub.o gdbstub-xml.o
|
2004-01-05 01:08:14 +01:00
|
|
|
endif
|
2005-03-01 22:37:28 +01:00
|
|
|
ifdef CONFIG_COCOA
|
2005-10-30 19:58:22 +01:00
|
|
|
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
|
|
|
|
ifdef CONFIG_COREAUDIO
|
|
|
|
COCOA_LIBS+=-framework CoreAudio
|
|
|
|
endif
|
2005-03-01 22:37:28 +01:00
|
|
|
endif
|
2004-04-22 02:02:08 +02:00
|
|
|
ifdef CONFIG_SLIRP
|
2007-01-05 02:00:47 +01:00
|
|
|
CPPFLAGS+=-I$(SRC_PATH)/slirp
|
2003-08-10 23:39:31 +02:00
|
|
|
endif
|
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
LIBS+=$(AIOLIBS)
|
2003-10-30 02:18:42 +01:00
|
|
|
# specific flags are needed for non soft mmu emulator
|
|
|
|
ifdef CONFIG_STATIC
|
2008-01-31 12:32:10 +01:00
|
|
|
LDFLAGS+=-static
|
2003-11-17 00:18:17 +01:00
|
|
|
endif
|
2004-07-05 23:25:26 +02:00
|
|
|
ifndef CONFIG_DARWIN
|
2004-04-02 22:55:59 +02:00
|
|
|
ifndef CONFIG_WIN32
|
2006-04-26 00:36:06 +02:00
|
|
|
ifndef CONFIG_SOLARIS
|
2008-11-18 02:42:22 +01:00
|
|
|
ifndef CONFIG_AIX
|
2008-01-31 12:32:10 +01:00
|
|
|
LIBS+=-lutil
|
2004-04-02 22:55:59 +02:00
|
|
|
endif
|
2008-11-18 02:42:22 +01:00
|
|
|
endif
|
2004-07-05 23:25:26 +02:00
|
|
|
endif
|
2006-04-26 00:36:06 +02:00
|
|
|
endif
|
2005-02-10 22:48:51 +01:00
|
|
|
ifdef TARGET_GPROF
|
2008-01-31 12:32:10 +01:00
|
|
|
vl.o: CFLAGS+=-p
|
|
|
|
LDFLAGS+=-p
|
2005-02-10 22:48:51 +01:00
|
|
|
endif
|
2003-10-30 02:18:42 +01:00
|
|
|
|
2005-04-08 00:20:31 +02:00
|
|
|
ifeq ($(ARCH),ia64)
|
2008-01-31 12:32:10 +01:00
|
|
|
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
|
2006-07-18 23:23:34 +02:00
|
|
|
endif
|
|
|
|
|
2005-10-30 19:58:22 +01:00
|
|
|
ifdef CONFIG_WIN32
|
|
|
|
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
|
|
|
|
endif
|
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
# profiling code
|
|
|
|
ifdef TARGET_GPROF
|
|
|
|
LDFLAGS+=-p
|
|
|
|
main.o: CFLAGS+=-p
|
2006-08-17 19:41:26 +02:00
|
|
|
endif
|
|
|
|
|
2009-03-28 07:44:27 +01:00
|
|
|
vl.o: qemu-options.h
|
|
|
|
|
2009-01-21 19:13:02 +01:00
|
|
|
$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS)
|
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a
|
2009-01-21 19:13:02 +01:00
|
|
|
$(LINK)
|
2003-08-10 23:39:31 +02:00
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
endif # !CONFIG_USER_ONLY
|
2006-10-28 14:19:07 +02:00
|
|
|
|
2008-10-11 19:55:29 +02:00
|
|
|
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
|
|
|
|
ifeq ($(TARGET_XML_FILES),)
|
2009-03-29 00:46:00 +01:00
|
|
|
$(call quiet-command,rm -f $@ && echo > $@," GEN $(TARGET_DIR)$@")
|
2008-10-11 19:55:29 +02:00
|
|
|
else
|
2009-03-29 00:46:00 +01:00
|
|
|
$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES)," GEN $(TARGET_DIR)$@")
|
2008-10-11 19:55:29 +02:00
|
|
|
endif
|
|
|
|
|
2009-03-28 07:44:27 +01:00
|
|
|
qemu-options.h: $(SRC_PATH)/qemu-options.hx
|
2009-04-05 19:40:46 +02:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@," GEN $(TARGET_DIR)$@")
|
2009-03-28 07:44:27 +01:00
|
|
|
|
2003-08-10 23:39:31 +02:00
|
|
|
clean:
|
2009-04-05 19:40:50 +02:00
|
|
|
rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o qemu-options.h gdbstub-xml.c
|
2008-02-01 11:50:11 +01:00
|
|
|
rm -f *.d */*.d tcg/*.o
|
2003-09-30 22:54:24 +02:00
|
|
|
|
2007-09-16 23:08:06 +02:00
|
|
|
install: all
|
2004-03-26 23:43:34 +01:00
|
|
|
ifneq ($(PROGS),)
|
2009-04-05 19:41:02 +02:00
|
|
|
$(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
|
2004-03-26 23:43:34 +01:00
|
|
|
endif
|
2003-08-10 23:39:31 +02:00
|
|
|
|
2007-10-28 14:07:12 +01:00
|
|
|
# Include automatically generated dependency files
|
|
|
|
-include $(wildcard *.d */*.d)
|