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

4
ifndef TARGET_BASE_ARCH
bellard's avatar
bellard committed
5
TARGET_BASE_ARCH:=$(TARGET_ARCH)
bellard's avatar
bellard committed
6
endif
7

bellard's avatar
bellard committed
8
TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
bellard's avatar
bellard committed
9
VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw
10
CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MT $@ -MP -DNEED_CPU_H
bellard's avatar
bellard committed
11
#CFLAGS+=-Werror
bellard's avatar
bellard committed
12
LIBS=
13
# user emulator name
bellard's avatar
bellard committed
14
ifndef TARGET_ARCH2
bellard's avatar
bellard committed
15
TARGET_ARCH2=$(TARGET_ARCH)
bellard's avatar
bellard committed
16
endif
17 18 19 20 21

ifdef CONFIG_USER_ONLY
# user emulator name
QEMU_PROG=qemu-$(TARGET_ARCH2)
else
22
# system emulator name
23
ifeq ($(TARGET_ARCH), i386)
24
QEMU_PROG=qemu$(EXESUF)
25
else
26
QEMU_PROG=qemu-system-$(TARGET_ARCH2)$(EXESUF)
27
endif
bellard's avatar
bellard committed
28
endif
bellard's avatar
bellard committed
29

30
PROGS=$(QEMU_PROG)
bellard's avatar
bellard committed
31

32
# cc-option
aliguori's avatar
aliguori committed
33
# Usage: CFLAGS+=$(call cc-option, $(CFLAGS), -falign-functions=0, -malign-functions=0)
34

aliguori's avatar
aliguori committed
35 36
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 ;)
37

38 39
HELPER_CFLAGS=

bellard's avatar
bellard committed
40
ifeq ($(ARCH),i386)
41
HELPER_CFLAGS+=-fomit-frame-pointer
42 43
endif

malc's avatar
malc committed
44 45 46 47
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
48
ifeq ($(ARCH),sparc)
Juan Quintela's avatar
Juan Quintela committed
49
  ifneq ($(CONFIG_SOLARIS),y)
50
    HELPER_CFLAGS+=-ffixed-i0
51
  endif
52
endif
bellard's avatar
bellard committed
53 54 55

ifeq ($(ARCH),alpha)
# Ensure there's only a single GP
56
CFLAGS+=-msmall-data
bellard's avatar
bellard committed
57 58 59
endif

ifeq ($(ARCH),ia64)
60
CFLAGS+=-mno-sdata
61 62
endif

63 64
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
bellard's avatar
bellard committed
65

66
CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
67
CPPFLAGS+=-U_FORTIFY_SOURCE
bellard's avatar
bellard committed
68
LIBS+=-lm
bellard's avatar
bellard committed
69
ifdef CONFIG_WIN32
70
LIBS+=-lwinmm -lws2_32 -liphlpapi
bellard's avatar
bellard committed
71
endif
bellard's avatar
bellard committed
72 73
ifdef CONFIG_SOLARIS
LIBS+=-lsocket -lnsl -lresolv
ths's avatar
ths committed
74 75 76
ifdef NEEDS_LIBSUNMATH
LIBS+=-lsunmath
LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
77
CFLAGS+=-I/opt/SUNWspro/prod/include/cc
bellard's avatar
bellard committed
78
endif
79 80
endif

aliguori's avatar
aliguori committed
81 82 83
kvm.o: CFLAGS+=$(KVM_CFLAGS)
kvm-all.o: CFLAGS+=$(KVM_CFLAGS)

84
all: $(PROGS)
85 86
# Dummy command so that make thinks it has done something
	@true
bellard's avatar
bellard committed
87

88
#########################################################
bellard's avatar
bellard committed
89
# cpu emulator library
Juan Quintela's avatar
Juan Quintela committed
90
libobj-y = exec.o translate-all.o cpu-exec.o translate.o host-utils.o
91
libobj-$(CONFIG_KQEMU) += kqemu.o
bellard's avatar
bellard committed
92
# TCG code generator
Juan Quintela's avatar
Juan Quintela committed
93
libobj-y += tcg/tcg.o tcg/tcg-runtime.o
bellard's avatar
bellard committed
94
CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
blueswir1's avatar
blueswir1 committed
95 96 97
ifeq ($(ARCH),sparc64)
CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
endif
bellard's avatar
bellard committed
98
ifdef CONFIG_SOFTFLOAT
Juan Quintela's avatar
Juan Quintela committed
99
libobj-y += fpu/softfloat.o
bellard's avatar
bellard committed
100
else
Juan Quintela's avatar
Juan Quintela committed
101
libobj-y += fpu/softfloat-native.o
bellard's avatar
bellard committed
102
endif
103
CPPFLAGS+=-I$(SRC_PATH)/fpu
Juan Quintela's avatar
Juan Quintela committed
104
libobj-y += op_helper.o helper.o
105

bellard's avatar
bellard committed
106
ifeq ($(TARGET_BASE_ARCH), arm)
Juan Quintela's avatar
Juan Quintela committed
107
libobj-y += neon_helper.o iwmmxt_helper.o
pbrook's avatar
pbrook committed
108 109
endif

110
ifeq ($(TARGET_BASE_ARCH), alpha)
Juan Quintela's avatar
Juan Quintela committed
111
libobj-y += alpha_palcode.o
112 113
endif

114
ifeq ($(TARGET_BASE_ARCH), cris)
Juan Quintela's avatar
Juan Quintela committed
115
libobj-y += cris-dis.o
116 117

ifndef CONFIG_USER_ONLY
Juan Quintela's avatar
Juan Quintela committed
118
libobj-y += mmu.o
119 120 121
endif
endif

bellard's avatar
bellard committed
122
# NOTE: the disassembler code is only needed for debugging
Juan Quintela's avatar
Juan Quintela committed
123
libobj-y += disas.o
bellard's avatar
bellard committed
124
ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
125 126
USE_I386_DIS=y
endif
bellard's avatar
bellard committed
127
ifeq ($(findstring x86_64, $(TARGET_ARCH) $(ARCH)),x86_64)
128 129
USE_I386_DIS=y
endif
130
libobj-$(USE_I386_DIS) += i386-dis.o
bellard's avatar
bellard committed
131
ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
Juan Quintela's avatar
Juan Quintela committed
132
libobj-y += alpha-dis.o
bellard's avatar
bellard committed
133
endif
bellard's avatar
bellard committed
134
ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
Juan Quintela's avatar
Juan Quintela committed
135
libobj-y += ppc-dis.o
bellard's avatar
bellard committed
136
endif
137
ifeq ($(findstring microblaze, $(TARGET_BASE_ARCH) $(ARCH)),microblaze)
Juan Quintela's avatar
Juan Quintela committed
138
libobj-y += microblaze-dis.o
139
ifndef CONFIG_USER_ONLY
Juan Quintela's avatar
Juan Quintela committed
140
libobj-y += mmu.o
141 142
endif
endif
ths's avatar
ths committed
143
ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
Juan Quintela's avatar
Juan Quintela committed
144
libobj-y += mips-dis.o
bellard's avatar
bellard committed
145
endif
bellard's avatar
bellard committed
146
ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
Juan Quintela's avatar
Juan Quintela committed
147
libobj-y += sparc-dis.o
bellard's avatar
bellard committed
148 149
endif
ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
Juan Quintela's avatar
Juan Quintela committed
150
libobj-y += arm-dis.o
bellard's avatar
bellard committed
151
endif
bellard's avatar
bellard committed
152
ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
Juan Quintela's avatar
Juan Quintela committed
153
libobj-y += m68k-dis.o
bellard's avatar
bellard committed
154
endif
bellard's avatar
bellard committed
155
ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
Juan Quintela's avatar
Juan Quintela committed
156
libobj-y += sh4-dis.o
bellard's avatar
bellard committed
157
endif
aurel32's avatar
aurel32 committed
158
ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
Juan Quintela's avatar
Juan Quintela committed
159
libobj-y += hppa-dis.o
aurel32's avatar
aurel32 committed
160
endif
161
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
Juan Quintela's avatar
Juan Quintela committed
162
libobj-y += s390-dis.o
163
endif
bellard's avatar
bellard committed
164

165 166
# libqemu

Juan Quintela's avatar
Juan Quintela committed
167
libqemu.a: $(libobj-y)
168

169
translate.o: translate.c cpu.h
170

171
translate-all.o: translate-all.c cpu.h
172

173
tcg/tcg.o: cpu.h
174 175 176

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

179
cpu-exec.o: CFLAGS += $(HELPER_CFLAGS)
180 181 182 183 184 185 186 187 188

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

ifdef CONFIG_LINUX_USER

ifndef TARGET_ABI_DIR
  TARGET_ABI_DIR=$(TARGET_ARCH)
endif
189
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
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
221 222 223 224
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

225 226 227 228 229 230 231 232 233 234 235 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 267 268 269
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
270 271 272 273 274 275
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
CFLAGS+=-p
endif

Juan Quintela's avatar
Juan Quintela committed
276
obj-y = main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
277 278
      elfload.o linuxload.o uaccess.o envlist.o gdbstub.o gdbstub-xml.o \
      ioport-user.o
279 280
LIBS+= $(PTHREADLIBS)
LIBS+= $(CLOCKLIBS)
281 282
obj-$(TARGET_HAS_BFLT) += flatload.o

283 284 285
ifdef TARGET_HAS_ELFLOAD32
elfload32.o: elfload.c
endif
286
obj-$(TARGET_HAS_ELFLOAD32) += elfload32.o
287 288

ifeq ($(TARGET_ARCH), i386)
Juan Quintela's avatar
Juan Quintela committed
289
obj-y += vm86.o
290 291
endif
ifeq ($(TARGET_ARCH), arm)
292 293 294 295
nwfpe-obj-y := fpa11.o fpa11_cpdo.o fpa11_cpdt.o fpa11_cprt.o fpopcode.o
nwfpe-obj-y += single_cpdo.o double_cpdo.o extended_cpdo.o
obj-y +=  $(addprefix nwfpe/, $(nwfpe-obj-y))
obj-y += arm-semi.o
296 297
endif
ifeq ($(TARGET_ARCH), m68k)
Juan Quintela's avatar
Juan Quintela committed
298
obj-y += m68k-sim.o m68k-semi.o
299 300 301 302
endif

# Note: this is a workaround. The real fix is to avoid compiling
# cpu_signal_handler() in cpu-exec.c.
303
signal.o: CFLAGS += $(HELPER_CFLAGS)
bellard's avatar
bellard committed
304

Anthony Liguori's avatar
Anthony Liguori committed
305
$(QEMU_PROG): ARLIBS=../libqemu_user.a libqemu.a
Juan Quintela's avatar
Juan Quintela committed
306 307
$(QEMU_PROG): $(obj-y) ../libqemu_user.a libqemu.a
	$(call LINK,$(obj-y))
bellard's avatar
bellard committed
308 309 310 311 312 313
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

314 315 316 317 318 319 320 321 322 323 324 325 326 327 328
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

Juan Quintela's avatar
Juan Quintela committed
329
obj-y = main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \
330
        gdbstub.o gdbstub-xml.o ioport-user.o
331 332 333

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

Anthony Liguori's avatar
Anthony Liguori committed
336
$(QEMU_PROG): ARLIBS=libqemu.a
Juan Quintela's avatar
Juan Quintela committed
337 338
$(QEMU_PROG): $(obj-y) libqemu.a
	$(call LINK,$(obj-y))
339 340 341

endif #CONFIG_DARWIN_USER

342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 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
#########################################################
# 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

Juan Quintela's avatar
Juan Quintela committed
428
obj-y = main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
429
        gdbstub.o gdbstub-xml.o ioport-user.o
Juan Quintela's avatar
Juan Quintela committed
430
obj-y += uaccess.o
431 432 433

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

Anthony Liguori's avatar
Anthony Liguori committed
436
$(QEMU_PROG): ARLIBS=libqemu.a ../libqemu_user.a
Juan Quintela's avatar
Juan Quintela committed
437 438
$(QEMU_PROG): $(obj-y) libqemu.a ../libqemu_user.a
	$(call LINK,$(obj-y))
439 440 441

endif #CONFIG_BSD_USER

442 443 444 445
#########################################################
# System emulator target
ifndef CONFIG_USER_ONLY

Juan Quintela's avatar
Juan Quintela committed
446
obj-y = vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o \
447
        gdbstub.o gdbstub-xml.o msix.o ioport.o
448 449
# virtio has to be here due to weird dependency between PCI and virtio-net.
# need to fix this properly
Juan Quintela's avatar
Juan Quintela committed
450 451
obj-y += virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
obj-$(CONFIG_KVM) += kvm.o kvm-all.o
452

453
LIBS+=-lz
454 455 456
ifdef CONFIG_ALSA
LIBS += -lasound
endif
457 458 459
ifdef CONFIG_ESD
LIBS += -lesd
endif
malc's avatar
malc committed
460 461 462
ifdef CONFIG_PA
LIBS += -lpulse-simple
endif
463 464
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
bellard's avatar
bellard committed
465
endif
bellard's avatar
bellard committed
466 467
ifdef CONFIG_FMOD
LIBS += $(CONFIG_FMOD_LIB)
bellard's avatar
bellard committed
468
endif
blueswir1's avatar
blueswir1 committed
469 470 471
ifdef CONFIG_OSS
LIBS += $(CONFIG_OSS_LIB)
endif
bellard's avatar
bellard committed
472

473 474 475 476 477 478
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
malc's avatar
malc committed
479
sound-obj-$(CONFIG_CS4231A) += cs4231a.o
480

481
ifdef CONFIG_ADLIB
482
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
483
endif
bellard's avatar
bellard committed
484

485 486 487 488 489
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

490 491 492 493 494
ifdef CONFIG_VNC_SASL
CPPFLAGS += $(CONFIG_VNC_SASL_CFLAGS)
LIBS += $(CONFIG_VNC_SASL_LIBS)
endif

495 496 497 498
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

499
# xen backend driver support
500
obj-$(CONFIG_XEN) += xen_machine_pv.o xen_domainbuild.o
Juan Quintela's avatar
Juan Quintela committed
501
ifeq ($(CONFIG_XEN), y)
502 503 504
  LIBS += $(XEN_LIBS)
endif

bellard's avatar
bellard committed
505
# USB layer
Juan Quintela's avatar
Juan Quintela committed
506
obj-y += usb-ohci.o
bellard's avatar
bellard committed
507

508
# PCI network cards
Juan Quintela's avatar
Juan Quintela committed
509 510 511 512 513
obj-y += eepro100.o
obj-y += ne2000.o
obj-y += pcnet.o
obj-y += rtl8139.o
obj-y += e1000.o
514

Richard W.M. Jones's avatar
Richard W.M. Jones committed
515
# Generic watchdog support and some watchdog devices
Juan Quintela's avatar
Juan Quintela committed
516
obj-y += wdt_ib700.o wdt_i6300esb.o
Richard W.M. Jones's avatar
Richard W.M. Jones committed
517

518
# Hardware support
519 520 521 522 523 524 525
obj-i386-y = ide.o pckbd.o vga.o $(sound-obj-y) dma.o
obj-i386-y += fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
obj-i386-y += cirrus_vga.o apic.o ioapic.o parallel.o acpi.o piix_pci.o
obj-i386-y += usb-uhci.o vmmouse.o vmport.o vmware_vga.o hpet.o
obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o

ifeq ($(TARGET_BASE_ARCH), i386)
526
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard's avatar
bellard committed
527
endif
528

529
# shared objects
530
obj-ppc-y = ppc.o ide.o vga.o $(sound-obj-y) dma.o openpic.o
531
# PREP target
532 533
obj-ppc-y += pckbd.o serial.o i8259.o i8254.o fdc.o mc146818rtc.o
obj-ppc-y += prep_pci.o ppc_prep.o
534
# Mac shared devices
535
obj-ppc-y += macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
536
# OldWorld PowerMac
537
obj-ppc-y += heathrow_pic.o grackle_pci.o ppc_oldworld.o
538
# NewWorld PowerMac
539
obj-ppc-y += unin_pci.o ppc_newworld.o
540
# PowerPC 4xx boards
541 542
obj-ppc-y += pflash_cfi02.o ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o
obj-ppc-y += ppc440.o ppc440_bamboo.o
543
# PowerPC E500 boards
544 545 546 547 548 549 550
obj-ppc-y += ppce500_pci.o ppce500_mpc8544ds.o
obj-ppc-$(CONFIG_KVM) += kvm_ppc.o

ifeq ($(TARGET_BASE_ARCH), ppc)
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
endif

551
ifdef FDT_LIBS
552
obj-ppc-y += device_tree.o
553 554
LIBS+= $(FDT_LIBS)
endif
555 556 557 558 559 560 561 562 563 564

obj-mips-y = mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
obj-mips-y += mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o rc4030.o
obj-mips-y += g364fb.o jazz_led.o dp8393x.o
obj-mips-y += ide.o gt64xxx.o pckbd.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
obj-mips-y += piix_pci.o parallel.o cirrus_vga.o pcspk.o $(sound-obj-y)
obj-mips-y += mipsnet.o
obj-mips-y += pflash_cfi01.o
obj-mips-y += vmware_vga.o

ths's avatar
ths committed
565
ifeq ($(TARGET_BASE_ARCH), mips)
aurel32's avatar
aurel32 committed
566
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard's avatar
bellard committed
567
endif
568

569 570 571 572 573 574 575 576 577
obj-microblaze-y = petalogix_s3adsp1800_mmu.o

obj-microblaze-y += microblaze_pic_cpu.o
obj-microblaze-y += xilinx_intc.o
obj-microblaze-y += xilinx_timer.o
obj-microblaze-y += xilinx_uartlite.o
obj-microblaze-y += xilinx_ethlite.o

obj-microblaze-y += pflash_cfi02.o
578 579

ifdef FDT_LIBS
580
obj-microblaze-y += device_tree.o
581 582
LIBS+= $(FDT_LIBS)
endif
583

584
# Boards
585
obj-cris-y = cris_pic_cpu.o etraxfs.o axis_dev88.o
586 587

# IO blocks
588 589 590 591 592 593 594
obj-cris-y += etraxfs_dma.o
obj-cris-y += etraxfs_pic.o
obj-cris-y += etraxfs_eth.o
obj-cris-y += etraxfs_timer.o
obj-cris-y += etraxfs_ser.o

obj-cris-y += pflash_cfi02.o
595

bellard's avatar
bellard committed
596
ifeq ($(TARGET_ARCH), sparc64)
597 598 599
obj-sparc-y = sun4u.o ide.o pckbd.o vga.o apb_pci.o
obj-sparc-y += fdc.o mc146818rtc.o serial.o
obj-sparc-y += cirrus_vga.o parallel.o
bellard's avatar
bellard committed
600
else
601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627
obj-sparc-y = sun4m.o tcx.o iommu.o slavio_intctl.o
obj-sparc-y += slavio_timer.o slavio_misc.o fdc.o sparc32_dma.o
obj-sparc-y += cs4231.o eccmemctl.o sbi.o sun4c_intctl.o
endif

obj-arm-y = integratorcp.o versatilepb.o smc91c111.o arm_pic.o arm_timer.o
obj-arm-y += arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
obj-arm-y += versatile_pci.o
obj-arm-y += realview_gic.o realview.o arm_sysctl.o mpcore.o
obj-arm-y += armv7m.o armv7m_nvic.o stellaris.o pl022.o stellaris_enet.o
obj-arm-y += pl061.o
obj-arm-y += arm-semi.o
obj-arm-y += pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o
obj-arm-y += pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o pxa2xx_keypad.o
obj-arm-y += pflash_cfi01.o gumstix.o
obj-arm-y += zaurus.o ide.o serial.o spitz.o tosa.o tc6393xb.o
obj-arm-y += omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
obj-arm-y += omap2.o omap_dss.o soc_dma.o
obj-arm-y += omap_sx1.o palm.o tsc210x.o
obj-arm-y += nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
obj-arm-y += mst_fpga.o mainstone.o
obj-arm-y += musicpal.o pflash_cfi02.o
obj-arm-y += framebuffer.o
obj-arm-y += syborg.o syborg_fb.o syborg_interrupt.o syborg_keyboard.o
obj-arm-y += syborg_serial.o syborg_timer.o syborg_pointer.o syborg_rtc.o
obj-arm-y += syborg_virtio.o

bellard's avatar
bellard committed
628
ifeq ($(TARGET_BASE_ARCH), arm)
629
CPPFLAGS += -DHAS_AUDIO
bellard's avatar
bellard committed
630
endif
631 632 633 634 635 636 637 638

obj-sh4-y = shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
obj-sh4-y += sh_timer.o sh_serial.o sh_intc.o sh_pci.o sm501.o serial.o
obj-sh4-y += ide.o

obj-m68k-y = an5206.o mcf5206.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
obj-m68k-y += m68k-semi.o dummy_m68k.o

639
ifdef CONFIG_COCOA
640 641 642 643
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
644
endif
bellard's avatar
bellard committed
645
ifdef CONFIG_SLIRP
646
CPPFLAGS+=-I$(SRC_PATH)/slirp
bellard's avatar
bellard committed
647 648
endif

649 650
# specific flags are needed for non soft mmu emulator
ifdef CONFIG_STATIC
651
LDFLAGS+=-static
bellard's avatar
bellard committed
652
endif
653
ifndef CONFIG_DARWIN
bellard's avatar
bellard committed
654
ifndef CONFIG_WIN32
bellard's avatar
bellard committed
655
ifndef CONFIG_SOLARIS
malc's avatar
malc committed
656
ifndef CONFIG_AIX
657
LIBS+=-lutil
bellard's avatar
bellard committed
658
endif
malc's avatar
malc committed
659
endif
660
endif
bellard's avatar
bellard committed
661
endif
bellard's avatar
bellard committed
662
ifdef TARGET_GPROF
663 664
vl.o: CFLAGS+=-p
LDFLAGS+=-p
bellard's avatar
bellard committed
665
endif
666

667
ifeq ($(ARCH),ia64)
668
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
bellard's avatar
bellard committed
669 670
endif

671 672 673 674
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

675 676 677 678
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
bellard's avatar
bellard committed
679 680
endif

681 682
vl.o: CFLAGS+=$(SDL_CFLAGS)

683 684
vl.o: qemu-options.h

685 686
monitor.o: qemu-monitor.h

687
$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) $(CURL_LIBS)
688
$(QEMU_PROG): ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
689 690
$(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y) ../libqemu_common.a libqemu.a $(HWLIB)
	$(call LINK,$(obj-y) $(obj-$(TARGET_BASE_ARCH)-y))
bellard's avatar
bellard committed
691

692
endif # !CONFIG_USER_ONLY
693

694 695
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
ifeq ($(TARGET_XML_FILES),)
696
	$(call quiet-command,rm -f $@ && echo > $@,"  GEN   $(TARGET_DIR)$@")
697
else
698
	$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES),"  GEN   $(TARGET_DIR)$@")
699 700
endif

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

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

bellard's avatar
bellard committed
707
clean:
708
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
bellard's avatar
bellard committed
709
	rm -f *.d */*.d tcg/*.o
710
	rm -f qemu-options.h qemu-monitor.h gdbstub-xml.c
711

712
install: all
bellard's avatar
bellard committed
713
ifneq ($(PROGS),)
714
	$(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
bellard's avatar
bellard committed
715
endif
bellard's avatar
bellard committed
716

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