Makefile.target 16.1 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
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
OP_CFLAGS := -Wall -O2 -g -fno-strict-aliasing

# 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, ""))
92
OP_CFLAGS+=$(call cc-option, -fno-section-anchors, "")
93

94 95
HELPER_CFLAGS=

B
bellard 已提交
96
ifeq ($(ARCH),i386)
97 98
HELPER_CFLAGS+=-fomit-frame-pointer
OP_CFLAGS+=-mpreferred-stack-boundary=2 -fomit-frame-pointer
99 100 101 102 103 104
# 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
105 106
endif

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

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

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

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

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

B
bellard 已提交
143
ifeq ($(ARCH),ia64)
144
CFLAGS+=-mno-sdata
145
OP_CFLAGS+=-mno-sdata
B
bellard 已提交
146 147 148
endif

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

B
bellard 已提交
152
ifeq ($(ARCH),m68k)
153 154 155 156
OP_CFLAGS+=-fomit-frame-pointer
endif

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

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

164 165
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
166
OP_CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
B
bellard 已提交
167

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

183
all: $(PROGS)
B
bellard 已提交
184

185
#########################################################
B
bellard 已提交
186
# cpu emulator library
B
bellard 已提交
187
LIBOBJS=exec.o kqemu.o translate-all.o cpu-exec.o\
188
        translate.o host-utils.o
189
ifdef CONFIG_DYNGEN_OP
190
exec.o: dyngen-opc.h
191 192
LIBOBJS+=op.o
endif
B
bellard 已提交
193 194 195
# 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 已提交
196 197 198
ifeq ($(ARCH),sparc64)
CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
endif
B
bellard 已提交
199 200 201 202 203
ifdef CONFIG_SOFTFLOAT
LIBOBJS+=fpu/softfloat.o
else
LIBOBJS+=fpu/softfloat-native.o
endif
204
CPPFLAGS+=-I$(SRC_PATH)/fpu
205 206
LIBOBJS+= op_helper.o helper.o

B
bellard 已提交
207
ifeq ($(TARGET_BASE_ARCH), arm)
208
LIBOBJS+= neon_helper.o iwmmxt_helper.o
P
pbrook 已提交
209 210
endif

211
ifeq ($(TARGET_BASE_ARCH), alpha)
212
LIBOBJS+= alpha_palcode.o
213 214
endif

215 216 217 218 219 220 221 222
ifeq ($(TARGET_BASE_ARCH), cris)
LIBOBJS+= cris-dis.o

ifndef CONFIG_USER_ONLY
LIBOBJS+= mmu.o
endif
endif

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

262 263
# libqemu

264
ifdef CONFIG_DYNGEN_OP
265
OPC_H = gen-op.h dyngen-opc.h op.h
266
endif
267

268 269 270 271
libqemu.a: $(LIBOBJS)
	rm -f $@
	$(AR) rcs $@ $(LIBOBJS)

272 273 274 275 276
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)
277

278
tcg/tcg-dyngen.o: $(OPC_H)
279

280
tcg/tcg-runtime.o: $(OPC_H)
281 282 283 284

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

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

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

op.o: op.c
292
	$(CC) $(OP_CFLAGS) $(CPPFLAGS) $(I386_CFLAGS) -c -o $@ $<
293

A
aurel32 已提交
294 295 296
machine.o: machine.c
	$(CC) $(OP_CFLAGS) $(CPPFLAGS) -c -o $@ $<

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

302
cpu-exec.o: cpu-exec.c $(OPC_H)
303 304 305 306 307 308 309 310 311 312
	$(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
313
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
314 315 316 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 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
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

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

390
OBJS= main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412
      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 已提交
413 414 415
ifdef CONFIG_GDBSTUB
OBJS+=gdbstub.o
endif
B
bellard 已提交
416

417 418 419 420 421 422
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 已提交
423

424
$(QEMU_PROG): $(OBJS) ../libqemu_user.a
425
	$(CC) $(LDFLAGS) -o $@ $^  $(LIBS)
B
bellard 已提交
426 427 428 429 430 431
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

432 433 434 435 436 437 438 439 440 441 442 443 444 445 446
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

447
OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o
448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468

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

A
aurel32 已提交
469
OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o
470
ifdef CONFIG_WIN32
471
OBJS+=block-raw-win32.o
472
else
473
OBJS+=block-raw-posix.o
474
endif
475

476
LIBS+=-lz
477 478 479
ifdef CONFIG_ALSA
LIBS += -lasound
endif
480 481 482
ifdef CONFIG_ESD
LIBS += -lesd
endif
M
malc 已提交
483 484 485
ifdef CONFIG_PA
LIBS += -lpulse-simple
endif
486 487
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
B
bellard 已提交
488
endif
B
bellard 已提交
489 490
ifdef CONFIG_FMOD
LIBS += $(CONFIG_FMOD_LIB)
B
bellard 已提交
491
endif
B
bellard 已提交
492 493

SOUND_HW = sb16.o es1370.o
494 495 496
ifdef CONFIG_AC97
SOUND_HW += ac97.o
endif
497 498 499
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
endif
500 501 502
ifdef CONFIG_GUS
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
endif
M
malc 已提交
503 504 505
ifdef CONFIG_CS4231A
SOUND_HW += cs4231a.o
endif
B
bellard 已提交
506

507 508 509 510 511
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

P
pbrook 已提交
512
# SCSI layer
513
OBJS+= lsi53c895a.o esp.o
P
pbrook 已提交
514

B
bellard 已提交
515
# USB layer
516
OBJS+= usb-ohci.o
B
bellard 已提交
517

T
ths 已提交
518
# EEPROM emulation
519
OBJS += eeprom93xx.o
T
ths 已提交
520

521
# PCI network cards
522 523 524 525
OBJS += eepro100.o
OBJS += ne2000.o
OBJS += pcnet.o
OBJS += rtl8139.o
526
OBJS += e1000.o
527

B
bellard 已提交
528
ifeq ($(TARGET_BASE_ARCH), i386)
529
# Hardware support
530 531 532 533
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
534
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
B
bellard 已提交
535
endif
B
bellard 已提交
536
ifeq ($(TARGET_BASE_ARCH), ppc)
537
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
J
j_mayer 已提交
538
# shared objects
539
OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
J
j_mayer 已提交
540
# PREP target
541 542
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 已提交
543
# Mac shared devices
544
OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
J
j_mayer 已提交
545
# OldWorld PowerMac
546
OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
J
j_mayer 已提交
547
# NewWorld PowerMac
548
OBJS+= unin_pci.o ppc_chrp.o
J
j_mayer 已提交
549
# PowerPC 4xx boards
550
OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc405_uc.o ppc405_boards.o
551
endif
T
ths 已提交
552
ifeq ($(TARGET_BASE_ARCH), mips)
A
aurel32 已提交
553
OBJS+= mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
A
aurel32 已提交
554 555
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
556
OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
A
aurel32 已提交
557
OBJS+= piix_pci.o parallel.o cirrus_vga.o pcspk.o $(SOUND_HW)
558 559
OBJS+= mipsnet.o
OBJS+= pflash_cfi01.o
A
aurel32 已提交
560
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
B
bellard 已提交
561
endif
562
ifeq ($(TARGET_BASE_ARCH), cris)
563
OBJS+= etraxfs.o
E
edgar_igl 已提交
564
OBJS+= etraxfs_dma.o
565
OBJS+= etraxfs_pic.o
E
edgar_igl 已提交
566
OBJS+= etraxfs_eth.o
567 568
OBJS+= etraxfs_timer.o
OBJS+= etraxfs_ser.o
569 570

OBJS+= ptimer.o
E
edgar_igl 已提交
571
OBJS+= pflash_cfi02.o
572
endif
B
bellard 已提交
573
ifeq ($(TARGET_BASE_ARCH), sparc)
B
bellard 已提交
574
ifeq ($(TARGET_ARCH), sparc64)
575 576 577
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 已提交
578
else
579
OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
580
OBJS+= slavio_timer.o slavio_serial.o slavio_misc.o fdc.o sparc32_dma.o
581
OBJS+= cs4231.o ptimer.o eccmemctl.o sbi.o sun4c_intctl.o
B
bellard 已提交
582
endif
583
endif
B
bellard 已提交
584
ifeq ($(TARGET_BASE_ARCH), arm)
585 586 587 588 589 590 591 592 593 594
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
595
OBJS+= zaurus.o ide.o serial.o nand.o ecc.o spitz.o tosa.o tc6393xb.o
B
balrog 已提交
596
OBJS+= omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
B
balrog 已提交
597
OBJS+= omap2.o omap_dss.o
598
OBJS+= palm.o tsc210x.o
B
balrog 已提交
599
OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
B
balrog 已提交
600
OBJS+= tsc2005.o
601
OBJS+= mst_fpga.o mainstone.o
602
OBJS+= musicpal.o pflash_cfi02.o
603
CPPFLAGS += -DHAS_AUDIO
B
bellard 已提交
604
endif
B
bellard 已提交
605
ifeq ($(TARGET_BASE_ARCH), sh4)
606 607
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 已提交
608
endif
P
pbrook 已提交
609
ifeq ($(TARGET_BASE_ARCH), m68k)
610 611
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 已提交
612
endif
613
ifdef CONFIG_GDBSTUB
614
OBJS+=gdbstub.o
B
update  
bellard 已提交
615
endif
616
ifdef CONFIG_COCOA
617 618 619 620
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
621
endif
B
bellard 已提交
622
ifdef CONFIG_SLIRP
623
CPPFLAGS+=-I$(SRC_PATH)/slirp
B
bellard 已提交
624 625
endif

626
LIBS+=$(AIOLIBS)
627 628
# specific flags are needed for non soft mmu emulator
ifdef CONFIG_STATIC
629
LDFLAGS+=-static
B
bellard 已提交
630
endif
631
ifndef CONFIG_DARWIN
B
bellard 已提交
632
ifndef CONFIG_WIN32
B
bellard 已提交
633
ifndef CONFIG_SOLARIS
634
LIBS+=-lutil
B
bellard 已提交
635
endif
636
endif
B
bellard 已提交
637
endif
B
bellard 已提交
638
ifdef TARGET_GPROF
639 640
vl.o: CFLAGS+=-p
LDFLAGS+=-p
B
bellard 已提交
641
endif
642

B
bellard 已提交
643
ifeq ($(ARCH),ia64)
644
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
B
bellard 已提交
645 646
endif

647 648 649 650
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

651 652 653 654
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
B
bellard 已提交
655 656
endif

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

660
endif # !CONFIG_USER_ONLY
661

B
bellard 已提交
662
%.o: %.c
663
	$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
B
bellard 已提交
664

B
bellard 已提交
665
%.o: %.S
666
	$(CC) $(CPPFLAGS) -c -o $@ $<
B
bellard 已提交
667

B
bellard 已提交
668
clean:
B
bellard 已提交
669 670
	rm -f *.o *.a *~ $(PROGS) gen-op.h dyngen-opc.h op.h nwfpe/*.o fpu/*.o
	rm -f *.d */*.d tcg/*.o
671

672
install: all
B
bellard 已提交
673
ifneq ($(PROGS),)
674
	$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
B
bellard 已提交
675
endif
B
bellard 已提交
676

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