Makefile.target 9.93 KB
Newer Older
1 2
# -*- Mode: makefile -*-

bellard's avatar
bellard committed
3
include config.mak
aliguori's avatar
aliguori committed
4
include $(SRC_PATH)/rules.mak
bellard's avatar
bellard committed
5

bellard's avatar
bellard committed
6
TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
bellard's avatar
bellard committed
7
VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw
8
QEMU_CFLAGS+= -I.. -I$(TARGET_PATH) -DNEED_CPU_H
9 10 11 12 13

ifdef CONFIG_USER_ONLY
# user emulator name
QEMU_PROG=qemu-$(TARGET_ARCH2)
else
14
# system emulator name
15
ifeq ($(TARGET_ARCH), i386)
16
QEMU_PROG=qemu$(EXESUF)
17
else
18
QEMU_PROG=qemu-system-$(TARGET_ARCH2)$(EXESUF)
19
endif
bellard's avatar
bellard committed
20
endif
bellard's avatar
bellard committed
21

22
PROGS=$(QEMU_PROG)
bellard's avatar
bellard committed
23

malc's avatar
malc committed
24
ifeq ($(subst ppc64,ppc,$(ARCH))$(TARGET_BASE_ARCH),ppcppc)
25
translate.o: QEMU_CFLAGS += $(call cc-option, $(QEMU_CFLAGS), -fno-unit-at-a-time,)
malc's avatar
malc committed
26 27
endif

bellard's avatar
bellard committed
28
LIBS+=-lm
29

Juan Quintela's avatar
Juan Quintela committed
30
kvm.o kvm-all.o: QEMU_CFLAGS+=$(KVM_CFLAGS)
aliguori's avatar
aliguori committed
31

32
all: $(PROGS)
33 34
# Dummy command so that make thinks it has done something
	@true
bellard's avatar
bellard committed
35

36
#########################################################
bellard's avatar
bellard committed
37
# cpu emulator library
Juan Quintela's avatar
Juan Quintela committed
38
libobj-y = exec.o translate-all.o cpu-exec.o translate.o host-utils.o
39
libobj-$(CONFIG_KQEMU) += kqemu.o
Juan Quintela's avatar
Juan Quintela committed
40
libobj-y += tcg/tcg.o tcg/tcg-runtime.o
41 42
libobj-$(CONFIG_SOFTFLOAT) += fpu/softfloat.o
libobj-$(CONFIG_NOSOFTFLOAT) += fpu/softfloat-native.o
Juan Quintela's avatar
Juan Quintela committed
43
libobj-y += op_helper.o helper.o
44
libobj-$(CONFIG_NEED_MMU) += mmu.o
45 46
libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o
libobj-$(TARGET_ALPHA) += alpha_palcode.o
47

bellard's avatar
bellard committed
48
# NOTE: the disassembler code is only needed for debugging
Juan Quintela's avatar
Juan Quintela committed
49
libobj-y += disas.o
50 51 52 53 54 55 56 57 58 59 60 61
libobj-$(CONFIG_ALPHA_DIS) += alpha-dis.o
libobj-$(CONFIG_ARM_DIS) += arm-dis.o
libobj-$(CONFIG_CRIS_DIS) += cris-dis.o
libobj-$(CONFIG_HPPA_DIS) += hppa-dis.o
libobj-$(CONFIG_I386_DIS) += i386-dis.o
libobj-$(CONFIG_M68K_DIS) += m68k-dis.o
libobj-$(CONFIG_MICROBLAZE_DIS) += microblaze-dis.o
libobj-$(CONFIG_MIPS_DIS) += mips-dis.o
libobj-$(CONFIG_PPC_DIS) += ppc-dis.o
libobj-$(CONFIG_S390_DIS) += s390-dis.o
libobj-$(CONFIG_SH4_DIS) += sh4-dis.o
libobj-$(CONFIG_SPARC_DIS) += sparc-dis.o
bellard's avatar
bellard committed
62

63 64
# libqemu

Juan Quintela's avatar
Juan Quintela committed
65
libqemu.a: $(libobj-y)
66

67
translate.o: translate.c cpu.h
68

69
translate-all.o: translate-all.c cpu.h
70

71
tcg/tcg.o: cpu.h
72 73 74

# HELPER_CFLAGS is used for all the code compiled with static register
# variables
Juan Quintela's avatar
Juan Quintela committed
75
op_helper.o cpu-exec.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
76

Juan Quintela's avatar
Juan Quintela committed
77 78 79 80
# Note: this is a workaround. The real fix is to avoid compiling
# cpu_signal_handler() in cpu-exec.c.
signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS)

81 82 83 84 85
#########################################################
# Linux user emulator target

ifdef CONFIG_LINUX_USER

86
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
87
QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
88

Juan Quintela's avatar
Juan Quintela committed
89
obj-y = main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
90 91
      elfload.o linuxload.o uaccess.o envlist.o gdbstub.o gdbstub-xml.o \
      ioport-user.o
92 93
obj-$(TARGET_HAS_BFLT) += flatload.o
obj-$(TARGET_HAS_ELFLOAD32) += elfload32.o
94

95
obj-$(TARGET_I386) += vm86.o
96

97
nwfpe-obj-y = fpa11.o fpa11_cpdo.o fpa11_cpdt.o fpa11_cprt.o fpopcode.o
98
nwfpe-obj-y += single_cpdo.o double_cpdo.o extended_cpdo.o
99 100 101 102
obj-arm-y +=  $(addprefix nwfpe/, $(nwfpe-obj-y))
obj-arm-y += arm-semi.o

obj-m68k-y += m68k-sim.o m68k-semi.o
103

104
ARLIBS=../libqemu_user.a libqemu.a
105 106 107 108 109 110 111 112
endif #CONFIG_LINUX_USER

#########################################################
# Darwin user emulator target

ifdef CONFIG_DARWIN_USER

VPATH+=:$(SRC_PATH)/darwin-user
113
QEMU_CFLAGS+=-I$(SRC_PATH)/darwin-user -I$(SRC_PATH)/darwin-user/$(TARGET_ARCH)
114 115 116 117 118 119

# Leave some space for the regular program loading zone
LDFLAGS+=-Wl,-segaddr,__STD_PROG_ZONE,0x1000 -image_base 0x0e000000

LIBS+=-lmx

Juan Quintela's avatar
Juan Quintela committed
120
obj-y = main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \
121
        gdbstub.o gdbstub-xml.o ioport-user.o
122

123
ARLIBS=libqemu.a
124 125 126

endif #CONFIG_DARWIN_USER

127 128 129 130 131 132
#########################################################
# BSD user emulator target

ifdef CONFIG_BSD_USER

VPATH+=:$(SRC_PATH)/bsd-user
133
QEMU_CFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH)
134

Juan Quintela's avatar
Juan Quintela committed
135
obj-y = main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
136
        gdbstub.o gdbstub-xml.o ioport-user.o
Juan Quintela's avatar
Juan Quintela committed
137
obj-y += uaccess.o
138

139
ARLIBS=libqemu.a ../libqemu_user.a
140 141 142

endif #CONFIG_BSD_USER

143 144
#########################################################
# System emulator target
145
ifdef CONFIG_SOFTMMU
146

Juan Quintela's avatar
Juan Quintela committed
147
obj-y = vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o \
148
        gdbstub.o gdbstub-xml.o msix.o ioport.o qemu-config.o
149 150
# virtio has to be here due to weird dependency between PCI and virtio-net.
# need to fix this properly
Juan Quintela's avatar
Juan Quintela committed
151 152
obj-y += virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
obj-$(CONFIG_KVM) += kvm.o kvm-all.o
153

154
LIBS+=-lz
bellard's avatar
bellard committed
155

156 157 158 159 160 161
sound-obj-y =
sound-obj-$(CONFIG_SB16) += sb16.o
sound-obj-$(CONFIG_ES1370) += es1370.o
sound-obj-$(CONFIG_AC97) += ac97.o
sound-obj-$(CONFIG_ADLIB) += fmopl.o adlib.o
sound-obj-$(CONFIG_GUS) += gus.o gusemu_hal.o gusemu_mixer.o
malc's avatar
malc committed
162
sound-obj-$(CONFIG_CS4231A) += cs4231a.o
163

164
adlib.o fmopl.o: QEMU_CFLAGS += -DBUILD_Y8950=0
bellard's avatar
bellard committed
165

166 167
QEMU_CFLAGS += $(VNC_TLS_CFLAGS)
QEMU_CFLAGS += $(VNC_SASL_CFLAGS)
168

169
# xen backend driver support
170
obj-$(CONFIG_XEN) += xen_machine_pv.o xen_domainbuild.o
171

bellard's avatar
bellard committed
172
# USB layer
Juan Quintela's avatar
Juan Quintela committed
173
obj-y += usb-ohci.o
bellard's avatar
bellard committed
174

175
# PCI network cards
Juan Quintela's avatar
Juan Quintela committed
176 177 178 179 180
obj-y += eepro100.o
obj-y += ne2000.o
obj-y += pcnet.o
obj-y += rtl8139.o
obj-y += e1000.o
181

Richard W.M. Jones's avatar
Richard W.M. Jones committed
182
# Generic watchdog support and some watchdog devices
Juan Quintela's avatar
Juan Quintela committed
183
obj-y += wdt_ib700.o wdt_i6300esb.o
Richard W.M. Jones's avatar
Richard W.M. Jones committed
184

185
# Hardware support
186
obj-i386-y = ide.o pckbd.o vga.o $(sound-obj-y) dma.o isa-bus.o
187 188 189 190 191
obj-i386-y += fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
obj-i386-y += cirrus_vga.o apic.o ioapic.o parallel.o acpi.o piix_pci.o
obj-i386-y += usb-uhci.o vmmouse.o vmport.o vmware_vga.o hpet.o
obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o

192
# shared objects
193
obj-ppc-y = ppc.o ide.o vga.o $(sound-obj-y) dma.o isa-bus.o openpic.o
194
# PREP target
195 196
obj-ppc-y += pckbd.o serial.o i8259.o i8254.o fdc.o mc146818rtc.o
obj-ppc-y += prep_pci.o ppc_prep.o
197
# Mac shared devices
198
obj-ppc-y += macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
199
# OldWorld PowerMac
200
obj-ppc-y += heathrow_pic.o grackle_pci.o ppc_oldworld.o
201
# NewWorld PowerMac
202
obj-ppc-y += unin_pci.o ppc_newworld.o
203
# PowerPC 4xx boards
204 205
obj-ppc-y += pflash_cfi02.o ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o
obj-ppc-y += ppc440.o ppc440_bamboo.o
206
# PowerPC E500 boards
207 208
obj-ppc-y += ppce500_pci.o ppce500_mpc8544ds.o
obj-ppc-$(CONFIG_KVM) += kvm_ppc.o
209
obj-ppc-$(CONFIG_FDT) += device_tree.o
210 211 212 213 214

obj-mips-y = mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
obj-mips-y += mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o rc4030.o
obj-mips-y += g364fb.o jazz_led.o dp8393x.o
obj-mips-y += ide.o gt64xxx.o pckbd.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
215
obj-mips-y += piix_pci.o parallel.o cirrus_vga.o isa-bus.o pcspk.o $(sound-obj-y)
216 217 218 219 220 221 222 223 224 225 226 227 228
obj-mips-y += mipsnet.o
obj-mips-y += pflash_cfi01.o
obj-mips-y += vmware_vga.o

obj-microblaze-y = petalogix_s3adsp1800_mmu.o

obj-microblaze-y += microblaze_pic_cpu.o
obj-microblaze-y += xilinx_intc.o
obj-microblaze-y += xilinx_timer.o
obj-microblaze-y += xilinx_uartlite.o
obj-microblaze-y += xilinx_ethlite.o

obj-microblaze-y += pflash_cfi02.o
229

230
obj-microblaze-$(CONFIG_FDT) += device_tree.o
231

232
# Boards
233
obj-cris-y = cris_pic_cpu.o etraxfs.o axis_dev88.o
234 235

# IO blocks
236 237 238 239 240 241 242
obj-cris-y += etraxfs_dma.o
obj-cris-y += etraxfs_pic.o
obj-cris-y += etraxfs_eth.o
obj-cris-y += etraxfs_timer.o
obj-cris-y += etraxfs_ser.o

obj-cris-y += pflash_cfi02.o
243

bellard's avatar
bellard committed
244
ifeq ($(TARGET_ARCH), sparc64)
245
obj-sparc-y = sun4u.o ide.o isa-bus.o pckbd.o vga.o apb_pci.o
246 247
obj-sparc-y += fdc.o mc146818rtc.o serial.o
obj-sparc-y += cirrus_vga.o parallel.o
bellard's avatar
bellard committed
248
else
249
obj-sparc-y = sun4m.o tcx.o iommu.o slavio_intctl.o
250
obj-sparc-y += slavio_timer.o slavio_misc.o fdc.o isa-bus.o sparc32_dma.o
251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282
obj-sparc-y += cs4231.o eccmemctl.o sbi.o sun4c_intctl.o
endif

obj-arm-y = integratorcp.o versatilepb.o smc91c111.o arm_pic.o arm_timer.o
obj-arm-y += arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
obj-arm-y += versatile_pci.o
obj-arm-y += realview_gic.o realview.o arm_sysctl.o mpcore.o
obj-arm-y += armv7m.o armv7m_nvic.o stellaris.o pl022.o stellaris_enet.o
obj-arm-y += pl061.o
obj-arm-y += arm-semi.o
obj-arm-y += pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o
obj-arm-y += pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o pxa2xx_keypad.o
obj-arm-y += pflash_cfi01.o gumstix.o
obj-arm-y += zaurus.o ide.o serial.o spitz.o tosa.o tc6393xb.o
obj-arm-y += omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
obj-arm-y += omap2.o omap_dss.o soc_dma.o
obj-arm-y += omap_sx1.o palm.o tsc210x.o
obj-arm-y += nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
obj-arm-y += mst_fpga.o mainstone.o
obj-arm-y += musicpal.o pflash_cfi02.o
obj-arm-y += framebuffer.o
obj-arm-y += syborg.o syborg_fb.o syborg_interrupt.o syborg_keyboard.o
obj-arm-y += syborg_serial.o syborg_timer.o syborg_pointer.o syborg_rtc.o
obj-arm-y += syborg_virtio.o

obj-sh4-y = shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
obj-sh4-y += sh_timer.o sh_serial.o sh_intc.o sh_pci.o sm501.o serial.o
obj-sh4-y += ide.o

obj-m68k-y = an5206.o mcf5206.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
obj-m68k-y += m68k-semi.o dummy_m68k.o

283
main.o vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS)
bellard's avatar
bellard committed
284

285
vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS)
286

287 288
vl.o: qemu-options.h

289 290
monitor.o: qemu-monitor.h

291
ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
bellard's avatar
bellard committed
292

293
endif # CONFIG_SOFTMMU
294

295 296 297 298
$(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y) $(ARLIBS)
	$(call LINK,$(obj-y) $(obj-$(TARGET_BASE_ARCH)-y))


299 300
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
ifeq ($(TARGET_XML_FILES),)
301
	$(call quiet-command,rm -f $@ && echo > $@,"  GEN   $(TARGET_DIR)$@")
302
else
303
	$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES),"  GEN   $(TARGET_DIR)$@")
304 305
endif

306
qemu-options.h: $(SRC_PATH)/qemu-options.hx
307
	$(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@,"  GEN   $(TARGET_DIR)$@")
308

309 310 311
qemu-monitor.h: $(SRC_PATH)/qemu-monitor.hx
	$(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@,"  GEN   $(TARGET_DIR)$@")

bellard's avatar
bellard committed
312
clean:
313
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
bellard's avatar
bellard committed
314
	rm -f *.d */*.d tcg/*.o
315
	rm -f qemu-options.h qemu-monitor.h gdbstub-xml.c
316

317
install: all
bellard's avatar
bellard committed
318
ifneq ($(PROGS),)
319
	$(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
bellard's avatar
bellard committed
320
endif
bellard's avatar
bellard committed
321

322 323
# Include automatically generated dependency files
-include $(wildcard *.d */*.d)