Makefile.target 16.5 KB
Newer Older
bellard's avatar
bellard committed
1
include config.mak
aliguori's avatar
aliguori committed
2
include $(SRC_PATH)/rules.mak
bellard's avatar
bellard committed
3

bellard's avatar
bellard committed
4
TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
bellard's avatar
bellard committed
5
VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw
6
CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MT $@ -MP -DNEED_CPU_H
bellard's avatar
bellard committed
7
#CFLAGS+=-Werror
bellard's avatar
bellard committed
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
bellard's avatar
bellard committed
20
endif
bellard's avatar
bellard committed
21

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

24
# cc-option
aliguori's avatar
aliguori committed
25
# Usage: CFLAGS+=$(call cc-option, $(CFLAGS), -falign-functions=0, -malign-functions=0)
26

aliguori's avatar
aliguori committed
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=

bellard's avatar
bellard committed
32
ifeq ($(ARCH),i386)
33
HELPER_CFLAGS+=-fomit-frame-pointer
34 35
endif

malc's avatar
malc committed
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

bellard's avatar
bellard committed
40
ifeq ($(ARCH),sparc)
Juan Quintela's avatar
Juan Quintela committed
41
  ifneq ($(CONFIG_SOLARIS),y)
42
    HELPER_CFLAGS+=-ffixed-i0
43
  endif
44
endif
bellard's avatar
bellard committed
45 46 47

ifeq ($(ARCH),alpha)
# Ensure there's only a single GP
48
CFLAGS+=-msmall-data
bellard's avatar
bellard committed
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
bellard's avatar
bellard committed
57
LIBS+=-lm
bellard's avatar
bellard committed
58
ifdef CONFIG_WIN32
59
LIBS+=-lwinmm -lws2_32 -liphlpapi
bellard's avatar
bellard committed
60
endif
bellard's avatar
bellard committed
61 62
ifdef CONFIG_SOLARIS
LIBS+=-lsocket -lnsl -lresolv
ths's avatar
ths committed
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
bellard's avatar
bellard committed
67
endif
68 69
endif

aliguori's avatar
aliguori committed
70 71 72
kvm.o: CFLAGS+=$(KVM_CFLAGS)
kvm-all.o: CFLAGS+=$(KVM_CFLAGS)

73
all: $(PROGS)
74 75
# Dummy command so that make thinks it has done something
	@true
bellard's avatar
bellard committed
76

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

bellard's avatar
bellard committed
95
ifeq ($(TARGET_BASE_ARCH), arm)
Juan Quintela's avatar
Juan Quintela committed
96
libobj-y += neon_helper.o iwmmxt_helper.o
pbrook's avatar
pbrook committed
97 98
endif

99
ifeq ($(TARGET_BASE_ARCH), alpha)
Juan Quintela's avatar
Juan Quintela committed
100
libobj-y += alpha_palcode.o
101 102
endif

103
ifeq ($(TARGET_BASE_ARCH), cris)
Juan Quintela's avatar
Juan Quintela committed
104
libobj-y += cris-dis.o
105 106

ifndef CONFIG_USER_ONLY
Juan Quintela's avatar
Juan Quintela committed
107
libobj-y += mmu.o
108 109 110
endif
endif

bellard's avatar
bellard committed
111
# NOTE: the disassembler code is only needed for debugging
Juan Quintela's avatar
Juan Quintela committed
112
libobj-y += disas.o
bellard's avatar
bellard committed
113
ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
114 115
USE_I386_DIS=y
endif
bellard's avatar
bellard committed
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
bellard's avatar
bellard committed
120
ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
Juan Quintela's avatar
Juan Quintela committed
121
libobj-y += alpha-dis.o
bellard's avatar
bellard committed
122
endif
bellard's avatar
bellard committed
123
ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
Juan Quintela's avatar
Juan Quintela committed
124
libobj-y += ppc-dis.o
bellard's avatar
bellard committed
125
endif
126
ifeq ($(findstring microblaze, $(TARGET_BASE_ARCH) $(ARCH)),microblaze)
Juan Quintela's avatar
Juan Quintela committed
127
libobj-y += microblaze-dis.o
128
ifndef CONFIG_USER_ONLY
Juan Quintela's avatar
Juan Quintela committed
129
libobj-y += mmu.o
130 131
endif
endif
ths's avatar
ths committed
132
ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
Juan Quintela's avatar
Juan Quintela committed
133
libobj-y += mips-dis.o
bellard's avatar
bellard committed
134
endif
bellard's avatar
bellard committed
135
ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
Juan Quintela's avatar
Juan Quintela committed
136
libobj-y += sparc-dis.o
bellard's avatar
bellard committed
137 138
endif
ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
Juan Quintela's avatar
Juan Quintela committed
139
libobj-y += arm-dis.o
bellard's avatar
bellard committed
140
endif
bellard's avatar
bellard committed
141
ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
Juan Quintela's avatar
Juan Quintela committed
142
libobj-y += m68k-dis.o
bellard's avatar
bellard committed
143
endif
bellard's avatar
bellard committed
144
ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
Juan Quintela's avatar
Juan Quintela committed
145
libobj-y += sh4-dis.o
bellard's avatar
bellard committed
146
endif
aurel32's avatar
aurel32 committed
147
ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
Juan Quintela's avatar
Juan Quintela committed
148
libobj-y += hppa-dis.o
aurel32's avatar
aurel32 committed
149
endif
150
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
Juan Quintela's avatar
Juan Quintela committed
151
libobj-y += s390-dis.o
152
endif
bellard's avatar
bellard committed
153

154 155
# libqemu

Juan Quintela's avatar
Juan Quintela committed
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
166
op_helper.o: CFLAGS += $(HELPER_CFLAGS)
167

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

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

ifdef CONFIG_LINUX_USER

175
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
CPPFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)

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

malc's avatar
malc committed
203 204 205 206
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

207 208 209 210 211 212 213 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
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

aurel32's avatar
aurel32 committed
252 253 254 255 256 257
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
CFLAGS+=-p
endif

Juan Quintela's avatar
Juan Quintela committed
258
obj-y = main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
259 260
      elfload.o linuxload.o uaccess.o envlist.o gdbstub.o gdbstub-xml.o \
      ioport-user.o
261 262
obj-$(TARGET_HAS_BFLT) += flatload.o

263 264 265
ifdef TARGET_HAS_ELFLOAD32
elfload32.o: elfload.c
endif
266
obj-$(TARGET_HAS_ELFLOAD32) += elfload32.o
267 268

ifeq ($(TARGET_ARCH), i386)
Juan Quintela's avatar
Juan Quintela committed
269
obj-y += vm86.o
270
endif
271

272 273
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
274 275 276 277
obj-arm-y +=  $(addprefix nwfpe/, $(nwfpe-obj-y))
obj-arm-y += arm-semi.o

obj-m68k-y += m68k-sim.o m68k-semi.o
278 279 280

# Note: this is a workaround. The real fix is to avoid compiling
# cpu_signal_handler() in cpu-exec.c.
281
signal.o: CFLAGS += $(HELPER_CFLAGS)
bellard's avatar
bellard committed
282

283
ARLIBS=../libqemu_user.a libqemu.a
284 285
endif #CONFIG_LINUX_USER

286 287 288
LIBS+= $(PTHREADLIBS)
LIBS+= $(CLOCKLIBS)

289 290 291 292 293 294 295 296 297 298 299 300 301
#########################################################
# 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

Juan Quintela's avatar
Juan Quintela committed
302
obj-y = main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \
303
        gdbstub.o gdbstub-xml.o ioport-user.o
304 305 306

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

309
ARLIBS=libqemu.a
310 311 312

endif #CONFIG_DARWIN_USER

313 314 315 316 317 318 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
#########################################################
# 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)

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

Juan Quintela's avatar
Juan Quintela committed
395
obj-y = main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
396
        gdbstub.o gdbstub-xml.o ioport-user.o
Juan Quintela's avatar
Juan Quintela committed
397
obj-y += uaccess.o
398 399 400

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

403
ARLIBS=libqemu.a ../libqemu_user.a
404 405 406

endif #CONFIG_BSD_USER

407 408 409 410
#########################################################
# System emulator target
ifndef CONFIG_USER_ONLY

Juan Quintela's avatar
Juan Quintela committed
411
obj-y = vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o \
412
        gdbstub.o gdbstub-xml.o msix.o ioport.o
413 414
# 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
415 416
obj-y += virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
obj-$(CONFIG_KVM) += kvm.o kvm-all.o
417

418
LIBS+=-lz
419 420 421
ifdef CONFIG_ALSA
LIBS += -lasound
endif
422 423 424
ifdef CONFIG_ESD
LIBS += -lesd
endif
malc's avatar
malc committed
425 426 427
ifdef CONFIG_PA
LIBS += -lpulse-simple
endif
428 429
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
bellard's avatar
bellard committed
430
endif
bellard's avatar
bellard committed
431
ifdef CONFIG_FMOD
432
LIBS += $(FMOD_LIBS)
bellard's avatar
bellard committed
433
endif
blueswir1's avatar
blueswir1 committed
434
ifdef CONFIG_OSS
Juan Quintela's avatar
Juan Quintela committed
435
LIBS += $(OSS_LIBS)
blueswir1's avatar
blueswir1 committed
436
endif
bellard's avatar
bellard committed
437

438 439 440 441 442 443
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
444
sound-obj-$(CONFIG_CS4231A) += cs4231a.o
445

446
ifdef CONFIG_ADLIB
447
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
448
endif
bellard's avatar
bellard committed
449

450
ifdef CONFIG_VNC_TLS
451 452
CPPFLAGS += $(VNC_TLS_CFLAGS)
LIBS += $(VNC_TLS_LIBS)
453 454
endif

455
ifdef CONFIG_VNC_SASL
456 457
CPPFLAGS += $(VNC_SASL_CFLAGS)
LIBS += $(VNC_SASL_LIBS)
458 459
endif

460
ifdef CONFIG_BLUEZ
461
LIBS += $(BLUEZ_LIBS)
462 463
endif

464
# xen backend driver support
465
obj-$(CONFIG_XEN) += xen_machine_pv.o xen_domainbuild.o
Juan Quintela's avatar
Juan Quintela committed
466
ifeq ($(CONFIG_XEN), y)
467 468 469
  LIBS += $(XEN_LIBS)
endif

bellard's avatar
bellard committed
470
# USB layer
Juan Quintela's avatar
Juan Quintela committed
471
obj-y += usb-ohci.o
bellard's avatar
bellard committed
472

473
# PCI network cards
Juan Quintela's avatar
Juan Quintela committed
474 475 476 477 478
obj-y += eepro100.o
obj-y += ne2000.o
obj-y += pcnet.o
obj-y += rtl8139.o
obj-y += e1000.o
479

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

483
# Hardware support
484 485 486 487 488 489 490
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)
491
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard's avatar
bellard committed
492
endif
493

494
# shared objects
495
obj-ppc-y = ppc.o ide.o vga.o $(sound-obj-y) dma.o openpic.o
496
# PREP target
497 498
obj-ppc-y += pckbd.o serial.o i8259.o i8254.o fdc.o mc146818rtc.o
obj-ppc-y += prep_pci.o ppc_prep.o
499
# Mac shared devices
500
obj-ppc-y += macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
501
# OldWorld PowerMac
502
obj-ppc-y += heathrow_pic.o grackle_pci.o ppc_oldworld.o
503
# NewWorld PowerMac
504
obj-ppc-y += unin_pci.o ppc_newworld.o
505
# PowerPC 4xx boards
506 507
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
508
# PowerPC E500 boards
509 510 511 512 513 514 515
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

516
ifdef FDT_LIBS
517
obj-ppc-y += device_tree.o
518 519
LIBS+= $(FDT_LIBS)
endif
520 521 522 523 524 525 526 527 528 529

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

ths's avatar
ths committed
530
ifeq ($(TARGET_BASE_ARCH), mips)
aurel32's avatar
aurel32 committed
531
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard's avatar
bellard committed
532
endif
533

534 535 536 537 538 539 540 541 542
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
543 544

ifdef FDT_LIBS
545
obj-microblaze-y += device_tree.o
546 547
LIBS+= $(FDT_LIBS)
endif
548

549
# Boards
550
obj-cris-y = cris_pic_cpu.o etraxfs.o axis_dev88.o
551 552

# IO blocks
553 554 555 556 557 558 559
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
560

bellard's avatar
bellard committed
561
ifeq ($(TARGET_ARCH), sparc64)
562 563 564
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
bellard's avatar
bellard committed
565
else
566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592
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

bellard's avatar
bellard committed
593
ifeq ($(TARGET_BASE_ARCH), arm)
594
CPPFLAGS += -DHAS_AUDIO
bellard's avatar
bellard committed
595
endif
596 597 598 599 600 601 602 603

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

604
ifdef CONFIG_COCOA
605 606 607 608
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
609
endif
bellard's avatar
bellard committed
610
ifdef CONFIG_SLIRP
611
CPPFLAGS+=-I$(SRC_PATH)/slirp
bellard's avatar
bellard committed
612 613
endif

614
# specific flags are needed for non soft mmu emulator
615
ifndef CONFIG_DARWIN
bellard's avatar
bellard committed
616
ifndef CONFIG_WIN32
bellard's avatar
bellard committed
617
ifndef CONFIG_SOLARIS
malc's avatar
malc committed
618
ifndef CONFIG_AIX
619
LIBS+=-lutil
bellard's avatar
bellard committed
620
endif
malc's avatar
malc committed
621
endif
622
endif
bellard's avatar
bellard committed
623
endif
bellard's avatar
bellard committed
624
ifdef TARGET_GPROF
625 626
vl.o: CFLAGS+=-p
LDFLAGS+=-p
bellard's avatar
bellard committed
627
endif
628

629
ifeq ($(ARCH),ia64)
630
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
bellard's avatar
bellard committed
631 632
endif

633 634 635 636
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

637 638 639 640
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
bellard's avatar
bellard committed
641 642
endif

643 644
vl.o: CFLAGS+=$(SDL_CFLAGS)

645 646
vl.o: qemu-options.h

647 648
monitor.o: qemu-monitor.h

649 650
LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) $(CURL_LIBS)
ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
bellard's avatar
bellard committed
651

652
endif # !CONFIG_USER_ONLY
653

654 655 656 657
$(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y) $(ARLIBS)
	$(call LINK,$(obj-y) $(obj-$(TARGET_BASE_ARCH)-y))


658 659
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
ifeq ($(TARGET_XML_FILES),)
660
	$(call quiet-command,rm -f $@ && echo > $@,"  GEN   $(TARGET_DIR)$@")
661
else
662
	$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES),"  GEN   $(TARGET_DIR)$@")
663 664
endif

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

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

bellard's avatar
bellard committed
671
clean:
672
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
bellard's avatar
bellard committed
673
	rm -f *.d */*.d tcg/*.o
674
	rm -f qemu-options.h qemu-monitor.h gdbstub-xml.c
675

676
install: all
bellard's avatar
bellard committed
677
ifneq ($(PROGS),)
678
	$(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
bellard's avatar
bellard committed
679
endif
bellard's avatar
bellard committed
680

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