Makefile.target 16.9 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 5 6 7
TARGET_BASE_ARCH:=$(TARGET_ARCH)
ifeq ($(TARGET_ARCH), x86_64)
TARGET_BASE_ARCH:=i386
endif
8 9 10
ifeq ($(TARGET_ARCH), mipsn32)
TARGET_BASE_ARCH:=mips
endif
ths's avatar
ths committed
11 12 13
ifeq ($(TARGET_ARCH), mips64)
TARGET_BASE_ARCH:=mips
endif
bellard's avatar
bellard committed
14 15 16
ifeq ($(TARGET_ARCH), ppc64)
TARGET_BASE_ARCH:=ppc
endif
17 18 19
ifeq ($(TARGET_ARCH), ppc64h)
TARGET_BASE_ARCH:=ppc
endif
20 21 22
ifeq ($(TARGET_ARCH), ppcemb)
TARGET_BASE_ARCH:=ppc
endif
bellard's avatar
bellard committed
23 24 25
ifeq ($(TARGET_ARCH), sparc64)
TARGET_BASE_ARCH:=sparc
endif
bellard's avatar
bellard committed
26
TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
bellard's avatar
bellard committed
27
VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw
28
CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MT $@ -MP -DNEED_CPU_H
bellard's avatar
bellard committed
29
#CFLAGS+=-Werror
bellard's avatar
bellard committed
30
LIBS=
31
# user emulator name
bellard's avatar
bellard committed
32
ifndef TARGET_ARCH2
bellard's avatar
bellard committed
33
TARGET_ARCH2=$(TARGET_ARCH)
bellard's avatar
bellard committed
34
endif
35 36
ifeq ($(TARGET_ARCH),arm)
  ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
bellard's avatar
bellard committed
37
    TARGET_ARCH2=armeb
38
  endif
bellard's avatar
bellard committed
39
endif
pbrook's avatar
pbrook committed
40 41 42 43 44
ifeq ($(TARGET_ARCH),sh4)
  ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=sh4eb
  endif
endif
bellard's avatar
bellard committed
45
ifeq ($(TARGET_ARCH),mips)
bellard's avatar
bellard committed
46 47
  ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=mipsel
bellard's avatar
bellard committed
48 49
  endif
endif
50 51 52 53 54
ifeq ($(TARGET_ARCH),mipsn32)
  ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=mipsn32el
  endif
endif
ths's avatar
ths committed
55 56 57 58 59
ifeq ($(TARGET_ARCH),mips64)
  ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=mips64el
  endif
endif
60 61 62 63 64

ifdef CONFIG_USER_ONLY
# user emulator name
QEMU_PROG=qemu-$(TARGET_ARCH2)
else
65
# system emulator name
66
ifeq ($(TARGET_ARCH), i386)
67
QEMU_PROG=qemu$(EXESUF)
68
else
69
QEMU_PROG=qemu-system-$(TARGET_ARCH2)$(EXESUF)
70
endif
bellard's avatar
bellard committed
71
endif
bellard's avatar
bellard committed
72

73
PROGS=$(QEMU_PROG)
bellard's avatar
bellard committed
74

75
# cc-option
aliguori's avatar
aliguori committed
76
# Usage: CFLAGS+=$(call cc-option, $(CFLAGS), -falign-functions=0, -malign-functions=0)
77

aliguori's avatar
aliguori committed
78 79
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 ;)
80

81 82
HELPER_CFLAGS=

bellard's avatar
bellard committed
83
ifeq ($(ARCH),i386)
84
HELPER_CFLAGS+=-fomit-frame-pointer
85 86
endif

malc's avatar
malc committed
87 88 89 90
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
91
ifeq ($(ARCH),sparc)
aliguori's avatar
aliguori committed
92
  ifneq ($(CONFIG_SOLARIS),yes)
93
    HELPER_CFLAGS+=-ffixed-i0
94
  endif
95
endif
bellard's avatar
bellard committed
96 97 98

ifeq ($(ARCH),alpha)
# Ensure there's only a single GP
99
CFLAGS+=-msmall-data
bellard's avatar
bellard committed
100 101
endif

aurel32's avatar
aurel32 committed
102 103 104 105
ifeq ($(ARCH),hppa)
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

bellard's avatar
bellard committed
106
ifeq ($(ARCH),ia64)
107
CFLAGS+=-mno-sdata
108 109
endif

110 111
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
bellard's avatar
bellard committed
112

113
CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
bellard's avatar
bellard committed
114
LIBS+=-lm
bellard's avatar
bellard committed
115
ifdef CONFIG_WIN32
116
LIBS+=-lwinmm -lws2_32 -liphlpapi
bellard's avatar
bellard committed
117
endif
bellard's avatar
bellard committed
118 119
ifdef CONFIG_SOLARIS
LIBS+=-lsocket -lnsl -lresolv
ths's avatar
ths committed
120 121 122
ifdef NEEDS_LIBSUNMATH
LIBS+=-lsunmath
LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
123
CFLAGS+=-I/opt/SUNWspro/prod/include/cc
bellard's avatar
bellard committed
124
endif
125 126
endif

aliguori's avatar
aliguori committed
127 128 129
kvm.o: CFLAGS+=$(KVM_CFLAGS)
kvm-all.o: CFLAGS+=$(KVM_CFLAGS)

130
all: $(PROGS)
bellard's avatar
bellard committed
131

132
#########################################################
bellard's avatar
bellard committed
133
# cpu emulator library
134
LIBOBJS=exec.o translate-all.o cpu-exec.o\
135
        translate.o host-utils.o
136 137 138
ifdef CONFIG_KQEMU
LIBOBJS+= kqemu.o
endif
bellard's avatar
bellard committed
139
# TCG code generator
aurel32's avatar
aurel32 committed
140
LIBOBJS+= tcg/tcg.o tcg/tcg-runtime.o
bellard's avatar
bellard committed
141
CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
blueswir1's avatar
blueswir1 committed
142 143 144
ifeq ($(ARCH),sparc64)
CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
endif
bellard's avatar
bellard committed
145 146 147 148 149
ifdef CONFIG_SOFTFLOAT
LIBOBJS+=fpu/softfloat.o
else
LIBOBJS+=fpu/softfloat-native.o
endif
150
CPPFLAGS+=-I$(SRC_PATH)/fpu
151 152
LIBOBJS+= op_helper.o helper.o

bellard's avatar
bellard committed
153
ifeq ($(TARGET_BASE_ARCH), arm)
154
LIBOBJS+= neon_helper.o iwmmxt_helper.o
pbrook's avatar
pbrook committed
155 156
endif

157
ifeq ($(TARGET_BASE_ARCH), alpha)
158
LIBOBJS+= alpha_palcode.o
159 160
endif

161 162 163 164 165 166 167 168
ifeq ($(TARGET_BASE_ARCH), cris)
LIBOBJS+= cris-dis.o

ifndef CONFIG_USER_ONLY
LIBOBJS+= mmu.o
endif
endif

bellard's avatar
bellard committed
169
# NOTE: the disassembler code is only needed for debugging
170
LIBOBJS+=disas.o
bellard's avatar
bellard committed
171
ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
172 173
USE_I386_DIS=y
endif
bellard's avatar
bellard committed
174
ifeq ($(findstring x86_64, $(TARGET_ARCH) $(ARCH)),x86_64)
175 176 177
USE_I386_DIS=y
endif
ifdef USE_I386_DIS
bellard's avatar
bellard committed
178 179 180 181 182
LIBOBJS+=i386-dis.o
endif
ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
LIBOBJS+=alpha-dis.o
endif
bellard's avatar
bellard committed
183
ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
bellard's avatar
bellard committed
184 185
LIBOBJS+=ppc-dis.o
endif
ths's avatar
ths committed
186
ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
bellard's avatar
bellard committed
187 188
LIBOBJS+=mips-dis.o
endif
bellard's avatar
bellard committed
189
ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
bellard's avatar
bellard committed
190 191 192 193 194
LIBOBJS+=sparc-dis.o
endif
ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
LIBOBJS+=arm-dis.o
endif
bellard's avatar
bellard committed
195 196 197
ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
LIBOBJS+=m68k-dis.o
endif
bellard's avatar
bellard committed
198 199 200
ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
LIBOBJS+=sh4-dis.o
endif
aurel32's avatar
aurel32 committed
201 202 203
ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
LIBOBJS+=hppa-dis.o
endif
204 205 206
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
LIBOBJS+=s390-dis.o
endif
bellard's avatar
bellard committed
207

208 209 210 211
# libqemu

libqemu.a: $(LIBOBJS)

212
translate.o: translate.c cpu.h
213

214
translate-all.o: translate-all.c cpu.h
215

216
tcg/tcg.o: cpu.h
217 218 219

# HELPER_CFLAGS is used for all the code compiled with static register
# variables
220
op_helper.o: CFLAGS += $(HELPER_CFLAGS) $(I386_CFLAGS)
221

222
cpu-exec.o: CFLAGS += $(HELPER_CFLAGS)
223 224 225 226 227 228 229 230 231

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

ifdef CONFIG_LINUX_USER

ifndef TARGET_ABI_DIR
  TARGET_ABI_DIR=$(TARGET_ARCH)
endif
232
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
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 259 260 261 262 263
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

malc's avatar
malc committed
264 265 266 267
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

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 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312
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
313 314 315 316 317 318
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
CFLAGS+=-p
endif

319
OBJS= main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
320
      elfload.o linuxload.o uaccess.o envlist.o
321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341
LIBS+= $(AIOLIBS)
ifdef TARGET_HAS_BFLT
OBJS+= flatload.o
endif
ifdef TARGET_HAS_ELFLOAD32
OBJS+= elfload32.o
elfload32.o: elfload.c
endif

ifeq ($(TARGET_ARCH), i386)
OBJS+= vm86.o
endif
ifeq ($(TARGET_ARCH), arm)
OBJS+=nwfpe/fpa11.o nwfpe/fpa11_cpdo.o \
nwfpe/fpa11_cpdt.o nwfpe/fpa11_cprt.o nwfpe/fpopcode.o nwfpe/single_cpdo.o \
 nwfpe/double_cpdo.o nwfpe/extended_cpdo.o arm-semi.o
endif
ifeq ($(TARGET_ARCH), m68k)
OBJS+= m68k-sim.o m68k-semi.o
endif

342
ifdef CONFIG_GDBSTUB
343
OBJS+=gdbstub.o gdbstub-xml.o
344
endif
bellard's avatar
bellard committed
345

346 347 348 349
OBJS+= libqemu.a

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

352
$(QEMU_PROG): $(OBJS) ../libqemu_user.a
353
	$(LINK)
bellard's avatar
bellard committed
354 355 356 357 358 359
ifeq ($(ARCH),alpha)
# Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of
# the address space (31 bit so sign extending doesn't matter)
	echo -ne '\001\000\000\000' | dd of=qemu bs=1 seek=48 count=4 conv=notrunc
endif

360 361 362 363 364 365 366 367 368 369 370 371 372 373 374
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

375
OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o
376 377 378 379

OBJS+= libqemu.a

ifdef CONFIG_GDBSTUB
380
OBJS+=gdbstub.o gdbstub-xml.o
381 382 383 384
endif

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

$(QEMU_PROG): $(OBJS)
388
	$(LINK)
389 390 391

endif #CONFIG_DARWIN_USER

392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488
#########################################################
# 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

OBJS= main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o
OBJS+= uaccess.o

OBJS+= libqemu.a

ifdef CONFIG_GDBSTUB
OBJS+=gdbstub.o
endif

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

$(QEMU_PROG): $(OBJS) ../libqemu_user.a
492
	$(LINK)
493 494 495

endif #CONFIG_BSD_USER

496 497 498 499
#########################################################
# System emulator target
ifndef CONFIG_USER_ONLY

500
OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o dma-helpers.o
501 502
# virtio has to be here due to weird dependency between PCI and virtio-net.
# need to fix this properly
503
OBJS+=virtio.o virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
504
OBJS+=fw_cfg.o
aliguori's avatar
aliguori committed
505 506 507
ifdef CONFIG_KVM
OBJS+=kvm.o kvm-all.o
endif
508
ifdef CONFIG_WIN32
509
OBJS+=block-raw-win32.o
510
else
511 512 513
ifdef CONFIG_AIO
OBJS+=posix-aio-compat.o
endif
514
OBJS+=block-raw-posix.o
515 516
endif

517
LIBS+=-lz
518 519 520
ifdef CONFIG_ALSA
LIBS += -lasound
endif
521 522 523
ifdef CONFIG_ESD
LIBS += -lesd
endif
malc's avatar
malc committed
524 525 526
ifdef CONFIG_PA
LIBS += -lpulse-simple
endif
527 528
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
bellard's avatar
bellard committed
529
endif
bellard's avatar
bellard committed
530 531
ifdef CONFIG_FMOD
LIBS += $(CONFIG_FMOD_LIB)
bellard's avatar
bellard committed
532
endif
blueswir1's avatar
blueswir1 committed
533 534 535
ifdef CONFIG_OSS
LIBS += $(CONFIG_OSS_LIB)
endif
bellard's avatar
bellard committed
536

aliguori's avatar
aliguori committed
537
SOUND_HW = sb16.o es1370.o ac97.o
538 539
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
540
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
541
endif
542 543 544
ifdef CONFIG_GUS
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
endif
malc's avatar
malc committed
545 546 547
ifdef CONFIG_CS4231A
SOUND_HW += cs4231a.o
endif
bellard's avatar
bellard committed
548

549 550 551 552 553
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

554 555 556 557 558
ifdef CONFIG_VNC_SASL
CPPFLAGS += $(CONFIG_VNC_SASL_CFLAGS)
LIBS += $(CONFIG_VNC_SASL_LIBS)
endif

559 560 561 562
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

pbrook's avatar
pbrook committed
563
# SCSI layer
564
OBJS+= lsi53c895a.o esp.o
pbrook's avatar
pbrook committed
565

bellard's avatar
bellard committed
566
# USB layer
567
OBJS+= usb-ohci.o
bellard's avatar
bellard committed
568

569
# PCI network cards
570 571 572 573
OBJS += eepro100.o
OBJS += ne2000.o
OBJS += pcnet.o
OBJS += rtl8139.o
574
OBJS += e1000.o
575

bellard's avatar
bellard committed
576
ifeq ($(TARGET_BASE_ARCH), i386)
577
# Hardware support
578
OBJS+= ide.o pckbd.o vga.o $(SOUND_HW) dma.o
579
OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
580
OBJS+= cirrus_vga.o apic.o ioapic.o parallel.o acpi.o piix_pci.o
581
OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o hpet.o
582
OBJS += device-hotplug.o pci-hotplug.o smbios.o
583
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard's avatar
bellard committed
584
endif
bellard's avatar
bellard committed
585
ifeq ($(TARGET_BASE_ARCH), ppc)
586
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
587
# shared objects
588
OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
589
# PREP target
590
OBJS+= pckbd.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o
591
OBJS+= prep_pci.o ppc_prep.o
592
# Mac shared devices
blueswir1's avatar
blueswir1 committed
593
OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o escc.o
594
# OldWorld PowerMac
595
OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
596
# NewWorld PowerMac
597
OBJS+= unin_pci.o ppc_newworld.o
598
# PowerPC 4xx boards
599
OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o
600
OBJS+= ppc440.o ppc440_bamboo.o
601
# PowerPC E500 boards
602
OBJS+= ppce500_pci.o ppce500_mpc8544ds.o
603 604 605 606
ifdef FDT_LIBS
OBJS+= device_tree.o
LIBS+= $(FDT_LIBS)
endif
aurel32's avatar
aurel32 committed
607 608 609
ifdef CONFIG_KVM
OBJS+= kvm_ppc.o
endif
610
endif
ths's avatar
ths committed
611
ifeq ($(TARGET_BASE_ARCH), mips)
aurel32's avatar
aurel32 committed
612
OBJS+= mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
aurel32's avatar
aurel32 committed
613
OBJS+= mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o rc4030.o
614
OBJS+= g364fb.o jazz_led.o dp8393x.o
615
OBJS+= ide.o gt64xxx.o pckbd.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
aurel32's avatar
aurel32 committed
616
OBJS+= piix_pci.o parallel.o cirrus_vga.o pcspk.o $(SOUND_HW)
617 618
OBJS+= mipsnet.o
OBJS+= pflash_cfi01.o
619
OBJS+= vmware_vga.o
aurel32's avatar
aurel32 committed
620
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard's avatar
bellard committed
621
endif
622
ifeq ($(TARGET_BASE_ARCH), cris)
623 624 625 626
# Boards
OBJS+= etraxfs.o axis_dev88.o

# IO blocks
edgar_igl's avatar
edgar_igl committed
627
OBJS+= etraxfs_dma.o
628
OBJS+= etraxfs_pic.o
edgar_igl's avatar
edgar_igl committed
629
OBJS+= etraxfs_eth.o
630 631
OBJS+= etraxfs_timer.o
OBJS+= etraxfs_ser.o
632

633
OBJS+= pflash_cfi02.o nand.o
634
endif
bellard's avatar
bellard committed
635
ifeq ($(TARGET_BASE_ARCH), sparc)
bellard's avatar
bellard committed
636
ifeq ($(TARGET_ARCH), sparc64)
637
OBJS+= sun4u.o ide.o pckbd.o vga.o apb_pci.o
638
OBJS+= fdc.o mc146818rtc.o serial.o m48t59.o
639
OBJS+= cirrus_vga.o parallel.o
bellard's avatar
bellard committed
640
else
641
OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
blueswir1's avatar
blueswir1 committed
642
OBJS+= slavio_timer.o escc.o slavio_misc.o fdc.o sparc32_dma.o
643
OBJS+= cs4231.o eccmemctl.o sbi.o sun4c_intctl.o
bellard's avatar
bellard committed
644
endif
645
endif
bellard's avatar
bellard committed
646
ifeq ($(TARGET_BASE_ARCH), arm)
647
OBJS+= integratorcp.o versatilepb.o smc91c111.o arm_pic.o arm_timer.o
648
OBJS+= arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
649
OBJS+= versatile_pci.o
650 651 652 653 654 655 656
OBJS+= realview_gic.o realview.o arm_sysctl.o mpcore.o
OBJS+= armv7m.o armv7m_nvic.o stellaris.o pl022.o stellaris_enet.o
OBJS+= pl061.o
OBJS+= arm-semi.o
OBJS+= pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o
OBJS+= pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o pxa2xx_keypad.o
OBJS+= pflash_cfi01.o gumstix.o
657
OBJS+= zaurus.o ide.o serial.o nand.o ecc.o spitz.o tosa.o tc6393xb.o
balrog's avatar
balrog committed
658
OBJS+= omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
659
OBJS+= omap2.o omap_dss.o soc_dma.o
660
OBJS+= omap_sx1.o palm.o tsc210x.o
balrog's avatar
balrog committed
661
OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
662
OBJS+= mst_fpga.o mainstone.o
663
OBJS+= musicpal.o pflash_cfi02.o
664
OBJS+= framebuffer.o
665
CPPFLAGS += -DHAS_AUDIO
bellard's avatar
bellard committed
666
endif
bellard's avatar
bellard committed
667
ifeq ($(TARGET_BASE_ARCH), sh4)
668
OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
669
OBJS+= sh_timer.o sh_serial.o sh_intc.o sh_pci.o sm501.o serial.o
670
OBJS+= ide.o
bellard's avatar
bellard committed
671
endif
pbrook's avatar
pbrook committed
672
ifeq ($(TARGET_BASE_ARCH), m68k)
673
OBJS+= an5206.o mcf5206.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
674
OBJS+= m68k-semi.o dummy_m68k.o
pbrook's avatar
pbrook committed
675
endif
676
ifdef CONFIG_GDBSTUB
677
OBJS+=gdbstub.o gdbstub-xml.o
bellard's avatar
bellard committed
678
endif
679
ifdef CONFIG_COCOA
680 681 682 683
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
684
endif
bellard's avatar
bellard committed
685
ifdef CONFIG_SLIRP
686
CPPFLAGS+=-I$(SRC_PATH)/slirp
bellard's avatar
bellard committed
687 688
endif

689
LIBS+=$(AIOLIBS)
690 691
# specific flags are needed for non soft mmu emulator
ifdef CONFIG_STATIC
692
LDFLAGS+=-static
bellard's avatar
bellard committed
693
endif
694
ifndef CONFIG_DARWIN
bellard's avatar
bellard committed
695
ifndef CONFIG_WIN32
bellard's avatar
bellard committed
696
ifndef CONFIG_SOLARIS
malc's avatar
malc committed
697
ifndef CONFIG_AIX
698
LIBS+=-lutil
bellard's avatar
bellard committed
699
endif
malc's avatar
malc committed
700
endif
701
endif
bellard's avatar
bellard committed
702
endif
bellard's avatar
bellard committed
703
ifdef TARGET_GPROF
704 705
vl.o: CFLAGS+=-p
LDFLAGS+=-p
bellard's avatar
bellard committed
706
endif
707

708
ifeq ($(ARCH),ia64)
709
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
bellard's avatar
bellard committed
710 711
endif

712 713 714 715
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

716 717 718 719
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
bellard's avatar
bellard committed
720 721
endif

722 723
vl.o: qemu-options.h

724 725
$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS)

726
$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a
727
	$(LINK)
bellard's avatar
bellard committed
728

729
endif # !CONFIG_USER_ONLY
730

731 732
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
ifeq ($(TARGET_XML_FILES),)
733
	$(call quiet-command,rm -f $@ && echo > $@,"  GEN   $(TARGET_DIR)$@")
734
else
735
	$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES),"  GEN   $(TARGET_DIR)$@")
736 737
endif

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

bellard's avatar
bellard committed
741
clean:
742
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o qemu-options.h gdbstub-xml.c
bellard's avatar
bellard committed
743
	rm -f *.d */*.d tcg/*.o
744

745
install: all
bellard's avatar
bellard committed
746
ifneq ($(PROGS),)
747
	$(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
bellard's avatar
bellard committed
748
endif
bellard's avatar
bellard committed
749

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