Makefile.target 17.4 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
endif

aurel32's avatar
aurel32 committed
59 60 61 62
ifeq ($(ARCH),hppa)
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

bellard's avatar
bellard committed
63
ifeq ($(ARCH),ia64)
64
CFLAGS+=-mno-sdata
65 66
endif

67 68
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
bellard's avatar
bellard committed
69

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

aliguori's avatar
aliguori committed
85 86 87
kvm.o: CFLAGS+=$(KVM_CFLAGS)
kvm-all.o: CFLAGS+=$(KVM_CFLAGS)

88
all: $(PROGS)
89 90
# Dummy command so that make thinks it has done something
	@true
bellard's avatar
bellard committed
91

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

bellard's avatar
bellard committed
110
ifeq ($(TARGET_BASE_ARCH), arm)
Juan Quintela's avatar
Juan Quintela committed
111
libobj-y += neon_helper.o iwmmxt_helper.o
pbrook's avatar
pbrook committed
112 113
endif

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

118
ifeq ($(TARGET_BASE_ARCH), cris)
Juan Quintela's avatar
Juan Quintela committed
119
libobj-y += cris-dis.o
120 121

ifndef CONFIG_USER_ONLY
Juan Quintela's avatar
Juan Quintela committed
122
libobj-y += mmu.o
123 124 125
endif
endif

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

169 170
# libqemu

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

173
translate.o: translate.c cpu.h
174

175
translate-all.o: translate-all.c cpu.h
176

177
tcg/tcg.o: cpu.h
178 179 180

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

183
cpu-exec.o: CFLAGS += $(HELPER_CFLAGS)
184 185 186 187 188 189 190 191 192

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

ifdef CONFIG_LINUX_USER

ifndef TARGET_ABI_DIR
  TARGET_ABI_DIR=$(TARGET_ARCH)
endif
193
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
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 221 222 223 224
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
225 226 227 228
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

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 270 271 272 273
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
274 275 276 277 278 279
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
CFLAGS+=-p
endif

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

287 288 289
ifdef TARGET_HAS_ELFLOAD32
elfload32.o: elfload.c
endif
290
obj-$(TARGET_HAS_ELFLOAD32) += elfload32.o
291 292

ifeq ($(TARGET_ARCH), i386)
Juan Quintela's avatar
Juan Quintela committed
293
obj-y += vm86.o
294 295
endif
ifeq ($(TARGET_ARCH), arm)
296 297 298 299
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
300 301
endif
ifeq ($(TARGET_ARCH), m68k)
Juan Quintela's avatar
Juan Quintela committed
302
obj-y += m68k-sim.o m68k-semi.o
303 304 305 306
endif

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

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

318 319 320 321 322 323 324 325 326 327 328 329 330 331 332
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
333
obj-y = main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \
334
        gdbstub.o gdbstub-xml.o ioport-user.o
335 336 337

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

Anthony Liguori's avatar
Anthony Liguori committed
340
$(QEMU_PROG): ARLIBS=libqemu.a
Juan Quintela's avatar
Juan Quintela committed
341 342
$(QEMU_PROG): $(obj-y) libqemu.a
	$(call LINK,$(obj-y))
343 344 345

endif #CONFIG_DARWIN_USER

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 428 429 430 431
#########################################################
# 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
432
obj-y = main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
433
        gdbstub.o gdbstub-xml.o ioport-user.o
Juan Quintela's avatar
Juan Quintela committed
434
obj-y += uaccess.o
435 436 437

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

Anthony Liguori's avatar
Anthony Liguori committed
440
$(QEMU_PROG): ARLIBS=libqemu.a ../libqemu_user.a
Juan Quintela's avatar
Juan Quintela committed
441 442
$(QEMU_PROG): $(obj-y) libqemu.a ../libqemu_user.a
	$(call LINK,$(obj-y))
443 444 445

endif #CONFIG_BSD_USER

446 447 448 449
#########################################################
# System emulator target
ifndef CONFIG_USER_ONLY

Juan Quintela's avatar
Juan Quintela committed
450
obj-y = vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o \
451
        gdbstub.o gdbstub-xml.o msix.o ioport.o
452 453
# 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
454 455
obj-y += virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
obj-$(CONFIG_KVM) += kvm.o kvm-all.o
456

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

477 478 479 480 481 482
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
483
sound-obj-$(CONFIG_CS4231A) += cs4231a.o
484

485
ifdef CONFIG_ADLIB
486
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
487
endif
bellard's avatar
bellard committed
488

489 490 491 492 493
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

494 495 496 497 498
ifdef CONFIG_VNC_SASL
CPPFLAGS += $(CONFIG_VNC_SASL_CFLAGS)
LIBS += $(CONFIG_VNC_SASL_LIBS)
endif

499 500 501 502
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

503
# xen backend driver support
504
obj-$(CONFIG_XEN) += xen_machine_pv.o xen_domainbuild.o
Juan Quintela's avatar
Juan Quintela committed
505
ifeq ($(CONFIG_XEN), y)
506 507 508
  LIBS += $(XEN_LIBS)
endif

bellard's avatar
bellard committed
509
# USB layer
Juan Quintela's avatar
Juan Quintela committed
510
obj-y += usb-ohci.o
bellard's avatar
bellard committed
511

512
# PCI network cards
Juan Quintela's avatar
Juan Quintela committed
513 514 515 516 517
obj-y += eepro100.o
obj-y += ne2000.o
obj-y += pcnet.o
obj-y += rtl8139.o
obj-y += e1000.o
518

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

bellard's avatar
bellard committed
522
ifeq ($(TARGET_BASE_ARCH), i386)
523
# Hardware support
524
obj-y += ide.o pckbd.o vga.o $(sound-obj-y) dma.o
Juan Quintela's avatar
Juan Quintela committed
525 526 527 528
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
529
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard's avatar
bellard committed
530
endif
bellard's avatar
bellard committed
531
ifeq ($(TARGET_BASE_ARCH), ppc)
532
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
533
# shared objects
534
obj-y += ppc.o ide.o vga.o $(sound-obj-y) dma.o openpic.o
535
# PREP target
Juan Quintela's avatar
Juan Quintela committed
536 537
obj-y += pckbd.o serial.o i8259.o i8254.o fdc.o mc146818rtc.o
obj-y += prep_pci.o ppc_prep.o
538
# Mac shared devices
Juan Quintela's avatar
Juan Quintela committed
539
obj-y += macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
540
# OldWorld PowerMac
Juan Quintela's avatar
Juan Quintela committed
541
obj-y += heathrow_pic.o grackle_pci.o ppc_oldworld.o
542
# NewWorld PowerMac
Juan Quintela's avatar
Juan Quintela committed
543
obj-y += unin_pci.o ppc_newworld.o
544
# PowerPC 4xx boards
Juan Quintela's avatar
Juan Quintela committed
545 546
obj-y += pflash_cfi02.o ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o
obj-y += ppc440.o ppc440_bamboo.o
547
# PowerPC E500 boards
Juan Quintela's avatar
Juan Quintela committed
548
obj-y += ppce500_pci.o ppce500_mpc8544ds.o
549
ifdef FDT_LIBS
Juan Quintela's avatar
Juan Quintela committed
550
obj-y += device_tree.o
551 552
LIBS+= $(FDT_LIBS)
endif
553
obj-$(CONFIG_KVM) += kvm_ppc.o
554
endif
ths's avatar
ths committed
555
ifeq ($(TARGET_BASE_ARCH), mips)
Juan Quintela's avatar
Juan Quintela committed
556 557 558 559
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
560
obj-y += piix_pci.o parallel.o cirrus_vga.o pcspk.o $(sound-obj-y)
Juan Quintela's avatar
Juan Quintela committed
561 562 563
obj-y += mipsnet.o
obj-y += pflash_cfi01.o
obj-y += vmware_vga.o
aurel32's avatar
aurel32 committed
564
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard's avatar
bellard committed
565
endif
566
ifeq ($(TARGET_BASE_ARCH), microblaze)
Juan Quintela's avatar
Juan Quintela committed
567
obj-y += petalogix_s3adsp1800_mmu.o
568

Juan Quintela's avatar
Juan Quintela committed
569 570 571 572 573
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
574

Juan Quintela's avatar
Juan Quintela committed
575
obj-y += pflash_cfi02.o
576
ifdef FDT_LIBS
Juan Quintela's avatar
Juan Quintela committed
577
obj-y += device_tree.o
578 579 580
LIBS+= $(FDT_LIBS)
endif
endif
581
ifeq ($(TARGET_BASE_ARCH), cris)
582
# Boards
Juan Quintela's avatar
Juan Quintela committed
583
obj-y += cris_pic_cpu.o etraxfs.o axis_dev88.o
584 585

# IO blocks
Juan Quintela's avatar
Juan Quintela committed
586 587 588 589 590
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
591

Juan Quintela's avatar
Juan Quintela committed
592
obj-y += pflash_cfi02.o
593
endif
bellard's avatar
bellard committed
594
ifeq ($(TARGET_BASE_ARCH), sparc)
bellard's avatar
bellard committed
595
ifeq ($(TARGET_ARCH), sparc64)
Juan Quintela's avatar
Juan Quintela committed
596 597 598
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
bellard's avatar
bellard committed
599
else
Juan Quintela's avatar
Juan Quintela committed
600 601 602
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
bellard's avatar
bellard committed
603
endif
604
endif
bellard's avatar
bellard committed
605
ifeq ($(TARGET_BASE_ARCH), arm)
Juan Quintela's avatar
Juan Quintela committed
606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626
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
627
CPPFLAGS += -DHAS_AUDIO
bellard's avatar
bellard committed
628
endif
bellard's avatar
bellard committed
629
ifeq ($(TARGET_BASE_ARCH), sh4)
Juan Quintela's avatar
Juan Quintela committed
630 631 632
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
bellard's avatar
bellard committed
633
endif
pbrook's avatar
pbrook committed
634
ifeq ($(TARGET_BASE_ARCH), m68k)
Juan Quintela's avatar
Juan Quintela committed
635 636
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
pbrook's avatar
pbrook committed
637
endif
638
ifdef CONFIG_COCOA
639 640 641 642
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
643
endif
bellard's avatar
bellard committed
644
ifdef CONFIG_SLIRP
645
CPPFLAGS+=-I$(SRC_PATH)/slirp
bellard's avatar
bellard committed
646 647
endif

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

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

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

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

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

682 683
vl.o: qemu-options.h

684 685
monitor.o: qemu-monitor.h

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

691
endif # !CONFIG_USER_ONLY
692

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

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

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

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

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

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