Makefile.target 16.2 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 125
  OP_CFLAGS+=-mcpu=ultrasparc -m64 -fno-delayed-branch -ffixed-i0
  ifneq ($(CONFIG_SOLARIS),yes)
126 127 128 129
    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
130
  endif
B
bellard 已提交
131 132 133
endif

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ifndef CONFIG_USER_ONLY
LIBOBJS+= mmu.o
endif
endif

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

264 265
# libqemu

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

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

274 275 276 277 278
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)
279

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

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

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

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

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

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

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

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

304
cpu-exec.o: cpu-exec.c $(OPC_H)
305 306 307 308 309 310 311 312 313 314
	$(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
315
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
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
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 已提交
347 348 349 350
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

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

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

423 424 425 426 427 428
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 已提交
429

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

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

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

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

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

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

SOUND_HW = sb16.o es1370.o
500 501 502
ifdef CONFIG_AC97
SOUND_HW += ac97.o
endif
503 504 505
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
endif
506 507 508
ifdef CONFIG_GUS
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
endif
M
malc 已提交
509 510 511
ifdef CONFIG_CS4231A
SOUND_HW += cs4231a.o
endif
B
bellard 已提交
512

513 514 515 516 517
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

P
pbrook 已提交
518
# SCSI layer
519
OBJS+= lsi53c895a.o esp.o
P
pbrook 已提交
520

B
bellard 已提交
521
# USB layer
522
OBJS+= usb-ohci.o
B
bellard 已提交
523

T
ths 已提交
524
# EEPROM emulation
525
OBJS += eeprom93xx.o
T
ths 已提交
526

527
# PCI network cards
528 529 530 531
OBJS += eepro100.o
OBJS += ne2000.o
OBJS += pcnet.o
OBJS += rtl8139.o
532
OBJS += e1000.o
533

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

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

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

B
bellard 已提交
649
ifeq ($(ARCH),ia64)
650
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
B
bellard 已提交
651 652
endif

653 654 655 656
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

657 658 659 660
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
B
bellard 已提交
661 662
endif

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

666
endif # !CONFIG_USER_ONLY
667

B
bellard 已提交
668
%.o: %.c
669
	$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
B
bellard 已提交
670

B
bellard 已提交
671
%.o: %.S
672
	$(CC) $(CPPFLAGS) -c -o $@ $<
B
bellard 已提交
673

B
bellard 已提交
674
clean:
B
bellard 已提交
675 676
	rm -f *.o *.a *~ $(PROGS) gen-op.h dyngen-opc.h op.h nwfpe/*.o fpu/*.o
	rm -f *.d */*.d tcg/*.o
677

678
install: all
B
bellard 已提交
679
ifneq ($(PROGS),)
680
	$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
B
bellard 已提交
681
endif
B
bellard 已提交
682

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