Makefile.target 18.2 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)
J
Juan Quintela 已提交
92
  ifneq ($(CONFIG_SOLARIS),y)
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
114
CPPFLAGS+=-U_FORTIFY_SOURCE
B
bellard 已提交
115
LIBS+=-lm
B
bellard 已提交
116
ifdef CONFIG_WIN32
117
LIBS+=-lwinmm -lws2_32 -liphlpapi
B
bellard 已提交
118
endif
B
bellard 已提交
119 120
ifdef CONFIG_SOLARIS
LIBS+=-lsocket -lnsl -lresolv
T
ths 已提交
121 122 123
ifdef NEEDS_LIBSUNMATH
LIBS+=-lsunmath
LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
124
CFLAGS+=-I/opt/SUNWspro/prod/include/cc
B
bellard 已提交
125
endif
126 127
endif

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

131
all: $(PROGS)
P
Paul Brook 已提交
132 133
# Dummy command so that make thinks it has done something
	@true
B
bellard 已提交
134

135
#########################################################
B
bellard 已提交
136
# cpu emulator library
J
Juan Quintela 已提交
137
libobj-y = exec.o translate-all.o cpu-exec.o translate.o host-utils.o
138
libobj-$(CONFIG_KQEMU) += kqemu.o
B
bellard 已提交
139
# TCG code generator
J
Juan Quintela 已提交
140
libobj-y += 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
ifdef CONFIG_SOFTFLOAT
J
Juan Quintela 已提交
146
libobj-y += fpu/softfloat.o
B
bellard 已提交
147
else
J
Juan Quintela 已提交
148
libobj-y += fpu/softfloat-native.o
B
bellard 已提交
149
endif
150
CPPFLAGS+=-I$(SRC_PATH)/fpu
J
Juan Quintela 已提交
151
libobj-y += op_helper.o helper.o
152

B
bellard 已提交
153
ifeq ($(TARGET_BASE_ARCH), arm)
J
Juan Quintela 已提交
154
libobj-y += neon_helper.o iwmmxt_helper.o
P
pbrook 已提交
155 156
endif

157
ifeq ($(TARGET_BASE_ARCH), alpha)
J
Juan Quintela 已提交
158
libobj-y += alpha_palcode.o
159 160
endif

161
ifeq ($(TARGET_BASE_ARCH), cris)
J
Juan Quintela 已提交
162
libobj-y += cris-dis.o
163 164

ifndef CONFIG_USER_ONLY
J
Juan Quintela 已提交
165
libobj-y += mmu.o
166 167 168
endif
endif

B
bellard 已提交
169
# NOTE: the disassembler code is only needed for debugging
J
Juan Quintela 已提交
170
libobj-y += 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
USE_I386_DIS=y
endif
177
libobj-$(USE_I386_DIS) += i386-dis.o
B
bellard 已提交
178
ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
J
Juan Quintela 已提交
179
libobj-y += alpha-dis.o
B
bellard 已提交
180
endif
B
bellard 已提交
181
ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
J
Juan Quintela 已提交
182
libobj-y += ppc-dis.o
B
bellard 已提交
183
endif
184
ifeq ($(findstring microblaze, $(TARGET_BASE_ARCH) $(ARCH)),microblaze)
J
Juan Quintela 已提交
185
libobj-y += microblaze-dis.o
186
ifndef CONFIG_USER_ONLY
J
Juan Quintela 已提交
187
libobj-y += mmu.o
188 189
endif
endif
T
ths 已提交
190
ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
J
Juan Quintela 已提交
191
libobj-y += mips-dis.o
B
bellard 已提交
192
endif
B
bellard 已提交
193
ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
J
Juan Quintela 已提交
194
libobj-y += sparc-dis.o
B
bellard 已提交
195 196
endif
ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
J
Juan Quintela 已提交
197
libobj-y += arm-dis.o
B
bellard 已提交
198
endif
B
bellard 已提交
199
ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
J
Juan Quintela 已提交
200
libobj-y += m68k-dis.o
B
bellard 已提交
201
endif
B
bellard 已提交
202
ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
J
Juan Quintela 已提交
203
libobj-y += sh4-dis.o
B
bellard 已提交
204
endif
A
aurel32 已提交
205
ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
J
Juan Quintela 已提交
206
libobj-y += hppa-dis.o
A
aurel32 已提交
207
endif
208
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
J
Juan Quintela 已提交
209
libobj-y += s390-dis.o
210
endif
B
bellard 已提交
211

212 213
# libqemu

J
Juan Quintela 已提交
214
libqemu.a: $(libobj-y)
215

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

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

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

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

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

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

ifdef CONFIG_LINUX_USER

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

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

J
Juan Quintela 已提交
323
obj-y = main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
324 325
      elfload.o linuxload.o uaccess.o envlist.o gdbstub.o gdbstub-xml.o \
      ioport-user.o
326 327
LIBS+= $(PTHREADLIBS)
LIBS+= $(CLOCKLIBS)
328 329
obj-$(TARGET_HAS_BFLT) += flatload.o

330 331 332
ifdef TARGET_HAS_ELFLOAD32
elfload32.o: elfload.c
endif
333
obj-$(TARGET_HAS_ELFLOAD32) += elfload32.o
334 335

ifeq ($(TARGET_ARCH), i386)
J
Juan Quintela 已提交
336
obj-y += vm86.o
337 338
endif
ifeq ($(TARGET_ARCH), arm)
J
Juan Quintela 已提交
339
obj-y += nwfpe/fpa11.o nwfpe/fpa11_cpdo.o \
340 341 342 343
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)
J
Juan Quintela 已提交
344
obj-y += m68k-sim.o m68k-semi.o
345 346 347 348
endif

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

A
Anthony Liguori 已提交
351
$(QEMU_PROG): ARLIBS=../libqemu_user.a libqemu.a
J
Juan Quintela 已提交
352 353
$(QEMU_PROG): $(obj-y) ../libqemu_user.a libqemu.a
	$(call LINK,$(obj-y))
B
bellard 已提交
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

J
Juan Quintela 已提交
375
obj-y = main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \
376
        gdbstub.o gdbstub-xml.o ioport-user.o
377 378 379

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

A
Anthony Liguori 已提交
382
$(QEMU_PROG): ARLIBS=libqemu.a
J
Juan Quintela 已提交
383 384
$(QEMU_PROG): $(obj-y) libqemu.a
	$(call LINK,$(obj-y))
385 386 387

endif #CONFIG_DARWIN_USER

B
blueswir1 已提交
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 470 471 472 473
#########################################################
# 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
Juan Quintela 已提交
474
obj-y = main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
475
        gdbstub.o gdbstub-xml.o ioport-user.o
J
Juan Quintela 已提交
476
obj-y += uaccess.o
B
blueswir1 已提交
477 478 479

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

A
Anthony Liguori 已提交
482
$(QEMU_PROG): ARLIBS=libqemu.a ../libqemu_user.a
J
Juan Quintela 已提交
483 484
$(QEMU_PROG): $(obj-y) libqemu.a ../libqemu_user.a
	$(call LINK,$(obj-y))
B
blueswir1 已提交
485 486 487

endif #CONFIG_BSD_USER

488 489 490 491
#########################################################
# System emulator target
ifndef CONFIG_USER_ONLY

J
Juan Quintela 已提交
492
obj-y = vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o \
493
        gdbstub.o gdbstub-xml.o msix.o ioport.o
A
aliguori 已提交
494 495
# virtio has to be here due to weird dependency between PCI and virtio-net.
# need to fix this properly
J
Juan Quintela 已提交
496 497
obj-y += virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
obj-$(CONFIG_KVM) += kvm.o kvm-all.o
498

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

519 520 521 522 523 524
sound-obj-y =
sound-obj-$(CONFIG_SB16) += sb16.o
sound-obj-$(CONFIG_ES1370) += es1370.o
sound-obj-$(CONFIG_AC97) += ac97.o
sound-obj-$(CONFIG_ADLIB) += fmopl.o adlib.o
sound-obj-$(CONFIG_GUS) += gus.o gusemu_hal.o gusemu_mixer.o
M
malc 已提交
525
sound-obj-$(CONFIG_CS4231A) += cs4231a.o
526

527
ifdef CONFIG_ADLIB
528
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
529
endif
B
bellard 已提交
530

531 532 533 534 535
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

536 537 538 539 540
ifdef CONFIG_VNC_SASL
CPPFLAGS += $(CONFIG_VNC_SASL_CFLAGS)
LIBS += $(CONFIG_VNC_SASL_LIBS)
endif

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

545
# xen backend driver support
546
obj-$(CONFIG_XEN) += xen_machine_pv.o xen_domainbuild.o
J
Juan Quintela 已提交
547
ifeq ($(CONFIG_XEN), y)
548 549 550
  LIBS += $(XEN_LIBS)
endif

B
bellard 已提交
551
# USB layer
J
Juan Quintela 已提交
552
obj-y += usb-ohci.o
B
bellard 已提交
553

554
# PCI network cards
J
Juan Quintela 已提交
555 556 557 558 559
obj-y += eepro100.o
obj-y += ne2000.o
obj-y += pcnet.o
obj-y += rtl8139.o
obj-y += e1000.o
560

R
Richard W.M. Jones 已提交
561
# Generic watchdog support and some watchdog devices
J
Juan Quintela 已提交
562
obj-y += wdt_ib700.o wdt_i6300esb.o
R
Richard W.M. Jones 已提交
563

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

J
Juan Quintela 已提交
611 612 613 614 615
obj-y += microblaze_pic_cpu.o
obj-y += xilinx_intc.o
obj-y += xilinx_timer.o
obj-y += xilinx_uartlite.o
obj-y += xilinx_ethlite.o
616

J
Juan Quintela 已提交
617
obj-y += pflash_cfi02.o
618
ifdef FDT_LIBS
J
Juan Quintela 已提交
619
obj-y += device_tree.o
620 621 622
LIBS+= $(FDT_LIBS)
endif
endif
623
ifeq ($(TARGET_BASE_ARCH), cris)
624
# Boards
J
Juan Quintela 已提交
625
obj-y += cris_pic_cpu.o etraxfs.o axis_dev88.o
626 627

# IO blocks
J
Juan Quintela 已提交
628 629 630 631 632
obj-y += etraxfs_dma.o
obj-y += etraxfs_pic.o
obj-y += etraxfs_eth.o
obj-y += etraxfs_timer.o
obj-y += etraxfs_ser.o
633

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

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

B
bellard 已提交
708
ifeq ($(ARCH),ia64)
709
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
B
bellard 已提交
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
B
bellard 已提交
720 721
endif

722 723
vl.o: CFLAGS+=$(SDL_CFLAGS)

724 725
vl.o: qemu-options.h

726 727
monitor.o: qemu-monitor.h

A
Alexander Graf 已提交
728
$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) $(CURL_LIBS)
729
$(QEMU_PROG): ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
J
Juan Quintela 已提交
730 731
$(QEMU_PROG): $(obj-y) ../libqemu_common.a libqemu.a $(HWLIB)
	$(call LINK,$(obj-y))
B
bellard 已提交
732

733
endif # !CONFIG_USER_ONLY
734

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

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

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

B
bellard 已提交
748
clean:
749
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
B
bellard 已提交
750
	rm -f *.d */*.d tcg/*.o
751
	rm -f qemu-options.h qemu-monitor.h gdbstub-xml.c
752

753
install: all
B
bellard 已提交
754
ifneq ($(PROGS),)
755
	$(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
B
bellard 已提交
756
endif
B
bellard 已提交
757

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