Makefile.target 10 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

Blue Swirl's avatar
Blue Swirl committed
89
obj-y = main.o syscall.o strace.o mmap.o signal.o thunk.o \
90
      elfload.o linuxload.o uaccess.o gdbstub.o gdbstub-xml.o
91

92 93
obj-$(TARGET_HAS_BFLT) += flatload.o
obj-$(TARGET_HAS_ELFLOAD32) += elfload32.o
94

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

97 98 99 100
ifeq ($(TARGET_BASE_ARCH), i386)
obj-y += ioport-user.o
endif

101
nwfpe-obj-y = fpa11.o fpa11_cpdo.o fpa11_cpdt.o fpa11_cprt.o fpopcode.o
102
nwfpe-obj-y += single_cpdo.o double_cpdo.o extended_cpdo.o
103 104 105 106
obj-arm-y +=  $(addprefix nwfpe/, $(nwfpe-obj-y))
obj-arm-y += arm-semi.o

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

108
ARLIBS=../libqemu_user.a libqemu.a
109 110 111 112 113 114 115 116
endif #CONFIG_LINUX_USER

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

ifdef CONFIG_DARWIN_USER

VPATH+=:$(SRC_PATH)/darwin-user
117
QEMU_CFLAGS+=-I$(SRC_PATH)/darwin-user -I$(SRC_PATH)/darwin-user/$(TARGET_ARCH)
118 119 120 121 122 123

# 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
124
obj-y = main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \
125 126 127 128 129
        gdbstub.o gdbstub-xml.o

ifeq ($(TARGET_BASE_ARCH), i386)
obj-y += ioport-user.o
endif
130

131
ARLIBS=libqemu.a
132 133 134

endif #CONFIG_DARWIN_USER

135 136 137 138 139 140
#########################################################
# BSD user emulator target

ifdef CONFIG_BSD_USER

VPATH+=:$(SRC_PATH)/bsd-user
141
QEMU_CFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH)
142

Blue Swirl's avatar
Blue Swirl committed
143
obj-y = main.o bsdload.o elfload.o mmap.o signal.o strace.o syscall.o \
144 145 146 147 148
        gdbstub.o gdbstub-xml.o uaccess.o

ifeq ($(TARGET_BASE_ARCH), i386)
obj-y += ioport-user.o
endif
149

150
ARLIBS=libqemu.a ../libqemu_user.a
151 152 153

endif #CONFIG_BSD_USER

154 155
#########################################################
# System emulator target
156
ifdef CONFIG_SOFTMMU
157

Juan Quintela's avatar
Juan Quintela committed
158
obj-y = vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o \
159
        gdbstub.o gdbstub-xml.o msix.o ioport.o qemu-config.o
160 161
# 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
162 163
obj-y += virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
obj-$(CONFIG_KVM) += kvm.o kvm-all.o
164

165
LIBS+=-lz
bellard's avatar
bellard committed
166

167 168 169 170 171 172
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
173
sound-obj-$(CONFIG_CS4231A) += cs4231a.o
174

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

177 178
QEMU_CFLAGS += $(VNC_TLS_CFLAGS)
QEMU_CFLAGS += $(VNC_SASL_CFLAGS)
179

180
# xen backend driver support
181
obj-$(CONFIG_XEN) += xen_machine_pv.o xen_domainbuild.o
182

bellard's avatar
bellard committed
183
# USB layer
Juan Quintela's avatar
Juan Quintela committed
184
obj-y += usb-ohci.o
bellard's avatar
bellard committed
185

186
# PCI network cards
Juan Quintela's avatar
Juan Quintela committed
187 188 189 190 191
obj-y += eepro100.o
obj-y += ne2000.o
obj-y += pcnet.o
obj-y += rtl8139.o
obj-y += e1000.o
192

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

196
# Hardware support
197
obj-i386-y = ide.o pckbd.o vga.o $(sound-obj-y) dma.o isa-bus.o
198 199 200 201 202
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

203
# shared objects
204
obj-ppc-y = ppc.o ide.o vga.o $(sound-obj-y) dma.o isa-bus.o openpic.o
205
# PREP target
206 207
obj-ppc-y += pckbd.o serial.o i8259.o i8254.o fdc.o mc146818rtc.o
obj-ppc-y += prep_pci.o ppc_prep.o
208
# Mac shared devices
209
obj-ppc-y += macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
210
# OldWorld PowerMac
211
obj-ppc-y += heathrow_pic.o grackle_pci.o ppc_oldworld.o
212
# NewWorld PowerMac
213
obj-ppc-y += unin_pci.o ppc_newworld.o
214
# PowerPC 4xx boards
215 216
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
217
# PowerPC E500 boards
218 219
obj-ppc-y += ppce500_pci.o ppce500_mpc8544ds.o
obj-ppc-$(CONFIG_KVM) += kvm_ppc.o
220
obj-ppc-$(CONFIG_FDT) += device_tree.o
221 222 223 224 225

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
226
obj-mips-y += piix_pci.o parallel.o cirrus_vga.o isa-bus.o pcspk.o $(sound-obj-y)
227 228 229 230 231 232 233 234 235 236 237 238 239
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
240

241
obj-microblaze-$(CONFIG_FDT) += device_tree.o
242

243
# Boards
244
obj-cris-y = cris_pic_cpu.o etraxfs.o axis_dev88.o
245 246

# IO blocks
247 248 249 250 251 252 253
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
254

bellard's avatar
bellard committed
255
ifeq ($(TARGET_ARCH), sparc64)
256
obj-sparc-y = sun4u.o ide.o isa-bus.o pckbd.o vga.o apb_pci.o
257 258
obj-sparc-y += fdc.o mc146818rtc.o serial.o
obj-sparc-y += cirrus_vga.o parallel.o
bellard's avatar
bellard committed
259
else
260
obj-sparc-y = sun4m.o tcx.o iommu.o slavio_intctl.o
261
obj-sparc-y += slavio_timer.o slavio_misc.o fdc.o isa-bus.o sparc32_dma.o
262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293
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

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

296
vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS)
297

298 299
vl.o: qemu-options.h

300 301
monitor.o: qemu-monitor.h

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

304
endif # CONFIG_SOFTMMU
305

306 307 308 309
$(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y) $(ARLIBS)
	$(call LINK,$(obj-y) $(obj-$(TARGET_BASE_ARCH)-y))


310 311
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
ifeq ($(TARGET_XML_FILES),)
312
	$(call quiet-command,rm -f $@ && echo > $@,"  GEN   $(TARGET_DIR)$@")
313
else
314
	$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES),"  GEN   $(TARGET_DIR)$@")
315 316
endif

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

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

bellard's avatar
bellard committed
323
clean:
324
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
bellard's avatar
bellard committed
325
	rm -f *.d */*.d tcg/*.o
326
	rm -f qemu-options.h qemu-monitor.h gdbstub-xml.c
327

328
install: all
bellard's avatar
bellard committed
329
ifneq ($(PROGS),)
330
	$(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
bellard's avatar
bellard committed
331
endif
bellard's avatar
bellard committed
332

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