diff options
Diffstat (limited to 'qemu/Makefile.target')
-rw-r--r-- | qemu/Makefile.target | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/qemu/Makefile.target b/qemu/Makefile.target new file mode 100644 index 000000000..3e7aafd72 --- /dev/null +++ b/qemu/Makefile.target @@ -0,0 +1,218 @@ +# -*- Mode: makefile -*- + +BUILD_DIR?=$(CURDIR)/.. + +include ../config-host.mak +include config-target.mak +include config-devices.mak +include $(SRC_PATH)/rules.mak + +$(call set-vpath, $(SRC_PATH)) +ifdef CONFIG_LINUX +QEMU_CFLAGS += -I../linux-headers +endif +QEMU_CFLAGS += -I.. -I$(SRC_PATH)/target-$(TARGET_BASE_ARCH) -DNEED_CPU_H + +QEMU_CFLAGS+=-I$(SRC_PATH)/include + +ifdef CONFIG_USER_ONLY +# user emulator name +QEMU_PROG=qemu-$(TARGET_NAME) +QEMU_PROG_BUILD = $(QEMU_PROG) +else +# system emulator name +QEMU_PROG=qemu-system-$(TARGET_NAME)$(EXESUF) +ifneq (,$(findstring -mwindows,$(libs_softmmu))) +# Terminate program name with a 'w' because the linker builds a windows executable. +QEMU_PROGW=qemu-system-$(TARGET_NAME)w$(EXESUF) +$(QEMU_PROG): $(QEMU_PROGW) + $(call quiet-command,$(OBJCOPY) --subsystem console $(QEMU_PROGW) $(QEMU_PROG)," GEN $(TARGET_DIR)$(QEMU_PROG)") +QEMU_PROG_BUILD = $(QEMU_PROGW) +else +QEMU_PROG_BUILD = $(QEMU_PROG) +endif +endif + +PROGS=$(QEMU_PROG) $(QEMU_PROGW) +STPFILES= + +config-target.h: config-target.h-timestamp +config-target.h-timestamp: config-target.mak + +ifdef CONFIG_TRACE_SYSTEMTAP +stap: $(QEMU_PROG).stp-installed $(QEMU_PROG).stp $(QEMU_PROG)-simpletrace.stp + +ifdef CONFIG_USER_ONLY +TARGET_TYPE=user +else +TARGET_TYPE=system +endif + +$(QEMU_PROG).stp-installed: $(SRC_PATH)/trace-events + $(call quiet-command,$(TRACETOOL) \ + --format=stap \ + --backends=$(TRACE_BACKENDS) \ + --binary=$(bindir)/$(QEMU_PROG) \ + --target-name=$(TARGET_NAME) \ + --target-type=$(TARGET_TYPE) \ + < $< > $@," GEN $(TARGET_DIR)$(QEMU_PROG).stp-installed") + +$(QEMU_PROG).stp: $(SRC_PATH)/trace-events + $(call quiet-command,$(TRACETOOL) \ + --format=stap \ + --backends=$(TRACE_BACKENDS) \ + --binary=$(realpath .)/$(QEMU_PROG) \ + --target-name=$(TARGET_NAME) \ + --target-type=$(TARGET_TYPE) \ + < $< > $@," GEN $(TARGET_DIR)$(QEMU_PROG).stp") + +$(QEMU_PROG)-simpletrace.stp: $(SRC_PATH)/trace-events + $(call quiet-command,$(TRACETOOL) \ + --format=simpletrace-stap \ + --backends=$(TRACE_BACKENDS) \ + --probe-prefix=qemu.$(TARGET_TYPE).$(TARGET_NAME) \ + < $< > $@," GEN $(TARGET_DIR)$(QEMU_PROG)-simpletrace.stp") + +else +stap: +endif + +all: $(PROGS) stap + +# Dummy command so that make thinks it has done something + @true + +######################################################### +# cpu emulator library +obj-y = exec.o translate-all.o cpu-exec.o +obj-y += tcg/tcg.o tcg/tcg-op.o tcg/optimize.o +obj-$(CONFIG_TCG_INTERPRETER) += tci.o +obj-$(CONFIG_TCG_INTERPRETER) += disas/tci.o +obj-y += fpu/softfloat.o +obj-y += target-$(TARGET_BASE_ARCH)/ +obj-y += disas.o +obj-$(call notempty,$(TARGET_XML_FILES)) += gdbstub-xml.o +obj-$(call lnot,$(CONFIG_KVM)) += kvm-stub.o + +obj-$(CONFIG_LIBDECNUMBER) += libdecnumber/decContext.o +obj-$(CONFIG_LIBDECNUMBER) += libdecnumber/decNumber.o +obj-$(CONFIG_LIBDECNUMBER) += libdecnumber/dpd/decimal32.o +obj-$(CONFIG_LIBDECNUMBER) += libdecnumber/dpd/decimal64.o +obj-$(CONFIG_LIBDECNUMBER) += libdecnumber/dpd/decimal128.o + +######################################################### +# Linux user emulator target + +ifdef CONFIG_LINUX_USER + +QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) -I$(SRC_PATH)/linux-user + +obj-y += linux-user/ +obj-y += gdbstub.o thunk.o user-exec.o + +endif #CONFIG_LINUX_USER + +######################################################### +# BSD user emulator target + +ifdef CONFIG_BSD_USER + +QEMU_CFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ABI_DIR) \ + -I$(SRC_PATH)/bsd-user/$(HOST_VARIANT_DIR) + +obj-y += bsd-user/ +obj-y += gdbstub.o user-exec.o + +endif #CONFIG_BSD_USER + +######################################################### +# System emulator target +ifdef CONFIG_SOFTMMU +obj-y += arch_init.o cpus.o monitor.o gdbstub.o balloon.o ioport.o numa.o +obj-y += qtest.o bootdevice.o +obj-y += hw/ +obj-$(CONFIG_KVM) += kvm-all.o +obj-y += memory.o cputlb.o +obj-y += memory_mapping.o +obj-y += dump.o +obj-y += migration/ram.o migration/savevm.o +LIBS := $(libs_softmmu) $(LIBS) + +# xen support +obj-$(CONFIG_XEN) += xen-common.o +obj-$(CONFIG_XEN_I386) += xen-hvm.o xen-mapcache.o +obj-$(call lnot,$(CONFIG_XEN)) += xen-common-stub.o +obj-$(call lnot,$(CONFIG_XEN_I386)) += xen-hvm-stub.o + +# Hardware support +ifeq ($(TARGET_NAME), sparc64) +obj-y += hw/sparc64/ +else +obj-y += hw/$(TARGET_BASE_ARCH)/ +endif + +GENERATED_HEADERS += hmp-commands.h qmp-commands-old.h + +endif # CONFIG_SOFTMMU + +# Workaround for http://gcc.gnu.org/PR55489, see configure. +%/translate.o: QEMU_CFLAGS += $(TRANSLATE_OPT_CFLAGS) + +dummy := $(call unnest-vars,,obj-y) +all-obj-y := $(obj-y) + +target-obj-y := +block-obj-y := +common-obj-y := +include $(SRC_PATH)/Makefile.objs +dummy := $(call unnest-vars,,target-obj-y) +target-obj-y-save := $(target-obj-y) +dummy := $(call unnest-vars,.., \ + block-obj-y \ + block-obj-m \ + common-obj-y \ + common-obj-m) +target-obj-y := $(target-obj-y-save) +all-obj-y += $(common-obj-y) +all-obj-y += $(target-obj-y) +all-obj-$(CONFIG_SOFTMMU) += $(block-obj-y) + +$(QEMU_PROG_BUILD): config-devices.mak + +# build either PROG or PROGW +$(QEMU_PROG_BUILD): $(all-obj-y) ../libqemuutil.a ../libqemustub.a + $(call LINK, $(filter-out %.mak, $^)) +ifdef CONFIG_DARWIN + $(call quiet-command,Rez -append $(SRC_PATH)/pc-bios/qemu.rsrc -o $@," REZ $(TARGET_DIR)$@") + $(call quiet-command,SetFile -a C $@," SETFILE $(TARGET_DIR)$@") +endif + +gdbstub-xml.c: $(TARGET_XML_FILES) $(SRC_PATH)/scripts/feature_to_c.sh + $(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/scripts/feature_to_c.sh $@ $(TARGET_XML_FILES)," GEN $(TARGET_DIR)$@") + +hmp-commands.h: $(SRC_PATH)/hmp-commands.hx + $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $(TARGET_DIR)$@") + +qmp-commands-old.h: $(SRC_PATH)/qmp-commands.hx + $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $(TARGET_DIR)$@") + +clean: + rm -f *.a *~ $(PROGS) + rm -f $(shell find . -name '*.[od]') + rm -f hmp-commands.h qmp-commands-old.h gdbstub-xml.c +ifdef CONFIG_TRACE_SYSTEMTAP + rm -f *.stp +endif + +install: all +ifneq ($(PROGS),) + $(call install-prog,$(PROGS),$(DESTDIR)$(bindir)) +endif +ifdef CONFIG_TRACE_SYSTEMTAP + $(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/../systemtap/tapset" + $(INSTALL_DATA) $(QEMU_PROG).stp-installed "$(DESTDIR)$(qemu_datadir)/../systemtap/tapset/$(QEMU_PROG).stp" + $(INSTALL_DATA) $(QEMU_PROG)-simpletrace.stp "$(DESTDIR)$(qemu_datadir)/../systemtap/tapset/$(QEMU_PROG)-simpletrace.stp" +endif + +GENERATED_HEADERS += config-target.h +Makefile: $(GENERATED_HEADERS) |