Makefile.target 16.4 KB
Newer Older
B
bellard 已提交
1 2
include config.mak

B
bellard 已提交
3 4 5 6
TARGET_BASE_ARCH:=$(TARGET_ARCH)
ifeq ($(TARGET_ARCH), x86_64)
TARGET_BASE_ARCH:=i386
endif
7 8 9
ifeq ($(TARGET_ARCH), mipsn32)
TARGET_BASE_ARCH:=mips
endif
T
ths 已提交
10 11 12
ifeq ($(TARGET_ARCH), mips64)
TARGET_BASE_ARCH:=mips
endif
B
bellard 已提交
13 14 15
ifeq ($(TARGET_ARCH), ppc64)
TARGET_BASE_ARCH:=ppc
endif
16 17 18
ifeq ($(TARGET_ARCH), ppc64h)
TARGET_BASE_ARCH:=ppc
endif
19 20 21
ifeq ($(TARGET_ARCH), ppcemb)
TARGET_BASE_ARCH:=ppc
endif
B
bellard 已提交
22 23 24
ifeq ($(TARGET_ARCH), sparc64)
TARGET_BASE_ARCH:=sparc
endif
B
bellard 已提交
25
TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
B
bellard 已提交
26
VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw
B
balrog 已提交
27
CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MT $@ -MP -DNEED_CPU_H
B
bellard 已提交
28
#CFLAGS+=-Werror
B
bellard 已提交
29
LIBS=
B
bellard 已提交
30
DYNGEN=../dyngen$(EXESUF)
31
# user emulator name
B
bellard 已提交
32
ifndef TARGET_ARCH2
B
bellard 已提交
33
TARGET_ARCH2=$(TARGET_ARCH)
B
bellard 已提交
34
endif
35 36
ifeq ($(TARGET_ARCH),arm)
  ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
B
bellard 已提交
37
    TARGET_ARCH2=armeb
38
  endif
B
bellard 已提交
39
endif
P
pbrook 已提交
40 41 42 43 44
ifeq ($(TARGET_ARCH),sh4)
  ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=sh4eb
  endif
endif
B
bellard 已提交
45
ifeq ($(TARGET_ARCH),mips)
B
bellard 已提交
46 47
  ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=mipsel
B
bellard 已提交
48 49
  endif
endif
50 51 52 53 54
ifeq ($(TARGET_ARCH),mipsn32)
  ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=mipsn32el
  endif
endif
T
ths 已提交
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
B
bellard 已提交
71
endif
B
bellard 已提交
72

73
PROGS=$(QEMU_PROG)
B
bellard 已提交
74

75
# We require -O2 to avoid the stack setup prologue in EXIT_TB
B
blueswir1 已提交
76 77
OP_CFLAGS := -O2 -g -fno-strict-aliasing
OP_CFLAGS += -Wall -Wundef -Wendif-labels -Wwrite-strings
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92

# cc-option
# Usage: OP_CFLAGS+=$(call cc-option, -falign-functions=0, -malign-functions=0)

cc-option = $(shell if $(CC) $(OP_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
              > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)

OP_CFLAGS+=$(call cc-option, -fno-reorder-blocks, "")
OP_CFLAGS+=$(call cc-option, -fno-gcse, "")
OP_CFLAGS+=$(call cc-option, -fno-tree-ch, "")
OP_CFLAGS+=$(call cc-option, -fno-optimize-sibling-calls, "")
OP_CFLAGS+=$(call cc-option, -fno-crossjumping, "")
OP_CFLAGS+=$(call cc-option, -fno-align-labels, "")
OP_CFLAGS+=$(call cc-option, -fno-align-jumps, "")
OP_CFLAGS+=$(call cc-option, -fno-align-functions, $(call cc-option, -malign-functions=0, ""))
93
OP_CFLAGS+=$(call cc-option, -fno-section-anchors, "")
94

95 96
HELPER_CFLAGS=

B
bellard 已提交
97
ifeq ($(ARCH),i386)
98 99
HELPER_CFLAGS+=-fomit-frame-pointer
OP_CFLAGS+=-mpreferred-stack-boundary=2 -fomit-frame-pointer
100 101 102 103 104 105
# op.c and helper.c need this on 32-bit x86 system to avoid
# a compiler spill error. This can probably go away
# once the SSE ops have been converted to TCG
ifeq ($(HAVE_GT_GCC_3_3), true)
I386_CFLAGS=-march=i586 -mtune=i686
endif
106 107
endif

B
bellard 已提交
108
ifeq ($(ARCH),ppc)
109
CPPFLAGS+= -D__powerpc__
110
OP_CFLAGS+= -mlongcall
B
bellard 已提交
111 112 113
endif

ifeq ($(ARCH),sparc)
114
  CFLAGS+=-ffixed-g2 -ffixed-g3
115 116 117 118
  OP_CFLAGS+=-fno-delayed-branch -ffixed-i0
  ifeq ($(CONFIG_SOLARIS),yes)
    OP_CFLAGS+=-fno-omit-frame-pointer
  else
119 120
    CFLAGS+=-ffixed-g1 -ffixed-g6
    HELPER_CFLAGS+=-ffixed-i0
121
  endif
B
bellard 已提交
122
endif
B
bellard 已提交
123 124

ifeq ($(ARCH),sparc64)
125 126
  OP_CFLAGS+=-mcpu=ultrasparc -m64 -fno-delayed-branch -ffixed-i0
  ifneq ($(CONFIG_SOLARIS),yes)
127 128 129 130
    CFLAGS+=-ffixed-g5 -ffixed-g6 -ffixed-g7
    OP_CFLAGS+=-ffixed-g5 -ffixed-g6 -ffixed-g7
  else
    CFLAGS+=-ffixed-g1 -ffixed-g4 -ffixed-g5 -ffixed-g7
131
  endif
B
bellard 已提交
132 133 134
endif

ifeq ($(ARCH),alpha)
135 136
# -msmall-data is not used for OP_CFLAGS because we want two-instruction
# relocations for the constant constructions
B
bellard 已提交
137
# Ensure there's only a single GP
138
CFLAGS+=-msmall-data
B
bellard 已提交
139 140
endif

A
aurel32 已提交
141 142 143 144 145
ifeq ($(ARCH),hppa)
OP_CFLAGS=-O1 -fno-delayed-branch
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

B
bellard 已提交
146
ifeq ($(ARCH),ia64)
147
CFLAGS+=-mno-sdata
148
OP_CFLAGS+=-mno-sdata
B
bellard 已提交
149 150 151
endif

ifeq ($(ARCH),arm)
152
OP_CFLAGS+=-mno-sched-prolog -fno-omit-frame-pointer
B
bellard 已提交
153 154
endif

B
bellard 已提交
155
ifeq ($(ARCH),m68k)
156 157 158 159
OP_CFLAGS+=-fomit-frame-pointer
endif

ifeq ($(ARCH),mips)
T
ths 已提交
160
OP_CFLAGS+=-mabi=32 -G0 -fno-PIC -mno-abicalls -fomit-frame-pointer -fno-delayed-branch -Wa,-O0
T
ths 已提交
161 162 163
endif

ifeq ($(ARCH),mips64)
T
ths 已提交
164
OP_CFLAGS+=-mabi=n32 -G0 -fno-PIC -mno-abicalls -fomit-frame-pointer -fno-delayed-branch -Wa,-O0
165 166
endif

167 168
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
169
OP_CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
B
bellard 已提交
170

171
CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
B
bellard 已提交
172
LIBS+=-lm
B
bellard 已提交
173
ifdef CONFIG_WIN32
174
LIBS+=-lwinmm -lws2_32 -liphlpapi
B
bellard 已提交
175
endif
B
bellard 已提交
176 177
ifdef CONFIG_SOLARIS
LIBS+=-lsocket -lnsl -lresolv
T
ths 已提交
178 179 180 181
ifdef NEEDS_LIBSUNMATH
LIBS+=-lsunmath
LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
OP_CFLAGS+=-I/opt/SUNWspro/prod/include/cc
182
CFLAGS+=-I/opt/SUNWspro/prod/include/cc
B
bellard 已提交
183
endif
184 185
endif

186
all: $(PROGS)
B
bellard 已提交
187

188
#########################################################
B
bellard 已提交
189
# cpu emulator library
B
bellard 已提交
190
LIBOBJS=exec.o kqemu.o translate-all.o cpu-exec.o\
191
        translate.o host-utils.o
192
ifdef CONFIG_DYNGEN_OP
193
exec.o: dyngen-opc.h
194 195
LIBOBJS+=op.o
endif
B
bellard 已提交
196 197 198
# TCG code generator
LIBOBJS+= tcg/tcg.o tcg/tcg-dyngen.o tcg/tcg-runtime.o
CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
B
blueswir1 已提交
199 200 201
ifeq ($(ARCH),sparc64)
CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
endif
B
bellard 已提交
202 203 204 205 206
ifdef CONFIG_SOFTFLOAT
LIBOBJS+=fpu/softfloat.o
else
LIBOBJS+=fpu/softfloat-native.o
endif
207
CPPFLAGS+=-I$(SRC_PATH)/fpu
208 209
LIBOBJS+= op_helper.o helper.o

B
bellard 已提交
210
ifeq ($(TARGET_BASE_ARCH), arm)
211
LIBOBJS+= neon_helper.o iwmmxt_helper.o
P
pbrook 已提交
212 213
endif

214
ifeq ($(TARGET_BASE_ARCH), alpha)
215
LIBOBJS+= alpha_palcode.o
216 217
endif

218 219 220 221 222 223 224 225
ifeq ($(TARGET_BASE_ARCH), cris)
LIBOBJS+= cris-dis.o

ifndef CONFIG_USER_ONLY
LIBOBJS+= mmu.o
endif
endif

B
bellard 已提交
226
# NOTE: the disassembler code is only needed for debugging
227
LIBOBJS+=disas.o
B
bellard 已提交
228
ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
229 230
USE_I386_DIS=y
endif
B
bellard 已提交
231
ifeq ($(findstring x86_64, $(TARGET_ARCH) $(ARCH)),x86_64)
232 233 234
USE_I386_DIS=y
endif
ifdef USE_I386_DIS
B
bellard 已提交
235 236 237 238 239
LIBOBJS+=i386-dis.o
endif
ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
LIBOBJS+=alpha-dis.o
endif
B
bellard 已提交
240
ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
B
bellard 已提交
241 242
LIBOBJS+=ppc-dis.o
endif
T
ths 已提交
243
ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
B
bellard 已提交
244 245
LIBOBJS+=mips-dis.o
endif
B
bellard 已提交
246
ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
B
bellard 已提交
247 248 249 250 251
LIBOBJS+=sparc-dis.o
endif
ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
LIBOBJS+=arm-dis.o
endif
B
bellard 已提交
252 253 254
ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
LIBOBJS+=m68k-dis.o
endif
B
bellard 已提交
255 256 257
ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
LIBOBJS+=sh4-dis.o
endif
A
aurel32 已提交
258 259 260
ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
LIBOBJS+=hppa-dis.o
endif
261 262 263
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
LIBOBJS+=s390-dis.o
endif
B
bellard 已提交
264

265 266
# libqemu

267
ifdef CONFIG_DYNGEN_OP
268
OPC_H = gen-op.h dyngen-opc.h op.h
269
endif
270

271 272 273 274
libqemu.a: $(LIBOBJS)
	rm -f $@
	$(AR) rcs $@ $(LIBOBJS)

275 276 277 278 279
translate.o: translate.c cpu.h $(OPC_H)

translate-all.o: translate-all.c cpu.h $(OPC_H)

tcg/tcg.o: cpu.h $(OPC_H)
280

281
tcg/tcg-dyngen.o: $(OPC_H)
282

283
tcg/tcg-runtime.o: $(OPC_H)
284 285 286 287

op.h: op.o $(DYNGEN)
	$(DYNGEN) -o $@ $<

B
bellard 已提交
288
dyngen-opc.h: op.o $(DYNGEN)
289 290 291 292 293 294
	$(DYNGEN) -c -o $@ $<

gen-op.h: op.o $(DYNGEN)
	$(DYNGEN) -g -o $@ $<

op.o: op.c
295
	$(CC) $(OP_CFLAGS) $(CPPFLAGS) $(I386_CFLAGS) -c -o $@ $<
296

A
aurel32 已提交
297 298 299
machine.o: machine.c
	$(CC) $(OP_CFLAGS) $(CPPFLAGS) -c -o $@ $<

300 301 302
# HELPER_CFLAGS is used for all the code compiled with static register
# variables
op_helper.o: op_helper.c
303
	$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) $(I386_CFLAGS) -c -o $@ $<
304

305
cpu-exec.o: cpu-exec.c $(OPC_H)
306 307 308 309 310 311 312 313 314 315
	$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<

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

ifdef CONFIG_LINUX_USER

ifndef TARGET_ABI_DIR
  TARGET_ABI_DIR=$(TARGET_ARCH)
endif
316
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347
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

M
malc 已提交
348 349 350 351
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

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

397
OBJS= main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419
      elfload.o linuxload.o uaccess.o
LIBS+= $(AIOLIBS)
ifdef TARGET_HAS_BFLT
OBJS+= flatload.o
endif
ifdef TARGET_HAS_ELFLOAD32
OBJS+= elfload32.o
elfload32.o: elfload.c
endif

ifeq ($(TARGET_ARCH), i386)
OBJS+= vm86.o
endif
ifeq ($(TARGET_ARCH), arm)
OBJS+=nwfpe/fpa11.o nwfpe/fpa11_cpdo.o \
nwfpe/fpa11_cpdt.o nwfpe/fpa11_cprt.o nwfpe/fpopcode.o nwfpe/single_cpdo.o \
 nwfpe/double_cpdo.o nwfpe/extended_cpdo.o arm-semi.o
endif
ifeq ($(TARGET_ARCH), m68k)
OBJS+= m68k-sim.o m68k-semi.o
endif

B
bellard 已提交
420 421 422
ifdef CONFIG_GDBSTUB
OBJS+=gdbstub.o
endif
B
bellard 已提交
423

424 425 426 427 428 429
OBJS+= libqemu.a

# Note: this is a workaround. The real fix is to avoid compiling
# cpu_signal_handler() in cpu-exec.c.
signal.o: signal.c
	$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
B
bellard 已提交
430

431
$(QEMU_PROG): $(OBJS) ../libqemu_user.a
432
	$(CC) $(LDFLAGS) -o $@ $^  $(LIBS)
B
bellard 已提交
433 434 435 436 437 438
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

439 440 441 442 443 444 445 446 447 448 449 450 451 452 453
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

454
OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o
455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475

OBJS+= libqemu.a

ifdef CONFIG_GDBSTUB
OBJS+=gdbstub.o
endif

# Note: this is a workaround. The real fix is to avoid compiling
# cpu_signal_handler() in cpu-exec.c.
signal.o: signal.c
	$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<

$(QEMU_PROG): $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^  $(LIBS)

endif #CONFIG_DARWIN_USER

#########################################################
# System emulator target
ifndef CONFIG_USER_ONLY

476
OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o net-checksum.o
477
OBJS+=fw_cfg.o aio.o
478
ifdef CONFIG_WIN32
479
OBJS+=block-raw-win32.o
480
else
481 482 483 484 485
OBJS+=block-raw-posix.o
endif

ifdef CONFIG_AIO
OBJS+=compatfd.o
486
endif
487

488
LIBS+=-lz
489 490 491
ifdef CONFIG_ALSA
LIBS += -lasound
endif
492 493 494
ifdef CONFIG_ESD
LIBS += -lesd
endif
M
malc 已提交
495 496 497
ifdef CONFIG_PA
LIBS += -lpulse-simple
endif
498 499
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
B
bellard 已提交
500
endif
B
bellard 已提交
501 502
ifdef CONFIG_FMOD
LIBS += $(CONFIG_FMOD_LIB)
B
bellard 已提交
503
endif
B
blueswir1 已提交
504 505 506
ifdef CONFIG_OSS
LIBS += $(CONFIG_OSS_LIB)
endif
B
bellard 已提交
507 508

SOUND_HW = sb16.o es1370.o
509 510 511
ifdef CONFIG_AC97
SOUND_HW += ac97.o
endif
512 513 514
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
endif
515 516 517
ifdef CONFIG_GUS
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
endif
M
malc 已提交
518 519 520
ifdef CONFIG_CS4231A
SOUND_HW += cs4231a.o
endif
B
bellard 已提交
521

522 523 524 525 526
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

B
balrog 已提交
527 528 529 530
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

P
pbrook 已提交
531
# SCSI layer
532
OBJS+= lsi53c895a.o esp.o
P
pbrook 已提交
533

B
bellard 已提交
534
# USB layer
535
OBJS+= usb-ohci.o
B
bellard 已提交
536

T
ths 已提交
537
# EEPROM emulation
538
OBJS += eeprom93xx.o
T
ths 已提交
539

540
# PCI network cards
541 542 543 544
OBJS += eepro100.o
OBJS += ne2000.o
OBJS += pcnet.o
OBJS += rtl8139.o
545
OBJS += e1000.o
546

B
bellard 已提交
547
ifeq ($(TARGET_BASE_ARCH), i386)
548
# Hardware support
549 550 551 552
OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o
OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o
OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o
553
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
B
bellard 已提交
554
endif
B
bellard 已提交
555
ifeq ($(TARGET_BASE_ARCH), ppc)
556
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
J
j_mayer 已提交
557
# shared objects
558
OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
J
j_mayer 已提交
559
# PREP target
560 561
OBJS+= pckbd.o ps2.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o
OBJS+= prep_pci.o ppc_prep.o
J
j_mayer 已提交
562
# Mac shared devices
563
OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
J
j_mayer 已提交
564
# OldWorld PowerMac
565
OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
J
j_mayer 已提交
566
# NewWorld PowerMac
567
OBJS+= unin_pci.o ppc_chrp.o
J
j_mayer 已提交
568
# PowerPC 4xx boards
569
OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc405_uc.o ppc405_boards.o
570
endif
T
ths 已提交
571
ifeq ($(TARGET_BASE_ARCH), mips)
A
aurel32 已提交
572
OBJS+= mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
A
aurel32 已提交
573 574
OBJS+= mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o rc4030.o
OBJS+= g364fb.o jazz_led.o
575
OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
A
aurel32 已提交
576
OBJS+= piix_pci.o parallel.o cirrus_vga.o pcspk.o $(SOUND_HW)
577 578
OBJS+= mipsnet.o
OBJS+= pflash_cfi01.o
A
aurel32 已提交
579
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
B
bellard 已提交
580
endif
581
ifeq ($(TARGET_BASE_ARCH), cris)
582
OBJS+= etraxfs.o
E
edgar_igl 已提交
583
OBJS+= etraxfs_dma.o
584
OBJS+= etraxfs_pic.o
E
edgar_igl 已提交
585
OBJS+= etraxfs_eth.o
586 587
OBJS+= etraxfs_timer.o
OBJS+= etraxfs_ser.o
588 589

OBJS+= ptimer.o
E
edgar_igl 已提交
590
OBJS+= pflash_cfi02.o
591
endif
B
bellard 已提交
592
ifeq ($(TARGET_BASE_ARCH), sparc)
B
bellard 已提交
593
ifeq ($(TARGET_ARCH), sparc64)
594 595 596
OBJS+= sun4u.o ide.o pckbd.o ps2.o vga.o apb_pci.o
OBJS+= fdc.o mc146818rtc.o serial.o m48t59.o
OBJS+= cirrus_vga.o parallel.o ptimer.o
B
bellard 已提交
597
else
598
OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
599
OBJS+= slavio_timer.o slavio_serial.o slavio_misc.o fdc.o sparc32_dma.o
600
OBJS+= cs4231.o ptimer.o eccmemctl.o sbi.o sun4c_intctl.o
B
bellard 已提交
601
endif
602
endif
B
bellard 已提交
603
ifeq ($(TARGET_BASE_ARCH), arm)
604 605 606 607 608 609 610 611 612 613
OBJS+= integratorcp.o versatilepb.o ps2.o smc91c111.o arm_pic.o arm_timer.o
OBJS+= arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
OBJS+= versatile_pci.o ptimer.o
OBJS+= realview_gic.o realview.o arm_sysctl.o mpcore.o
OBJS+= armv7m.o armv7m_nvic.o stellaris.o pl022.o stellaris_enet.o
OBJS+= pl061.o
OBJS+= arm-semi.o
OBJS+= pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o
OBJS+= pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o pxa2xx_keypad.o
OBJS+= pflash_cfi01.o gumstix.o
614
OBJS+= zaurus.o ide.o serial.o nand.o ecc.o spitz.o tosa.o tc6393xb.o
B
balrog 已提交
615
OBJS+= omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
616
OBJS+= omap2.o omap_dss.o soc_dma.o
617
OBJS+= palm.o tsc210x.o
B
balrog 已提交
618
OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
619
OBJS+= tsc2005.o bt-hci-csr.o
620
OBJS+= mst_fpga.o mainstone.o
621
OBJS+= musicpal.o pflash_cfi02.o
622
CPPFLAGS += -DHAS_AUDIO
B
bellard 已提交
623
endif
B
bellard 已提交
624
ifeq ($(TARGET_BASE_ARCH), sh4)
625 626
OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
OBJS+= sh_timer.o ptimer.o sh_serial.o sh_intc.o
B
bellard 已提交
627
endif
P
pbrook 已提交
628
ifeq ($(TARGET_BASE_ARCH), m68k)
629 630
OBJS+= an5206.o mcf5206.o ptimer.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
OBJS+= m68k-semi.o dummy_m68k.o
P
pbrook 已提交
631
endif
632
ifdef CONFIG_GDBSTUB
633
OBJS+=gdbstub.o
B
update  
bellard 已提交
634
endif
635
ifdef CONFIG_COCOA
636 637 638 639
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
640
endif
B
bellard 已提交
641
ifdef CONFIG_SLIRP
642
CPPFLAGS+=-I$(SRC_PATH)/slirp
B
bellard 已提交
643 644
endif

645
LIBS+=$(AIOLIBS)
646 647
# specific flags are needed for non soft mmu emulator
ifdef CONFIG_STATIC
648
LDFLAGS+=-static
B
bellard 已提交
649
endif
650
ifndef CONFIG_DARWIN
B
bellard 已提交
651
ifndef CONFIG_WIN32
B
bellard 已提交
652
ifndef CONFIG_SOLARIS
653
LIBS+=-lutil
B
bellard 已提交
654
endif
655
endif
B
bellard 已提交
656
endif
B
bellard 已提交
657
ifdef TARGET_GPROF
658 659
vl.o: CFLAGS+=-p
LDFLAGS+=-p
B
bellard 已提交
660
endif
661

B
bellard 已提交
662
ifeq ($(ARCH),ia64)
663
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
B
bellard 已提交
664 665
endif

666 667 668 669
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

670 671 672 673
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
B
bellard 已提交
674 675
endif

676
$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a
677
	$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS)
B
bellard 已提交
678

679
endif # !CONFIG_USER_ONLY
680

B
bellard 已提交
681
%.o: %.c
682
	$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
B
bellard 已提交
683

B
bellard 已提交
684
%.o: %.S
685
	$(CC) $(CPPFLAGS) -c -o $@ $<
B
bellard 已提交
686

B
bellard 已提交
687
clean:
B
bellard 已提交
688 689
	rm -f *.o *.a *~ $(PROGS) gen-op.h dyngen-opc.h op.h nwfpe/*.o fpu/*.o
	rm -f *.d */*.d tcg/*.o
690

691
install: all
B
bellard 已提交
692
ifneq ($(PROGS),)
693
	$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
B
bellard 已提交
694
endif
B
bellard 已提交
695

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