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

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

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

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

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

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

216 217
# libqemu

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

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

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

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

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

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

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

ifdef CONFIG_LINUX_USER

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

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

Juan Quintela's avatar
Juan Quintela committed
327
obj-y = main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
Jan Kiszka's avatar
Jan Kiszka committed
328
      elfload.o linuxload.o uaccess.o envlist.o gdbstub.o gdbstub-xml.o
329 330
LIBS+= $(PTHREADLIBS)
LIBS+= $(CLOCKLIBS)
331
ifdef TARGET_HAS_BFLT
Juan Quintela's avatar
Juan Quintela committed
332
obj-y += flatload.o
333 334
endif
ifdef TARGET_HAS_ELFLOAD32
Juan Quintela's avatar
Juan Quintela committed
335
obj-y += elfload32.o
336 337 338 339
elfload32.o: elfload.c
endif

ifeq ($(TARGET_ARCH), i386)
Juan Quintela's avatar
Juan Quintela committed
340
obj-y += vm86.o
341 342
endif
ifeq ($(TARGET_ARCH), arm)
Juan Quintela's avatar
Juan Quintela committed
343
obj-y += nwfpe/fpa11.o nwfpe/fpa11_cpdo.o \
344 345 346 347
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
348
obj-y += m68k-sim.o m68k-semi.o
349 350 351 352
endif

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

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

364 365 366 367 368 369 370 371 372 373 374 375 376 377 378
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
379 380
obj-y = main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \
        gdbstub.o gdbstub-xml.o
381 382 383

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

Anthony Liguori's avatar
Anthony Liguori committed
386
$(QEMU_PROG): ARLIBS=libqemu.a
Juan Quintela's avatar
Juan Quintela committed
387 388
$(QEMU_PROG): $(obj-y) libqemu.a
	$(call LINK,$(obj-y))
389 390 391

endif #CONFIG_DARWIN_USER

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 474 475 476 477
#########################################################
# 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
478 479 480
obj-y = main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
        gdbstub.o gdbstub-xml.o
obj-y += uaccess.o
481 482 483

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

Anthony Liguori's avatar
Anthony Liguori committed
486
$(QEMU_PROG): ARLIBS=libqemu.a ../libqemu_user.a
Juan Quintela's avatar
Juan Quintela committed
487 488
$(QEMU_PROG): $(obj-y) libqemu.a ../libqemu_user.a
	$(call LINK,$(obj-y))
489 490 491

endif #CONFIG_BSD_USER

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

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

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

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

535 536 537 538 539
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

540 541 542 543 544
ifdef CONFIG_VNC_SASL
CPPFLAGS += $(CONFIG_VNC_SASL_CFLAGS)
LIBS += $(CONFIG_VNC_SASL_LIBS)
endif

545 546 547 548
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

549
# xen backend driver support
550
XEN_OBJS := xen_machine_pv.o xen_domainbuild.o
551
ifeq ($(CONFIG_XEN), yes)
Juan Quintela's avatar
Juan Quintela committed
552
  obj-y += $(XEN_OBJS)
553 554 555
  LIBS += $(XEN_LIBS)
endif

bellard's avatar
bellard committed
556
# USB layer
Juan Quintela's avatar
Juan Quintela committed
557
obj-y += usb-ohci.o
bellard's avatar
bellard committed
558

559
# PCI network cards
Juan Quintela's avatar
Juan Quintela committed
560 561 562 563 564
obj-y += eepro100.o
obj-y += ne2000.o
obj-y += pcnet.o
obj-y += rtl8139.o
obj-y += e1000.o
565

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

bellard's avatar
bellard committed
569
ifeq ($(TARGET_BASE_ARCH), i386)
570
# Hardware support
Juan Quintela's avatar
Juan Quintela committed
571 572 573 574 575
obj-y += ide.o pckbd.o vga.o $(SOUND_HW) dma.o
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
576
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard's avatar
bellard committed
577
endif
bellard's avatar
bellard committed
578
ifeq ($(TARGET_BASE_ARCH), ppc)
579
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
580
# shared objects
Juan Quintela's avatar
Juan Quintela committed
581
obj-y += ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
582
# PREP target
Juan Quintela's avatar
Juan Quintela committed
583 584
obj-y += pckbd.o serial.o i8259.o i8254.o fdc.o mc146818rtc.o
obj-y += prep_pci.o ppc_prep.o
585
# Mac shared devices
Juan Quintela's avatar
Juan Quintela committed
586
obj-y += macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
587
# OldWorld PowerMac
Juan Quintela's avatar
Juan Quintela committed
588
obj-y += heathrow_pic.o grackle_pci.o ppc_oldworld.o
589
# NewWorld PowerMac
Juan Quintela's avatar
Juan Quintela committed
590
obj-y += unin_pci.o ppc_newworld.o
591
# PowerPC 4xx boards
Juan Quintela's avatar
Juan Quintela committed
592 593
obj-y += pflash_cfi02.o ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o
obj-y += ppc440.o ppc440_bamboo.o
594
# PowerPC E500 boards
Juan Quintela's avatar
Juan Quintela committed
595
obj-y += ppce500_pci.o ppce500_mpc8544ds.o
596
ifdef FDT_LIBS
Juan Quintela's avatar
Juan Quintela committed
597
obj-y += device_tree.o
598 599
LIBS+= $(FDT_LIBS)
endif
aurel32's avatar
aurel32 committed
600
ifdef CONFIG_KVM
Juan Quintela's avatar
Juan Quintela committed
601
obj-y += kvm_ppc.o
aurel32's avatar
aurel32 committed
602
endif
603
endif
ths's avatar
ths committed
604
ifeq ($(TARGET_BASE_ARCH), mips)
Juan Quintela's avatar
Juan Quintela committed
605 606 607 608 609 610 611 612
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
obj-y += piix_pci.o parallel.o cirrus_vga.o pcspk.o $(SOUND_HW)
obj-y += mipsnet.o
obj-y += pflash_cfi01.o
obj-y += vmware_vga.o
aurel32's avatar
aurel32 committed
613
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard's avatar
bellard committed
614
endif
615
ifeq ($(TARGET_BASE_ARCH), microblaze)
Juan Quintela's avatar
Juan Quintela committed
616
obj-y += petalogix_s3adsp1800_mmu.o
617

Juan Quintela's avatar
Juan Quintela committed
618 619 620 621 622
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
623

Juan Quintela's avatar
Juan Quintela committed
624
obj-y += pflash_cfi02.o
625
ifdef FDT_LIBS
Juan Quintela's avatar
Juan Quintela committed
626
obj-y += device_tree.o
627 628 629
LIBS+= $(FDT_LIBS)
endif
endif
630
ifeq ($(TARGET_BASE_ARCH), cris)
631
# Boards
Juan Quintela's avatar
Juan Quintela committed
632
obj-y += cris_pic_cpu.o etraxfs.o axis_dev88.o
633 634

# IO blocks
Juan Quintela's avatar
Juan Quintela committed
635 636 637 638 639
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
640

Juan Quintela's avatar
Juan Quintela committed
641
obj-y += pflash_cfi02.o
642
endif
bellard's avatar
bellard committed
643
ifeq ($(TARGET_BASE_ARCH), sparc)
bellard's avatar
bellard committed
644
ifeq ($(TARGET_ARCH), sparc64)
Juan Quintela's avatar
Juan Quintela committed
645 646 647
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
648
else
Juan Quintela's avatar
Juan Quintela committed
649 650 651
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
652
endif
653
endif
bellard's avatar
bellard committed
654
ifeq ($(TARGET_BASE_ARCH), arm)
Juan Quintela's avatar
Juan Quintela committed
655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675
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
676
CPPFLAGS += -DHAS_AUDIO
bellard's avatar
bellard committed
677
endif
bellard's avatar
bellard committed
678
ifeq ($(TARGET_BASE_ARCH), sh4)
Juan Quintela's avatar
Juan Quintela committed
679 680 681
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
682
endif
pbrook's avatar
pbrook committed
683
ifeq ($(TARGET_BASE_ARCH), m68k)
Juan Quintela's avatar
Juan Quintela committed
684 685
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
686
endif
687
ifdef CONFIG_COCOA
688 689 690 691
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
692
endif
bellard's avatar
bellard committed
693
ifdef CONFIG_SLIRP
694
CPPFLAGS+=-I$(SRC_PATH)/slirp
bellard's avatar
bellard committed
695 696
endif

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

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

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

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

731 732
vl.o: CFLAGS+=$(SDL_CFLAGS)

733 734
vl.o: qemu-options.h

735 736
monitor.o: qemu-monitor.h

737
$(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) $(CURL_LIBS)
738
$(QEMU_PROG): ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
Juan Quintela's avatar
Juan Quintela committed
739 740
$(QEMU_PROG): $(obj-y) ../libqemu_common.a libqemu.a $(HWLIB)
	$(call LINK,$(obj-y))
bellard's avatar
bellard committed
741

742
endif # !CONFIG_USER_ONLY
743

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

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

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

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

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

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