Makefile 7.6 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 122 123

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

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

######################################################################

P
pbrook 已提交
124
qemu-img$(EXESUF): qemu-img.o qemu-img-block.o qemu-img-block-raw.o $(BLOCK_OBJS)
B
bellard 已提交
125 126
	$(CC) $(LDFLAGS) $(BASE_LDFLAGS) -o $@ $^ -lz $(LIBS)

P
pbrook 已提交
127 128 129
qemu-img-%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) -DQEMU_IMG $(BASE_CFLAGS) -c -o $@ $<

B
bellard 已提交
130 131 132 133
%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<

# dyngen host tool
B
bellard 已提交
134
dyngen$(EXESUF): dyngen.c
135
	$(HOST_CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -o $@ $^
136 137

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

B
bellard 已提交
147
distclean: clean
148
	rm -f config-host.mak config-host.h $(DOCS)
149
	rm -f qemu-{doc,tech}.{info,aux,cp,dvi,fn,info,ky,log,pg,toc,tp,vr}
B
updated  
bellard 已提交
150
	for d in $(TARGET_DIRS); do \
B
bellard 已提交
151
	rm -rf $$d || exit 1 ; \
B
updated  
bellard 已提交
152
        done
B
bellard 已提交
153

B
bellard 已提交
154 155 156 157
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

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

B
bellard 已提交
187
# various test targets
B
bellard 已提交
188
test speed: all
B
bellard 已提交
189
	$(MAKE) -C tests $@
190

191
TAGS:
B
bellard 已提交
192
	etags *.[ch] tests/*.[ch]
193

B
bellard 已提交
194 195 196 197 198
cscope:
	rm -f ./cscope.*
	find . -name "*.[ch]" -print > ./cscope.files
	cscope -b

B
bellard 已提交
199
# documentation
B
bellard 已提交
200
%.html: %.texi
B
bellard 已提交
201 202
	texi2html -monolithic -number $<

B
bellard 已提交
203 204 205 206 207 208
%.info: %.texi
	makeinfo $< -o $@

%.dvi: %.texi
	texi2dvi $<

209
qemu.1: qemu-doc.texi
P
pbrook 已提交
210
	$(SRC_PATH)/texi2pod.pl $< qemu.pod
211 212
	pod2man --section=1 --center=" " --release=" " qemu.pod > $@

B
bellard 已提交
213
qemu-img.1: qemu-img.texi
P
pbrook 已提交
214
	$(SRC_PATH)/texi2pod.pl $< qemu-img.pod
B
bellard 已提交
215 216
	pod2man --section=1 --center=" " --release=" " qemu-img.pod > $@

217 218 219 220 221 222
info: qemu-doc.info qemu-tech.info

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

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

223 224
VERSION ?= $(shell cat VERSION)
FILE = qemu-$(VERSION)
B
bellard 已提交
225

226
# tar release (use 'make -k tar' on a checkouted tree)
B
bellard 已提交
227 228
tar:
	rm -rf /tmp/$(FILE)
229
	cp -r . /tmp/$(FILE)
B
bellard 已提交
230
	( cd /tmp ; tar zcvf ~/$(FILE).tar.gz $(FILE) --exclude CVS )
B
bellard 已提交
231 232
	rm -rf /tmp/$(FILE)

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

280 281 282
ifneq ($(wildcard .depend),)
include .depend
endif
B
bellard 已提交
283 284 285

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