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

B
bellard 已提交
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
T
ths 已提交
11 12 13
ifeq ($(TARGET_ARCH), mips64)
TARGET_BASE_ARCH:=mips
endif
B
bellard 已提交
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
B
bellard 已提交
23 24 25
ifeq ($(TARGET_ARCH), sparc64)
TARGET_BASE_ARCH:=sparc
endif
B
bellard 已提交
26
TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
B
bellard 已提交
27
VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw
B
balrog 已提交
28
CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MT $@ -MP -DNEED_CPU_H
B
bellard 已提交
29
#CFLAGS+=-Werror
B
bellard 已提交
30
LIBS=
31
# user emulator name
B
bellard 已提交
32
ifndef TARGET_ARCH2
B
bellard 已提交
33
TARGET_ARCH2=$(TARGET_ARCH)
B
bellard 已提交
34
endif
35 36
ifeq ($(TARGET_ARCH),arm)
  ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
B
bellard 已提交
37
    TARGET_ARCH2=armeb
38
  endif
B
bellard 已提交
39
endif
P
pbrook 已提交
40 41 42 43 44
ifeq ($(TARGET_ARCH),sh4)
  ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=sh4eb
  endif
endif
B
bellard 已提交
45
ifeq ($(TARGET_ARCH),mips)
B
bellard 已提交
46 47
  ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=mipsel
B
bellard 已提交
48 49
  endif
endif
50 51 52 53 54
ifeq ($(TARGET_ARCH),mipsn32)
  ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=mipsn32el
  endif
endif
T
ths 已提交
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
B
bellard 已提交
71
endif
B
bellard 已提交
72

73
PROGS=$(QEMU_PROG)
B
bellard 已提交
74

75
# cc-option
A
aliguori 已提交
76
# Usage: CFLAGS+=$(call cc-option, $(CFLAGS), -falign-functions=0, -malign-functions=0)
77

A
aliguori 已提交
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=

B
bellard 已提交
83
ifeq ($(ARCH),i386)
84
HELPER_CFLAGS+=-fomit-frame-pointer
85 86
endif

M
malc 已提交
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

B
bellard 已提交
91
ifeq ($(ARCH),sparc)
A
aliguori 已提交
92
  ifneq ($(CONFIG_SOLARIS),yes)
93
    HELPER_CFLAGS+=-ffixed-i0
94
  endif
B
bellard 已提交
95
endif
B
bellard 已提交
96 97 98

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

A
aurel32 已提交
102 103 104 105
ifeq ($(ARCH),hppa)
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

B
bellard 已提交
106
ifeq ($(ARCH),ia64)
107
CFLAGS+=-mno-sdata
108 109
endif

110 111
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
B
bellard 已提交
112

113
CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
B
bellard 已提交
114
LIBS+=-lm
B
bellard 已提交
115
ifdef CONFIG_WIN32
116
LIBS+=-lwinmm -lws2_32 -liphlpapi
B
bellard 已提交
117
endif
B
bellard 已提交
118 119
ifdef CONFIG_SOLARIS
LIBS+=-lsocket -lnsl -lresolv
T
ths 已提交
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
B
bellard 已提交
124
endif
125 126
endif

A
aliguori 已提交
127 128 129
kvm.o: CFLAGS+=$(KVM_CFLAGS)
kvm-all.o: CFLAGS+=$(KVM_CFLAGS)

130
all: $(PROGS)
B
bellard 已提交
131

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

B
bellard 已提交
150
ifeq ($(TARGET_BASE_ARCH), arm)
151
LIBOBJS+= neon_helper.o iwmmxt_helper.o
P
pbrook 已提交
152 153
endif

154
ifeq ($(TARGET_BASE_ARCH), alpha)
155
LIBOBJS+= alpha_palcode.o
156 157
endif

158 159 160 161 162 163 164 165
ifeq ($(TARGET_BASE_ARCH), cris)
LIBOBJS+= cris-dis.o

ifndef CONFIG_USER_ONLY
LIBOBJS+= mmu.o
endif
endif

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

205 206 207 208
# libqemu

libqemu.a: $(LIBOBJS)

209
translate.o: translate.c cpu.h
210

211
translate-all.o: translate-all.c cpu.h
212

213
tcg/tcg.o: cpu.h
214 215 216

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

219
cpu-exec.o: CFLAGS += $(HELPER_CFLAGS)
220 221 222 223 224 225 226 227 228

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

ifdef CONFIG_LINUX_USER

ifndef TARGET_ABI_DIR
  TARGET_ABI_DIR=$(TARGET_ARCH)
endif
229
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
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 259 260
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 已提交
261 262 263 264
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309
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 已提交
310 311 312 313 314 315
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
CFLAGS+=-p
endif

316
OBJS= main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
317
      elfload.o linuxload.o uaccess.o envlist.o
318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338
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

B
bellard 已提交
339
ifdef CONFIG_GDBSTUB
P
pbrook 已提交
340
OBJS+=gdbstub.o gdbstub-xml.o
B
bellard 已提交
341
endif
B
bellard 已提交
342

343 344 345 346
OBJS+= libqemu.a

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

349
$(QEMU_PROG): $(OBJS) ../libqemu_user.a
A
aliguori 已提交
350
	$(LINK)
B
bellard 已提交
351 352 353 354 355 356
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

357 358 359 360 361 362 363 364 365 366 367 368 369 370 371
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

372
OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o
373 374 375 376

OBJS+= libqemu.a

ifdef CONFIG_GDBSTUB
P
pbrook 已提交
377
OBJS+=gdbstub.o gdbstub-xml.o
378 379 380 381
endif

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

$(QEMU_PROG): $(OBJS)
A
aliguori 已提交
385
	$(LINK)
386 387 388

endif #CONFIG_DARWIN_USER

B
blueswir1 已提交
389 390 391 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
#########################################################
# 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.
486
signal.o: CFLAGS += $(HELPER_CFLAGS)
B
blueswir1 已提交
487 488

$(QEMU_PROG): $(OBJS) ../libqemu_user.a
A
aliguori 已提交
489
	$(LINK)
B
blueswir1 已提交
490 491 492

endif #CONFIG_BSD_USER

493 494 495 496
#########################################################
# System emulator target
ifndef CONFIG_USER_ONLY

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

514
LIBS+=-lz
515 516 517
ifdef CONFIG_ALSA
LIBS += -lasound
endif
518 519 520
ifdef CONFIG_ESD
LIBS += -lesd
endif
M
malc 已提交
521 522 523
ifdef CONFIG_PA
LIBS += -lpulse-simple
endif
524 525
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
B
bellard 已提交
526
endif
B
bellard 已提交
527 528
ifdef CONFIG_FMOD
LIBS += $(CONFIG_FMOD_LIB)
B
bellard 已提交
529
endif
B
blueswir1 已提交
530 531 532
ifdef CONFIG_OSS
LIBS += $(CONFIG_OSS_LIB)
endif
B
bellard 已提交
533

A
aliguori 已提交
534
SOUND_HW = sb16.o es1370.o ac97.o
535 536
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
537
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
538
endif
539 540 541
ifdef CONFIG_GUS
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
endif
M
malc 已提交
542 543 544
ifdef CONFIG_CS4231A
SOUND_HW += cs4231a.o
endif
B
bellard 已提交
545

546 547 548 549 550
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

551 552 553 554 555
ifdef CONFIG_VNC_SASL
CPPFLAGS += $(CONFIG_VNC_SASL_CFLAGS)
LIBS += $(CONFIG_VNC_SASL_LIBS)
endif

B
balrog 已提交
556 557 558 559
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

P
pbrook 已提交
560
# SCSI layer
561
OBJS+= lsi53c895a.o esp.o
P
pbrook 已提交
562

B
bellard 已提交
563
# USB layer
564
OBJS+= usb-ohci.o
B
bellard 已提交
565

T
ths 已提交
566
# EEPROM emulation
567
OBJS += eeprom93xx.o
T
ths 已提交
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

A
aurel32 已提交
576 577 578
# Serial mouse
OBJS += msmouse.o

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

# IO blocks
E
edgar_igl 已提交
630
OBJS+= etraxfs_dma.o
631
OBJS+= etraxfs_pic.o
E
edgar_igl 已提交
632
OBJS+= etraxfs_eth.o
633 634
OBJS+= etraxfs_timer.o
OBJS+= etraxfs_ser.o
635 636

OBJS+= ptimer.o
637
OBJS+= pflash_cfi02.o nand.o
638
endif
B
bellard 已提交
639
ifeq ($(TARGET_BASE_ARCH), sparc)
B
bellard 已提交
640
ifeq ($(TARGET_ARCH), sparc64)
641 642 643
OBJS+= sun4u.o ide.o pckbd.o ps2.o vga.o apb_pci.o
OBJS+= fdc.o mc146818rtc.o serial.o m48t59.o
OBJS+= cirrus_vga.o parallel.o ptimer.o
B
bellard 已提交
644
else
645
OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
B
blueswir1 已提交
646
OBJS+= slavio_timer.o escc.o slavio_misc.o fdc.o sparc32_dma.o
647
OBJS+= cs4231.o ptimer.o eccmemctl.o sbi.o sun4c_intctl.o
B
bellard 已提交
648
endif
649
endif
B
bellard 已提交
650
ifeq ($(TARGET_BASE_ARCH), arm)
651 652 653 654 655 656 657 658 659 660
OBJS+= integratorcp.o versatilepb.o ps2.o smc91c111.o arm_pic.o arm_timer.o
OBJS+= arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
OBJS+= versatile_pci.o ptimer.o
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
661
OBJS+= zaurus.o ide.o serial.o nand.o ecc.o spitz.o tosa.o tc6393xb.o
B
balrog 已提交
662
OBJS+= omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
663
OBJS+= omap2.o omap_dss.o soc_dma.o
664
OBJS+= omap_sx1.o palm.o tsc210x.o
B
balrog 已提交
665
OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
666
OBJS+= tsc2005.o bt-hci-csr.o
667
OBJS+= mst_fpga.o mainstone.o
668
OBJS+= musicpal.o pflash_cfi02.o
669
OBJS+= framebuffer.o
670
CPPFLAGS += -DHAS_AUDIO
B
bellard 已提交
671
endif
B
bellard 已提交
672
ifeq ($(TARGET_BASE_ARCH), sh4)
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
675
OBJS+= ide.o
B
bellard 已提交
676
endif
P
pbrook 已提交
677
ifeq ($(TARGET_BASE_ARCH), m68k)
678 679
OBJS+= an5206.o mcf5206.o ptimer.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
OBJS+= m68k-semi.o dummy_m68k.o
P
pbrook 已提交
680
endif
681
ifdef CONFIG_GDBSTUB
P
pbrook 已提交
682
OBJS+=gdbstub.o gdbstub-xml.o
B
update  
bellard 已提交
683
endif
684
ifdef CONFIG_COCOA
685 686 687 688
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
689
endif
B
bellard 已提交
690
ifdef CONFIG_SLIRP
691
CPPFLAGS+=-I$(SRC_PATH)/slirp
B
bellard 已提交
692 693
endif

694
LIBS+=$(AIOLIBS)
695 696
# specific flags are needed for non soft mmu emulator
ifdef CONFIG_STATIC
697
LDFLAGS+=-static
B
bellard 已提交
698
endif
699
ifndef CONFIG_DARWIN
B
bellard 已提交
700
ifndef CONFIG_WIN32
B
bellard 已提交
701
ifndef CONFIG_SOLARIS
M
malc 已提交
702
ifndef CONFIG_AIX
703
LIBS+=-lutil
B
bellard 已提交
704
endif
M
malc 已提交
705
endif
706
endif
B
bellard 已提交
707
endif
B
bellard 已提交
708
ifdef TARGET_GPROF
709 710
vl.o: CFLAGS+=-p
LDFLAGS+=-p
B
bellard 已提交
711
endif
712

B
bellard 已提交
713
ifeq ($(ARCH),ia64)
714
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
B
bellard 已提交
715 716
endif

717 718 719 720
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

721 722 723 724
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
B
bellard 已提交
725 726
endif

727 728
vl.o: qemu-options.h

A
aliguori 已提交
729 730
$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS)

731
$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a
A
aliguori 已提交
732
	$(LINK)
B
bellard 已提交
733

734
endif # !CONFIG_USER_ONLY
735

P
pbrook 已提交
736 737
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
ifeq ($(TARGET_XML_FILES),)
738
	$(call quiet-command,rm -f $@ && echo > $@,"  GEN   $(TARGET_DIR)$@")
P
pbrook 已提交
739
else
740
	$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES),"  GEN   $(TARGET_DIR)$@")
P
pbrook 已提交
741 742
endif

743
qemu-options.h: $(SRC_PATH)/qemu-options.hx
B
blueswir1 已提交
744
	sh $(SRC_PATH)/hxtool -h < $< > $@
745

B
bellard 已提交
746
clean:
747
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o qemu-options.h
B
bellard 已提交
748
	rm -f *.d */*.d tcg/*.o
749

750
install: all
B
bellard 已提交
751
ifneq ($(PROGS),)
752
	$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
B
bellard 已提交
753
endif
B
bellard 已提交
754

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