Makefile 7.8 KB
Newer Older
1 2
# Makefile for QEMU.

P
pbrook 已提交
3
include config-host.mak
B
bellard 已提交
4

5
.PHONY: all clean distclean dvi info install install-doc tar tarbin \
B
bellard 已提交
6
	speed test html dvi info
7

P
pbrook 已提交
8 9
VPATH=$(SRC_PATH):$(SRC_PATH)/hw

10 11 12
BASE_CFLAGS=
BASE_LDFLAGS=

13 14 15
BASE_CFLAGS += $(OS_CFLAGS) $(ARCH_CFLAGS)
BASE_LDFLAGS += $(OS_LDFLAGS) $(ARCH_LDFLAGS)

B
bellard 已提交
16 17
CPPFLAGS += -I. -I$(SRC_PATH) -MMD -MP
CPPFLAGS += -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
B
bellard 已提交
18
LIBS=
B
bellard 已提交
19
ifdef CONFIG_STATIC
20
BASE_LDFLAGS += -static
B
bellard 已提交
21
endif
22
ifdef BUILD_DOCS
B
bellard 已提交
23
DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1
24 25 26
else
DOCS=
endif
B
bellard 已提交
27

28
LIBS+=$(AIOLIBS)
B
bellard 已提交
29

P
pbrook 已提交
30
all: $(TOOLS) $(DOCS) recurse-all 
P
pbrook 已提交
31

P
pbrook 已提交
32
subdir-%: dyngen$(EXESUF) libqemu_common.a
P
pbrook 已提交
33 34 35
	$(MAKE) -C $(subst subdir-,,$@) all

recurse-all: $(patsubst %,subdir-%, $(TARGET_DIRS))
B
bellard 已提交
36

P
pbrook 已提交
37 38 39 40 41 42 43 44
#######################################################################
# BLOCK_OBJS is code used by both qemu system emulation and qemu-img

BLOCK_OBJS=cutils.o
BLOCK_OBJS+=block-cow.o block-qcow.o aes.o block-vmdk.o block-cloop.o
BLOCK_OBJS+=block-dmg.o block-bochs.o block-vpc.o block-vvfat.o
BLOCK_OBJS+=block-qcow2.o block-parallels.o

B
bellard 已提交
45
######################################################################
P
pbrook 已提交
46
# libqemu_common.a: Target indepedent part of system emulation. The
B
bellard 已提交
47 48 49
# long term path is to suppress *all* target specific code in case of
# system emulation, i.e. a single QEMU executable should support all
# CPUs and machines.
50

P
pbrook 已提交
51
OBJS=$(BLOCK_OBJS)
P
pbrook 已提交
52
OBJS+=readline.o console.o
P
pbrook 已提交
53
OBJS+=block.o
B
bellard 已提交
54

P
pbrook 已提交
55 56
OBJS+=irq.o
OBJS+=i2c.o smbus.o smbus_eeprom.o max7310.o max111x.o wm8750.o
P
pbrook 已提交
57
OBJS+=ssd0303.o ssd0323.o ads7846.o stellaris_input.o
P
pbrook 已提交
58
OBJS+=scsi-disk.o cdrom.o
59
OBJS+=scsi-generic.o
P
pbrook 已提交
60
OBJS+=usb.o usb-hub.o usb-linux.o usb-hid.o usb-msd.o usb-wacom.o
P
pbrook 已提交
61
OBJS+=sd.o ssi-sd.o
P
pbrook 已提交
62

B
bellard 已提交
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
ifdef CONFIG_WIN32
OBJS+=tap-win32.o
endif

AUDIO_OBJS = audio.o noaudio.o wavaudio.o mixeng.o
ifdef CONFIG_SDL
AUDIO_OBJS += sdlaudio.o
endif
ifdef CONFIG_OSS
AUDIO_OBJS += ossaudio.o
endif
ifdef CONFIG_COREAUDIO
AUDIO_OBJS += coreaudio.o
endif
ifdef CONFIG_ALSA
AUDIO_OBJS += alsaaudio.o
endif
ifdef CONFIG_DSOUND
AUDIO_OBJS += dsoundaudio.o
endif
ifdef CONFIG_FMOD
AUDIO_OBJS += fmodaudio.o
audio/audio.o audio/fmodaudio.o: CPPFLAGS := -I$(CONFIG_FMOD_INC) $(CPPFLAGS)
endif
AUDIO_OBJS+= wavcapture.o
OBJS+=$(addprefix audio/, $(AUDIO_OBJS))

ifdef CONFIG_SDL
OBJS+=sdl.o x_keymap.o
endif
OBJS+=vnc.o d3des.o

ifdef CONFIG_COCOA
OBJS+=cocoa.o
endif

ifdef CONFIG_SLIRP
CPPFLAGS+=-I$(SRC_PATH)/slirp
SLIRP_OBJS=cksum.o if.o ip_icmp.o ip_input.o ip_output.o \
slirp.o mbuf.o misc.o sbuf.o socket.o tcp_input.o tcp_output.o \
tcp_subr.o tcp_timer.o udp.o bootp.o debug.o tftp.o
OBJS+=$(addprefix slirp/, $(SLIRP_OBJS))
endif

cocoa.o: cocoa.m
	$(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<

sdl.o: sdl.c keymaps.c sdl_keysym.h
	$(CC) $(CFLAGS) $(CPPFLAGS) $(SDL_CFLAGS) $(BASE_CFLAGS) -c -o $@ $<

vnc.o: vnc.c keymaps.c sdl_keysym.h vnchextile.h d3des.c d3des.h
114
	$(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) $(CONFIG_VNC_TLS_CFLAGS) -c -o $@ $<
B
bellard 已提交
115 116 117 118 119 120 121 122

audio/sdlaudio.o: audio/sdlaudio.c
	$(CC) $(CFLAGS) $(CPPFLAGS) $(SDL_CFLAGS) $(BASE_CFLAGS) -c -o $@ $<

libqemu_common.a: $(OBJS)
	rm -f $@ 
	$(AR) rcs $@ $(OBJS)

123 124 125 126 127 128 129
QEMU_IMG_BLOCK_OBJS = $(BLOCK_OBJS)
ifdef CONFIG_WIN32
QEMU_IMG_BLOCK_OBJS += qemu-img-block-raw-win32.o
else
QEMU_IMG_BLOCK_OBJS += qemu-img-block-raw-posix.o
endif

B
bellard 已提交
130 131
######################################################################

132
qemu-img$(EXESUF): qemu-img.o qemu-img-block.o $(QEMU_IMG_BLOCK_OBJS)
B
bellard 已提交
133 134
	$(CC) $(LDFLAGS) $(BASE_LDFLAGS) -o $@ $^ -lz $(LIBS)

P
pbrook 已提交
135 136 137
qemu-img-%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) -DQEMU_IMG $(BASE_CFLAGS) -c -o $@ $<

B
bellard 已提交
138 139 140 141
%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<

# dyngen host tool
B
bellard 已提交
142
dyngen$(EXESUF): dyngen.c
143
	$(HOST_CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -o $@ $^
144 145

clean:
146
# avoid old build problems by removing potentially incorrect old files
147
	rm -f config.mak config.h op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
B
bellard 已提交
148 149
	rm -f *.o *.d *.a $(TOOLS) dyngen$(EXESUF) TAGS cscope.* *.pod *~ */*~
	rm -f slirp/*.o slirp/*.d audio/*.o audio/*.d
B
bellard 已提交
150
	$(MAKE) -C tests clean
B
bellard 已提交
151
	for d in $(TARGET_DIRS); do \
B
bellard 已提交
152
	$(MAKE) -C $$d $@ || exit 1 ; \
B
bellard 已提交
153
        done
154

B
bellard 已提交
155
distclean: clean
156
	rm -f config-host.mak config-host.h $(DOCS)
157
	rm -f qemu-{doc,tech}.{info,aux,cp,dvi,fn,info,ky,log,pg,toc,tp,vr}
B
updated  
bellard 已提交
158
	for d in $(TARGET_DIRS); do \
B
bellard 已提交
159
	rm -rf $$d || exit 1 ; \
B
updated  
bellard 已提交
160
        done
B
bellard 已提交
161

B
bellard 已提交
162 163 164 165
KEYMAPS=da     en-gb  et  fr     fr-ch  is  lt  modifiers  no  pt-br  sv \
ar      de     en-us  fi  fr-be  hr     it  lv  nl         pl  ru     th \
common  de-ch  es     fo  fr-ca  hu     ja  mk  nl-be      pt  sl     tr

166 167 168 169 170 171 172 173 174
install-doc: $(DOCS)
	mkdir -p "$(DESTDIR)$(docdir)"
	$(INSTALL) -m 644 qemu-doc.html  qemu-tech.html "$(DESTDIR)$(docdir)"
ifndef CONFIG_WIN32
	mkdir -p "$(DESTDIR)$(mandir)/man1"
	$(INSTALL) qemu.1 qemu-img.1 "$(DESTDIR)$(mandir)/man1"
endif

install: all $(if $(BUILD_DOCS),install-doc)
P
pbrook 已提交
175
	mkdir -p "$(DESTDIR)$(bindir)"
176
ifneq ($(TOOLS),)
177
	$(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(bindir)"
178
endif
P
pbrook 已提交
179
	mkdir -p "$(DESTDIR)$(datadir)"
P
pbrook 已提交
180
	for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
181
		video.x openbios-sparc32 pxe-ne2k_pci.bin \
182
		pxe-rtl8139.bin pxe-pcnet.bin; do \
183
		$(INSTALL) -m 644 $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(datadir)"; \
P
pbrook 已提交
184
	done
B
bellard 已提交
185
ifndef CONFIG_WIN32
P
pbrook 已提交
186
	mkdir -p "$(DESTDIR)$(datadir)/keymaps"
P
pbrook 已提交
187
	for x in $(KEYMAPS); do \
188
		$(INSTALL) -m 644 $(SRC_PATH)/keymaps/$$x "$(DESTDIR)$(datadir)/keymaps"; \
P
pbrook 已提交
189
	done
B
bellard 已提交
190
endif
B
bellard 已提交
191
	for d in $(TARGET_DIRS); do \
B
bellard 已提交
192
	$(MAKE) -C $$d $@ || exit 1 ; \
B
bellard 已提交
193
        done
B
bellard 已提交
194

B
bellard 已提交
195
# various test targets
B
bellard 已提交
196
test speed: all
B
bellard 已提交
197
	$(MAKE) -C tests $@
198

199
TAGS:
B
bellard 已提交
200
	etags *.[ch] tests/*.[ch]
201

B
bellard 已提交
202 203 204 205 206
cscope:
	rm -f ./cscope.*
	find . -name "*.[ch]" -print > ./cscope.files
	cscope -b

B
bellard 已提交
207
# documentation
B
bellard 已提交
208
%.html: %.texi
B
bellard 已提交
209 210
	texi2html -monolithic -number $<

B
bellard 已提交
211 212 213 214 215 216
%.info: %.texi
	makeinfo $< -o $@

%.dvi: %.texi
	texi2dvi $<

217
qemu.1: qemu-doc.texi
P
pbrook 已提交
218
	$(SRC_PATH)/texi2pod.pl $< qemu.pod
219 220
	pod2man --section=1 --center=" " --release=" " qemu.pod > $@

B
bellard 已提交
221
qemu-img.1: qemu-img.texi
P
pbrook 已提交
222
	$(SRC_PATH)/texi2pod.pl $< qemu-img.pod
B
bellard 已提交
223 224
	pod2man --section=1 --center=" " --release=" " qemu-img.pod > $@

225 226 227 228 229 230
info: qemu-doc.info qemu-tech.info

dvi: qemu-doc.dvi qemu-tech.dvi

html: qemu-doc.html qemu-tech.html

231 232
VERSION ?= $(shell cat VERSION)
FILE = qemu-$(VERSION)
B
bellard 已提交
233

234
# tar release (use 'make -k tar' on a checkouted tree)
B
bellard 已提交
235 236
tar:
	rm -rf /tmp/$(FILE)
237
	cp -r . /tmp/$(FILE)
B
bellard 已提交
238
	( cd /tmp ; tar zcvf ~/$(FILE).tar.gz $(FILE) --exclude CVS )
B
bellard 已提交
239 240
	rm -rf /tmp/$(FILE)

B
bellard 已提交
241
# generate a binary distribution
242
tarbin:
T
ths 已提交
243
	( cd / ; tar zcvf ~/qemu-$(VERSION)-$(ARCH).tar.gz \
B
bellard 已提交
244
	$(bindir)/qemu \
B
bellard 已提交
245
	$(bindir)/qemu-system-ppc \
246 247
	$(bindir)/qemu-system-ppc64 \
	$(bindir)/qemu-system-ppcemb \
B
bellard 已提交
248
	$(bindir)/qemu-system-sparc \
B
bellard 已提交
249
	$(bindir)/qemu-system-x86_64 \
B
bellard 已提交
250
	$(bindir)/qemu-system-mips \
251
	$(bindir)/qemu-system-mipsel \
T
ths 已提交
252 253
	$(bindir)/qemu-system-mips64 \
	$(bindir)/qemu-system-mips64el \
B
update  
bellard 已提交
254
	$(bindir)/qemu-system-arm \
T
ths 已提交
255 256
	$(bindir)/qemu-system-m68k \
	$(bindir)/qemu-system-sh4 \
257
	$(bindir)/qemu-system-sh4eb \
B
bellard 已提交
258 259
	$(bindir)/qemu-i386 \
        $(bindir)/qemu-arm \
B
update  
bellard 已提交
260
        $(bindir)/qemu-armeb \
B
bellard 已提交
261 262
        $(bindir)/qemu-sparc \
        $(bindir)/qemu-ppc \
263
        $(bindir)/qemu-ppc64 \
B
update  
bellard 已提交
264 265
        $(bindir)/qemu-mips \
        $(bindir)/qemu-mipsel \
266 267 268 269
        $(bindir)/qemu-mipsn32 \
        $(bindir)/qemu-mipsn32el \
        $(bindir)/qemu-mips64 \
        $(bindir)/qemu-mips64el \
270
        $(bindir)/qemu-alpha \
T
ths 已提交
271 272
        $(bindir)/qemu-m68k \
        $(bindir)/qemu-sh4 \
273
        $(bindir)/qemu-sh4eb \
B
bellard 已提交
274
        $(bindir)/qemu-img \
B
bellard 已提交
275 276
	$(datadir)/bios.bin \
	$(datadir)/vgabios.bin \
B
bellard 已提交
277
	$(datadir)/vgabios-cirrus.bin \
B
bellard 已提交
278
	$(datadir)/ppc_rom.bin \
B
bellard 已提交
279
	$(datadir)/video.x \
280
	$(datadir)/openbios-sparc32 \
B
update  
bellard 已提交
281 282 283
        $(datadir)/pxe-ne2k_pci.bin \
	$(datadir)/pxe-rtl8139.bin \
        $(datadir)/pxe-pcnet.bin \
B
bellard 已提交
284 285
	$(docdir)/qemu-doc.html \
	$(docdir)/qemu-tech.html \
B
bellard 已提交
286
	$(mandir)/man1/qemu.1 $(mandir)/man1/qemu-img.1 )
287

288 289 290
ifneq ($(wildcard .depend),)
include .depend
endif
B
bellard 已提交
291 292 293

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