Makefile.target 18.2 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)
Juan Quintela's avatar
Juan Quintela committed
92
  ifneq ($(CONFIG_SOLARIS),y)
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
Juan Quintela's avatar
Juan Quintela committed
137
libobj-y = exec.o translate-all.o cpu-exec.o translate.o host-utils.o
138
libobj-$(CONFIG_KQEMU) += kqemu.o
bellard's avatar
bellard committed
139
# TCG code generator
Juan Quintela's avatar
Juan Quintela committed
140
libobj-y += tcg/tcg.o tcg/tcg-runtime.o
bellard's avatar
bellard committed
141
CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
blueswir1's avatar
blueswir1 committed
142 143 144
ifeq ($(ARCH),sparc64)
CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
endif
bellard's avatar
bellard committed
145
ifdef CONFIG_SOFTFLOAT
Juan Quintela's avatar
Juan Quintela committed
146
libobj-y += fpu/softfloat.o
bellard's avatar
bellard committed
147
else
Juan Quintela's avatar
Juan Quintela committed
148
libobj-y += fpu/softfloat-native.o
bellard's avatar
bellard committed
149
endif
150
CPPFLAGS+=-I$(SRC_PATH)/fpu
Juan Quintela's avatar
Juan Quintela committed
151
libobj-y += op_helper.o helper.o
152

bellard's avatar
bellard committed
153
ifeq ($(TARGET_BASE_ARCH), arm)
Juan Quintela's avatar
Juan Quintela committed
154
libobj-y += neon_helper.o iwmmxt_helper.o
pbrook's avatar
pbrook committed
155 156
endif

157
ifeq ($(TARGET_BASE_ARCH), alpha)
Juan Quintela's avatar
Juan Quintela committed
158
libobj-y += alpha_palcode.o
159 160
endif

161
ifeq ($(TARGET_BASE_ARCH), cris)
Juan Quintela's avatar
Juan Quintela committed
162
libobj-y += cris-dis.o
163 164

ifndef CONFIG_USER_ONLY
Juan Quintela's avatar
Juan Quintela committed
165
libobj-y += mmu.o
166 167 168
endif
endif

bellard's avatar
bellard committed
169
# NOTE: the disassembler code is only needed for debugging
Juan Quintela's avatar
Juan Quintela committed
170
libobj-y += disas.o
bellard's avatar
bellard committed
171
ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
172 173
USE_I386_DIS=y
endif
bellard's avatar
bellard committed
174
ifeq ($(findstring x86_64, $(TARGET_ARCH) $(ARCH)),x86_64)
175 176
USE_I386_DIS=y
endif
177
libobj-$(USE_I386_DIS) += i386-dis.o
bellard's avatar
bellard committed
178
ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
Juan Quintela's avatar
Juan Quintela committed
179
libobj-y += alpha-dis.o
bellard's avatar
bellard committed
180
endif
bellard's avatar
bellard committed
181
ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
Juan Quintela's avatar
Juan Quintela committed
182
libobj-y += ppc-dis.o
bellard's avatar
bellard committed
183
endif
184
ifeq ($(findstring microblaze, $(TARGET_BASE_ARCH) $(ARCH)),microblaze)
Juan Quintela's avatar
Juan Quintela committed
185
libobj-y += microblaze-dis.o
186
ifndef CONFIG_USER_ONLY
Juan Quintela's avatar
Juan Quintela committed
187
libobj-y += mmu.o
188 189
endif
endif
ths's avatar
ths committed
190
ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
Juan Quintela's avatar
Juan Quintela committed
191
libobj-y += mips-dis.o
bellard's avatar
bellard committed
192
endif
bellard's avatar
bellard committed
193
ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
Juan Quintela's avatar
Juan Quintela committed
194
libobj-y += sparc-dis.o
bellard's avatar
bellard committed
195 196
endif
ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
Juan Quintela's avatar
Juan Quintela committed
197
libobj-y += arm-dis.o
bellard's avatar
bellard committed
198
endif
bellard's avatar
bellard committed
199
ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
Juan Quintela's avatar
Juan Quintela committed
200
libobj-y += m68k-dis.o
bellard's avatar
bellard committed
201
endif
bellard's avatar
bellard committed
202
ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
Juan Quintela's avatar
Juan Quintela committed
203
libobj-y += sh4-dis.o
bellard's avatar
bellard committed
204
endif
aurel32's avatar
aurel32 committed
205
ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
Juan Quintela's avatar
Juan Quintela committed
206
libobj-y += hppa-dis.o
aurel32's avatar
aurel32 committed
207
endif
208
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
Juan Quintela's avatar
Juan Quintela committed
209
libobj-y += s390-dis.o
210
endif
bellard's avatar
bellard committed
211

212 213
# libqemu

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

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

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

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

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

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

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

ifdef CONFIG_LINUX_USER

ifndef TARGET_ABI_DIR
  TARGET_ABI_DIR=$(TARGET_ARCH)
endif
236
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267
CPPFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)

ifdef CONFIG_STATIC
LDFLAGS+=-static
endif

ifeq ($(ARCH),i386)
ifdef TARGET_GPROF
USE_I386_LD=y
endif
ifdef CONFIG_STATIC
USE_I386_LD=y
endif
ifdef USE_I386_LD
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
else
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
# that the kernel ELF loader considers as an executable. I think this
# is the simplest way to make it self virtualizable!
LDFLAGS+=-Wl,-shared
endif
endif

ifeq ($(ARCH),x86_64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),ppc)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

malc's avatar
malc committed
268 269 270 271
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316
ifeq ($(ARCH),s390)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),sparc)
# -static is used to avoid g1/g3 usage by the dynamic linker	
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
endif

ifeq ($(ARCH),sparc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),alpha)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),ia64)
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),arm)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),m68k)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),mips)
ifeq ($(WORDS_BIGENDIAN),yes)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
else
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
endif
endif

ifeq ($(ARCH),mips64)
ifeq ($(WORDS_BIGENDIAN),yes)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
else
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
endif
endif

aurel32's avatar
aurel32 committed
317 318 319 320 321 322
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
CFLAGS+=-p
endif

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

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

ifeq ($(TARGET_ARCH), i386)
Juan Quintela's avatar
Juan Quintela committed
336
obj-y += vm86.o
337 338
endif
ifeq ($(TARGET_ARCH), arm)
Juan Quintela's avatar
Juan Quintela committed
339
obj-y += nwfpe/fpa11.o nwfpe/fpa11_cpdo.o \
340 341 342 343
nwfpe/fpa11_cpdt.o nwfpe/fpa11_cprt.o nwfpe/fpopcode.o nwfpe/single_cpdo.o \
 nwfpe/double_cpdo.o nwfpe/extended_cpdo.o arm-semi.o
endif
ifeq ($(TARGET_ARCH), m68k)
Juan Quintela's avatar
Juan Quintela committed
344
obj-y += m68k-sim.o m68k-semi.o
345 346 347 348
endif

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

Anthony Liguori's avatar
Anthony Liguori committed
351
$(QEMU_PROG): ARLIBS=../libqemu_user.a libqemu.a
Juan Quintela's avatar
Juan Quintela committed
352 353
$(QEMU_PROG): $(obj-y) ../libqemu_user.a libqemu.a
	$(call LINK,$(obj-y))
bellard's avatar
bellard committed
354 355 356 357 358 359
ifeq ($(ARCH),alpha)
# Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of
# the address space (31 bit so sign extending doesn't matter)
	echo -ne '\001\000\000\000' | dd of=qemu bs=1 seek=48 count=4 conv=notrunc
endif

360 361 362 363 364 365 366 367 368 369 370 371 372 373 374
endif #CONFIG_LINUX_USER

#########################################################
# Darwin user emulator target

ifdef CONFIG_DARWIN_USER

VPATH+=:$(SRC_PATH)/darwin-user
CPPFLAGS+=-I$(SRC_PATH)/darwin-user -I$(SRC_PATH)/darwin-user/$(TARGET_ARCH)

# Leave some space for the regular program loading zone
LDFLAGS+=-Wl,-segaddr,__STD_PROG_ZONE,0x1000 -image_base 0x0e000000

LIBS+=-lmx

Juan Quintela's avatar
Juan Quintela committed
375
obj-y = main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \
376
        gdbstub.o gdbstub-xml.o ioport-user.o
377 378 379

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

Anthony Liguori's avatar
Anthony Liguori committed
382
$(QEMU_PROG): ARLIBS=libqemu.a
Juan Quintela's avatar
Juan Quintela committed
383 384
$(QEMU_PROG): $(obj-y) libqemu.a
	$(call LINK,$(obj-y))
385 386 387

endif #CONFIG_DARWIN_USER

388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473
#########################################################
# BSD user emulator target

ifdef CONFIG_BSD_USER

VPATH+=:$(SRC_PATH)/bsd-user
CPPFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH)

ifdef CONFIG_STATIC
LDFLAGS+=-static
endif

ifeq ($(ARCH),i386)
ifdef TARGET_GPROF
USE_I386_LD=y
endif
ifdef CONFIG_STATIC
USE_I386_LD=y
endif
ifdef USE_I386_LD
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
else
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
# that the kernel ELF loader considers as an executable. I think this
# is the simplest way to make it self virtualizable!
LDFLAGS+=-Wl,-shared
endif
endif

ifeq ($(ARCH),x86_64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),ppc)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),s390)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),sparc)
# -static is used to avoid g1/g3 usage by the dynamic linker
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
endif

ifeq ($(ARCH),sparc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),alpha)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),ia64)
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),arm)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),m68k)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

ifeq ($(ARCH),mips)
ifeq ($(WORDS_BIGENDIAN),yes)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
else
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
endif
endif

ifeq ($(ARCH),mips64)
ifeq ($(WORDS_BIGENDIAN),yes)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
else
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
endif
endif

Juan Quintela's avatar
Juan Quintela committed
474
obj-y = main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
475
        gdbstub.o gdbstub-xml.o ioport-user.o
Juan Quintela's avatar
Juan Quintela committed
476
obj-y += uaccess.o
477 478 479

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

Anthony Liguori's avatar
Anthony Liguori committed
482
$(QEMU_PROG): ARLIBS=libqemu.a ../libqemu_user.a
Juan Quintela's avatar
Juan Quintela committed
483 484
$(QEMU_PROG): $(obj-y) libqemu.a ../libqemu_user.a
	$(call LINK,$(obj-y))
485 486 487

endif #CONFIG_BSD_USER

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

Juan Quintela's avatar
Juan Quintela committed
492
obj-y = vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o \
493
        gdbstub.o gdbstub-xml.o msix.o ioport.o
494 495
# 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
496 497
obj-y += virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
obj-$(CONFIG_KVM) += kvm.o kvm-all.o
498

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

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

527
ifdef CONFIG_ADLIB
528
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
529
endif
bellard's avatar
bellard committed
530

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

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

541 542 543 544
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

545
# xen backend driver support
546
obj-$(CONFIG_XEN) += xen_machine_pv.o xen_domainbuild.o
Juan Quintela's avatar
Juan Quintela committed
547
ifeq ($(CONFIG_XEN), y)
548 549 550
  LIBS += $(XEN_LIBS)
endif

bellard's avatar
bellard committed
551
# USB layer
Juan Quintela's avatar
Juan Quintela committed
552
obj-y += usb-ohci.o
bellard's avatar
bellard committed
553

554
# PCI network cards
Juan Quintela's avatar
Juan Quintela committed
555 556 557 558 559
obj-y += eepro100.o
obj-y += ne2000.o
obj-y += pcnet.o
obj-y += rtl8139.o
obj-y += e1000.o
560

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

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

Juan Quintela's avatar
Juan Quintela committed
611 612 613 614 615
obj-y += microblaze_pic_cpu.o
obj-y += xilinx_intc.o
obj-y += xilinx_timer.o
obj-y += xilinx_uartlite.o
obj-y += xilinx_ethlite.o
616

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

# IO blocks
Juan Quintela's avatar
Juan Quintela committed
628 629 630 631 632
obj-y += etraxfs_dma.o
obj-y += etraxfs_pic.o
obj-y += etraxfs_eth.o
obj-y += etraxfs_timer.o
obj-y += etraxfs_ser.o
633

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

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

708
ifeq ($(ARCH),ia64)
709
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
bellard's avatar
bellard committed
710 711
endif

712 713 714 715
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

716 717 718 719
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
bellard's avatar
bellard committed
720 721
endif

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

724 725
vl.o: qemu-options.h

726 727
monitor.o: qemu-monitor.h

728
$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) $(CURL_LIBS)
729
$(QEMU_PROG): ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
Juan Quintela's avatar
Juan Quintela committed
730 731
$(QEMU_PROG): $(obj-y) ../libqemu_common.a libqemu.a $(HWLIB)
	$(call LINK,$(obj-y))
bellard's avatar
bellard committed
732

733
endif # !CONFIG_USER_ONLY
734

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

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

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

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

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

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