Makefile.target 16.6 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

B
bellard 已提交
87
ifeq ($(ARCH),sparc)
88
  CFLAGS+=-ffixed-g2 -ffixed-g3
A
aliguori 已提交
89
  ifneq ($(CONFIG_SOLARIS),yes)
90 91
    CFLAGS+=-ffixed-g1 -ffixed-g6
    HELPER_CFLAGS+=-ffixed-i0
92
  endif
B
bellard 已提交
93
endif
B
bellard 已提交
94 95

ifeq ($(ARCH),sparc64)
96
  ifneq ($(CONFIG_SOLARIS),yes)
97 98 99
    CFLAGS+=-ffixed-g5 -ffixed-g6 -ffixed-g7
  else
    CFLAGS+=-ffixed-g1 -ffixed-g4 -ffixed-g5 -ffixed-g7
100
  endif
B
bellard 已提交
101 102 103 104
endif

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

A
aurel32 已提交
108 109 110 111
ifeq ($(ARCH),hppa)
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

B
bellard 已提交
112
ifeq ($(ARCH),ia64)
113
CFLAGS+=-mno-sdata
114 115
endif

116 117
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
B
bellard 已提交
118

119
CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
B
bellard 已提交
120
LIBS+=-lm
B
bellard 已提交
121
ifdef CONFIG_WIN32
122
LIBS+=-lwinmm -lws2_32 -liphlpapi
B
bellard 已提交
123
endif
B
bellard 已提交
124 125
ifdef CONFIG_SOLARIS
LIBS+=-lsocket -lnsl -lresolv
T
ths 已提交
126 127 128
ifdef NEEDS_LIBSUNMATH
LIBS+=-lsunmath
LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
129
CFLAGS+=-I/opt/SUNWspro/prod/include/cc
B
bellard 已提交
130
endif
131 132
endif

A
aliguori 已提交
133 134 135
kvm.o: CFLAGS+=$(KVM_CFLAGS)
kvm-all.o: CFLAGS+=$(KVM_CFLAGS)

136
all: $(PROGS)
B
bellard 已提交
137

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

B
bellard 已提交
156
ifeq ($(TARGET_BASE_ARCH), arm)
157
LIBOBJS+= neon_helper.o iwmmxt_helper.o
P
pbrook 已提交
158 159
endif

160
ifeq ($(TARGET_BASE_ARCH), alpha)
161
LIBOBJS+= alpha_palcode.o
162 163
endif

164 165 166 167 168 169 170 171
ifeq ($(TARGET_BASE_ARCH), cris)
LIBOBJS+= cris-dis.o

ifndef CONFIG_USER_ONLY
LIBOBJS+= mmu.o
endif
endif

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

211 212 213 214
# libqemu

libqemu.a: $(LIBOBJS)

215
translate.o: translate.c cpu.h
216

217
translate-all.o: translate-all.c cpu.h
218

219
tcg/tcg.o: cpu.h
220 221 222

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

225
cpu-exec.o: CFLAGS += $(HELPER_CFLAGS)
226 227 228 229 230 231 232 233 234

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

ifdef CONFIG_LINUX_USER

ifndef TARGET_ABI_DIR
  TARGET_ABI_DIR=$(TARGET_ARCH)
endif
235
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
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 264 265 266
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 已提交
267 268 269 270
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

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 313 314 315
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 已提交
316 317 318 319 320 321
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
CFLAGS+=-p
endif

322
OBJS= main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
323
      elfload.o linuxload.o uaccess.o envlist.o
324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344
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 已提交
345
ifdef CONFIG_GDBSTUB
P
pbrook 已提交
346
OBJS+=gdbstub.o gdbstub-xml.o
B
bellard 已提交
347
endif
B
bellard 已提交
348

349 350 351 352
OBJS+= libqemu.a

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

355
$(QEMU_PROG): $(OBJS) ../libqemu_user.a
A
aliguori 已提交
356
	$(LINK)
B
bellard 已提交
357 358 359 360 361 362
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

363 364 365 366 367 368 369 370 371 372 373 374 375 376 377
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

378
OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o
379 380 381 382

OBJS+= libqemu.a

ifdef CONFIG_GDBSTUB
P
pbrook 已提交
383
OBJS+=gdbstub.o gdbstub-xml.o
384 385 386 387
endif

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

$(QEMU_PROG): $(OBJS)
A
aliguori 已提交
391
	$(LINK)
392 393 394

endif #CONFIG_DARWIN_USER

B
blueswir1 已提交
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 489 490 491
#########################################################
# 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.
492
signal.o: CFLAGS += $(HELPER_CFLAGS)
B
blueswir1 已提交
493 494

$(QEMU_PROG): $(OBJS) ../libqemu_user.a
A
aliguori 已提交
495
	$(LINK)
B
blueswir1 已提交
496 497 498

endif #CONFIG_BSD_USER

499 500 501 502
#########################################################
# System emulator target
ifndef CONFIG_USER_ONLY

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

520
LIBS+=-lz
521 522 523
ifdef CONFIG_ALSA
LIBS += -lasound
endif
524 525 526
ifdef CONFIG_ESD
LIBS += -lesd
endif
M
malc 已提交
527 528 529
ifdef CONFIG_PA
LIBS += -lpulse-simple
endif
530 531
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
B
bellard 已提交
532
endif
B
bellard 已提交
533 534
ifdef CONFIG_FMOD
LIBS += $(CONFIG_FMOD_LIB)
B
bellard 已提交
535
endif
B
blueswir1 已提交
536 537 538
ifdef CONFIG_OSS
LIBS += $(CONFIG_OSS_LIB)
endif
B
bellard 已提交
539

A
aliguori 已提交
540
SOUND_HW = sb16.o es1370.o ac97.o
541 542
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
543
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
544
endif
545 546 547
ifdef CONFIG_GUS
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
endif
M
malc 已提交
548 549 550
ifdef CONFIG_CS4231A
SOUND_HW += cs4231a.o
endif
B
bellard 已提交
551

552 553 554 555 556
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

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

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

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

T
ths 已提交
567
# EEPROM emulation
568
OBJS += eeprom93xx.o
T
ths 已提交
569

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

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

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

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

OBJS+= ptimer.o
636
OBJS+= pflash_cfi02.o nand.o
637
endif
B
bellard 已提交
638
ifeq ($(TARGET_BASE_ARCH), sparc)
B
bellard 已提交
639
ifeq ($(TARGET_ARCH), sparc64)
640 641 642
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 已提交
643
else
644
OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
B
blueswir1 已提交
645
OBJS+= slavio_timer.o escc.o slavio_misc.o fdc.o sparc32_dma.o
646
OBJS+= cs4231.o ptimer.o eccmemctl.o sbi.o sun4c_intctl.o
B
bellard 已提交
647
endif
648
endif
B
bellard 已提交
649
ifeq ($(TARGET_BASE_ARCH), arm)
650 651 652 653 654 655 656 657 658 659
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
660
OBJS+= zaurus.o ide.o serial.o nand.o ecc.o spitz.o tosa.o tc6393xb.o
B
balrog 已提交
661
OBJS+= omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
662
OBJS+= omap2.o omap_dss.o soc_dma.o
663
OBJS+= omap_sx1.o palm.o tsc210x.o
B
balrog 已提交
664
OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
665
OBJS+= tsc2005.o bt-hci-csr.o
666
OBJS+= mst_fpga.o mainstone.o
667
OBJS+= musicpal.o pflash_cfi02.o
668
CPPFLAGS += -DHAS_AUDIO
B
bellard 已提交
669
endif
B
bellard 已提交
670
ifeq ($(TARGET_BASE_ARCH), sh4)
671
OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
672
OBJS+= sh_timer.o ptimer.o sh_serial.o sh_intc.o sh_pci.o sm501.o serial.o
673
OBJS+= ide.o
B
bellard 已提交
674
endif
P
pbrook 已提交
675
ifeq ($(TARGET_BASE_ARCH), m68k)
676 677
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 已提交
678
endif
679
ifdef CONFIG_GDBSTUB
P
pbrook 已提交
680
OBJS+=gdbstub.o gdbstub-xml.o
B
update  
bellard 已提交
681
endif
682
ifdef CONFIG_COCOA
683 684 685 686
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
687
endif
B
bellard 已提交
688
ifdef CONFIG_SLIRP
689
CPPFLAGS+=-I$(SRC_PATH)/slirp
B
bellard 已提交
690 691
endif

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

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

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

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

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

727
$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a
A
aliguori 已提交
728
	$(LINK)
B
bellard 已提交
729

730
endif # !CONFIG_USER_ONLY
731

P
pbrook 已提交
732 733 734 735 736 737 738 739
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
	rm -f $@
ifeq ($(TARGET_XML_FILES),)
	echo > $@
else
	$(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES)
endif

B
bellard 已提交
740
clean:
741
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
B
bellard 已提交
742
	rm -f *.d */*.d tcg/*.o
743

744
install: all
B
bellard 已提交
745
ifneq ($(PROGS),)
746
	$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
B
bellard 已提交
747
endif
B
bellard 已提交
748

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