Makefile.target 16.8 KB
Newer Older
bellard's avatar
bellard committed
1
include config.mak
aliguori's avatar
aliguori committed
2
include $(SRC_PATH)/rules.mak
bellard's avatar
bellard committed
3

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

73
PROGS=$(QEMU_PROG)
bellard's avatar
bellard committed
74

75
# cc-option
aliguori's avatar
aliguori committed
76
# Usage: CFLAGS+=$(call cc-option, $(CFLAGS), -falign-functions=0, -malign-functions=0)
77

aliguori's avatar
aliguori committed
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=

bellard's avatar
bellard committed
83
ifeq ($(ARCH),i386)
84
HELPER_CFLAGS+=-fomit-frame-pointer
85 86
endif

bellard's avatar
bellard committed
87
ifeq ($(ARCH),sparc)
88
  CFLAGS+=-ffixed-g2 -ffixed-g3
aliguori's avatar
aliguori committed
89
  ifneq ($(CONFIG_SOLARIS),yes)
90 91
    CFLAGS+=-ffixed-g1 -ffixed-g6
    HELPER_CFLAGS+=-ffixed-i0
92
  endif
93
endif
bellard's avatar
bellard committed
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
bellard's avatar
bellard committed
101 102 103 104
endif

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

aurel32's avatar
aurel32 committed
108 109 110 111
ifeq ($(ARCH),hppa)
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

bellard's avatar
bellard committed
112
ifeq ($(ARCH),ia64)
113
CFLAGS+=-mno-sdata
114 115
endif

116 117
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
bellard's avatar
bellard committed
118

119
CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
bellard's avatar
bellard committed
120
LIBS+=-lm
bellard's avatar
bellard committed
121
ifdef CONFIG_WIN32
122
LIBS+=-lwinmm -lws2_32 -liphlpapi
bellard's avatar
bellard committed
123
endif
bellard's avatar
bellard committed
124 125
ifdef CONFIG_SOLARIS
LIBS+=-lsocket -lnsl -lresolv
ths's avatar
ths committed
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
bellard's avatar
bellard committed
130
endif
131 132
endif

aliguori's avatar
aliguori committed
133 134 135
kvm.o: CFLAGS+=$(KVM_CFLAGS)
kvm-all.o: CFLAGS+=$(KVM_CFLAGS)

136
all: $(PROGS)
bellard's avatar
bellard committed
137

138
#########################################################
bellard's avatar
bellard committed
139
# cpu emulator library
bellard's avatar
bellard committed
140
LIBOBJS=exec.o kqemu.o translate-all.o cpu-exec.o\
141
        translate.o host-utils.o
bellard's avatar
bellard committed
142
# TCG code generator
aurel32's avatar
aurel32 committed
143
LIBOBJS+= tcg/tcg.o tcg/tcg-runtime.o
bellard's avatar
bellard committed
144
CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
blueswir1's avatar
blueswir1 committed
145 146 147
ifeq ($(ARCH),sparc64)
CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
endif
bellard's avatar
bellard committed
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

bellard's avatar
bellard committed
156
ifeq ($(TARGET_BASE_ARCH), arm)
157
LIBOBJS+= neon_helper.o iwmmxt_helper.o
pbrook's avatar
pbrook committed
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

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

malc's avatar
malc committed
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

aurel32's avatar
aurel32 committed
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

345
ifdef CONFIG_GDBSTUB
346
OBJS+=gdbstub.o gdbstub-xml.o
347
endif
bellard's avatar
bellard committed
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)
bellard's avatar
bellard committed
354

355
$(QEMU_PROG): $(OBJS) ../libqemu_user.a
356
	$(LINK)
bellard's avatar
bellard committed
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
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)
391
	$(LINK)
392 393 394

endif #CONFIG_DARWIN_USER

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)
493 494

$(QEMU_PROG): $(OBJS) ../libqemu_user.a
495
	$(LINK)
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
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
aliguori's avatar
aliguori committed
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
malc's avatar
malc committed
527 528 529
ifdef CONFIG_PA
LIBS += -lpulse-simple
endif
530 531
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
bellard's avatar
bellard committed
532
endif
bellard's avatar
bellard committed
533 534
ifdef CONFIG_FMOD
LIBS += $(CONFIG_FMOD_LIB)
bellard's avatar
bellard committed
535
endif
blueswir1's avatar
blueswir1 committed
536 537 538
ifdef CONFIG_OSS
LIBS += $(CONFIG_OSS_LIB)
endif
bellard's avatar
bellard committed
539

aliguori's avatar
aliguori committed
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
malc's avatar
malc committed
548 549 550
ifdef CONFIG_CS4231A
SOUND_HW += cs4231a.o
endif
bellard's avatar
bellard committed
551

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

557 558 559 560 561
ifdef CONFIG_VNC_SASL
CPPFLAGS += $(CONFIG_VNC_SASL_CFLAGS)
LIBS += $(CONFIG_VNC_SASL_LIBS)
endif

562 563 564 565
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

pbrook's avatar
pbrook committed
566
# SCSI layer
567
OBJS+= lsi53c895a.o esp.o
pbrook's avatar
pbrook committed
568

bellard's avatar
bellard committed
569
# USB layer
570
OBJS+= usb-ohci.o
bellard's avatar
bellard committed
571

ths's avatar
ths committed
572
# EEPROM emulation
573
OBJS += eeprom93xx.o
ths's avatar
ths committed
574

575
# PCI network cards
576 577 578 579
OBJS += eepro100.o
OBJS += ne2000.o
OBJS += pcnet.o
OBJS += rtl8139.o
580
OBJS += e1000.o
581

582 583 584
# Serial mouse
OBJS += msmouse.o

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

# IO blocks
edgar_igl's avatar
edgar_igl committed
636
OBJS+= etraxfs_dma.o
637
OBJS+= etraxfs_pic.o
edgar_igl's avatar
edgar_igl committed
638
OBJS+= etraxfs_eth.o
639 640
OBJS+= etraxfs_timer.o
OBJS+= etraxfs_ser.o
641 642

OBJS+= ptimer.o
643
OBJS+= pflash_cfi02.o nand.o
644
endif
bellard's avatar
bellard committed
645
ifeq ($(TARGET_BASE_ARCH), sparc)
bellard's avatar
bellard committed
646
ifeq ($(TARGET_ARCH), sparc64)
647 648 649
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
bellard's avatar
bellard committed
650
else
651
OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
blueswir1's avatar
blueswir1 committed
652
OBJS+= slavio_timer.o escc.o slavio_misc.o fdc.o sparc32_dma.o
653
OBJS+= cs4231.o ptimer.o eccmemctl.o sbi.o sun4c_intctl.o
bellard's avatar
bellard committed
654
endif
655
endif
bellard's avatar
bellard committed
656
ifeq ($(TARGET_BASE_ARCH), arm)
657 658 659 660 661 662 663 664 665 666
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
667
OBJS+= zaurus.o ide.o serial.o nand.o ecc.o spitz.o tosa.o tc6393xb.o
balrog's avatar
balrog committed
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
balrog's avatar
balrog committed
671
OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
672
OBJS+= tsc2005.o bt-hci-csr.o
673
OBJS+= mst_fpga.o mainstone.o
674
OBJS+= musicpal.o pflash_cfi02.o
675
CPPFLAGS += -DHAS_AUDIO
bellard's avatar
bellard committed
676
endif
bellard's avatar
bellard committed
677
ifeq ($(TARGET_BASE_ARCH), sh4)
678
OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
679
OBJS+= sh_timer.o ptimer.o sh_serial.o sh_intc.o sh_pci.o sm501.o serial.o
680
OBJS+= ide.o
bellard's avatar
bellard committed
681
endif
pbrook's avatar
pbrook committed
682
ifeq ($(TARGET_BASE_ARCH), m68k)
683 684
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
pbrook's avatar
pbrook committed
685
endif
686
ifdef CONFIG_GDBSTUB
687
OBJS+=gdbstub.o gdbstub-xml.o
bellard's avatar
bellard committed
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
bellard's avatar
bellard committed
695
ifdef CONFIG_SLIRP
696
CPPFLAGS+=-I$(SRC_PATH)/slirp
bellard's avatar
bellard committed
697 698
endif

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

718
ifeq ($(ARCH),ia64)
719
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
bellard's avatar
bellard committed
720 721
endif

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

726 727 728 729
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
bellard's avatar
bellard committed
730 731
endif

732 733
$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS)

734
$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a
735
	$(LINK)
bellard's avatar
bellard committed
736

737
endif # !CONFIG_USER_ONLY
738

739 740 741 742 743 744 745 746
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

bellard's avatar
bellard committed
747
clean:
748
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
bellard's avatar
bellard committed
749
	rm -f *.d */*.d tcg/*.o
750

751
install: all
bellard's avatar
bellard committed
752
ifneq ($(PROGS),)
753
	$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
bellard's avatar
bellard committed
754
endif
bellard's avatar
bellard committed
755

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