Makefile.target 16.7 KB
Newer Older
bellard's avatar
bellard committed
1 2
include config.mak

bellard's avatar
bellard committed
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
ths's avatar
ths committed
10 11 12
ifeq ($(TARGET_ARCH), mips64)
TARGET_BASE_ARCH:=mips
endif
bellard's avatar
bellard committed
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
bellard's avatar
bellard committed
22 23 24
ifeq ($(TARGET_ARCH), sparc64)
TARGET_BASE_ARCH:=sparc
endif
bellard's avatar
bellard committed
25
TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
bellard's avatar
bellard committed
26
VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw
27
CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MT $@ -MP -DNEED_CPU_H
bellard's avatar
bellard committed
28
#CFLAGS+=-Werror
bellard's avatar
bellard committed
29
LIBS=
30
# user emulator name
bellard's avatar
bellard committed
31
ifndef TARGET_ARCH2
bellard's avatar
bellard committed
32
TARGET_ARCH2=$(TARGET_ARCH)
bellard's avatar
bellard committed
33
endif
34 35
ifeq ($(TARGET_ARCH),arm)
  ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
bellard's avatar
bellard committed
36
    TARGET_ARCH2=armeb
37
  endif
bellard's avatar
bellard committed
38
endif
pbrook's avatar
pbrook committed
39 40 41 42 43
ifeq ($(TARGET_ARCH),sh4)
  ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=sh4eb
  endif
endif
bellard's avatar
bellard committed
44
ifeq ($(TARGET_ARCH),mips)
bellard's avatar
bellard committed
45 46
  ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=mipsel
bellard's avatar
bellard committed
47 48
  endif
endif
49 50 51 52 53
ifeq ($(TARGET_ARCH),mipsn32)
  ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=mipsn32el
  endif
endif
ths's avatar
ths committed
54 55 56 57 58
ifeq ($(TARGET_ARCH),mips64)
  ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
    TARGET_ARCH2=mips64el
  endif
endif
59 60 61 62 63

ifdef CONFIG_USER_ONLY
# user emulator name
QEMU_PROG=qemu-$(TARGET_ARCH2)
else
64
# system emulator name
65
ifeq ($(TARGET_ARCH), i386)
66
QEMU_PROG=qemu$(EXESUF)
67
else
68
QEMU_PROG=qemu-system-$(TARGET_ARCH2)$(EXESUF)
69
endif
bellard's avatar
bellard committed
70
endif
bellard's avatar
bellard committed
71

72
PROGS=$(QEMU_PROG)
bellard's avatar
bellard committed
73

74
# cc-option
aliguori's avatar
aliguori committed
75
# Usage: CFLAGS+=$(call cc-option, $(CFLAGS), -falign-functions=0, -malign-functions=0)
76

aliguori's avatar
aliguori committed
77 78
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 ;)
79

80 81
HELPER_CFLAGS=

bellard's avatar
bellard committed
82
ifeq ($(ARCH),i386)
83
HELPER_CFLAGS+=-fomit-frame-pointer
84 85
endif

bellard's avatar
bellard committed
86
ifeq ($(ARCH),sparc)
87
  CFLAGS+=-ffixed-g2 -ffixed-g3
aliguori's avatar
aliguori committed
88
  ifneq ($(CONFIG_SOLARIS),yes)
89 90
    CFLAGS+=-ffixed-g1 -ffixed-g6
    HELPER_CFLAGS+=-ffixed-i0
91
  endif
92
endif
bellard's avatar
bellard committed
93 94

ifeq ($(ARCH),sparc64)
95
  ifneq ($(CONFIG_SOLARIS),yes)
96 97 98
    CFLAGS+=-ffixed-g5 -ffixed-g6 -ffixed-g7
  else
    CFLAGS+=-ffixed-g1 -ffixed-g4 -ffixed-g5 -ffixed-g7
99
  endif
bellard's avatar
bellard committed
100 101 102 103
endif

ifeq ($(ARCH),alpha)
# Ensure there's only a single GP
104
CFLAGS+=-msmall-data
bellard's avatar
bellard committed
105 106
endif

aurel32's avatar
aurel32 committed
107 108 109 110
ifeq ($(ARCH),hppa)
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

bellard's avatar
bellard committed
111
ifeq ($(ARCH),ia64)
112
CFLAGS+=-mno-sdata
113 114
endif

115 116
CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
bellard's avatar
bellard committed
117

118
CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
bellard's avatar
bellard committed
119
LIBS+=-lm
bellard's avatar
bellard committed
120
ifdef CONFIG_WIN32
121
LIBS+=-lwinmm -lws2_32 -liphlpapi
bellard's avatar
bellard committed
122
endif
bellard's avatar
bellard committed
123 124
ifdef CONFIG_SOLARIS
LIBS+=-lsocket -lnsl -lresolv
ths's avatar
ths committed
125 126 127
ifdef NEEDS_LIBSUNMATH
LIBS+=-lsunmath
LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
128
CFLAGS+=-I/opt/SUNWspro/prod/include/cc
bellard's avatar
bellard committed
129
endif
130 131
endif

aliguori's avatar
aliguori committed
132 133 134
kvm.o: CFLAGS+=$(KVM_CFLAGS)
kvm-all.o: CFLAGS+=$(KVM_CFLAGS)

135
all: $(PROGS)
bellard's avatar
bellard committed
136

137
#########################################################
bellard's avatar
bellard committed
138
# cpu emulator library
bellard's avatar
bellard committed
139
LIBOBJS=exec.o kqemu.o translate-all.o cpu-exec.o\
140
        translate.o host-utils.o
bellard's avatar
bellard committed
141
# TCG code generator
aurel32's avatar
aurel32 committed
142
LIBOBJS+= 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 148 149 150 151
ifdef CONFIG_SOFTFLOAT
LIBOBJS+=fpu/softfloat.o
else
LIBOBJS+=fpu/softfloat-native.o
endif
152
CPPFLAGS+=-I$(SRC_PATH)/fpu
153 154
LIBOBJS+= op_helper.o helper.o

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

159
ifeq ($(TARGET_BASE_ARCH), alpha)
160
LIBOBJS+= alpha_palcode.o
161 162
endif

163 164 165 166 167 168 169 170
ifeq ($(TARGET_BASE_ARCH), cris)
LIBOBJS+= cris-dis.o

ifndef CONFIG_USER_ONLY
LIBOBJS+= mmu.o
endif
endif

bellard's avatar
bellard committed
171
# NOTE: the disassembler code is only needed for debugging
172
LIBOBJS+=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
bellard's avatar
bellard committed
180 181 182 183 184
LIBOBJS+=i386-dis.o
endif
ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
LIBOBJS+=alpha-dis.o
endif
bellard's avatar
bellard committed
185
ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
bellard's avatar
bellard committed
186 187
LIBOBJS+=ppc-dis.o
endif
ths's avatar
ths committed
188
ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
bellard's avatar
bellard committed
189 190
LIBOBJS+=mips-dis.o
endif
bellard's avatar
bellard committed
191
ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
bellard's avatar
bellard committed
192 193 194 195 196
LIBOBJS+=sparc-dis.o
endif
ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
LIBOBJS+=arm-dis.o
endif
bellard's avatar
bellard committed
197 198 199
ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
LIBOBJS+=m68k-dis.o
endif
bellard's avatar
bellard committed
200 201 202
ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
LIBOBJS+=sh4-dis.o
endif
aurel32's avatar
aurel32 committed
203 204 205
ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
LIBOBJS+=hppa-dis.o
endif
206 207 208
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
LIBOBJS+=s390-dis.o
endif
bellard's avatar
bellard committed
209

210 211 212 213 214 215
# libqemu

libqemu.a: $(LIBOBJS)
	rm -f $@
	$(AR) rcs $@ $(LIBOBJS)

216
translate.o: translate.c cpu.h
217

218
translate-all.o: translate-all.c cpu.h
219

220
tcg/tcg.o: cpu.h
221 222 223

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

226
cpu-exec.o: CFLAGS += $(HELPER_CFLAGS)
227 228 229 230 231 232 233 234 235

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

ifdef CONFIG_LINUX_USER

ifndef TARGET_ABI_DIR
  TARGET_ABI_DIR=$(TARGET_ARCH)
endif
236
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
237 238 239 240 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
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
268 269 270 271
ifeq ($(ARCH),ppc64)
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
endif

272 273 274 275 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
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
317 318 319 320 321 322
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
CFLAGS+=-p
endif

323
OBJS= main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345
      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

346
ifdef CONFIG_GDBSTUB
347
OBJS+=gdbstub.o gdbstub-xml.o
348
endif
bellard's avatar
bellard committed
349

350 351 352 353
OBJS+= libqemu.a

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

356
$(QEMU_PROG): $(OBJS) ../libqemu_user.a
357
	$(CC) $(LDFLAGS) -o $@ $^  $(LIBS)
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

379
OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o
380 381 382 383

OBJS+= libqemu.a

ifdef CONFIG_GDBSTUB
384
OBJS+=gdbstub.o gdbstub-xml.o
385 386 387 388
endif

# Note: this is a workaround. The real fix is to avoid compiling
# cpu_signal_handler() in cpu-exec.c.
389
signal.o: CFLAGS += $(HELPER_CFLAGS)
390 391 392 393 394 395

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

endif #CONFIG_DARWIN_USER

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 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492
#########################################################
# 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

OBJS= main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o
OBJS+= uaccess.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.
493
signal.o: CFLAGS += $(HELPER_CFLAGS)
494 495 496 497 498 499

$(QEMU_PROG): $(OBJS) ../libqemu_user.a
	$(CC) $(LDFLAGS) -o $@ $^  $(LIBS)

endif #CONFIG_BSD_USER

500 501 502 503
#########################################################
# System emulator target
ifndef CONFIG_USER_ONLY

504
OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o
505 506
# virtio has to be here due to weird dependency between PCI and virtio-net.
# need to fix this properly
507
OBJS+=virtio.o virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
508
OBJS+=fw_cfg.o
aliguori's avatar
aliguori committed
509 510 511
ifdef CONFIG_KVM
OBJS+=kvm.o kvm-all.o
endif
512
ifdef CONFIG_WIN32
513
OBJS+=block-raw-win32.o
514
else
515 516 517
ifdef CONFIG_AIO
OBJS+=posix-aio-compat.o
endif
518
OBJS+=block-raw-posix.o
519 520
endif

521
LIBS+=-lz
522 523 524
ifdef CONFIG_ALSA
LIBS += -lasound
endif
525 526 527
ifdef CONFIG_ESD
LIBS += -lesd
endif
malc's avatar
malc committed
528 529 530
ifdef CONFIG_PA
LIBS += -lpulse-simple
endif
531 532
ifdef CONFIG_DSOUND
LIBS += -lole32 -ldxguid
bellard's avatar
bellard committed
533
endif
bellard's avatar
bellard committed
534 535
ifdef CONFIG_FMOD
LIBS += $(CONFIG_FMOD_LIB)
bellard's avatar
bellard committed
536
endif
blueswir1's avatar
blueswir1 committed
537 538 539
ifdef CONFIG_OSS
LIBS += $(CONFIG_OSS_LIB)
endif
bellard's avatar
bellard committed
540

aliguori's avatar
aliguori committed
541
SOUND_HW = sb16.o es1370.o ac97.o
542 543
ifdef CONFIG_ADLIB
SOUND_HW += fmopl.o adlib.o
544
adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
545
endif
546 547 548
ifdef CONFIG_GUS
SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
endif
malc's avatar
malc committed
549 550 551
ifdef CONFIG_CS4231A
SOUND_HW += cs4231a.o
endif
bellard's avatar
bellard committed
552

553 554 555 556 557
ifdef CONFIG_VNC_TLS
CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
LIBS += $(CONFIG_VNC_TLS_LIBS)
endif

558 559 560 561
ifdef CONFIG_BLUEZ
LIBS += $(CONFIG_BLUEZ_LIBS)
endif

pbrook's avatar
pbrook committed
562
# SCSI layer
563
OBJS+= lsi53c895a.o esp.o
pbrook's avatar
pbrook committed
564

bellard's avatar
bellard committed
565
# USB layer
566
OBJS+= usb-ohci.o
bellard's avatar
bellard committed
567

ths's avatar
ths committed
568
# EEPROM emulation
569
OBJS += eeprom93xx.o
ths's avatar
ths committed
570

571
# PCI network cards
572 573 574 575
OBJS += eepro100.o
OBJS += ne2000.o
OBJS += pcnet.o
OBJS += rtl8139.o
576
OBJS += e1000.o
577

bellard's avatar
bellard committed
578
ifeq ($(TARGET_BASE_ARCH), i386)
579
# Hardware support
580 581 582
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
583
OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o hpet.o
584
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard's avatar
bellard committed
585
endif
bellard's avatar
bellard committed
586
ifeq ($(TARGET_BASE_ARCH), ppc)
587
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
588
# shared objects
589
OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
590
# PREP target
591 592
OBJS+= pckbd.o ps2.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o
OBJS+= prep_pci.o ppc_prep.o
593
# Mac shared devices
blueswir1's avatar
blueswir1 committed
594
OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o escc.o
595
# OldWorld PowerMac
596
OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
597
# NewWorld PowerMac
598
OBJS+= unin_pci.o ppc_chrp.o
599
# PowerPC 4xx boards
600
OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o
601
OBJS+= ppc440.o ppc440_bamboo.o
602 603 604 605
ifdef FDT_LIBS
OBJS+= device_tree.o
LIBS+= $(FDT_LIBS)
endif
aurel32's avatar
aurel32 committed
606 607 608
ifdef CONFIG_KVM
OBJS+= kvm_ppc.o
endif
609
endif
ths's avatar
ths committed
610
ifeq ($(TARGET_BASE_ARCH), mips)
aurel32's avatar
aurel32 committed
611
OBJS+= mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
aurel32's avatar
aurel32 committed
612 613
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
614
OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
aurel32's avatar
aurel32 committed
615
OBJS+= piix_pci.o parallel.o cirrus_vga.o pcspk.o $(SOUND_HW)
616 617
OBJS+= mipsnet.o
OBJS+= pflash_cfi01.o
aurel32's avatar
aurel32 committed
618
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard's avatar
bellard committed
619
endif
620
ifeq ($(TARGET_BASE_ARCH), cris)
621 622 623 624
# Boards
OBJS+= etraxfs.o axis_dev88.o

# IO blocks
edgar_igl's avatar
edgar_igl committed
625
OBJS+= etraxfs_dma.o
626
OBJS+= etraxfs_pic.o
edgar_igl's avatar
edgar_igl committed
627
OBJS+= etraxfs_eth.o
628 629
OBJS+= etraxfs_timer.o
OBJS+= etraxfs_ser.o
630 631

OBJS+= ptimer.o
632
OBJS+= pflash_cfi02.o nand.o
633
endif
bellard's avatar
bellard committed
634
ifeq ($(TARGET_BASE_ARCH), sparc)
bellard's avatar
bellard committed
635
ifeq ($(TARGET_ARCH), sparc64)
636 637 638
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
bellard's avatar
bellard committed
639
else
640
OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
blueswir1's avatar
blueswir1 committed
641
OBJS+= slavio_timer.o escc.o slavio_misc.o fdc.o sparc32_dma.o
642
OBJS+= cs4231.o ptimer.o eccmemctl.o sbi.o sun4c_intctl.o
bellard's avatar
bellard committed
643
endif
644
endif
bellard's avatar
bellard committed
645
ifeq ($(TARGET_BASE_ARCH), arm)
646 647 648 649 650 651 652 653 654 655
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
656
OBJS+= zaurus.o ide.o serial.o nand.o ecc.o spitz.o tosa.o tc6393xb.o
balrog's avatar
balrog committed
657
OBJS+= omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
658
OBJS+= omap2.o omap_dss.o soc_dma.o
659
OBJS+= omap_sx1.o palm.o tsc210x.o
balrog's avatar
balrog committed
660
OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
661
OBJS+= tsc2005.o bt-hci-csr.o
662
OBJS+= mst_fpga.o mainstone.o
663
OBJS+= musicpal.o pflash_cfi02.o
664
CPPFLAGS += -DHAS_AUDIO
bellard's avatar
bellard committed
665
endif
bellard's avatar
bellard committed
666
ifeq ($(TARGET_BASE_ARCH), sh4)
667
OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
668
OBJS+= sh_timer.o ptimer.o sh_serial.o sh_intc.o sh_pci.o sm501.o serial.o
669
OBJS+= ide.o
bellard's avatar
bellard committed
670
endif
pbrook's avatar
pbrook committed
671
ifeq ($(TARGET_BASE_ARCH), m68k)
672 673
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
pbrook's avatar
pbrook committed
674
endif
675
ifdef CONFIG_GDBSTUB
676
OBJS+=gdbstub.o gdbstub-xml.o
bellard's avatar
bellard committed
677
endif
678
ifdef CONFIG_COCOA
679 680 681 682
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
ifdef CONFIG_COREAUDIO
COCOA_LIBS+=-framework CoreAudio
endif
683
endif
bellard's avatar
bellard committed
684
ifdef CONFIG_SLIRP
685
CPPFLAGS+=-I$(SRC_PATH)/slirp
bellard's avatar
bellard committed
686 687
endif

688
LIBS+=$(AIOLIBS)
689 690
# specific flags are needed for non soft mmu emulator
ifdef CONFIG_STATIC
691
LDFLAGS+=-static
bellard's avatar
bellard committed
692
endif
693
ifndef CONFIG_DARWIN
bellard's avatar
bellard committed
694
ifndef CONFIG_WIN32
bellard's avatar
bellard committed
695
ifndef CONFIG_SOLARIS
malc's avatar
malc committed
696
ifndef CONFIG_AIX
697
LIBS+=-lutil
bellard's avatar
bellard committed
698
endif
malc's avatar
malc committed
699
endif
700
endif
bellard's avatar
bellard committed
701
endif
bellard's avatar
bellard committed
702
ifdef TARGET_GPROF
703 704
vl.o: CFLAGS+=-p
LDFLAGS+=-p
bellard's avatar
bellard committed
705
endif
706

707
ifeq ($(ARCH),ia64)
708
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
bellard's avatar
bellard committed
709 710
endif

711 712 713 714
ifdef CONFIG_WIN32
SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
endif

715 716 717 718
# profiling code
ifdef TARGET_GPROF
LDFLAGS+=-p
main.o: CFLAGS+=-p
bellard's avatar
bellard committed
719 720
endif

721
$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a
722
	$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS)
bellard's avatar
bellard committed
723

724
endif # !CONFIG_USER_ONLY
725

726 727 728 729 730 731 732 733
gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
	rm -f $@
ifeq ($(TARGET_XML_FILES),)
	echo > $@
else
	$(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES)
endif

bellard's avatar
bellard committed
734
%.o: %.c
735
	$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
bellard's avatar
bellard committed
736

bellard's avatar
bellard committed
737
%.o: %.S
738
	$(CC) $(CPPFLAGS) -c -o $@ $<
bellard's avatar
bellard committed
739

bellard's avatar
bellard committed
740
clean:
741
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
bellard's avatar
bellard committed
742
	rm -f *.d */*.d tcg/*.o
743

744
install: all
bellard's avatar
bellard committed
745
ifneq ($(PROGS),)
746
	$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
bellard's avatar
bellard committed
747
endif
bellard's avatar
bellard committed
748

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