Makefile 7.7 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 59
OBJS+=scsi-disk.o cdrom.o
OBJS+=usb.o usb-hub.o usb-linux.o usb-hid.o usb-msd.o usb-wacom.o
P
pbrook 已提交
60
OBJS+=sd.o ssi-sd.o
P
pbrook 已提交
61

B
bellard 已提交
62 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
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
113
	$(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) $(CONFIG_VNC_TLS_CFLAGS) -c -o $@ $<
B
bellard 已提交
114 115 116 117 118 119 120 121

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

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

122 123 124 125 126 127 128
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 已提交
129 130
######################################################################

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

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

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

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

clean:
145
# avoid old build problems by removing potentially incorrect old files
146
	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 已提交
147 148
	rm -f *.o *.d *.a $(TOOLS) dyngen$(EXESUF) TAGS cscope.* *.pod *~ */*~
	rm -f slirp/*.o slirp/*.d audio/*.o audio/*.d
B
bellard 已提交
149
	$(MAKE) -C tests clean
B
bellard 已提交
150
	for d in $(TARGET_DIRS); do \
B
bellard 已提交
151
	$(MAKE) -C $$d $@ || exit 1 ; \
B
bellard 已提交
152
        done
153

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

B
bellard 已提交
161 162 163 164
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

165 166 167 168 169 170 171 172 173
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 已提交
174
	mkdir -p "$(DESTDIR)$(bindir)"
175
ifneq ($(TOOLS),)
176
	$(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(bindir)"
177
endif
P
pbrook 已提交
178
	mkdir -p "$(DESTDIR)$(datadir)"
P
pbrook 已提交
179
	for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
180
		video.x openbios-sparc32 pxe-ne2k_pci.bin \
181
		pxe-rtl8139.bin pxe-pcnet.bin; do \
182
		$(INSTALL) -m 644 $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(datadir)"; \
P
pbrook 已提交
183
	done
B
bellard 已提交
184
ifndef CONFIG_WIN32
P
pbrook 已提交
185
	mkdir -p "$(DESTDIR)$(datadir)/keymaps"
P
pbrook 已提交
186
	for x in $(KEYMAPS); do \
187
		$(INSTALL) -m 644 $(SRC_PATH)/keymaps/$$x "$(DESTDIR)$(datadir)/keymaps"; \
P
pbrook 已提交
188
	done
B
bellard 已提交
189
endif
B
bellard 已提交
190
	for d in $(TARGET_DIRS); do \
B
bellard 已提交
191
	$(MAKE) -C $$d $@ || exit 1 ; \
B
bellard 已提交
192
        done
B
bellard 已提交
193

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

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

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

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

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

%.dvi: %.texi
	texi2dvi $<

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

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

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

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

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

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

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

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

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

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