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

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

bellard's avatar
bellard committed
91
ifeq ($(ARCH),sparc)
aliguori's avatar
aliguori committed
92
  ifneq ($(CONFIG_SOLARIS),yes)
93
    HELPER_CFLAGS+=-ffixed-i0
94
  endif
95
endif
bellard's avatar
bellard committed
96 97 98

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

aurel32's avatar
aurel32 committed
102 103 104 105
ifeq ($(ARCH),hppa)
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

bellard's avatar
bellard committed
106
ifeq ($(ARCH),ia64)
107
CFLAGS+=-mno-sdata
108 109
endif

110 111
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
bellard's avatar
bellard committed
112

113
CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
114
CPPFLAGS+=-U_FORTIFY_SOURCE
bellard's avatar
bellard committed
115
LIBS+=-lm
bellard's avatar
bellard committed
116
ifdef CONFIG_WIN32
117
LIBS+=-lwinmm -lws2_32 -liphlpapi
bellard's avatar
bellard committed
118
endif
bellard's avatar
bellard committed
119 120
ifdef CONFIG_SOLARIS
LIBS+=-lsocket -lnsl -lresolv
ths's avatar
ths committed
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
bellard's avatar
bellard committed
125
endif
126 127
endif

aliguori's avatar
aliguori committed
128 129 130
kvm.o: CFLAGS+=$(KVM_CFLAGS)
kvm-all.o: CFLAGS+=$(KVM_CFLAGS)

131
all: $(PROGS)
132 133
# Dummy command so that make thinks it has done something
	@true
bellard's avatar
bellard committed
134

135
#########################################################
bellard's avatar
bellard committed
136
# cpu emulator library
137
LIBOBJS=exec.o translate-all.o cpu-exec.o\
138
        translate.o host-utils.o
139 140 141
ifdef CONFIG_KQEMU
LIBOBJS+= kqemu.o
endif
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
189 190 191 192 193 194
ifeq ($(findstring microblaze, $(TARGET_BASE_ARCH) $(ARCH)),microblaze)
LIBOBJS+=microblaze-dis.o
ifndef CONFIG_USER_ONLY
LIBOBJS+= mmu.o
endif
endif
ths's avatar
ths committed
195
ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
bellard's avatar
bellard committed
196 197
LIBOBJS+=mips-dis.o
endif
bellard's avatar
bellard committed
198
ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
bellard's avatar
bellard committed
199 200 201 202 203
LIBOBJS+=sparc-dis.o
endif
ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
LIBOBJS+=arm-dis.o
endif
bellard's avatar
bellard committed
204 205 206
ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
LIBOBJS+=m68k-dis.o
endif
bellard's avatar
bellard committed
207 208 209
ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
LIBOBJS+=sh4-dis.o
endif
aurel32's avatar
aurel32 committed
210 211 212
ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
LIBOBJS+=hppa-dis.o
endif
213 214 215
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
LIBOBJS+=s390-dis.o
endif
bellard's avatar
bellard committed
216

217 218 219 220
# libqemu

libqemu.a: $(LIBOBJS)

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

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

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

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

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

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

ifdef CONFIG_LINUX_USER

ifndef TARGET_ABI_DIR
  TARGET_ABI_DIR=$(TARGET_ARCH)
endif
241
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
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 272
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
273 274 275 276
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

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 321
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
322 323 324 325 326 327
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
CFLAGS+=-p
endif

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

Anthony Liguori's avatar
Anthony Liguori committed
356 357 358
$(QEMU_PROG): ARLIBS=../libqemu_user.a libqemu.a
$(QEMU_PROG): $(OBJS) ../libqemu_user.a libqemu.a
	$(call LINK,$(OBJS))
bellard's avatar
bellard committed
359 360 361 362 363 364
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

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

Jan Kiszka's avatar
Jan Kiszka committed
380 381
OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \
      gdbstub.o gdbstub-xml.o
382 383 384

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

Anthony Liguori's avatar
Anthony Liguori committed
387 388 389
$(QEMU_PROG): ARLIBS=libqemu.a
$(QEMU_PROG): $(OBJS) libqemu.a
	$(call LINK,$(OBJS))
390 391 392

endif #CONFIG_DARWIN_USER

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 478
#########################################################
# 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

Jan Kiszka's avatar
Jan Kiszka committed
479 480
OBJS= main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
      gdbstub.o gdbstub-xml.o
481 482 483 484
OBJS+= uaccess.o

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

Anthony Liguori's avatar
Anthony Liguori committed
487 488 489
$(QEMU_PROG): ARLIBS=libqemu.a ../libqemu_user.a
$(QEMU_PROG): $(OBJS) libqemu.a ../libqemu_user.a
	$(call LINK,$(OBJS))
490 491 492

endif #CONFIG_BSD_USER

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

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

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

aliguori's avatar
aliguori committed
526
SOUND_HW = sb16.o es1370.o ac97.o
527 528
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
529
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
530
endif
531 532 533
ifdef CONFIG_GUS
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
endif
malc's avatar
malc committed
534 535 536
ifdef CONFIG_CS4231A
SOUND_HW += cs4231a.o
endif
bellard's avatar
bellard committed
537

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

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

548 549 550 551
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

552
# xen backend driver support
553
XEN_OBJS := xen_machine_pv.o xen_domainbuild.o
554 555 556 557 558
ifeq ($(CONFIG_XEN), yes)
  OBJS += $(XEN_OBJS)
  LIBS += $(XEN_LIBS)
endif

bellard's avatar
bellard committed
559
# USB layer
560
OBJS+= usb-ohci.o
bellard's avatar
bellard committed
561

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

Richard W.M. Jones's avatar
Richard W.M. Jones committed
569 570 571
# Generic watchdog support and some watchdog devices
OBJS += wdt_ib700.o wdt_i6300esb.o

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

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

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

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

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

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

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

734 735
vl.o: CFLAGS+=$(SDL_CFLAGS)

736 737
vl.o: qemu-options.h

738 739
monitor.o: qemu-monitor.h

740
$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) $(CURL_LIBS)
741
$(QEMU_PROG): ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
Paul Brook's avatar
Paul Brook committed
742
$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a $(HWLIB)
Anthony Liguori's avatar
Anthony Liguori committed
743
	$(call LINK,$(OBJS))
bellard's avatar
bellard committed
744

745
endif # !CONFIG_USER_ONLY
746

747 748
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
ifeq ($(TARGET_XML_FILES),)
749
	$(call quiet-command,rm -f $@ && echo > $@,"  GEN   $(TARGET_DIR)$@")
750
else
751
	$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES),"  GEN   $(TARGET_DIR)$@")
752 753
endif

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

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

bellard's avatar
bellard committed
760
clean:
761
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
bellard's avatar
bellard committed
762
	rm -f *.d */*.d tcg/*.o
763
	rm -f qemu-options.h qemu-monitor.h gdbstub-xml.c
764

765
install: all
bellard's avatar
bellard committed
766
ifneq ($(PROGS),)
767
	$(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
bellard's avatar
bellard committed
768
endif
bellard's avatar
bellard committed
769

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