Makefile.target 17.3 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
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
B
bellard 已提交
139
# TCG code generator
A
aurel32 已提交
140
LIBOBJS+= tcg/tcg.o tcg/tcg-runtime.o
B
bellard 已提交
141
CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
B
blueswir1 已提交
142 143 144
ifeq ($(ARCH),sparc64)
CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
endif
B
bellard 已提交
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

B
bellard 已提交
153
ifeq ($(TARGET_BASE_ARCH), arm)
154
LIBOBJS+= neon_helper.o iwmmxt_helper.o
P
pbrook 已提交
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

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

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

A
aurel32 已提交
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 \
J
Jan Kiszka 已提交
320
      elfload.o linuxload.o uaccess.o envlist.o gdbstub.o gdbstub-xml.o
321 322
LIBS+= $(PTHREADLIBS)
LIBS+= $(CLOCKLIBS)
323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344
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

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

A
Anthony Liguori 已提交
347 348 349
$(QEMU_PROG): ARLIBS=../libqemu_user.a libqemu.a
$(QEMU_PROG): $(OBJS) ../libqemu_user.a libqemu.a
	$(call LINK,$(OBJS))
B
bellard 已提交
350 351 352 353 354 355
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

356 357 358 359 360 361 362 363 364 365 366 367 368 369 370
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
Jan Kiszka 已提交
371 372
OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \
      gdbstub.o gdbstub-xml.o
373 374 375

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

A
Anthony Liguori 已提交
378 379 380
$(QEMU_PROG): ARLIBS=libqemu.a
$(QEMU_PROG): $(OBJS) libqemu.a
	$(call LINK,$(OBJS))
381 382 383

endif #CONFIG_DARWIN_USER

B
blueswir1 已提交
384 385 386 387 388 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
#########################################################
# 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
Jan Kiszka 已提交
470 471
OBJS= main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
      gdbstub.o gdbstub-xml.o
B
blueswir1 已提交
472 473 474 475
OBJS+= uaccess.o

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

A
Anthony Liguori 已提交
478 479 480
$(QEMU_PROG): ARLIBS=libqemu.a ../libqemu_user.a
$(QEMU_PROG): $(OBJS) libqemu.a ../libqemu_user.a
	$(call LINK,$(OBJS))
B
blueswir1 已提交
481 482 483

endif #CONFIG_BSD_USER

484 485 486 487
#########################################################
# System emulator target
ifndef CONFIG_USER_ONLY

P
Paul Brook 已提交
488 489
OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o \
     gdbstub.o gdbstub-xml.o
A
aliguori 已提交
490 491
# virtio has to be here due to weird dependency between PCI and virtio-net.
# need to fix this properly
P
Paul Brook 已提交
492
OBJS+=virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
A
aliguori 已提交
493 494 495
ifdef CONFIG_KVM
OBJS+=kvm.o kvm-all.o
endif
496

497
LIBS+=-lz
498 499 500
ifdef CONFIG_ALSA
LIBS += -lasound
endif
501 502 503
ifdef CONFIG_ESD
LIBS += -lesd
endif
M
malc 已提交
504 505 506
ifdef CONFIG_PA
LIBS += -lpulse-simple
endif
507 508
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
B
bellard 已提交
509
endif
B
bellard 已提交
510 511
ifdef CONFIG_FMOD
LIBS += $(CONFIG_FMOD_LIB)
B
bellard 已提交
512
endif
B
blueswir1 已提交
513 514 515
ifdef CONFIG_OSS
LIBS += $(CONFIG_OSS_LIB)
endif
B
bellard 已提交
516

A
aliguori 已提交
517
SOUND_HW = sb16.o es1370.o ac97.o
518 519
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
520
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
521
endif
522 523 524
ifdef CONFIG_GUS
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
endif
M
malc 已提交
525 526 527
ifdef CONFIG_CS4231A
SOUND_HW += cs4231a.o
endif
B
bellard 已提交
528

529 530 531 532 533
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

534 535 536 537 538
ifdef CONFIG_VNC_SASL
CPPFLAGS += $(CONFIG_VNC_SASL_CFLAGS)
LIBS += $(CONFIG_VNC_SASL_LIBS)
endif

B
balrog 已提交
539 540 541 542
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

543
# xen backend driver support
544
XEN_OBJS := xen_machine_pv.o xen_backend.o xen_devconfig.o xen_domainbuild.o
545
XEN_OBJS += xen_console.o xenfb.o xen_disk.o xen_nic.o
546 547 548 549 550
ifeq ($(CONFIG_XEN), yes)
  OBJS += $(XEN_OBJS)
  LIBS += $(XEN_LIBS)
endif

P
pbrook 已提交
551
# SCSI layer
552
OBJS+= lsi53c895a.o esp.o
P
pbrook 已提交
553

B
bellard 已提交
554
# USB layer
555
OBJS+= usb-ohci.o
B
bellard 已提交
556

557
# PCI network cards
558 559 560 561
OBJS += eepro100.o
OBJS += ne2000.o
OBJS += pcnet.o
OBJS += rtl8139.o
562
OBJS += e1000.o
563

R
Richard W.M. Jones 已提交
564 565 566
# Generic watchdog support and some watchdog devices
OBJS += wdt_ib700.o wdt_i6300esb.o

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

# IO blocks
E
edgar_igl 已提交
618
OBJS+= etraxfs_dma.o
619
OBJS+= etraxfs_pic.o
E
edgar_igl 已提交
620
OBJS+= etraxfs_eth.o
621 622
OBJS+= etraxfs_timer.o
OBJS+= etraxfs_ser.o
623

P
Paul Brook 已提交
624
OBJS+= pflash_cfi02.o
625
endif
B
bellard 已提交
626
ifeq ($(TARGET_BASE_ARCH), sparc)
B
bellard 已提交
627
ifeq ($(TARGET_ARCH), sparc64)
628
OBJS+= sun4u.o ide.o pckbd.o vga.o apb_pci.o
P
Paul Brook 已提交
629
OBJS+= fdc.o mc146818rtc.o serial.o
630
OBJS+= cirrus_vga.o parallel.o
B
bellard 已提交
631
else
P
Paul Brook 已提交
632
OBJS+= sun4m.o tcx.o iommu.o slavio_intctl.o
B
blueswir1 已提交
633
OBJS+= slavio_timer.o escc.o slavio_misc.o fdc.o sparc32_dma.o
634
OBJS+= cs4231.o eccmemctl.o sbi.o sun4c_intctl.o
B
bellard 已提交
635
endif
636
endif
B
bellard 已提交
637
ifeq ($(TARGET_BASE_ARCH), arm)
638
OBJS+= integratorcp.o versatilepb.o smc91c111.o arm_pic.o arm_timer.o
639
OBJS+= arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
640
OBJS+= versatile_pci.o
641 642 643 644 645 646 647
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
P
Paul Brook 已提交
648
OBJS+= zaurus.o ide.o serial.o spitz.o tosa.o tc6393xb.o
B
balrog 已提交
649
OBJS+= omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
650
OBJS+= omap2.o omap_dss.o soc_dma.o
651
OBJS+= omap_sx1.o palm.o tsc210x.o
B
balrog 已提交
652
OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
653
OBJS+= mst_fpga.o mainstone.o
654
OBJS+= musicpal.o pflash_cfi02.o
655
OBJS+= framebuffer.o
656 657
OBJS+= syborg.o syborg_fb.o syborg_interrupt.o syborg_keyboard.o
OBJS+= syborg_serial.o syborg_timer.o syborg_pointer.o syborg_rtc.o
P
Paul Brook 已提交
658
OBJS+= syborg_virtio.o
659
CPPFLAGS += -DHAS_AUDIO
B
bellard 已提交
660
endif
B
bellard 已提交
661
ifeq ($(TARGET_BASE_ARCH), sh4)
662
OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
663
OBJS+= sh_timer.o sh_serial.o sh_intc.o sh_pci.o sm501.o serial.o
664
OBJS+= ide.o
B
bellard 已提交
665
endif
P
pbrook 已提交
666
ifeq ($(TARGET_BASE_ARCH), m68k)
667
OBJS+= an5206.o mcf5206.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
668
OBJS+= m68k-semi.o dummy_m68k.o
P
pbrook 已提交
669
endif
670
ifdef CONFIG_COCOA
671 672 673 674
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
675
endif
B
bellard 已提交
676
ifdef CONFIG_SLIRP
677
CPPFLAGS+=-I$(SRC_PATH)/slirp
B
bellard 已提交
678 679
endif

680 681
LIBS+=$(PTHREADLIBS)
LIBS+=$(CLOCKLIBS)
682 683
# specific flags are needed for non soft mmu emulator
ifdef CONFIG_STATIC
684
LDFLAGS+=-static
B
bellard 已提交
685
endif
686
ifndef CONFIG_DARWIN
B
bellard 已提交
687
ifndef CONFIG_WIN32
B
bellard 已提交
688
ifndef CONFIG_SOLARIS
M
malc 已提交
689
ifndef CONFIG_AIX
690
LIBS+=-lutil
B
bellard 已提交
691
endif
M
malc 已提交
692
endif
693
endif
B
bellard 已提交
694
endif
B
bellard 已提交
695
ifdef TARGET_GPROF
696 697
vl.o: CFLAGS+=-p
LDFLAGS+=-p
B
bellard 已提交
698
endif
699

B
bellard 已提交
700
ifeq ($(ARCH),ia64)
701
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
B
bellard 已提交
702 703
endif

704 705 706 707
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

708 709 710 711
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
B
bellard 已提交
712 713
endif

714 715
vl.o: qemu-options.h

A
aliguori 已提交
716
$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS)
P
Paul Brook 已提交
717 718
$(QEMU_PROG): ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a $(HWLIB)
A
Anthony Liguori 已提交
719
	$(call LINK,$(OBJS))
B
bellard 已提交
720

721
endif # !CONFIG_USER_ONLY
722

P
pbrook 已提交
723 724
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
ifeq ($(TARGET_XML_FILES),)
725
	$(call quiet-command,rm -f $@ && echo > $@,"  GEN   $(TARGET_DIR)$@")
P
pbrook 已提交
726
else
727
	$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES),"  GEN   $(TARGET_DIR)$@")
P
pbrook 已提交
728 729
endif

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

B
bellard 已提交
733
clean:
734
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o qemu-options.h gdbstub-xml.c
B
bellard 已提交
735
	rm -f *.d */*.d tcg/*.o
736

737
install: all
B
bellard 已提交
738
ifneq ($(PROGS),)
739
	$(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
B
bellard 已提交
740
endif
B
bellard 已提交
741

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