Makefile 7.2 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

8 9 10
BASE_CFLAGS=
BASE_LDFLAGS=

11 12 13
BASE_CFLAGS += $(OS_CFLAGS) $(ARCH_CFLAGS)
BASE_LDFLAGS += $(OS_LDFLAGS) $(ARCH_LDFLAGS)

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

26
LIBS+=$(AIOLIBS)
B
bellard 已提交
27

P
pbrook 已提交
28
all: $(TOOLS) $(DOCS) recurse-all 
P
pbrook 已提交
29

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

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

P
pbrook 已提交
35 36 37 38 39 40 41 42
#######################################################################
# 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 已提交
43
######################################################################
P
pbrook 已提交
44
# libqemu_common.a: Target indepedent part of system emulation. The
B
bellard 已提交
45 46 47
# 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.
48

P
pbrook 已提交
49 50 51
OBJS=$(BLOCK_OBJS)
OBJS+=readline.o console.o 
OBJS+=block.o
B
bellard 已提交
52 53 54 55 56 57 58 59 60 61 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 113 114

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
	$(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<

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 已提交
115
qemu-img$(EXESUF): qemu-img.o qemu-img-block.o qemu-img-block-raw.o $(BLOCK_OBJS)
B
bellard 已提交
116 117
	$(CC) $(LDFLAGS) $(BASE_LDFLAGS) -o $@ $^ -lz $(LIBS)

P
pbrook 已提交
118 119 120
qemu-img-%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) -DQEMU_IMG $(BASE_CFLAGS) -c -o $@ $<

B
bellard 已提交
121 122 123 124
%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<

# dyngen host tool
B
bellard 已提交
125
dyngen$(EXESUF): dyngen.c
126
	$(HOST_CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -o $@ $^
127 128

clean:
129
# avoid old build problems by removing potentially incorrect old files
130
	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 已提交
131 132
	rm -f *.o *.d *.a $(TOOLS) dyngen$(EXESUF) TAGS cscope.* *.pod *~ */*~
	rm -f slirp/*.o slirp/*.d audio/*.o audio/*.d
B
bellard 已提交
133
	$(MAKE) -C tests clean
B
bellard 已提交
134
	for d in $(TARGET_DIRS); do \
B
bellard 已提交
135
	$(MAKE) -C $$d $@ || exit 1 ; \
B
bellard 已提交
136
        done
137

B
bellard 已提交
138
distclean: clean
139
	rm -f config-host.mak config-host.h $(DOCS)
140
	rm -f qemu-{doc,tech}.{info,aux,cp,dvi,fn,info,ky,log,pg,toc,tp,vr}
B
updated  
bellard 已提交
141
	for d in $(TARGET_DIRS); do \
B
bellard 已提交
142
	rm -rf $$d || exit 1 ; \
B
updated  
bellard 已提交
143
        done
B
bellard 已提交
144

B
bellard 已提交
145 146 147 148
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

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

B
bellard 已提交
178
# various test targets
B
bellard 已提交
179
test speed: all
B
bellard 已提交
180
	$(MAKE) -C tests $@
181

182
TAGS:
B
bellard 已提交
183
	etags *.[ch] tests/*.[ch]
184

B
bellard 已提交
185 186 187 188 189
cscope:
	rm -f ./cscope.*
	find . -name "*.[ch]" -print > ./cscope.files
	cscope -b

B
bellard 已提交
190
# documentation
B
bellard 已提交
191
%.html: %.texi
B
bellard 已提交
192 193
	texi2html -monolithic -number $<

B
bellard 已提交
194 195 196 197 198 199
%.info: %.texi
	makeinfo $< -o $@

%.dvi: %.texi
	texi2dvi $<

200
qemu.1: qemu-doc.texi
P
pbrook 已提交
201
	$(SRC_PATH)/texi2pod.pl $< qemu.pod
202 203
	pod2man --section=1 --center=" " --release=" " qemu.pod > $@

B
bellard 已提交
204
qemu-img.1: qemu-img.texi
P
pbrook 已提交
205
	$(SRC_PATH)/texi2pod.pl $< qemu-img.pod
B
bellard 已提交
206 207
	pod2man --section=1 --center=" " --release=" " qemu-img.pod > $@

208 209 210 211 212 213
info: qemu-doc.info qemu-tech.info

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

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

214 215
VERSION ?= $(shell cat VERSION)
FILE = qemu-$(VERSION)
B
bellard 已提交
216

217
# tar release (use 'make -k tar' on a checkouted tree)
B
bellard 已提交
218 219
tar:
	rm -rf /tmp/$(FILE)
220
	cp -r . /tmp/$(FILE)
B
bellard 已提交
221
	( cd /tmp ; tar zcvf ~/$(FILE).tar.gz $(FILE) --exclude CVS )
B
bellard 已提交
222 223
	rm -rf /tmp/$(FILE)

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

269 270 271
ifneq ($(wildcard .depend),)
include .depend
endif
B
bellard 已提交
272 273 274

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