Makefile.target 17.9 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)
P
Paul Brook 已提交
131 132
# Dummy command so that make thinks it has done something
	@true
B
bellard 已提交
133

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

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

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

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

ifndef CONFIG_USER_ONLY
LIBOBJS+= mmu.o
endif
endif

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

216 217 218 219
# libqemu

libqemu.a: $(LIBOBJS)

220
translate.o: translate.c cpu.h
221

222
translate-all.o: translate-all.c cpu.h
223

224
tcg/tcg.o: cpu.h
225 226 227

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

230
cpu-exec.o: CFLAGS += $(HELPER_CFLAGS)
231 232 233 234 235 236 237 238 239

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

ifdef CONFIG_LINUX_USER

ifndef TARGET_ABI_DIR
  TARGET_ABI_DIR=$(TARGET_ARCH)
endif
240
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
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 267 268 269 270 271
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 已提交
272 273 274 275
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

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 316 317 318 319 320
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 已提交
321 322 323 324 325 326
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
CFLAGS+=-p
endif

327
OBJS= main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
J
Jan Kiszka 已提交
328
      elfload.o linuxload.o uaccess.o envlist.o gdbstub.o gdbstub-xml.o
329 330
LIBS+= $(PTHREADLIBS)
LIBS+= $(CLOCKLIBS)
331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352
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.
353
signal.o: CFLAGS += $(HELPER_CFLAGS)
B
bellard 已提交
354

A
Anthony Liguori 已提交
355 356 357
$(QEMU_PROG): ARLIBS=../libqemu_user.a libqemu.a
$(QEMU_PROG): $(OBJS) ../libqemu_user.a libqemu.a
	$(call LINK,$(OBJS))
B
bellard 已提交
358 359 360 361 362 363
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

364 365 366 367 368 369 370 371 372 373 374 375 376 377 378
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 已提交
379 380
OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \
      gdbstub.o gdbstub-xml.o
381 382 383

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

A
Anthony Liguori 已提交
386 387 388
$(QEMU_PROG): ARLIBS=libqemu.a
$(QEMU_PROG): $(OBJS) libqemu.a
	$(call LINK,$(OBJS))
389 390 391

endif #CONFIG_DARWIN_USER

B
blueswir1 已提交
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
#########################################################
# 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 已提交
478 479
OBJS= main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
      gdbstub.o gdbstub-xml.o
B
blueswir1 已提交
480 481 482 483
OBJS+= uaccess.o

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

A
Anthony Liguori 已提交
486 487 488
$(QEMU_PROG): ARLIBS=libqemu.a ../libqemu_user.a
$(QEMU_PROG): $(OBJS) libqemu.a ../libqemu_user.a
	$(call LINK,$(OBJS))
B
blueswir1 已提交
489 490 491

endif #CONFIG_BSD_USER

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

P
Paul Brook 已提交
496 497
OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o \
     gdbstub.o gdbstub-xml.o
A
aliguori 已提交
498 499
# virtio has to be here due to weird dependency between PCI and virtio-net.
# need to fix this properly
P
Paul Brook 已提交
500
OBJS+=virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
A
aliguori 已提交
501 502 503
ifdef CONFIG_KVM
OBJS+=kvm.o kvm-all.o
endif
504

505
LIBS+=-lz
506 507 508
ifdef CONFIG_ALSA
LIBS += -lasound
endif
509 510 511
ifdef CONFIG_ESD
LIBS += -lesd
endif
M
malc 已提交
512 513 514
ifdef CONFIG_PA
LIBS += -lpulse-simple
endif
515 516
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
B
bellard 已提交
517
endif
B
bellard 已提交
518 519
ifdef CONFIG_FMOD
LIBS += $(CONFIG_FMOD_LIB)
B
bellard 已提交
520
endif
B
blueswir1 已提交
521 522 523
ifdef CONFIG_OSS
LIBS += $(CONFIG_OSS_LIB)
endif
B
bellard 已提交
524

A
aliguori 已提交
525
SOUND_HW = sb16.o es1370.o ac97.o
526 527
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
528
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
529
endif
530 531 532
ifdef CONFIG_GUS
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
endif
M
malc 已提交
533 534 535
ifdef CONFIG_CS4231A
SOUND_HW += cs4231a.o
endif
B
bellard 已提交
536

537 538 539 540 541
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

542 543 544 545 546
ifdef CONFIG_VNC_SASL
CPPFLAGS += $(CONFIG_VNC_SASL_CFLAGS)
LIBS += $(CONFIG_VNC_SASL_LIBS)
endif

B
balrog 已提交
547 548 549 550
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

551
# xen backend driver support
B
Blue Swirl 已提交
552
XEN_OBJS := xen_machine_pv.o xen_domainbuild.o
553 554 555 556 557
ifeq ($(CONFIG_XEN), yes)
  OBJS += $(XEN_OBJS)
  LIBS += $(XEN_LIBS)
endif

B
bellard 已提交
558
# USB layer
559
OBJS+= usb-ohci.o
B
bellard 已提交
560

561
# PCI network cards
562 563 564 565
OBJS += eepro100.o
OBJS += ne2000.o
OBJS += pcnet.o
OBJS += rtl8139.o
566
OBJS += e1000.o
567

R
Richard W.M. Jones 已提交
568 569 570
# Generic watchdog support and some watchdog devices
OBJS += wdt_ib700.o wdt_i6300esb.o

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

OBJS+= microblaze_pic_cpu.o
OBJS+= xilinx_intc.o
OBJS+= xilinx_timer.o
OBJS+= xilinx_uartlite.o
OBJS+= xilinx_ethlite.o

OBJS+= pflash_cfi02.o
ifdef FDT_LIBS
OBJS+= device_tree.o
LIBS+= $(FDT_LIBS)
endif
endif
632
ifeq ($(TARGET_BASE_ARCH), cris)
633
# Boards
634
OBJS+= cris_pic_cpu.o etraxfs.o axis_dev88.o
635 636

# IO blocks
E
edgar_igl 已提交
637
OBJS+= etraxfs_dma.o
638
OBJS+= etraxfs_pic.o
E
edgar_igl 已提交
639
OBJS+= etraxfs_eth.o
640 641
OBJS+= etraxfs_timer.o
OBJS+= etraxfs_ser.o
642

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

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

B
bellard 已提交
719
ifeq ($(ARCH),ia64)
720
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
B
bellard 已提交
721 722
endif

723 724 725 726
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

727 728 729 730
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
B
bellard 已提交
731 732
endif

733 734
vl.o: qemu-options.h

735 736
monitor.o: qemu-monitor.h

A
Alexander Graf 已提交
737
$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) $(CURL_LIBS)
738
$(QEMU_PROG): ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
P
Paul Brook 已提交
739
$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a $(HWLIB)
A
Anthony Liguori 已提交
740
	$(call LINK,$(OBJS))
B
bellard 已提交
741

742
endif # !CONFIG_USER_ONLY
743

P
pbrook 已提交
744 745
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
ifeq ($(TARGET_XML_FILES),)
746
	$(call quiet-command,rm -f $@ && echo > $@,"  GEN   $(TARGET_DIR)$@")
P
pbrook 已提交
747
else
748
	$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES),"  GEN   $(TARGET_DIR)$@")
P
pbrook 已提交
749 750
endif

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

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

B
bellard 已提交
757
clean:
758
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
B
bellard 已提交
759
	rm -f *.d */*.d tcg/*.o
760
	rm -f qemu-options.h qemu-monitor.h gdbstub-xml.c
761

762
install: all
B
bellard 已提交
763
ifneq ($(PROGS),)
764
	$(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
B
bellard 已提交
765
endif
B
bellard 已提交
766

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