71
57
TARGET_ARCH2=mips64el
74
QEMU_USER=qemu-$(TARGET_ARCH2)
61
ifdef CONFIG_USER_ONLY
63
QEMU_PROG=qemu-$(TARGET_ARCH2)
75
65
# system emulator name
77
66
ifeq ($(TARGET_ARCH), i386)
78
QEMU_SYSTEM=qemu$(EXESUF)
80
QEMU_SYSTEM=qemu-system-$(TARGET_ARCH2)$(EXESUF)
86
ifdef CONFIG_USER_ONLY
93
endif # !CONFIG_USER_ONLY
99
# We require -O2 to avoid the stack setup prologue in EXIT_TB
100
OP_CFLAGS := -Wall -O2 -g -fno-strict-aliasing
67
QEMU_PROG=qemu$(EXESUF)
69
QEMU_PROG=qemu-system-$(TARGET_ARCH2)$(EXESUF)
103
# Usage: OP_CFLAGS+=$(call cc-option, -falign-functions=0, -malign-functions=0)
105
cc-option = $(shell if $(CC) $(OP_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
106
> /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
108
OP_CFLAGS+=$(call cc-option, -fno-reorder-blocks, "")
109
OP_CFLAGS+=$(call cc-option, -fno-gcse, "")
110
OP_CFLAGS+=$(call cc-option, -fno-tree-ch, "")
111
OP_CFLAGS+=$(call cc-option, -fno-optimize-sibling-calls, "")
112
OP_CFLAGS+=$(call cc-option, -fno-crossjumping, "")
113
OP_CFLAGS+=$(call cc-option, -fno-align-labels, "")
114
OP_CFLAGS+=$(call cc-option, -fno-align-jumps, "")
115
OP_CFLAGS+=$(call cc-option, -fno-align-functions, $(call cc-option, -malign-functions=0, ""))
116
OP_CFLAGS+=$(call cc-option, -fno-section-anchors, "")
76
# Usage: CFLAGS+=$(call cc-option, $(CFLAGS), -falign-functions=0, -malign-functions=0)
78
cc-option = $(shell if $(CC) $(1) $(2) -S -o /dev/null -xc /dev/null \
79
> /dev/null 2>&1; then echo "$(2)"; else echo "$(3)"; fi ;)
118
83
ifeq ($(ARCH),i386)
119
84
HELPER_CFLAGS+=-fomit-frame-pointer
120
OP_CFLAGS+=-mpreferred-stack-boundary=2 -fomit-frame-pointer
128
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
130
ifdef CONFIG_LINUX_USER
131
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
132
# that the kernel ELF loader considers as an executable. I think this
133
# is the simplest way to make it self virtualizable!
134
BASE_LDFLAGS+=-Wl,-shared
139
ifeq ($(ARCH),x86_64)
88
CFLAGS+=-ffixed-g2 -ffixed-g3
140
89
ifneq ($(CONFIG_SOLARIS),yes)
141
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
90
CFLAGS+=-ffixed-g1 -ffixed-g6
91
HELPER_CFLAGS+=-ffixed-i0
146
CPPFLAGS+= -D__powerpc__
147
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
151
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
155
BASE_CFLAGS+=-ffixed-g2 -ffixed-g3
156
OP_CFLAGS+=-fno-delayed-branch -ffixed-i0
157
ifeq ($(CONFIG_SOLARIS),yes)
158
OP_CFLAGS+=-fno-omit-frame-pointer
95
ifeq ($(ARCH),sparc64)
96
ifneq ($(CONFIG_SOLARIS),yes)
97
CFLAGS+=-ffixed-g5 -ffixed-g6 -ffixed-g7
160
BASE_CFLAGS+=-ffixed-g1 -ffixed-g6
161
HELPER_CFLAGS=$(CFLAGS) -ffixed-i0
162
# -static is used to avoid g1/g3 usage by the dynamic linker
163
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
167
ifeq ($(ARCH),sparc64)
168
BASE_CFLAGS+=-ffixed-g1 -ffixed-g4 -ffixed-g5 -ffixed-g7
169
OP_CFLAGS+=-mcpu=ultrasparc -m64 -fno-delayed-branch -ffixed-i0
170
ifneq ($(CONFIG_SOLARIS),yes)
171
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
172
OP_CFLAGS+=-ffixed-g1 -ffixed-g4 -ffixed-g5 -ffixed-g7
99
CFLAGS+=-ffixed-g1 -ffixed-g4 -ffixed-g5 -ffixed-g7
176
103
ifeq ($(ARCH),alpha)
177
# -msmall-data is not used for OP_CFLAGS because we want two-instruction
178
# relocations for the constant constructions
179
104
# Ensure there's only a single GP
180
BASE_CFLAGS+=-msmall-data
181
109
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
184
112
ifeq ($(ARCH),ia64)
185
BASE_CFLAGS+=-mno-sdata
186
OP_CFLAGS+=-mno-sdata
187
BASE_LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
191
OP_CFLAGS+=-mno-sched-prolog -fno-omit-frame-pointer
192
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
196
OP_CFLAGS+=-fomit-frame-pointer
197
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
201
OP_CFLAGS+=-mabi=32 -G0 -fno-PIC -mno-abicalls -fomit-frame-pointer -fno-delayed-branch -Wa,-O0
202
ifeq ($(WORDS_BIGENDIAN),yes)
203
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
205
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
209
ifeq ($(ARCH),mips64)
210
OP_CFLAGS+=-mabi=n32 -G0 -fno-PIC -mno-abicalls -fomit-frame-pointer -fno-delayed-branch -Wa,-O0
211
ifeq ($(WORDS_BIGENDIAN),yes)
212
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
214
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
218
ifeq ($(CONFIG_DARWIN),yes)
222
ifdef CONFIG_DARWIN_USER
223
# Leave some space for the regular program loading zone
224
BASE_LDFLAGS+=-Wl,-segaddr,__STD_PROG_ZONE,0x1000 -image_base 0x0e000000
227
BASE_CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
228
BASE_LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
229
OP_CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
230
OP_LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
232
#########################################################
116
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
117
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
234
119
CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
236
ifndef CONFIG_USER_ONLY
239
121
ifdef CONFIG_WIN32
240
122
LIBS+=-lwinmm -lws2_32 -liphlpapi
244
126
ifdef NEEDS_LIBSUNMATH
246
128
LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
247
OP_CFLAGS+=-I/opt/SUNWspro/prod/include/cc
248
BASE_CFLAGS+=-I/opt/SUNWspro/prod/include/cc
255
main.o: BASE_CFLAGS+=-p
258
ifdef CONFIG_LINUX_USER
259
OBJS= main.o syscall.o strace.o mmap.o signal.o path.o osdep.o thunk.o \
260
elfload.o linuxload.o uaccess.o
262
ifdef TARGET_HAS_BFLT
265
ifdef TARGET_HAS_ELFLOAD32
267
elfload32.o: elfload.c
270
ifeq ($(TARGET_ARCH), i386)
273
ifeq ($(TARGET_ARCH), arm)
274
OBJS+=nwfpe/fpa11.o nwfpe/fpa11_cpdo.o \
275
nwfpe/fpa11_cpdt.o nwfpe/fpa11_cprt.o nwfpe/fpopcode.o nwfpe/single_cpdo.o \
276
nwfpe/double_cpdo.o nwfpe/extended_cpdo.o arm-semi.o
278
ifeq ($(TARGET_ARCH), m68k)
279
OBJS+= m68k-sim.o m68k-semi.o
281
endif #CONFIG_LINUX_USER
283
ifdef CONFIG_DARWIN_USER
284
OBJS= main.o commpage.o machload.o mmap.o osdep.o signal.o syscall.o thunk.o
129
CFLAGS+=-I/opt/SUNWspro/prod/include/cc
133
kvm.o: CFLAGS+=$(KVM_CFLAGS)
134
kvm-all.o: CFLAGS+=$(KVM_CFLAGS)
138
#########################################################
290
139
# cpu emulator library
291
LIBOBJS=exec.o kqemu.o translate-op.o translate-all.o cpu-exec.o\
292
translate.o op.o host-utils.o
140
LIBOBJS=exec.o kqemu.o translate-all.o cpu-exec.o\
141
translate.o host-utils.o
143
LIBOBJS+= tcg/tcg.o tcg/tcg-runtime.o
144
CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
145
ifeq ($(ARCH),sparc64)
146
CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
293
148
ifdef CONFIG_SOFTFLOAT
294
149
LIBOBJS+=fpu/softfloat.o
296
151
LIBOBJS+=fpu/softfloat-native.o
298
153
CPPFLAGS+=-I$(SRC_PATH)/fpu
300
ifeq ($(TARGET_ARCH), i386)
301
LIBOBJS+=helper.o helper2.o
304
ifeq ($(TARGET_ARCH), x86_64)
305
LIBOBJS+=helper.o helper2.o
308
ifeq ($(TARGET_BASE_ARCH), ppc)
309
LIBOBJS+= op_helper.o helper.o
312
ifeq ($(TARGET_BASE_ARCH), mips)
313
LIBOBJS+= op_helper.o helper.o
316
ifeq ($(TARGET_BASE_ARCH), sparc)
317
LIBOBJS+= op_helper.o helper.o
154
LIBOBJS+= op_helper.o helper.o
320
156
ifeq ($(TARGET_BASE_ARCH), arm)
321
LIBOBJS+= op_helper.o helper.o
324
ifeq ($(TARGET_BASE_ARCH), sh4)
325
LIBOBJS+= op_helper.o helper.o
328
ifeq ($(TARGET_BASE_ARCH), m68k)
329
LIBOBJS+= op_helper.o helper.o
157
LIBOBJS+= neon_helper.o iwmmxt_helper.o
332
160
ifeq ($(TARGET_BASE_ARCH), alpha)
333
LIBOBJS+= op_helper.o helper.o alpha_palcode.o
161
LIBOBJS+= alpha_palcode.o
336
164
ifeq ($(TARGET_BASE_ARCH), cris)
337
LIBOBJS+= op_helper.o helper.o
338
165
LIBOBJS+= cris-dis.o
340
167
ifndef CONFIG_USER_ONLY
374
201
ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
375
202
LIBOBJS+=sh4-dis.o
204
ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
377
207
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
378
208
LIBOBJS+=s390-dis.o
213
libqemu.a: $(LIBOBJS)
215
translate.o: translate.c cpu.h
217
translate-all.o: translate-all.c cpu.h
221
# HELPER_CFLAGS is used for all the code compiled with static register
223
op_helper.o: CFLAGS += $(HELPER_CFLAGS) $(I386_CFLAGS)
225
cpu-exec.o: CFLAGS += $(HELPER_CFLAGS)
227
#########################################################
228
# Linux user emulator target
230
ifdef CONFIG_LINUX_USER
232
ifndef TARGET_ABI_DIR
233
TARGET_ABI_DIR=$(TARGET_ARCH)
235
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
236
CPPFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
250
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
252
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
253
# that the kernel ELF loader considers as an executable. I think this
254
# is the simplest way to make it self virtualizable!
259
ifeq ($(ARCH),x86_64)
260
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
264
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
268
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
272
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
276
# -static is used to avoid g1/g3 usage by the dynamic linker
277
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
280
ifeq ($(ARCH),sparc64)
281
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
285
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
289
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
293
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
297
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
301
ifeq ($(WORDS_BIGENDIAN),yes)
302
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
304
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
308
ifeq ($(ARCH),mips64)
309
ifeq ($(WORDS_BIGENDIAN),yes)
310
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
312
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
322
OBJS= main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
323
elfload.o linuxload.o uaccess.o envlist.o
325
ifdef TARGET_HAS_BFLT
328
ifdef TARGET_HAS_ELFLOAD32
330
elfload32.o: elfload.c
333
ifeq ($(TARGET_ARCH), i386)
336
ifeq ($(TARGET_ARCH), arm)
337
OBJS+=nwfpe/fpa11.o nwfpe/fpa11_cpdo.o \
338
nwfpe/fpa11_cpdt.o nwfpe/fpa11_cprt.o nwfpe/fpopcode.o nwfpe/single_cpdo.o \
339
nwfpe/double_cpdo.o nwfpe/extended_cpdo.o arm-semi.o
341
ifeq ($(TARGET_ARCH), m68k)
342
OBJS+= m68k-sim.o m68k-semi.o
381
345
ifdef CONFIG_GDBSTUB
346
OBJS+=gdbstub.o gdbstub-xml.o
387
$(QEMU_USER): $(OBJS)
388
$(CC) $(LDFLAGS) $(BASE_LDFLAGS) -o $@ $^ $(LIBS)
351
# Note: this is a workaround. The real fix is to avoid compiling
352
# cpu_signal_handler() in cpu-exec.c.
353
signal.o: CFLAGS += $(HELPER_CFLAGS)
355
$(QEMU_PROG): $(OBJS) ../libqemu_user.a
389
357
ifeq ($(ARCH),alpha)
390
358
# Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of
391
359
# the address space (31 bit so sign extending doesn't matter)
392
360
echo -ne '\001\000\000\000' | dd of=qemu bs=1 seek=48 count=4 conv=notrunc
395
# must use static linking to avoid leaving stuff in virtual address space
396
VL_OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o
397
# XXX: suppress QEMU_TOOL tests
363
endif #CONFIG_LINUX_USER
365
#########################################################
366
# Darwin user emulator target
368
ifdef CONFIG_DARWIN_USER
370
VPATH+=:$(SRC_PATH)/darwin-user
371
CPPFLAGS+=-I$(SRC_PATH)/darwin-user -I$(SRC_PATH)/darwin-user/$(TARGET_ARCH)
373
# Leave some space for the regular program loading zone
374
LDFLAGS+=-Wl,-segaddr,__STD_PROG_ZONE,0x1000 -image_base 0x0e000000
378
OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o
383
OBJS+=gdbstub.o gdbstub-xml.o
386
# Note: this is a workaround. The real fix is to avoid compiling
387
# cpu_signal_handler() in cpu-exec.c.
388
signal.o: CFLAGS += $(HELPER_CFLAGS)
390
$(QEMU_PROG): $(OBJS)
393
endif #CONFIG_DARWIN_USER
395
#########################################################
396
# BSD user emulator target
398
ifdef CONFIG_BSD_USER
400
VPATH+=:$(SRC_PATH)/bsd-user
401
CPPFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH)
415
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
417
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
418
# that the kernel ELF loader considers as an executable. I think this
419
# is the simplest way to make it self virtualizable!
424
ifeq ($(ARCH),x86_64)
425
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
429
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
433
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
437
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
441
# -static is used to avoid g1/g3 usage by the dynamic linker
442
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
445
ifeq ($(ARCH),sparc64)
446
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
450
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
454
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
458
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
462
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
466
ifeq ($(WORDS_BIGENDIAN),yes)
467
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
469
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
473
ifeq ($(ARCH),mips64)
474
ifeq ($(WORDS_BIGENDIAN),yes)
475
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
477
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
481
OBJS= main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o
490
# Note: this is a workaround. The real fix is to avoid compiling
491
# cpu_signal_handler() in cpu-exec.c.
492
signal.o: CFLAGS += $(HELPER_CFLAGS)
494
$(QEMU_PROG): $(OBJS) ../libqemu_user.a
497
endif #CONFIG_BSD_USER
499
#########################################################
500
# System emulator target
501
ifndef CONFIG_USER_ONLY
503
OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o dma-helpers.o
504
# virtio has to be here due to weird dependency between PCI and virtio-net.
505
# need to fix this properly
506
OBJS+=virtio.o virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
509
OBJS+=kvm.o kvm-all.o
398
511
ifdef CONFIG_WIN32
399
VL_OBJS+=block-raw-win32.o
512
OBJS+=block-raw-win32.o
401
VL_OBJS+=block-raw-posix.o
515
OBJS+=posix-aio-compat.o
517
OBJS+=block-raw-posix.o
404
521
ifdef CONFIG_ALSA
528
LIBS += -lpulse-simple
407
530
ifdef CONFIG_DSOUND
408
531
LIBS += -lole32 -ldxguid
410
533
ifdef CONFIG_FMOD
411
534
LIBS += $(CONFIG_FMOD_LIB)
537
LIBS += $(CONFIG_OSS_LIB)
414
SOUND_HW = sb16.o es1370.o
540
SOUND_HW = sb16.o es1370.o ac97.o
415
541
ifdef CONFIG_ADLIB
416
542
SOUND_HW += fmopl.o adlib.o
543
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
546
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
549
SOUND_HW += cs4231a.o
419
552
ifdef CONFIG_VNC_TLS
421
554
LIBS += $(CONFIG_VNC_TLS_LIBS)
558
LIBS += $(CONFIG_BLUEZ_LIBS)
425
VL_OBJS+= lsi53c895a.o
562
OBJS+= lsi53c895a.o esp.o
430
567
# EEPROM emulation
431
VL_OBJS += eeprom93xx.o
433
570
# PCI network cards
434
VL_OBJS += eepro100.o
439
580
ifeq ($(TARGET_BASE_ARCH), i386)
440
581
# Hardware support
441
VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o
442
VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
443
VL_OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o
444
VL_OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o
582
OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o
583
OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
584
OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o
585
OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o hpet.o
586
OBJS += device-hotplug.o pci-hotplug.o
445
587
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
447
589
ifeq ($(TARGET_BASE_ARCH), ppc)
448
590
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
450
VL_OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
592
OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
452
VL_OBJS+= pckbd.o ps2.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o
453
VL_OBJS+= prep_pci.o ppc_prep.o
594
OBJS+= pckbd.o ps2.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o
595
OBJS+= prep_pci.o ppc_prep.o
454
596
# Mac shared devices
455
VL_OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
597
OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o escc.o
456
598
# OldWorld PowerMac
457
VL_OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
599
OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
458
600
# NewWorld PowerMac
459
VL_OBJS+= unin_pci.o ppc_chrp.o
601
OBJS+= unin_pci.o ppc_newworld.o
460
602
# PowerPC 4xx boards
461
VL_OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc405_uc.o ppc405_boards.o
603
OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o
604
OBJS+= ppc440.o ppc440_bamboo.o
605
# PowerPC E500 boards
606
OBJS+= ppce500_pci.o ppce500_mpc8544ds.o
463
615
ifeq ($(TARGET_BASE_ARCH), mips)
464
VL_OBJS+= mips_r4k.o mips_malta.o mips_pica61.o mips_mipssim.o
465
VL_OBJS+= mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o
467
VL_OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
468
VL_OBJS+= piix_pci.o parallel.o cirrus_vga.o $(SOUND_HW)
470
VL_OBJS+= pflash_cfi01.o
471
CPPFLAGS += -DHAS_AUDIO
616
OBJS+= mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
617
OBJS+= mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o rc4030.o
618
OBJS+= g364fb.o jazz_led.o
619
OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
620
OBJS+= piix_pci.o parallel.o cirrus_vga.o pcspk.o $(SOUND_HW)
622
OBJS+= pflash_cfi01.o
624
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
473
626
ifeq ($(TARGET_BASE_ARCH), cris)
476
VL_OBJS+= etraxfs_timer.o
477
VL_OBJS+= etraxfs_ser.o
628
OBJS+= etraxfs.o axis_dev88.o
634
OBJS+= etraxfs_timer.o
638
OBJS+= pflash_cfi02.o nand.o
479
640
ifeq ($(TARGET_BASE_ARCH), sparc)
480
641
ifeq ($(TARGET_ARCH), sparc64)
481
VL_OBJS+= sun4u.o ide.o pckbd.o ps2.o vga.o apb_pci.o
482
VL_OBJS+= fdc.o mc146818rtc.o serial.o m48t59.o
483
VL_OBJS+= cirrus_vga.o parallel.o ptimer.o
642
OBJS+= sun4u.o ide.o pckbd.o ps2.o vga.o apb_pci.o
643
OBJS+= fdc.o mc146818rtc.o serial.o m48t59.o
644
OBJS+= cirrus_vga.o parallel.o ptimer.o
485
VL_OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
486
VL_OBJS+= slavio_timer.o slavio_serial.o slavio_misc.o fdc.o esp.o sparc32_dma.o
487
VL_OBJS+= cs4231.o ptimer.o eccmemctl.o sbi.o sun4c_intctl.o
646
OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
647
OBJS+= slavio_timer.o escc.o slavio_misc.o fdc.o sparc32_dma.o
648
OBJS+= cs4231.o ptimer.o eccmemctl.o sbi.o sun4c_intctl.o
490
651
ifeq ($(TARGET_BASE_ARCH), arm)
491
VL_OBJS+= integratorcp.o versatilepb.o ps2.o smc91c111.o arm_pic.o arm_timer.o
492
VL_OBJS+= arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
493
VL_OBJS+= versatile_pci.o ptimer.o
494
VL_OBJS+= realview_gic.o realview.o arm_sysctl.o mpcore.o
495
VL_OBJS+= armv7m.o armv7m_nvic.o stellaris.o pl022.o stellaris_enet.o
498
VL_OBJS+= pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o
499
VL_OBJS+= pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o pxa2xx_keypad.o
500
VL_OBJS+= pflash_cfi01.o gumstix.o
501
VL_OBJS+= spitz.o ide.o serial.o nand.o ecc.o
502
VL_OBJS+= omap.o omap_lcdc.o omap1_clk.o omap_mmc.o omap_i2c.o
503
VL_OBJS+= palm.o tsc210x.o
504
VL_OBJS+= mst_fpga.o mainstone.o
652
OBJS+= integratorcp.o versatilepb.o ps2.o smc91c111.o arm_pic.o arm_timer.o
653
OBJS+= arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
654
OBJS+= versatile_pci.o ptimer.o
655
OBJS+= realview_gic.o realview.o arm_sysctl.o mpcore.o
656
OBJS+= armv7m.o armv7m_nvic.o stellaris.o pl022.o stellaris_enet.o
659
OBJS+= pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o
660
OBJS+= pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o pxa2xx_keypad.o
661
OBJS+= pflash_cfi01.o gumstix.o
662
OBJS+= zaurus.o ide.o serial.o nand.o ecc.o spitz.o tosa.o tc6393xb.o
663
OBJS+= omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
664
OBJS+= omap2.o omap_dss.o soc_dma.o
665
OBJS+= omap_sx1.o palm.o tsc210x.o
666
OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
667
OBJS+= tsc2005.o bt-hci-csr.o
668
OBJS+= mst_fpga.o mainstone.o
669
OBJS+= musicpal.o pflash_cfi02.o
505
670
CPPFLAGS += -DHAS_AUDIO
507
672
ifeq ($(TARGET_BASE_ARCH), sh4)
508
VL_OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
509
VL_OBJS+= sh_timer.o ptimer.o sh_serial.o sh_intc.o
673
OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
674
OBJS+= sh_timer.o ptimer.o sh_serial.o sh_intc.o sh_pci.o sm501.o serial.o
511
677
ifeq ($(TARGET_BASE_ARCH), m68k)
512
VL_OBJS+= an5206.o mcf5206.o ptimer.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
513
VL_OBJS+= m68k-semi.o dummy_m68k.o
678
OBJS+= an5206.o mcf5206.o ptimer.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
679
OBJS+= m68k-semi.o dummy_m68k.o
515
681
ifdef CONFIG_GDBSTUB
682
OBJS+=gdbstub.o gdbstub-xml.o
518
684
ifdef CONFIG_COCOA
519
685
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
525
691
CPPFLAGS+=-I$(SRC_PATH)/slirp
528
VL_LDFLAGS=$(VL_OS_LDFLAGS)
530
695
# specific flags are needed for non soft mmu emulator
531
696
ifdef CONFIG_STATIC
534
ifndef CONFIG_SOFTMMU
535
VL_LDFLAGS+=-Wl,-T,$(SRC_PATH)/i386-vl.ld
537
699
ifndef CONFIG_DARWIN
538
700
ifndef CONFIG_WIN32
539
701
ifndef CONFIG_SOLARIS
544
708
ifdef TARGET_GPROF
545
vl.o: BASE_CFLAGS+=-p
549
713
ifeq ($(ARCH),ia64)
550
VL_LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
553
ifeq ($(ARCH),sparc64)
555
ifneq ($(CONFIG_SOLARIS),yes)
556
VL_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
560
ifeq ($(ARCH),x86_64)
562
ifneq ($(CONFIG_SOLARIS),yes)
563
VL_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
714
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
567
717
ifdef CONFIG_WIN32
568
718
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
571
$(QEMU_SYSTEM): $(VL_OBJS) ../libqemu_common.a libqemu.a
572
$(CC) $(VL_LDFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(VL_LIBS)
575
$(CC) -MM $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) $^ 1>.depend
577
vldepend: $(VL_OBJS:.o=.c)
578
$(CC) -MM $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) $^ 1>.depend
582
libqemu.a: $(LIBOBJS)
727
$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS)
729
$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a
732
endif # !CONFIG_USER_ONLY
734
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
584
$(AR) rcs $@ $(LIBOBJS)
586
translate.o: translate.c gen-op.h opc.h cpu.h
588
translate-all.o: translate-all.c opc.h cpu.h
590
translate-op.o: translate-all.c op.h opc.h cpu.h
595
opc.h: op.o $(DYNGEN)
596
$(DYNGEN) -c -o $@ $<
598
gen-op.h: op.o $(DYNGEN)
599
$(DYNGEN) -g -o $@ $<
602
$(CC) $(OP_CFLAGS) $(CPPFLAGS) -c -o $@ $<
604
# HELPER_CFLAGS is used for all the code compiled with static register
606
ifeq ($(TARGET_BASE_ARCH), i386)
607
# XXX: rename helper.c to op_helper.c
609
$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<
736
ifeq ($(TARGET_XML_FILES),)
611
op_helper.o: op_helper.c
612
$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<
739
$(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES)
615
cpu-exec.o: cpu-exec.c
616
$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<
618
# Note: this is a workaround. The real fix is to avoid compiling
619
# cpu_signal_handler() in cpu-exec.c.
621
$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<
624
$(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<
627
$(CC) $(CPPFLAGS) -c -o $@ $<
630
rm -f *.o *.a *~ $(PROGS) gen-op.h opc.h op.h nwfpe/*.o fpu/*.o
743
rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
744
rm -f *.d */*.d tcg/*.o
634
747
ifneq ($(PROGS),)
635
748
$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
638
ifneq ($(wildcard .depend),)
643
audio.o sdlaudio.o dsoundaudio.o ossaudio.o wavaudio.o noaudio.o \
644
fmodaudio.o alsaaudio.o mixeng.o sb16.o es1370.o gus.o adlib.o: \
645
CFLAGS := $(CFLAGS) -Wall -Werror -W -Wsign-compare
648
751
# Include automatically generated dependency files
649
752
-include $(wildcard *.d */*.d)