X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=Makefile.target;h=ba315d6cc9284ca9c310e4f966fa466ba6e76a5c;hb=ed8f8da7a67999cd8b89e449b8b101f14fa16272;hp=6886aadea078fe7df6141f486c27c2869074de8d;hpb=16b29ae1807b024bd5052301550f5d47dae958a2;p=qemu.git diff --git a/Makefile.target b/Makefile.target index 6886aadea..ba315d6cc 100644 --- a/Makefile.target +++ b/Makefile.target @@ -1,4 +1,5 @@ include config.mak +include $(SRC_PATH)/rules.mak TARGET_BASE_ARCH:=$(TARGET_ARCH) ifeq ($(TARGET_ARCH), x86_64) @@ -71,95 +72,49 @@ endif PROGS=$(QEMU_PROG) -# We require -O2 to avoid the stack setup prologue in EXIT_TB -OP_CFLAGS := -O2 -g -fno-strict-aliasing -OP_CFLAGS += -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls - # cc-option -# Usage: OP_CFLAGS+=$(call cc-option, -falign-functions=0, -malign-functions=0) - -cc-option = $(shell if $(CC) $(OP_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \ - > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) +# Usage: CFLAGS+=$(call cc-option, $(CFLAGS), -falign-functions=0, -malign-functions=0) -OP_CFLAGS+=$(call cc-option, -fno-reorder-blocks, "") -OP_CFLAGS+=$(call cc-option, -fno-gcse, "") -OP_CFLAGS+=$(call cc-option, -fno-tree-ch, "") -OP_CFLAGS+=$(call cc-option, -fno-optimize-sibling-calls, "") -OP_CFLAGS+=$(call cc-option, -fno-crossjumping, "") -OP_CFLAGS+=$(call cc-option, -fno-align-labels, "") -OP_CFLAGS+=$(call cc-option, -fno-align-jumps, "") -OP_CFLAGS+=$(call cc-option, -fno-align-functions, $(call cc-option, -malign-functions=0, "")) -OP_CFLAGS+=$(call cc-option, -fno-section-anchors, "") +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 ;) HELPER_CFLAGS= ifeq ($(ARCH),i386) HELPER_CFLAGS+=-fomit-frame-pointer -OP_CFLAGS+=-mpreferred-stack-boundary=2 -fomit-frame-pointer -endif - -ifeq ($(ARCH),ppc) -CPPFLAGS+= -D__powerpc__ -OP_CFLAGS+= -mlongcall endif ifeq ($(ARCH),sparc) CFLAGS+=-ffixed-g2 -ffixed-g3 - OP_CFLAGS+=-fno-delayed-branch -ffixed-i0 - ifeq ($(CONFIG_SOLARIS),yes) - OP_CFLAGS+=-fno-omit-frame-pointer - else + ifneq ($(CONFIG_SOLARIS),yes) CFLAGS+=-ffixed-g1 -ffixed-g6 HELPER_CFLAGS+=-ffixed-i0 endif endif ifeq ($(ARCH),sparc64) - OP_CFLAGS+=-mcpu=ultrasparc -m64 -fno-delayed-branch -ffixed-i0 ifneq ($(CONFIG_SOLARIS),yes) CFLAGS+=-ffixed-g5 -ffixed-g6 -ffixed-g7 - OP_CFLAGS+=-ffixed-g5 -ffixed-g6 -ffixed-g7 else CFLAGS+=-ffixed-g1 -ffixed-g4 -ffixed-g5 -ffixed-g7 endif endif ifeq ($(ARCH),alpha) -# -msmall-data is not used for OP_CFLAGS because we want two-instruction -# relocations for the constant constructions # Ensure there's only a single GP CFLAGS+=-msmall-data endif ifeq ($(ARCH),hppa) -OP_CFLAGS=-O1 -fno-delayed-branch BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld endif ifeq ($(ARCH),ia64) CFLAGS+=-mno-sdata -OP_CFLAGS+=-mno-sdata -endif - -ifeq ($(ARCH),arm) -OP_CFLAGS+=-mno-sched-prolog -fno-omit-frame-pointer -endif - -ifeq ($(ARCH),m68k) -OP_CFLAGS+=-fomit-frame-pointer -endif - -ifeq ($(ARCH),mips) -OP_CFLAGS+=-mabi=32 -G0 -fno-PIC -mno-abicalls -fomit-frame-pointer -fno-delayed-branch -Wa,-O0 -endif - -ifeq ($(ARCH),mips64) -OP_CFLAGS+=-mabi=n32 -G0 -fno-PIC -mno-abicalls -fomit-frame-pointer -fno-delayed-branch -Wa,-O0 endif CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS) LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS) -OP_CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS) CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE LIBS+=-lm @@ -171,7 +126,6 @@ LIBS+=-lsocket -lnsl -lresolv ifdef NEEDS_LIBSUNMATH LIBS+=-lsunmath LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib -OP_CFLAGS+=-I/opt/SUNWspro/prod/include/cc CFLAGS+=-I/opt/SUNWspro/prod/include/cc endif endif @@ -257,8 +211,6 @@ endif # libqemu libqemu.a: $(LIBOBJS) - rm -f $@ - $(AR) rcs $@ $(LIBOBJS) translate.o: translate.c cpu.h @@ -266,16 +218,11 @@ translate-all.o: translate-all.c cpu.h tcg/tcg.o: cpu.h -machine.o: machine.c - $(CC) $(OP_CFLAGS) $(CPPFLAGS) -c -o $@ $< - # HELPER_CFLAGS is used for all the code compiled with static register # variables -op_helper.o: op_helper.c - $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) $(I386_CFLAGS) -c -o $@ $< +op_helper.o: CFLAGS += $(HELPER_CFLAGS) $(I386_CFLAGS) -cpu-exec.o: cpu-exec.c - $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< +cpu-exec.o: CFLAGS += $(HELPER_CFLAGS) ######################################################### # Linux user emulator target @@ -373,7 +320,7 @@ CFLAGS+=-p endif OBJS= main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \ - elfload.o linuxload.o uaccess.o + elfload.o linuxload.o uaccess.o envlist.o LIBS+= $(AIOLIBS) ifdef TARGET_HAS_BFLT OBJS+= flatload.o @@ -403,11 +350,10 @@ OBJS+= libqemu.a # Note: this is a workaround. The real fix is to avoid compiling # cpu_signal_handler() in cpu-exec.c. -signal.o: signal.c - $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< +signal.o: CFLAGS += $(HELPER_CFLAGS) $(QEMU_PROG): $(OBJS) ../libqemu_user.a - $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + $(LINK) 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) @@ -439,11 +385,10 @@ endif # Note: this is a workaround. The real fix is to avoid compiling # cpu_signal_handler() in cpu-exec.c. -signal.o: signal.c - $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< +signal.o: CFLAGS += $(HELPER_CFLAGS) $(QEMU_PROG): $(OBJS) - $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + $(LINK) endif #CONFIG_DARWIN_USER @@ -544,11 +489,10 @@ endif # Note: this is a workaround. The real fix is to avoid compiling # cpu_signal_handler() in cpu-exec.c. -signal.o: signal.c - $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< +signal.o: CFLAGS += $(HELPER_CFLAGS) $(QEMU_PROG): $(OBJS) ../libqemu_user.a - $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + $(LINK) endif #CONFIG_BSD_USER @@ -556,7 +500,10 @@ endif #CONFIG_BSD_USER # System emulator target ifndef CONFIG_USER_ONLY -OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o +OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o dma-helpers.o +# virtio has to be here due to weird dependency between PCI and virtio-net. +# need to fix this properly +OBJS+=virtio.o virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o OBJS+=fw_cfg.o ifdef CONFIG_KVM OBJS+=kvm.o kvm-all.o @@ -590,10 +537,7 @@ ifdef CONFIG_OSS LIBS += $(CONFIG_OSS_LIB) endif -SOUND_HW = sb16.o es1370.o -ifdef CONFIG_AC97 -SOUND_HW += ac97.o -endif +SOUND_HW = sb16.o es1370.o ac97.o ifdef CONFIG_ADLIB SOUND_HW += fmopl.o adlib.o adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0 @@ -630,14 +574,16 @@ OBJS += pcnet.o OBJS += rtl8139.o OBJS += e1000.o +# Serial mouse +OBJS += msmouse.o + ifeq ($(TARGET_BASE_ARCH), i386) # Hardware support OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o hpet.o -# virtio support -OBJS+= virtio.o virtio-blk.o virtio-balloon.o virtio-net.o +OBJS += device-hotplug.o pci-hotplug.o CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE endif ifeq ($(TARGET_BASE_ARCH), ppc) @@ -648,14 +594,16 @@ OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o OBJS+= pckbd.o ps2.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o OBJS+= prep_pci.o ppc_prep.o # Mac shared devices -OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o +OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o escc.o # OldWorld PowerMac OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o # NewWorld PowerMac -OBJS+= unin_pci.o ppc_chrp.o +OBJS+= unin_pci.o ppc_newworld.o # PowerPC 4xx boards OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o OBJS+= ppc440.o ppc440_bamboo.o +# PowerPC E500 boards +OBJS+= ppce500_pci.o ppce500_mpc8544ds.o ifdef FDT_LIBS OBJS+= device_tree.o LIBS+= $(FDT_LIBS) @@ -663,8 +611,6 @@ endif ifdef CONFIG_KVM OBJS+= kvm_ppc.o endif -# virtio support -OBJS+= virtio.o virtio-blk.o virtio-balloon.o virtio-net.o endif ifeq ($(TARGET_BASE_ARCH), mips) OBJS+= mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o @@ -674,10 +620,14 @@ OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds122 OBJS+= piix_pci.o parallel.o cirrus_vga.o pcspk.o $(SOUND_HW) OBJS+= mipsnet.o OBJS+= pflash_cfi01.o +OBJS+= vmware_vga.o CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE endif ifeq ($(TARGET_BASE_ARCH), cris) -OBJS+= etraxfs.o +# Boards +OBJS+= etraxfs.o axis_dev88.o + +# IO blocks OBJS+= etraxfs_dma.o OBJS+= etraxfs_pic.o OBJS+= etraxfs_eth.o @@ -685,7 +635,7 @@ OBJS+= etraxfs_timer.o OBJS+= etraxfs_ser.o OBJS+= ptimer.o -OBJS+= pflash_cfi02.o +OBJS+= pflash_cfi02.o nand.o endif ifeq ($(TARGET_BASE_ARCH), sparc) ifeq ($(TARGET_ARCH), sparc64) @@ -694,7 +644,7 @@ OBJS+= fdc.o mc146818rtc.o serial.o m48t59.o OBJS+= cirrus_vga.o parallel.o ptimer.o else OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o -OBJS+= slavio_timer.o slavio_serial.o slavio_misc.o fdc.o sparc32_dma.o +OBJS+= slavio_timer.o escc.o slavio_misc.o fdc.o sparc32_dma.o OBJS+= cs4231.o ptimer.o eccmemctl.o sbi.o sun4c_intctl.o endif endif @@ -774,8 +724,12 @@ LDFLAGS+=-p main.o: CFLAGS+=-p endif +vl.o: CFLAGS+=$(SDL_CFLAGS) + +$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) + $(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a - $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) + $(LINK) endif # !CONFIG_USER_ONLY @@ -787,12 +741,6 @@ else $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES) endif -%.o: %.c - $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< - -%.o: %.S - $(CC) $(CPPFLAGS) -c -o $@ $< - clean: rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o rm -f *.d */*.d tcg/*.o