Makefile.target 16.7 KB
Newer Older
B
bellard 已提交
1
include config.mak
A
aliguori 已提交
2
include $(SRC_PATH)/rules.mak
B
bellard 已提交
3

B
bellard 已提交
4
TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
B
bellard 已提交
5
VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw
B
balrog 已提交
6
CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MT $@ -MP -DNEED_CPU_H
B
bellard 已提交
7
#CFLAGS+=-Werror
B
bellard 已提交
8
LIBS=
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
B
bellard 已提交
20
endif
B
bellard 已提交
21

22
PROGS=$(QEMU_PROG)
B
bellard 已提交
23

24
# cc-option
A
aliguori 已提交
25
# Usage: CFLAGS+=$(call cc-option, $(CFLAGS), -falign-functions=0, -malign-functions=0)
26

A
aliguori 已提交
27 28
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 ;)
29

30 31
HELPER_CFLAGS=

B
bellard 已提交
32
ifeq ($(ARCH),i386)
33
HELPER_CFLAGS+=-fomit-frame-pointer
34 35
endif

M
malc 已提交
36 37 38 39
ifeq ($(subst ppc64,ppc,$(ARCH))$(TARGET_BASE_ARCH),ppcppc)
translate.o: CFLAGS := $(CFLAGS) $(call cc-option, $(CFLAGS), -fno-unit-at-a-time,)
endif

B
bellard 已提交
40
ifeq ($(ARCH),sparc)
J
Juan Quintela 已提交
41
  ifneq ($(CONFIG_SOLARIS),y)
42
    HELPER_CFLAGS+=-ffixed-i0
43
  endif
B
bellard 已提交
44
endif
B
bellard 已提交
45 46 47

ifeq ($(ARCH),alpha)
# Ensure there's only a single GP
48
CFLAGS+=-msmall-data
B
bellard 已提交
49 50 51
endif

ifeq ($(ARCH),ia64)
52
CFLAGS+=-mno-sdata
53 54
endif

55
CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
56
CPPFLAGS+=-U_FORTIFY_SOURCE
B
bellard 已提交
57
LIBS+=-lm
B
bellard 已提交
58
ifdef CONFIG_WIN32
59
LIBS+=-lwinmm -lws2_32 -liphlpapi
B
bellard 已提交
60
endif
B
bellard 已提交
61 62
ifdef CONFIG_SOLARIS
LIBS+=-lsocket -lnsl -lresolv
T
ths 已提交
63 64 65
ifdef NEEDS_LIBSUNMATH
LIBS+=-lsunmath
LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
66
CFLAGS+=-I/opt/SUNWspro/prod/include/cc
B
bellard 已提交
67
endif
68 69
endif

A
aliguori 已提交
70 71 72
kvm.o: CFLAGS+=$(KVM_CFLAGS)
kvm-all.o: CFLAGS+=$(KVM_CFLAGS)

73
all: $(PROGS)
P
Paul Brook 已提交
74 75
# Dummy command so that make thinks it has done something
	@true
B
bellard 已提交
76

77
#########################################################
B
bellard 已提交
78
# cpu emulator library
J
Juan Quintela 已提交
79
libobj-y = exec.o translate-all.o cpu-exec.o translate.o host-utils.o
80
libobj-$(CONFIG_KQEMU) += kqemu.o
B
bellard 已提交
81
# TCG code generator
J
Juan Quintela 已提交
82
libobj-y += tcg/tcg.o tcg/tcg-runtime.o
B
bellard 已提交
83
CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
B
blueswir1 已提交
84 85 86
ifeq ($(ARCH),sparc64)
CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
endif
B
bellard 已提交
87
ifdef CONFIG_SOFTFLOAT
J
Juan Quintela 已提交
88
libobj-y += fpu/softfloat.o
B
bellard 已提交
89
else
J
Juan Quintela 已提交
90
libobj-y += fpu/softfloat-native.o
B
bellard 已提交
91
endif
92
CPPFLAGS+=-I$(SRC_PATH)/fpu
J
Juan Quintela 已提交
93
libobj-y += op_helper.o helper.o
94

B
bellard 已提交
95
ifeq ($(TARGET_BASE_ARCH), arm)
J
Juan Quintela 已提交
96
libobj-y += neon_helper.o iwmmxt_helper.o
P
pbrook 已提交
97 98
endif

99
ifeq ($(TARGET_BASE_ARCH), alpha)
J
Juan Quintela 已提交
100
libobj-y += alpha_palcode.o
101 102
endif

103
ifeq ($(TARGET_BASE_ARCH), cris)
J
Juan Quintela 已提交
104
libobj-y += cris-dis.o
105 106

ifndef CONFIG_USER_ONLY
J
Juan Quintela 已提交
107
libobj-y += mmu.o
108 109 110
endif
endif

B
bellard 已提交
111
# NOTE: the disassembler code is only needed for debugging
J
Juan Quintela 已提交
112
libobj-y += disas.o
B
bellard 已提交
113
ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
114 115
USE_I386_DIS=y
endif
B
bellard 已提交
116
ifeq ($(findstring x86_64, $(TARGET_ARCH) $(ARCH)),x86_64)
117 118
USE_I386_DIS=y
endif
119
libobj-$(USE_I386_DIS) += i386-dis.o
B
bellard 已提交
120
ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
J
Juan Quintela 已提交
121
libobj-y += alpha-dis.o
B
bellard 已提交
122
endif
B
bellard 已提交
123
ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
J
Juan Quintela 已提交
124
libobj-y += ppc-dis.o
B
bellard 已提交
125
endif
126
ifeq ($(findstring microblaze, $(TARGET_BASE_ARCH) $(ARCH)),microblaze)
J
Juan Quintela 已提交
127
libobj-y += microblaze-dis.o
128
ifndef CONFIG_USER_ONLY
J
Juan Quintela 已提交
129
libobj-y += mmu.o
130 131
endif
endif
T
ths 已提交
132
ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
J
Juan Quintela 已提交
133
libobj-y += mips-dis.o
B
bellard 已提交
134
endif
B
bellard 已提交
135
ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
J
Juan Quintela 已提交
136
libobj-y += sparc-dis.o
B
bellard 已提交
137 138
endif
ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
J
Juan Quintela 已提交
139
libobj-y += arm-dis.o
B
bellard 已提交
140
endif
B
bellard 已提交
141
ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
J
Juan Quintela 已提交
142
libobj-y += m68k-dis.o
B
bellard 已提交
143
endif
B
bellard 已提交
144
ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
J
Juan Quintela 已提交
145
libobj-y += sh4-dis.o
B
bellard 已提交
146
endif
A
aurel32 已提交
147
ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
J
Juan Quintela 已提交
148
libobj-y += hppa-dis.o
A
aurel32 已提交
149
endif
150
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
J
Juan Quintela 已提交
151
libobj-y += s390-dis.o
152
endif
B
bellard 已提交
153

154 155
# libqemu

J
Juan Quintela 已提交
156
libqemu.a: $(libobj-y)
157

158
translate.o: translate.c cpu.h
159

160
translate-all.o: translate-all.c cpu.h
161

162
tcg/tcg.o: cpu.h
163 164 165

# HELPER_CFLAGS is used for all the code compiled with static register
# variables
J
Juan Quintela 已提交
166
op_helper.o: CFLAGS += $(HELPER_CFLAGS)
167

168
cpu-exec.o: CFLAGS += $(HELPER_CFLAGS)
169 170 171 172 173 174 175 176 177

#########################################################
# Linux user emulator target

ifdef CONFIG_LINUX_USER

ifndef TARGET_ABI_DIR
  TARGET_ABI_DIR=$(TARGET_ARCH)
endif
178
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
CPPFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)

ifdef CONFIG_STATIC
LDFLAGS+=-static
endif

ifeq ($(ARCH),i386)
ifdef TARGET_GPROF
USE_I386_LD=y
endif
ifdef CONFIG_STATIC
USE_I386_LD=y
endif
ifdef USE_I386_LD
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
else
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
# that the kernel ELF loader considers as an executable. I think this
# is the simplest way to make it self virtualizable!
LDFLAGS+=-Wl,-shared
endif
endif

ifeq ($(ARCH),x86_64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),ppc)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

M
malc 已提交
210 211 212 213
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258
ifeq ($(ARCH),s390)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),sparc)
# -static is used to avoid g1/g3 usage by the dynamic linker	
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
endif

ifeq ($(ARCH),sparc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),alpha)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),ia64)
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),arm)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),m68k)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),mips)
ifeq ($(WORDS_BIGENDIAN),yes)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
else
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
endif
endif

ifeq ($(ARCH),mips64)
ifeq ($(WORDS_BIGENDIAN),yes)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
else
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
endif
endif

A
aurel32 已提交
259 260 261 262 263 264
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
CFLAGS+=-p
endif

J
Juan Quintela 已提交
265
obj-y = main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
266 267
      elfload.o linuxload.o uaccess.o envlist.o gdbstub.o gdbstub-xml.o \
      ioport-user.o
268 269
LIBS+= $(PTHREADLIBS)
LIBS+= $(CLOCKLIBS)
270 271
obj-$(TARGET_HAS_BFLT) += flatload.o

272 273 274
ifdef TARGET_HAS_ELFLOAD32
elfload32.o: elfload.c
endif
275
obj-$(TARGET_HAS_ELFLOAD32) += elfload32.o
276 277

ifeq ($(TARGET_ARCH), i386)
J
Juan Quintela 已提交
278
obj-y += vm86.o
279
endif
280

J
Juan Quintela 已提交
281 282
nwfpe-obj-y := fpa11.o fpa11_cpdo.o fpa11_cpdt.o fpa11_cprt.o fpopcode.o
nwfpe-obj-y += single_cpdo.o double_cpdo.o extended_cpdo.o
283 284 285 286
obj-arm-y +=  $(addprefix nwfpe/, $(nwfpe-obj-y))
obj-arm-y += arm-semi.o

obj-m68k-y += m68k-sim.o m68k-semi.o
287 288 289

# Note: this is a workaround. The real fix is to avoid compiling
# cpu_signal_handler() in cpu-exec.c.
290
signal.o: CFLAGS += $(HELPER_CFLAGS)
B
bellard 已提交
291

292
ARLIBS=../libqemu_user.a libqemu.a
293 294 295 296 297 298 299 300 301 302 303 304 305 306 307
endif #CONFIG_LINUX_USER

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

ifdef CONFIG_DARWIN_USER

VPATH+=:$(SRC_PATH)/darwin-user
CPPFLAGS+=-I$(SRC_PATH)/darwin-user -I$(SRC_PATH)/darwin-user/$(TARGET_ARCH)

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

LIBS+=-lmx

J
Juan Quintela 已提交
308
obj-y = main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \
309
        gdbstub.o gdbstub-xml.o ioport-user.o
310 311 312

# Note: this is a workaround. The real fix is to avoid compiling
# cpu_signal_handler() in cpu-exec.c.
313
signal.o: CFLAGS += $(HELPER_CFLAGS)
314

315
ARLIBS=libqemu.a
316 317 318

endif #CONFIG_DARWIN_USER

B
blueswir1 已提交
319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404
#########################################################
# BSD user emulator target

ifdef CONFIG_BSD_USER

VPATH+=:$(SRC_PATH)/bsd-user
CPPFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH)

ifdef CONFIG_STATIC
LDFLAGS+=-static
endif

ifeq ($(ARCH),i386)
ifdef TARGET_GPROF
USE_I386_LD=y
endif
ifdef CONFIG_STATIC
USE_I386_LD=y
endif
ifdef USE_I386_LD
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
else
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
# that the kernel ELF loader considers as an executable. I think this
# is the simplest way to make it self virtualizable!
LDFLAGS+=-Wl,-shared
endif
endif

ifeq ($(ARCH),x86_64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),ppc)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),s390)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),sparc)
# -static is used to avoid g1/g3 usage by the dynamic linker
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
endif

ifeq ($(ARCH),sparc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),alpha)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),ia64)
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),arm)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),m68k)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),mips)
ifeq ($(WORDS_BIGENDIAN),yes)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
else
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
endif
endif

ifeq ($(ARCH),mips64)
ifeq ($(WORDS_BIGENDIAN),yes)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
else
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
endif
endif

J
Juan Quintela 已提交
405
obj-y = main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
406
        gdbstub.o gdbstub-xml.o ioport-user.o
J
Juan Quintela 已提交
407
obj-y += uaccess.o
B
blueswir1 已提交
408 409 410

# Note: this is a workaround. The real fix is to avoid compiling
# cpu_signal_handler() in cpu-exec.c.
411
signal.o: CFLAGS += $(HELPER_CFLAGS)
B
blueswir1 已提交
412

413
ARLIBS=libqemu.a ../libqemu_user.a
B
blueswir1 已提交
414 415 416

endif #CONFIG_BSD_USER

417 418 419 420
#########################################################
# System emulator target
ifndef CONFIG_USER_ONLY

J
Juan Quintela 已提交
421
obj-y = vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o \
422
        gdbstub.o gdbstub-xml.o msix.o ioport.o
A
aliguori 已提交
423 424
# virtio has to be here due to weird dependency between PCI and virtio-net.
# need to fix this properly
J
Juan Quintela 已提交
425 426
obj-y += virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
obj-$(CONFIG_KVM) += kvm.o kvm-all.o
427

428
LIBS+=-lz
429 430 431
ifdef CONFIG_ALSA
LIBS += -lasound
endif
432 433 434
ifdef CONFIG_ESD
LIBS += -lesd
endif
M
malc 已提交
435 436 437
ifdef CONFIG_PA
LIBS += -lpulse-simple
endif
438 439
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
B
bellard 已提交
440
endif
B
bellard 已提交
441 442
ifdef CONFIG_FMOD
LIBS += $(CONFIG_FMOD_LIB)
B
bellard 已提交
443
endif
B
blueswir1 已提交
444 445 446
ifdef CONFIG_OSS
LIBS += $(CONFIG_OSS_LIB)
endif
B
bellard 已提交
447

448 449 450 451 452 453
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
M
malc 已提交
454
sound-obj-$(CONFIG_CS4231A) += cs4231a.o
455

456
ifdef CONFIG_ADLIB
457
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
458
endif
B
bellard 已提交
459

460 461 462 463 464
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

465 466 467 468 469
ifdef CONFIG_VNC_SASL
CPPFLAGS += $(CONFIG_VNC_SASL_CFLAGS)
LIBS += $(CONFIG_VNC_SASL_LIBS)
endif

B
balrog 已提交
470 471 472 473
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

474
# xen backend driver support
475
obj-$(CONFIG_XEN) += xen_machine_pv.o xen_domainbuild.o
J
Juan Quintela 已提交
476
ifeq ($(CONFIG_XEN), y)
477 478 479
  LIBS += $(XEN_LIBS)
endif

B
bellard 已提交
480
# USB layer
J
Juan Quintela 已提交
481
obj-y += usb-ohci.o
B
bellard 已提交
482

483
# PCI network cards
J
Juan Quintela 已提交
484 485 486 487 488
obj-y += eepro100.o
obj-y += ne2000.o
obj-y += pcnet.o
obj-y += rtl8139.o
obj-y += e1000.o
489

R
Richard W.M. Jones 已提交
490
# Generic watchdog support and some watchdog devices
J
Juan Quintela 已提交
491
obj-y += wdt_ib700.o wdt_i6300esb.o
R
Richard W.M. Jones 已提交
492

493
# Hardware support
494 495 496 497 498 499 500
obj-i386-y = ide.o pckbd.o vga.o $(sound-obj-y) dma.o
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

ifeq ($(TARGET_BASE_ARCH), i386)
501
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
B
bellard 已提交
502
endif
503

J
j_mayer 已提交
504
# shared objects
505
obj-ppc-y = ppc.o ide.o vga.o $(sound-obj-y) dma.o openpic.o
J
j_mayer 已提交
506
# PREP target
507 508
obj-ppc-y += pckbd.o serial.o i8259.o i8254.o fdc.o mc146818rtc.o
obj-ppc-y += prep_pci.o ppc_prep.o
J
j_mayer 已提交
509
# Mac shared devices
510
obj-ppc-y += macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
J
j_mayer 已提交
511
# OldWorld PowerMac
512
obj-ppc-y += heathrow_pic.o grackle_pci.o ppc_oldworld.o
J
j_mayer 已提交
513
# NewWorld PowerMac
514
obj-ppc-y += unin_pci.o ppc_newworld.o
J
j_mayer 已提交
515
# PowerPC 4xx boards
516 517
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
518
# PowerPC E500 boards
519 520 521 522 523 524 525
obj-ppc-y += ppce500_pci.o ppce500_mpc8544ds.o
obj-ppc-$(CONFIG_KVM) += kvm_ppc.o

ifeq ($(TARGET_BASE_ARCH), ppc)
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
endif

526
ifdef FDT_LIBS
527
obj-ppc-y += device_tree.o
528 529
LIBS+= $(FDT_LIBS)
endif
530 531 532 533 534 535 536 537 538 539

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
obj-mips-y += piix_pci.o parallel.o cirrus_vga.o pcspk.o $(sound-obj-y)
obj-mips-y += mipsnet.o
obj-mips-y += pflash_cfi01.o
obj-mips-y += vmware_vga.o

T
ths 已提交
540
ifeq ($(TARGET_BASE_ARCH), mips)
A
aurel32 已提交
541
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
B
bellard 已提交
542
endif
543

544 545 546 547 548 549 550 551 552
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
553 554

ifdef FDT_LIBS
555
obj-microblaze-y += device_tree.o
556 557
LIBS+= $(FDT_LIBS)
endif
558

559
# Boards
560
obj-cris-y = cris_pic_cpu.o etraxfs.o axis_dev88.o
561 562

# IO blocks
563 564 565 566 567 568 569
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
570

B
bellard 已提交
571
ifeq ($(TARGET_ARCH), sparc64)
572 573 574
obj-sparc-y = sun4u.o ide.o pckbd.o vga.o apb_pci.o
obj-sparc-y += fdc.o mc146818rtc.o serial.o
obj-sparc-y += cirrus_vga.o parallel.o
B
bellard 已提交
575
else
576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602
obj-sparc-y = sun4m.o tcx.o iommu.o slavio_intctl.o
obj-sparc-y += slavio_timer.o slavio_misc.o fdc.o sparc32_dma.o
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

B
bellard 已提交
603
ifeq ($(TARGET_BASE_ARCH), arm)
604
CPPFLAGS += -DHAS_AUDIO
B
bellard 已提交
605
endif
606 607 608 609 610 611 612 613

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

614
ifdef CONFIG_COCOA
615 616 617 618
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
619
endif
B
bellard 已提交
620
ifdef CONFIG_SLIRP
621
CPPFLAGS+=-I$(SRC_PATH)/slirp
B
bellard 已提交
622 623
endif

624 625
# specific flags are needed for non soft mmu emulator
ifdef CONFIG_STATIC
626
LDFLAGS+=-static
B
bellard 已提交
627
endif
628
ifndef CONFIG_DARWIN
B
bellard 已提交
629
ifndef CONFIG_WIN32
B
bellard 已提交
630
ifndef CONFIG_SOLARIS
M
malc 已提交
631
ifndef CONFIG_AIX
632
LIBS+=-lutil
B
bellard 已提交
633
endif
M
malc 已提交
634
endif
635
endif
B
bellard 已提交
636
endif
B
bellard 已提交
637
ifdef TARGET_GPROF
638 639
vl.o: CFLAGS+=-p
LDFLAGS+=-p
B
bellard 已提交
640
endif
641

B
bellard 已提交
642
ifeq ($(ARCH),ia64)
643
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
B
bellard 已提交
644 645
endif

646 647 648 649
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

650 651 652 653
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
B
bellard 已提交
654 655
endif

656 657
vl.o: CFLAGS+=$(SDL_CFLAGS)

658 659
vl.o: qemu-options.h

660 661
monitor.o: qemu-monitor.h

662 663
LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) $(CURL_LIBS)
ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
B
bellard 已提交
664

665
endif # !CONFIG_USER_ONLY
666

667 668 669 670
$(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y) $(ARLIBS)
	$(call LINK,$(obj-y) $(obj-$(TARGET_BASE_ARCH)-y))


P
pbrook 已提交
671 672
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
ifeq ($(TARGET_XML_FILES),)
673
	$(call quiet-command,rm -f $@ && echo > $@,"  GEN   $(TARGET_DIR)$@")
P
pbrook 已提交
674
else
675
	$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES),"  GEN   $(TARGET_DIR)$@")
P
pbrook 已提交
676 677
endif

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

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

B
bellard 已提交
684
clean:
685
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
B
bellard 已提交
686
	rm -f *.d */*.d tcg/*.o
687
	rm -f qemu-options.h qemu-monitor.h gdbstub-xml.c
688

689
install: all
B
bellard 已提交
690
ifneq ($(PROGS),)
691
	$(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
B
bellard 已提交
692
endif
B
bellard 已提交
693

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