Makefile.target 15.5 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
P
pbrook 已提交
27
CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -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
endif

B
bellard 已提交
101
ifeq ($(ARCH),ppc)
102
CPPFLAGS+= -D__powerpc__
B
bellard 已提交
103 104 105
endif

ifeq ($(ARCH),sparc)
106
  CFLAGS+=-ffixed-g2 -ffixed-g3
107 108 109 110
  OP_CFLAGS+=-fno-delayed-branch -ffixed-i0
  ifeq ($(CONFIG_SOLARIS),yes)
    OP_CFLAGS+=-fno-omit-frame-pointer
  else
111 112
    CFLAGS+=-ffixed-g1 -ffixed-g6
    HELPER_CFLAGS+=-ffixed-i0
113
  endif
B
bellard 已提交
114
endif
B
bellard 已提交
115 116

ifeq ($(ARCH),sparc64)
117
  CFLAGS+=-ffixed-g1 -ffixed-g4 -ffixed-g5 -ffixed-g7
118 119 120 121
  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 已提交
122 123 124
endif

ifeq ($(ARCH),alpha)
125 126
# -msmall-data is not used for OP_CFLAGS because we want two-instruction
# relocations for the constant constructions
B
bellard 已提交
127
# Ensure there's only a single GP
128
CFLAGS+=-msmall-data
B
bellard 已提交
129 130 131
endif

ifeq ($(ARCH),ia64)
132
CFLAGS+=-mno-sdata
133
OP_CFLAGS+=-mno-sdata
B
bellard 已提交
134 135 136
endif

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

B
bellard 已提交
140
ifeq ($(ARCH),m68k)
141 142 143 144
OP_CFLAGS+=-fomit-frame-pointer
endif

ifeq ($(ARCH),mips)
T
ths 已提交
145
OP_CFLAGS+=-mabi=32 -G0 -fno-PIC -mno-abicalls -fomit-frame-pointer -fno-delayed-branch -Wa,-O0
T
ths 已提交
146 147 148
endif

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

152 153
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
154
OP_CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
B
bellard 已提交
155

156
CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
B
bellard 已提交
157
LIBS+=-lm
B
bellard 已提交
158
ifdef CONFIG_WIN32
159
LIBS+=-lwinmm -lws2_32 -liphlpapi
B
bellard 已提交
160
endif
B
bellard 已提交
161 162
ifdef CONFIG_SOLARIS
LIBS+=-lsocket -lnsl -lresolv
T
ths 已提交
163 164 165 166
ifdef NEEDS_LIBSUNMATH
LIBS+=-lsunmath
LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
OP_CFLAGS+=-I/opt/SUNWspro/prod/include/cc
167
CFLAGS+=-I/opt/SUNWspro/prod/include/cc
B
bellard 已提交
168
endif
169 170
endif

171
all: $(PROGS)
B
bellard 已提交
172

173
#########################################################
B
bellard 已提交
174
# cpu emulator library
B
bellard 已提交
175
LIBOBJS=exec.o kqemu.o translate-all.o cpu-exec.o\
176
        translate.o op.o host-utils.o
B
bellard 已提交
177 178 179
# 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
bellard 已提交
180 181 182 183 184
ifdef CONFIG_SOFTFLOAT
LIBOBJS+=fpu/softfloat.o
else
LIBOBJS+=fpu/softfloat-native.o
endif
185
CPPFLAGS+=-I$(SRC_PATH)/fpu
B
bellard 已提交
186 187

ifeq ($(TARGET_ARCH), i386)
188
LIBOBJS+=helper.o helper2.o
B
bellard 已提交
189 190
endif

B
bellard 已提交
191 192 193 194
ifeq ($(TARGET_ARCH), x86_64)
LIBOBJS+=helper.o helper2.o
endif

B
bellard 已提交
195
ifeq ($(TARGET_BASE_ARCH), ppc)
B
update  
bellard 已提交
196
LIBOBJS+= op_helper.o helper.o
197 198
endif

T
ths 已提交
199
ifeq ($(TARGET_BASE_ARCH), mips)
B
bellard 已提交
200 201 202
LIBOBJS+= op_helper.o helper.o
endif

B
bellard 已提交
203
ifeq ($(TARGET_BASE_ARCH), sparc)
204 205 206
LIBOBJS+= op_helper.o helper.o
endif

B
bellard 已提交
207
ifeq ($(TARGET_BASE_ARCH), arm)
B
bellard 已提交
208
LIBOBJS+= op_helper.o helper.o
B
bellard 已提交
209 210
endif

B
bellard 已提交
211 212 213 214
ifeq ($(TARGET_BASE_ARCH), sh4)
LIBOBJS+= op_helper.o helper.o
endif

P
pbrook 已提交
215
ifeq ($(TARGET_BASE_ARCH), m68k)
P
pbrook 已提交
216
LIBOBJS+= op_helper.o helper.o
P
pbrook 已提交
217 218
endif

219 220 221 222
ifeq ($(TARGET_BASE_ARCH), alpha)
LIBOBJS+= op_helper.o helper.o alpha_palcode.o
endif

223 224 225 226 227 228 229 230 231
ifeq ($(TARGET_BASE_ARCH), cris)
LIBOBJS+= op_helper.o helper.o
LIBOBJS+= cris-dis.o

ifndef CONFIG_USER_ONLY
LIBOBJS+= mmu.o
endif
endif

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

268 269
# libqemu

270 271
OPC_H = gen-op.h dyngen-opc.h op.h

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

276 277 278 279 280
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)
281

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

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

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

B
bellard 已提交
289
dyngen-opc.h: op.o $(DYNGEN)
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 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 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
	$(DYNGEN) -c -o $@ $<

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

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

# HELPER_CFLAGS is used for all the code compiled with static register
# variables
ifeq ($(TARGET_BASE_ARCH), i386)
# XXX: rename helper.c to op_helper.c
helper.o: helper.c
	$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
else
op_helper.o: op_helper.c
	$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
endif

cpu-exec.o: cpu-exec.c
	$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<

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

ifdef CONFIG_LINUX_USER

VPATH+=:$(SRC_PATH)/linux-user
ifndef TARGET_ABI_DIR
  TARGET_ABI_DIR=$(TARGET_ARCH)
endif
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

OBJS= main.o syscall.o strace.o mmap.o signal.o path.o osdep.o thunk.o \
      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 432
$(QEMU_PROG): $(OBJS)
	$(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 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476
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

OBJS= main.o commpage.o machload.o mmap.o osdep.o signal.o syscall.o thunk.o

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

OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o
477
ifdef CONFIG_WIN32
478
OBJS+=block-raw-win32.o
479
else
480
OBJS+=block-raw-posix.o
481
endif
482

483
LIBS+=-lz
484 485 486
ifdef CONFIG_ALSA
LIBS += -lasound
endif
487 488 489
ifdef CONFIG_ESD
LIBS += -lesd
endif
490 491
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
B
bellard 已提交
492
endif
B
bellard 已提交
493 494
ifdef CONFIG_FMOD
LIBS += $(CONFIG_FMOD_LIB)
B
bellard 已提交
495
endif
B
bellard 已提交
496 497

SOUND_HW = sb16.o es1370.o
498 499 500
ifdef CONFIG_AC97
SOUND_HW += ac97.o
endif
501 502 503
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
endif
504 505 506
ifdef CONFIG_GUS
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
endif
B
bellard 已提交
507

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

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

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

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

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

B
bellard 已提交
529
ifeq ($(TARGET_BASE_ARCH), i386)
530
# Hardware support
531 532 533 534
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
535
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
B
bellard 已提交
536
endif
B
bellard 已提交
537
ifeq ($(TARGET_BASE_ARCH), ppc)
538
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
J
j_mayer 已提交
539
# shared objects
540
OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
J
j_mayer 已提交
541
# PREP target
542 543
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 已提交
544
# Mac shared devices
545
OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
J
j_mayer 已提交
546
# OldWorld PowerMac
547
OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
J
j_mayer 已提交
548
# NewWorld PowerMac
549
OBJS+= unin_pci.o ppc_chrp.o
J
j_mayer 已提交
550
# PowerPC 4xx boards
551
OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc405_uc.o ppc405_boards.o
552
endif
T
ths 已提交
553
ifeq ($(TARGET_BASE_ARCH), mips)
554 555 556 557 558 559 560
OBJS+= mips_r4k.o mips_malta.o mips_pica61.o mips_mipssim.o
OBJS+= mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o
OBJS+= jazz_led.o
OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
OBJS+= piix_pci.o parallel.o cirrus_vga.o $(SOUND_HW)
OBJS+= mipsnet.o
OBJS+= pflash_cfi01.o
T
ths 已提交
561
CPPFLAGS += -DHAS_AUDIO
B
bellard 已提交
562
endif
563
ifeq ($(TARGET_BASE_ARCH), cris)
564 565 566 567
OBJS+= etraxfs.o
OBJS+= ptimer.o
OBJS+= etraxfs_timer.o
OBJS+= etraxfs_ser.o
568
endif
B
bellard 已提交
569
ifeq ($(TARGET_BASE_ARCH), sparc)
B
bellard 已提交
570
ifeq ($(TARGET_ARCH), sparc64)
571 572 573
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 已提交
574
else
575 576 577
OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
OBJS+= slavio_timer.o slavio_serial.o slavio_misc.o fdc.o esp.o sparc32_dma.o
OBJS+= cs4231.o ptimer.o eccmemctl.o sbi.o sun4c_intctl.o
B
bellard 已提交
578
endif
579
endif
B
bellard 已提交
580
ifeq ($(TARGET_BASE_ARCH), arm)
581 582 583 584 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
OBJS+= spitz.o ide.o serial.o nand.o ecc.o
OBJS+= omap.o omap_lcdc.o omap1_clk.o omap_mmc.o omap_i2c.o
OBJS+= palm.o tsc210x.o
OBJS+= mst_fpga.o mainstone.o
595
CPPFLAGS += -DHAS_AUDIO
B
bellard 已提交
596
endif
B
bellard 已提交
597
ifeq ($(TARGET_BASE_ARCH), sh4)
598 599
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 已提交
600
endif
P
pbrook 已提交
601
ifeq ($(TARGET_BASE_ARCH), m68k)
602 603
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 已提交
604
endif
605
ifdef CONFIG_GDBSTUB
606
OBJS+=gdbstub.o
B
update  
bellard 已提交
607
endif
608
ifdef CONFIG_COCOA
609 610 611 612
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
613
endif
B
bellard 已提交
614
ifdef CONFIG_SLIRP
615
CPPFLAGS+=-I$(SRC_PATH)/slirp
B
bellard 已提交
616 617
endif

618
LIBS+=$(AIOLIBS)
619 620
# specific flags are needed for non soft mmu emulator
ifdef CONFIG_STATIC
621
LDFLAGS+=-static
B
bellard 已提交
622
endif
623
ifndef CONFIG_DARWIN
B
bellard 已提交
624
ifndef CONFIG_WIN32
B
bellard 已提交
625
ifndef CONFIG_SOLARIS
626
LIBS+=-lutil
B
bellard 已提交
627
endif
628
endif
B
bellard 已提交
629
endif
B
bellard 已提交
630
ifdef TARGET_GPROF
631 632
vl.o: CFLAGS+=-p
LDFLAGS+=-p
B
bellard 已提交
633
endif
634

B
bellard 已提交
635
ifeq ($(ARCH),ia64)
636
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
B
bellard 已提交
637 638
endif

639 640 641 642
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

643 644 645 646
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
B
bellard 已提交
647 648
endif

649 650
$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a
	$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS)
B
bellard 已提交
651

652
endif # !CONFIG_USER_ONLY
653

B
bellard 已提交
654
%.o: %.c
655
	$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
B
bellard 已提交
656

B
bellard 已提交
657
%.o: %.S
658
	$(CC) $(CPPFLAGS) -c -o $@ $<
B
bellard 已提交
659

B
bellard 已提交
660
clean:
B
bellard 已提交
661 662
	rm -f *.o *.a *~ $(PROGS) gen-op.h dyngen-opc.h op.h nwfpe/*.o fpu/*.o
	rm -f *.d */*.d tcg/*.o
663

664
install: all
B
bellard 已提交
665
ifneq ($(PROGS),)
666
	$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
B
bellard 已提交
667
endif
B
bellard 已提交
668

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