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

P
pbrook 已提交
3 4
VPATH=$(SRC_PATH):$(SRC_PATH)/hw

P
pbrook 已提交
5
include config-host.mak
B
bellard 已提交
6

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

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 60
OBJS+=scsi-disk.o cdrom.o
OBJS+=usb.o usb-hub.o usb-linux.o usb-hid.o usb-msd.o usb-wacom.o

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

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

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

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

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

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

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

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

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

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

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

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

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

%.dvi: %.texi
	texi2dvi $<

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

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

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

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

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

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

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

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

277 278 279
ifneq ($(wildcard .depend),)
include .depend
endif
B
bellard 已提交
280 281 282

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