blob: f9c0b34b98a21e39f350dfe2cbfb79a644b6b8e6 [file] [log] [blame]
bellard626df762003-08-10 21:39:31 +00001include config.mak
2
bellard0b0babc2005-01-03 23:38:40 +00003TARGET_BASE_ARCH:=$(TARGET_ARCH)
4ifeq ($(TARGET_ARCH), x86_64)
5TARGET_BASE_ARCH:=i386
6endif
ths540635b2007-09-30 01:58:33 +00007ifeq ($(TARGET_ARCH), mipsn32)
8TARGET_BASE_ARCH:=mips
9endif
thsfbe4f652007-04-01 11:16:48 +000010ifeq ($(TARGET_ARCH), mips64)
11TARGET_BASE_ARCH:=mips
12endif
bellarda2458622005-07-23 22:39:53 +000013ifeq ($(TARGET_ARCH), ppc64)
14TARGET_BASE_ARCH:=ppc
15endif
j_mayer22f8a8b2007-10-14 08:38:29 +000016ifeq ($(TARGET_ARCH), ppc64h)
17TARGET_BASE_ARCH:=ppc
18endif
j_mayerd4082e92007-04-24 07:34:03 +000019ifeq ($(TARGET_ARCH), ppcemb)
20TARGET_BASE_ARCH:=ppc
21endif
bellard64b3ab22005-01-30 22:43:42 +000022ifeq ($(TARGET_ARCH), sparc64)
23TARGET_BASE_ARCH:=sparc
24endif
bellard0b0babc2005-01-03 23:38:40 +000025TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
bellard4fb240a2007-11-07 19:24:02 +000026VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw
balrog46dc3882008-06-02 02:09:09 +000027CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MT $@ -MP -DNEED_CPU_H
bellard0b0babc2005-01-03 23:38:40 +000028#CFLAGS+=-Werror
bellard626df762003-08-10 21:39:31 +000029LIBS=
bellard67b915a2004-03-31 23:37:16 +000030DYNGEN=../dyngen$(EXESUF)
bellard1e43adf2003-09-30 20:54:24 +000031# user emulator name
bellard0c64b9c2008-01-06 18:27:58 +000032ifndef TARGET_ARCH2
bellardc91fde62006-05-02 22:52:36 +000033TARGET_ARCH2=$(TARGET_ARCH)
bellard0c64b9c2008-01-06 18:27:58 +000034endif
bellard808c4952004-12-19 23:33:47 +000035ifeq ($(TARGET_ARCH),arm)
36 ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
bellardc91fde62006-05-02 22:52:36 +000037 TARGET_ARCH2=armeb
bellard808c4952004-12-19 23:33:47 +000038 endif
bellardc91fde62006-05-02 22:52:36 +000039endif
pbrook908f52b2006-06-18 19:16:53 +000040ifeq ($(TARGET_ARCH),sh4)
41 ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
42 TARGET_ARCH2=sh4eb
43 endif
44endif
bellard01f5e592005-12-06 21:42:17 +000045ifeq ($(TARGET_ARCH),mips)
bellardc91fde62006-05-02 22:52:36 +000046 ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
47 TARGET_ARCH2=mipsel
bellard01f5e592005-12-06 21:42:17 +000048 endif
bellard808c4952004-12-19 23:33:47 +000049endif
ths540635b2007-09-30 01:58:33 +000050ifeq ($(TARGET_ARCH),mipsn32)
51 ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
52 TARGET_ARCH2=mipsn32el
53 endif
54endif
thsfbe4f652007-04-01 11:16:48 +000055ifeq ($(TARGET_ARCH),mips64)
56 ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
57 TARGET_ARCH2=mips64el
58 endif
59endif
bellard1e43adf2003-09-30 20:54:24 +000060
bellard16e9b7d2003-10-27 21:09:52 +000061ifdef CONFIG_USER_ONLY
bellard40293e52008-01-31 11:32:10 +000062# user emulator name
63QEMU_PROG=qemu-$(TARGET_ARCH2)
bellard16e9b7d2003-10-27 21:09:52 +000064else
bellard40293e52008-01-31 11:32:10 +000065# system emulator name
66ifeq ($(TARGET_ARCH), i386)
67QEMU_PROG=qemu$(EXESUF)
68else
69QEMU_PROG=qemu-system-$(TARGET_ARCH2)$(EXESUF)
bellardde5eaa62003-11-16 23:18:17 +000070endif
bellard40293e52008-01-31 11:32:10 +000071endif
bellard728c9fd2004-01-05 00:08:14 +000072
bellard40293e52008-01-31 11:32:10 +000073PROGS=$(QEMU_PROG)
bellard626df762003-08-10 21:39:31 +000074
ths6f30fa82007-01-05 01:00:47 +000075# We require -O2 to avoid the stack setup prologue in EXIT_TB
blueswir1ac41a622008-09-14 06:46:31 +000076OP_CFLAGS := -O2 -g -fno-strict-aliasing
77OP_CFLAGS += -Wall -Wundef -Wendif-labels -Wwrite-strings
ths6c041c52007-03-18 23:23:31 +000078
79# cc-option
80# Usage: OP_CFLAGS+=$(call cc-option, -falign-functions=0, -malign-functions=0)
81
82cc-option = $(shell if $(CC) $(OP_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
83 > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
84
85OP_CFLAGS+=$(call cc-option, -fno-reorder-blocks, "")
86OP_CFLAGS+=$(call cc-option, -fno-gcse, "")
87OP_CFLAGS+=$(call cc-option, -fno-tree-ch, "")
88OP_CFLAGS+=$(call cc-option, -fno-optimize-sibling-calls, "")
89OP_CFLAGS+=$(call cc-option, -fno-crossjumping, "")
90OP_CFLAGS+=$(call cc-option, -fno-align-labels, "")
91OP_CFLAGS+=$(call cc-option, -fno-align-jumps, "")
92OP_CFLAGS+=$(call cc-option, -fno-align-functions, $(call cc-option, -malign-functions=0, ""))
ths1870a742007-09-13 03:24:53 +000093OP_CFLAGS+=$(call cc-option, -fno-section-anchors, "")
ths6f30fa82007-01-05 01:00:47 +000094
bellard40293e52008-01-31 11:32:10 +000095HELPER_CFLAGS=
96
bellard626df762003-08-10 21:39:31 +000097ifeq ($(ARCH),i386)
ths6f30fa82007-01-05 01:00:47 +000098HELPER_CFLAGS+=-fomit-frame-pointer
99OP_CFLAGS+=-mpreferred-stack-boundary=2 -fomit-frame-pointer
aurel32f2bf0942008-05-05 06:00:27 +0000100# op.c and helper.c need this on 32-bit x86 system to avoid
101# a compiler spill error. This can probably go away
102# once the SSE ops have been converted to TCG
103ifeq ($(HAVE_GT_GCC_3_3), true)
104I386_CFLAGS=-march=i586 -mtune=i686
105endif
bellardbc51c5c2004-03-17 23:46:04 +0000106endif
107
bellard626df762003-08-10 21:39:31 +0000108ifeq ($(ARCH),ppc)
ths6f30fa82007-01-05 01:00:47 +0000109CPPFLAGS+= -D__powerpc__
malc176a4f22008-06-09 06:06:30 +0000110OP_CFLAGS+= -mlongcall
bellard626df762003-08-10 21:39:31 +0000111endif
112
113ifeq ($(ARCH),sparc)
bellard40293e52008-01-31 11:32:10 +0000114 CFLAGS+=-ffixed-g2 -ffixed-g3
blueswir131422552007-04-16 18:27:06 +0000115 OP_CFLAGS+=-fno-delayed-branch -ffixed-i0
116 ifeq ($(CONFIG_SOLARIS),yes)
117 OP_CFLAGS+=-fno-omit-frame-pointer
118 else
bellard40293e52008-01-31 11:32:10 +0000119 CFLAGS+=-ffixed-g1 -ffixed-g6
120 HELPER_CFLAGS+=-ffixed-i0
blueswir131422552007-04-16 18:27:06 +0000121 endif
bellardfdbb4692006-06-14 17:32:25 +0000122endif
bellard626df762003-08-10 21:39:31 +0000123
124ifeq ($(ARCH),sparc64)
blueswir131422552007-04-16 18:27:06 +0000125 OP_CFLAGS+=-mcpu=ultrasparc -m64 -fno-delayed-branch -ffixed-i0
126 ifneq ($(CONFIG_SOLARIS),yes)
blueswir1e97b6402008-07-26 17:19:35 +0000127 CFLAGS+=-ffixed-g5 -ffixed-g6 -ffixed-g7
128 OP_CFLAGS+=-ffixed-g5 -ffixed-g6 -ffixed-g7
129 else
130 CFLAGS+=-ffixed-g1 -ffixed-g4 -ffixed-g5 -ffixed-g7
blueswir131422552007-04-16 18:27:06 +0000131 endif
bellard626df762003-08-10 21:39:31 +0000132endif
133
134ifeq ($(ARCH),alpha)
ths6f30fa82007-01-05 01:00:47 +0000135# -msmall-data is not used for OP_CFLAGS because we want two-instruction
136# relocations for the constant constructions
bellard626df762003-08-10 21:39:31 +0000137# Ensure there's only a single GP
bellard40293e52008-01-31 11:32:10 +0000138CFLAGS+=-msmall-data
bellard626df762003-08-10 21:39:31 +0000139endif
140
aurel32f54b3f92008-04-12 20:14:54 +0000141ifeq ($(ARCH),hppa)
142OP_CFLAGS=-O1 -fno-delayed-branch
143BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
144endif
145
bellard626df762003-08-10 21:39:31 +0000146ifeq ($(ARCH),ia64)
bellard40293e52008-01-31 11:32:10 +0000147CFLAGS+=-mno-sdata
ths6f30fa82007-01-05 01:00:47 +0000148OP_CFLAGS+=-mno-sdata
bellard626df762003-08-10 21:39:31 +0000149endif
150
151ifeq ($(ARCH),arm)
ths6f30fa82007-01-05 01:00:47 +0000152OP_CFLAGS+=-mno-sched-prolog -fno-omit-frame-pointer
bellard626df762003-08-10 21:39:31 +0000153endif
154
bellard38e584a2003-08-10 22:14:22 +0000155ifeq ($(ARCH),m68k)
ths6f30fa82007-01-05 01:00:47 +0000156OP_CFLAGS+=-fomit-frame-pointer
ths6f30fa82007-01-05 01:00:47 +0000157endif
158
159ifeq ($(ARCH),mips)
ths9617efe2007-05-08 21:05:55 +0000160OP_CFLAGS+=-mabi=32 -G0 -fno-PIC -mno-abicalls -fomit-frame-pointer -fno-delayed-branch -Wa,-O0
thsfbe4f652007-04-01 11:16:48 +0000161endif
162
163ifeq ($(ARCH),mips64)
ths9617efe2007-05-08 21:05:55 +0000164OP_CFLAGS+=-mabi=n32 -G0 -fno-PIC -mno-abicalls -fomit-frame-pointer -fno-delayed-branch -Wa,-O0
bellard38e584a2003-08-10 22:14:22 +0000165endif
166
bellard40293e52008-01-31 11:32:10 +0000167CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
168LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
blueswir131422552007-04-16 18:27:06 +0000169OP_CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
bellard626df762003-08-10 21:39:31 +0000170
ths6f30fa82007-01-05 01:00:47 +0000171CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
bellard626df762003-08-10 21:39:31 +0000172LIBS+=-lm
bellard67b915a2004-03-31 23:37:16 +0000173ifdef CONFIG_WIN32
bellard3db38e82004-07-14 17:19:55 +0000174LIBS+=-lwinmm -lws2_32 -liphlpapi
bellard67b915a2004-03-31 23:37:16 +0000175endif
bellardec530c82006-04-25 22:36:06 +0000176ifdef CONFIG_SOLARIS
177LIBS+=-lsocket -lnsl -lresolv
ths0475a5c2007-04-01 18:54:44 +0000178ifdef NEEDS_LIBSUNMATH
179LIBS+=-lsunmath
180LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
181OP_CFLAGS+=-I/opt/SUNWspro/prod/include/cc
bellard40293e52008-01-31 11:32:10 +0000182CFLAGS+=-I/opt/SUNWspro/prod/include/cc
ths0475a5c2007-04-01 18:54:44 +0000183endif
bellardec530c82006-04-25 22:36:06 +0000184endif
bellard626df762003-08-10 21:39:31 +0000185
bellard40293e52008-01-31 11:32:10 +0000186all: $(PROGS)
bellard626df762003-08-10 21:39:31 +0000187
bellard40293e52008-01-31 11:32:10 +0000188#########################################################
bellard626df762003-08-10 21:39:31 +0000189# cpu emulator library
bellard57fec1f2008-02-01 10:50:11 +0000190LIBOBJS=exec.o kqemu.o translate-all.o cpu-exec.o\
blueswir1cf2be982008-03-21 18:03:09 +0000191 translate.o host-utils.o
blueswir1bf6247f2008-05-10 12:27:33 +0000192ifdef CONFIG_DYNGEN_OP
ths48ffabc2008-05-23 19:19:55 +0000193exec.o: dyngen-opc.h
blueswir1cf2be982008-03-21 18:03:09 +0000194LIBOBJS+=op.o
195endif
bellard57fec1f2008-02-01 10:50:11 +0000196# TCG code generator
197LIBOBJS+= tcg/tcg.o tcg/tcg-dyngen.o tcg/tcg-runtime.o
198CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
blueswir18289b272008-02-27 17:53:27 +0000199ifeq ($(ARCH),sparc64)
200CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
201endif
bellard158142c2005-03-13 16:54:06 +0000202ifdef CONFIG_SOFTFLOAT
203LIBOBJS+=fpu/softfloat.o
204else
205LIBOBJS+=fpu/softfloat-native.o
206endif
ths6f30fa82007-01-05 01:00:47 +0000207CPPFLAGS+=-I$(SRC_PATH)/fpu
bellard728c9fd2004-01-05 00:08:14 +0000208LIBOBJS+= op_helper.o helper.o
bellarde95c8d52004-09-30 22:22:08 +0000209
bellardb7bcbe92005-02-22 19:27:29 +0000210ifeq ($(TARGET_BASE_ARCH), arm)
bellardeaa728e2008-05-28 12:51:20 +0000211LIBOBJS+= neon_helper.o iwmmxt_helper.o
pbrooke6e59062006-10-22 00:18:54 +0000212endif
213
j_mayercf6c1b12007-04-05 20:46:02 +0000214ifeq ($(TARGET_BASE_ARCH), alpha)
bellardeaa728e2008-05-28 12:51:20 +0000215LIBOBJS+= alpha_palcode.o
j_mayercf6c1b12007-04-05 20:46:02 +0000216endif
217
thse7daa602007-10-08 13:38:27 +0000218ifeq ($(TARGET_BASE_ARCH), cris)
thse7daa602007-10-08 13:38:27 +0000219LIBOBJS+= cris-dis.o
220
221ifndef CONFIG_USER_ONLY
222LIBOBJS+= mmu.o
223endif
224endif
225
bellard626df762003-08-10 21:39:31 +0000226# NOTE: the disassembler code is only needed for debugging
ths5fafdf22007-09-16 21:08:06 +0000227LIBOBJS+=disas.o
bellard626df762003-08-10 21:39:31 +0000228ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
bellardbc51c5c2004-03-17 23:46:04 +0000229USE_I386_DIS=y
230endif
bellard0b0babc2005-01-03 23:38:40 +0000231ifeq ($(findstring x86_64, $(TARGET_ARCH) $(ARCH)),x86_64)
bellardbc51c5c2004-03-17 23:46:04 +0000232USE_I386_DIS=y
233endif
234ifdef USE_I386_DIS
bellard626df762003-08-10 21:39:31 +0000235LIBOBJS+=i386-dis.o
236endif
237ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
238LIBOBJS+=alpha-dis.o
239endif
bellarda2458622005-07-23 22:39:53 +0000240ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
bellard626df762003-08-10 21:39:31 +0000241LIBOBJS+=ppc-dis.o
242endif
thsfbe4f652007-04-01 11:16:48 +0000243ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
bellard6af0bf92005-07-02 14:58:51 +0000244LIBOBJS+=mips-dis.o
245endif
bellard64b3ab22005-01-30 22:43:42 +0000246ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
bellard626df762003-08-10 21:39:31 +0000247LIBOBJS+=sparc-dis.o
248endif
249ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
250LIBOBJS+=arm-dis.o
251endif
bellard48024e42005-11-06 16:52:11 +0000252ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
253LIBOBJS+=m68k-dis.o
254endif
bellardfdf9b3e2006-04-27 21:07:38 +0000255ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
256LIBOBJS+=sh4-dis.o
257endif
aurel32f54b3f92008-04-12 20:14:54 +0000258ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
259LIBOBJS+=hppa-dis.o
260endif
ths8f860bb2007-07-31 23:44:21 +0000261ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
262LIBOBJS+=s390-dis.o
263endif
bellard626df762003-08-10 21:39:31 +0000264
bellard40293e52008-01-31 11:32:10 +0000265# libqemu
266
blueswir1bf6247f2008-05-10 12:27:33 +0000267ifdef CONFIG_DYNGEN_OP
pbrookdd485942008-02-01 22:45:04 +0000268OPC_H = gen-op.h dyngen-opc.h op.h
blueswir1cf2be982008-03-21 18:03:09 +0000269endif
pbrookdd485942008-02-01 22:45:04 +0000270
bellard40293e52008-01-31 11:32:10 +0000271libqemu.a: $(LIBOBJS)
272 rm -f $@
273 $(AR) rcs $@ $(LIBOBJS)
274
pbrookdd485942008-02-01 22:45:04 +0000275translate.o: translate.c cpu.h $(OPC_H)
bellard40293e52008-01-31 11:32:10 +0000276
pbrookdd485942008-02-01 22:45:04 +0000277translate-all.o: translate-all.c cpu.h $(OPC_H)
bellard40293e52008-01-31 11:32:10 +0000278
pbrookdd485942008-02-01 22:45:04 +0000279tcg/tcg.o: cpu.h $(OPC_H)
280
281tcg/tcg-dyngen.o: $(OPC_H)
282
283tcg/tcg-runtime.o: $(OPC_H)
bellard40293e52008-01-31 11:32:10 +0000284
285op.h: op.o $(DYNGEN)
286 $(DYNGEN) -o $@ $<
287
bellard57fec1f2008-02-01 10:50:11 +0000288dyngen-opc.h: op.o $(DYNGEN)
bellard40293e52008-01-31 11:32:10 +0000289 $(DYNGEN) -c -o $@ $<
290
291gen-op.h: op.o $(DYNGEN)
292 $(DYNGEN) -g -o $@ $<
293
294op.o: op.c
aurel32f2bf0942008-05-05 06:00:27 +0000295 $(CC) $(OP_CFLAGS) $(CPPFLAGS) $(I386_CFLAGS) -c -o $@ $<
bellard40293e52008-01-31 11:32:10 +0000296
aurel328dd3dca2008-05-04 13:11:44 +0000297machine.o: machine.c
298 $(CC) $(OP_CFLAGS) $(CPPFLAGS) -c -o $@ $<
299
bellard40293e52008-01-31 11:32:10 +0000300# HELPER_CFLAGS is used for all the code compiled with static register
301# variables
bellard40293e52008-01-31 11:32:10 +0000302op_helper.o: op_helper.c
bellardeaa728e2008-05-28 12:51:20 +0000303 $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) $(I386_CFLAGS) -c -o $@ $<
bellard40293e52008-01-31 11:32:10 +0000304
aurel32c96402b2008-05-10 23:51:24 +0000305cpu-exec.o: cpu-exec.c $(OPC_H)
bellard40293e52008-01-31 11:32:10 +0000306 $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
307
308#########################################################
309# Linux user emulator target
310
311ifdef CONFIG_LINUX_USER
312
bellard40293e52008-01-31 11:32:10 +0000313ifndef TARGET_ABI_DIR
314 TARGET_ABI_DIR=$(TARGET_ARCH)
315endif
aurel323ebdd112008-04-09 06:53:01 +0000316VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
bellard40293e52008-01-31 11:32:10 +0000317CPPFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
318
319ifdef CONFIG_STATIC
320LDFLAGS+=-static
321endif
322
323ifeq ($(ARCH),i386)
324ifdef TARGET_GPROF
325USE_I386_LD=y
326endif
327ifdef CONFIG_STATIC
328USE_I386_LD=y
329endif
330ifdef USE_I386_LD
331LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
332else
333# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
334# that the kernel ELF loader considers as an executable. I think this
335# is the simplest way to make it self virtualizable!
336LDFLAGS+=-Wl,-shared
337endif
338endif
339
340ifeq ($(ARCH),x86_64)
341LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
342endif
343
344ifeq ($(ARCH),ppc)
345LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
346endif
347
malc810260a2008-07-23 19:17:46 +0000348ifeq ($(ARCH),ppc64)
349LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
350endif
351
bellard40293e52008-01-31 11:32:10 +0000352ifeq ($(ARCH),s390)
353LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
354endif
355
356ifeq ($(ARCH),sparc)
357# -static is used to avoid g1/g3 usage by the dynamic linker
358LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
359endif
360
361ifeq ($(ARCH),sparc64)
362LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
363endif
364
365ifeq ($(ARCH),alpha)
366LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
367endif
368
369ifeq ($(ARCH),ia64)
370LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
371endif
372
373ifeq ($(ARCH),arm)
374LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
375endif
376
377ifeq ($(ARCH),m68k)
378LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
379endif
380
381ifeq ($(ARCH),mips)
382ifeq ($(WORDS_BIGENDIAN),yes)
383LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
384else
385LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
386endif
387endif
388
389ifeq ($(ARCH),mips64)
390ifeq ($(WORDS_BIGENDIAN),yes)
391LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
392else
393LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
394endif
395endif
396
pbrook17e23772008-06-09 13:47:45 +0000397OBJS= main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
bellard40293e52008-01-31 11:32:10 +0000398 elfload.o linuxload.o uaccess.o
399LIBS+= $(AIOLIBS)
400ifdef TARGET_HAS_BFLT
401OBJS+= flatload.o
402endif
403ifdef TARGET_HAS_ELFLOAD32
404OBJS+= elfload32.o
405elfload32.o: elfload.c
406endif
407
408ifeq ($(TARGET_ARCH), i386)
409OBJS+= vm86.o
410endif
411ifeq ($(TARGET_ARCH), arm)
412OBJS+=nwfpe/fpa11.o nwfpe/fpa11_cpdo.o \
413nwfpe/fpa11_cpdt.o nwfpe/fpa11_cprt.o nwfpe/fpopcode.o nwfpe/single_cpdo.o \
414 nwfpe/double_cpdo.o nwfpe/extended_cpdo.o arm-semi.o
415endif
416ifeq ($(TARGET_ARCH), m68k)
417OBJS+= m68k-sim.o m68k-semi.o
418endif
419
bellard1fddef42005-04-17 19:16:13 +0000420ifdef CONFIG_GDBSTUB
pbrook56aebc82008-10-11 17:55:29 +0000421OBJS+=gdbstub.o gdbstub-xml.o
bellard1fddef42005-04-17 19:16:13 +0000422endif
bellard626df762003-08-10 21:39:31 +0000423
bellard40293e52008-01-31 11:32:10 +0000424OBJS+= libqemu.a
bellard626df762003-08-10 21:39:31 +0000425
bellard40293e52008-01-31 11:32:10 +0000426# Note: this is a workaround. The real fix is to avoid compiling
427# cpu_signal_handler() in cpu-exec.c.
428signal.o: signal.c
429 $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
430
pbrookcec7d0b2008-05-28 16:44:57 +0000431$(QEMU_PROG): $(OBJS) ../libqemu_user.a
bellard40293e52008-01-31 11:32:10 +0000432 $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
bellard626df762003-08-10 21:39:31 +0000433ifeq ($(ARCH),alpha)
434# Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of
435# the address space (31 bit so sign extending doesn't matter)
436 echo -ne '\001\000\000\000' | dd of=qemu bs=1 seek=48 count=4 conv=notrunc
437endif
438
bellard40293e52008-01-31 11:32:10 +0000439endif #CONFIG_LINUX_USER
440
441#########################################################
442# Darwin user emulator target
443
444ifdef CONFIG_DARWIN_USER
445
446VPATH+=:$(SRC_PATH)/darwin-user
447CPPFLAGS+=-I$(SRC_PATH)/darwin-user -I$(SRC_PATH)/darwin-user/$(TARGET_ARCH)
448
449# Leave some space for the regular program loading zone
450LDFLAGS+=-Wl,-segaddr,__STD_PROG_ZONE,0x1000 -image_base 0x0e000000
451
452LIBS+=-lmx
453
pbrook17e23772008-06-09 13:47:45 +0000454OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o
bellard40293e52008-01-31 11:32:10 +0000455
456OBJS+= libqemu.a
457
458ifdef CONFIG_GDBSTUB
pbrook56aebc82008-10-11 17:55:29 +0000459OBJS+=gdbstub.o gdbstub-xml.o
ths223d4672007-12-15 17:28:36 +0000460endif
bellarda541f292004-04-12 20:39:29 +0000461
bellard40293e52008-01-31 11:32:10 +0000462# Note: this is a workaround. The real fix is to avoid compiling
463# cpu_signal_handler() in cpu-exec.c.
464signal.o: signal.c
465 $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
466
467$(QEMU_PROG): $(OBJS)
468 $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
469
470endif #CONFIG_DARWIN_USER
471
472#########################################################
blueswir184778502008-10-26 20:33:16 +0000473# BSD user emulator target
474
475ifdef CONFIG_BSD_USER
476
477VPATH+=:$(SRC_PATH)/bsd-user
478CPPFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH)
479
480ifdef CONFIG_STATIC
481LDFLAGS+=-static
482endif
483
484ifeq ($(ARCH),i386)
485ifdef TARGET_GPROF
486USE_I386_LD=y
487endif
488ifdef CONFIG_STATIC
489USE_I386_LD=y
490endif
491ifdef USE_I386_LD
492LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
493else
494# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
495# that the kernel ELF loader considers as an executable. I think this
496# is the simplest way to make it self virtualizable!
497LDFLAGS+=-Wl,-shared
498endif
499endif
500
501ifeq ($(ARCH),x86_64)
502LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
503endif
504
505ifeq ($(ARCH),ppc)
506LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
507endif
508
509ifeq ($(ARCH),ppc64)
510LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
511endif
512
513ifeq ($(ARCH),s390)
514LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
515endif
516
517ifeq ($(ARCH),sparc)
518# -static is used to avoid g1/g3 usage by the dynamic linker
519LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
520endif
521
522ifeq ($(ARCH),sparc64)
523LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
524endif
525
526ifeq ($(ARCH),alpha)
527LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
528endif
529
530ifeq ($(ARCH),ia64)
531LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
532endif
533
534ifeq ($(ARCH),arm)
535LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
536endif
537
538ifeq ($(ARCH),m68k)
539LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
540endif
541
542ifeq ($(ARCH),mips)
543ifeq ($(WORDS_BIGENDIAN),yes)
544LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
545else
546LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
547endif
548endif
549
550ifeq ($(ARCH),mips64)
551ifeq ($(WORDS_BIGENDIAN),yes)
552LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
553else
554LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
555endif
556endif
557
558OBJS= main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o
559OBJS+= uaccess.o
560
561OBJS+= libqemu.a
562
563ifdef CONFIG_GDBSTUB
564OBJS+=gdbstub.o
565endif
566
567# Note: this is a workaround. The real fix is to avoid compiling
568# cpu_signal_handler() in cpu-exec.c.
569signal.o: signal.c
570 $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
571
572$(QEMU_PROG): $(OBJS) ../libqemu_user.a
573 $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
574
575endif #CONFIG_BSD_USER
576
577#########################################################
bellard40293e52008-01-31 11:32:10 +0000578# System emulator target
579ifndef CONFIG_USER_ONLY
580
aliguori48c64362008-07-29 19:40:04 +0000581OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o net-checksum.o
aliguori34c9dd82008-10-13 03:14:31 +0000582OBJS+=fw_cfg.o aio.o buffered_file.o migration.o migration-tcp.o
bellard40293e52008-01-31 11:32:10 +0000583ifdef CONFIG_WIN32
584OBJS+=block-raw-win32.o
585else
aliguoria3392f92008-09-11 18:00:19 +0000586OBJS+=block-raw-posix.o
587endif
588
bellard40293e52008-01-31 11:32:10 +0000589LIBS+=-lz
bellard1d14ffa2005-10-30 18:58:22 +0000590ifdef CONFIG_ALSA
bellard1d14ffa2005-10-30 18:58:22 +0000591LIBS += -lasound
592endif
balrogca9cc282008-01-14 04:24:29 +0000593ifdef CONFIG_ESD
594LIBS += -lesd
595endif
malcb8e59f12008-07-02 21:03:08 +0000596ifdef CONFIG_PA
597LIBS += -lpulse-simple
598endif
bellard1d14ffa2005-10-30 18:58:22 +0000599ifdef CONFIG_DSOUND
bellard1d14ffa2005-10-30 18:58:22 +0000600LIBS += -lole32 -ldxguid
601endif
bellard102a52e2004-11-14 19:57:29 +0000602ifdef CONFIG_FMOD
bellard102a52e2004-11-14 19:57:29 +0000603LIBS += $(CONFIG_FMOD_LIB)
bellard85571bc2004-11-07 18:04:02 +0000604endif
blueswir12f6a1ab2008-08-21 18:00:53 +0000605ifdef CONFIG_OSS
606LIBS += $(CONFIG_OSS_LIB)
607endif
bellard4fb240a2007-11-07 19:24:02 +0000608
609SOUND_HW = sb16.o es1370.o
balrogca9cc282008-01-14 04:24:29 +0000610ifdef CONFIG_AC97
611SOUND_HW += ac97.o
612endif
bellard1d14ffa2005-10-30 18:58:22 +0000613ifdef CONFIG_ADLIB
614SOUND_HW += fmopl.o adlib.o
615endif
balrog423d65f2008-01-14 22:09:11 +0000616ifdef CONFIG_GUS
617SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
618endif
malccc53d262008-06-13 10:48:22 +0000619ifdef CONFIG_CS4231A
620SOUND_HW += cs4231a.o
621endif
bellard85571bc2004-11-07 18:04:02 +0000622
ths8d5d2d42007-08-25 01:37:51 +0000623ifdef CONFIG_VNC_TLS
624CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
625LIBS += $(CONFIG_VNC_TLS_LIBS)
626endif
627
balrogfb599c92008-09-28 23:49:55 +0000628ifdef CONFIG_BLUEZ
629LIBS += $(CONFIG_BLUEZ_LIBS)
630endif
631
pbrook2e5d83b2006-05-25 23:58:51 +0000632# SCSI layer
blueswir18b17de82008-03-02 08:48:47 +0000633OBJS+= lsi53c895a.o esp.o
pbrook2e5d83b2006-05-25 23:58:51 +0000634
bellarda594cfb2005-11-06 16:13:29 +0000635# USB layer
bellard40293e52008-01-31 11:32:10 +0000636OBJS+= usb-ohci.o
bellarda594cfb2005-11-06 16:13:29 +0000637
ths663e8e52007-04-02 12:35:34 +0000638# EEPROM emulation
bellard40293e52008-01-31 11:32:10 +0000639OBJS += eeprom93xx.o
ths663e8e52007-04-02 12:35:34 +0000640
pbrooka41b2ff2006-02-05 04:14:41 +0000641# PCI network cards
bellard40293e52008-01-31 11:32:10 +0000642OBJS += eepro100.o
643OBJS += ne2000.o
644OBJS += pcnet.o
645OBJS += rtl8139.o
balrog7c23b892008-02-03 02:20:18 +0000646OBJS += e1000.o
pbrooka41b2ff2006-02-05 04:14:41 +0000647
bellard0b0babc2005-01-03 23:38:40 +0000648ifeq ($(TARGET_BASE_ARCH), i386)
bellarda541f292004-04-12 20:39:29 +0000649# Hardware support
bellard40293e52008-01-31 11:32:10 +0000650OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o
651OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
652OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o
653OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o
balrogb00052e2007-04-30 02:22:06 +0000654CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard67b915a2004-03-31 23:37:16 +0000655endif
bellarda2458622005-07-23 22:39:53 +0000656ifeq ($(TARGET_BASE_ARCH), ppc)
balrogb00052e2007-04-30 02:22:06 +0000657CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
j_mayer3cbee152007-10-28 23:42:18 +0000658# shared objects
bellard40293e52008-01-31 11:32:10 +0000659OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
j_mayer3cbee152007-10-28 23:42:18 +0000660# PREP target
bellard40293e52008-01-31 11:32:10 +0000661OBJS+= pckbd.o ps2.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o
662OBJS+= prep_pci.o ppc_prep.o
j_mayer3cbee152007-10-28 23:42:18 +0000663# Mac shared devices
bellard40293e52008-01-31 11:32:10 +0000664OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
j_mayer3cbee152007-10-28 23:42:18 +0000665# OldWorld PowerMac
bellard40293e52008-01-31 11:32:10 +0000666OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
j_mayer3cbee152007-10-28 23:42:18 +0000667# NewWorld PowerMac
bellard40293e52008-01-31 11:32:10 +0000668OBJS+= unin_pci.o ppc_chrp.o
j_mayer3cbee152007-10-28 23:42:18 +0000669# PowerPC 4xx boards
bellard40293e52008-01-31 11:32:10 +0000670OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc405_uc.o ppc405_boards.o
bellarda541f292004-04-12 20:39:29 +0000671endif
thsfbe4f652007-04-01 11:16:48 +0000672ifeq ($(TARGET_BASE_ARCH), mips)
aurel32c1711482008-04-08 19:51:06 +0000673OBJS+= mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
aurel324ce7ff62008-04-07 19:47:14 +0000674OBJS+= mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o rc4030.o
675OBJS+= g364fb.o jazz_led.o
bellard40293e52008-01-31 11:32:10 +0000676OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
aurel324ce7ff62008-04-07 19:47:14 +0000677OBJS+= piix_pci.o parallel.o cirrus_vga.o pcspk.o $(SOUND_HW)
bellard40293e52008-01-31 11:32:10 +0000678OBJS+= mipsnet.o
679OBJS+= pflash_cfi01.o
aurel324ce7ff62008-04-07 19:47:14 +0000680CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
bellard6af0bf92005-07-02 14:58:51 +0000681endif
thse7daa602007-10-08 13:38:27 +0000682ifeq ($(TARGET_BASE_ARCH), cris)
bellard40293e52008-01-31 11:32:10 +0000683OBJS+= etraxfs.o
edgar_igl48318012008-05-11 15:07:19 +0000684OBJS+= etraxfs_dma.o
edgar_igle62b5b12008-03-14 01:04:24 +0000685OBJS+= etraxfs_pic.o
edgar_igl48318012008-05-11 15:07:19 +0000686OBJS+= etraxfs_eth.o
bellard40293e52008-01-31 11:32:10 +0000687OBJS+= etraxfs_timer.o
688OBJS+= etraxfs_ser.o
edgar_igle62b5b12008-03-14 01:04:24 +0000689
690OBJS+= ptimer.o
edgar_igl48318012008-05-11 15:07:19 +0000691OBJS+= pflash_cfi02.o
thse7daa602007-10-08 13:38:27 +0000692endif
bellard64b3ab22005-01-30 22:43:42 +0000693ifeq ($(TARGET_BASE_ARCH), sparc)
bellard34751872005-07-02 14:31:34 +0000694ifeq ($(TARGET_ARCH), sparc64)
bellard40293e52008-01-31 11:32:10 +0000695OBJS+= sun4u.o ide.o pckbd.o ps2.o vga.o apb_pci.o
696OBJS+= fdc.o mc146818rtc.o serial.o m48t59.o
697OBJS+= cirrus_vga.o parallel.o ptimer.o
bellard34751872005-07-02 14:31:34 +0000698else
bellard40293e52008-01-31 11:32:10 +0000699OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
blueswir18b17de82008-03-02 08:48:47 +0000700OBJS+= slavio_timer.o slavio_serial.o slavio_misc.o fdc.o sparc32_dma.o
bellard40293e52008-01-31 11:32:10 +0000701OBJS+= cs4231.o ptimer.o eccmemctl.o sbi.o sun4c_intctl.o
bellard34751872005-07-02 14:31:34 +0000702endif
bellarde95c8d52004-09-30 22:22:08 +0000703endif
bellardb5ff1b32005-11-26 10:38:39 +0000704ifeq ($(TARGET_BASE_ARCH), arm)
bellard40293e52008-01-31 11:32:10 +0000705OBJS+= integratorcp.o versatilepb.o ps2.o smc91c111.o arm_pic.o arm_timer.o
706OBJS+= arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
707OBJS+= versatile_pci.o ptimer.o
708OBJS+= realview_gic.o realview.o arm_sysctl.o mpcore.o
709OBJS+= armv7m.o armv7m_nvic.o stellaris.o pl022.o stellaris_enet.o
710OBJS+= pl061.o
711OBJS+= arm-semi.o
712OBJS+= pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o
713OBJS+= pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o pxa2xx_keypad.o
714OBJS+= pflash_cfi01.o gumstix.o
balrog88d2c952008-06-09 00:03:13 +0000715OBJS+= zaurus.o ide.o serial.o nand.o ecc.o spitz.o tosa.o tc6393xb.o
balrogb4e31042008-03-06 21:07:38 +0000716OBJS+= omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
balrogafbb5192008-07-21 20:40:22 +0000717OBJS+= omap2.o omap_dss.o soc_dma.o
bellard40293e52008-01-31 11:32:10 +0000718OBJS+= palm.o tsc210x.o
balrog942ac052008-04-22 03:15:10 +0000719OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
balrog58a26b42008-09-28 23:34:13 +0000720OBJS+= tsc2005.o bt-hci-csr.o
bellard40293e52008-01-31 11:32:10 +0000721OBJS+= mst_fpga.o mainstone.o
balrog24859b62008-04-24 19:21:53 +0000722OBJS+= musicpal.o pflash_cfi02.o
balrog5a1237c2007-05-02 02:11:51 +0000723CPPFLAGS += -DHAS_AUDIO
bellardb5ff1b32005-11-26 10:38:39 +0000724endif
bellardfdf9b3e2006-04-27 21:07:38 +0000725ifeq ($(TARGET_BASE_ARCH), sh4)
bellard40293e52008-01-31 11:32:10 +0000726OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
727OBJS+= sh_timer.o ptimer.o sh_serial.o sh_intc.o
bellardfdf9b3e2006-04-27 21:07:38 +0000728endif
pbrook06338792007-05-23 19:58:11 +0000729ifeq ($(TARGET_BASE_ARCH), m68k)
bellard40293e52008-01-31 11:32:10 +0000730OBJS+= an5206.o mcf5206.o ptimer.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
731OBJS+= m68k-semi.o dummy_m68k.o
pbrook06338792007-05-23 19:58:11 +0000732endif
bellarda541f292004-04-12 20:39:29 +0000733ifdef CONFIG_GDBSTUB
pbrook56aebc82008-10-11 17:55:29 +0000734OBJS+=gdbstub.o gdbstub-xml.o
bellard728c9fd2004-01-05 00:08:14 +0000735endif
bellard5b0753e2005-03-01 21:37:28 +0000736ifdef CONFIG_COCOA
bellard1d14ffa2005-10-30 18:58:22 +0000737COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
738ifdef CONFIG_COREAUDIO
739COCOA_LIBS+=-framework CoreAudio
740endif
bellard5b0753e2005-03-01 21:37:28 +0000741endif
bellard7c1f25b2004-04-22 00:02:08 +0000742ifdef CONFIG_SLIRP
ths6f30fa82007-01-05 01:00:47 +0000743CPPFLAGS+=-I$(SRC_PATH)/slirp
bellard626df762003-08-10 21:39:31 +0000744endif
745
bellard40293e52008-01-31 11:32:10 +0000746LIBS+=$(AIOLIBS)
bellardc321f672003-10-30 01:18:42 +0000747# specific flags are needed for non soft mmu emulator
bellardc321f672003-10-30 01:18:42 +0000748ifdef CONFIG_STATIC
bellard40293e52008-01-31 11:32:10 +0000749LDFLAGS+=-static
bellardde5eaa62003-11-16 23:18:17 +0000750endif
bellard83fb7ad2004-07-05 21:25:26 +0000751ifndef CONFIG_DARWIN
bellard11d9f692004-04-02 20:55:59 +0000752ifndef CONFIG_WIN32
bellardec530c82006-04-25 22:36:06 +0000753ifndef CONFIG_SOLARIS
bellard40293e52008-01-31 11:32:10 +0000754LIBS+=-lutil
bellard11d9f692004-04-02 20:55:59 +0000755endif
bellard83fb7ad2004-07-05 21:25:26 +0000756endif
bellardec530c82006-04-25 22:36:06 +0000757endif
bellarde3086fb2005-02-10 21:48:51 +0000758ifdef TARGET_GPROF
bellard40293e52008-01-31 11:32:10 +0000759vl.o: CFLAGS+=-p
760LDFLAGS+=-p
bellarde3086fb2005-02-10 21:48:51 +0000761endif
bellardc321f672003-10-30 01:18:42 +0000762
bellardb8076a72005-04-07 22:20:31 +0000763ifeq ($(ARCH),ia64)
bellard40293e52008-01-31 11:32:10 +0000764LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
ths8a0ef212007-11-18 22:34:46 +0000765endif
766
bellard1d14ffa2005-10-30 18:58:22 +0000767ifdef CONFIG_WIN32
768SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
769endif
770
bellard40293e52008-01-31 11:32:10 +0000771# profiling code
772ifdef TARGET_GPROF
773LDFLAGS+=-p
774main.o: CFLAGS+=-p
bellard6e1b3e42006-08-17 17:41:26 +0000775endif
776
bellard40293e52008-01-31 11:32:10 +0000777$(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a
ths8a16d272008-07-19 09:56:24 +0000778 $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS)
bellard626df762003-08-10 21:39:31 +0000779
bellard40293e52008-01-31 11:32:10 +0000780endif # !CONFIG_USER_ONLY
bellard00a67ba2006-10-28 12:19:07 +0000781
pbrook56aebc82008-10-11 17:55:29 +0000782gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
783 rm -f $@
784ifeq ($(TARGET_XML_FILES),)
785 echo > $@
786else
787 $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES)
788endif
789
bellard626df762003-08-10 21:39:31 +0000790%.o: %.c
bellard40293e52008-01-31 11:32:10 +0000791 $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
bellard626df762003-08-10 21:39:31 +0000792
bellardf72b5192004-02-16 21:55:35 +0000793%.o: %.S
ths6f30fa82007-01-05 01:00:47 +0000794 $(CC) $(CPPFLAGS) -c -o $@ $<
bellardf72b5192004-02-16 21:55:35 +0000795
bellard626df762003-08-10 21:39:31 +0000796clean:
bellard57fec1f2008-02-01 10:50:11 +0000797 rm -f *.o *.a *~ $(PROGS) gen-op.h dyngen-opc.h op.h nwfpe/*.o fpu/*.o
798 rm -f *.d */*.d tcg/*.o
bellard1e43adf2003-09-30 20:54:24 +0000799
ths5fafdf22007-09-16 21:08:06 +0000800install: all
bellard9b14bb02004-03-26 22:43:34 +0000801ifneq ($(PROGS),)
pbrook6a882642006-04-17 13:57:12 +0000802 $(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
bellard9b14bb02004-03-26 22:43:34 +0000803endif
bellard626df762003-08-10 21:39:31 +0000804
j_mayer2f96c282007-10-28 13:07:12 +0000805# Include automatically generated dependency files
806-include $(wildcard *.d */*.d)