Blame view

Makefile 7.24 KB
1
2
# Makefile for QEMU.
pbrook authored
3
include config-host.mak
bellard authored
4
5
6
7
.PHONY: all clean distclean dvi info install install-doc tar tarbin \
	speed test test2 html dvi info
8
9
10
BASE_CFLAGS=
BASE_LDFLAGS=
11
12
13
BASE_CFLAGS += $(OS_CFLAGS) $(ARCH_CFLAGS)
BASE_LDFLAGS += $(OS_LDFLAGS) $(ARCH_LDFLAGS)
bellard authored
14
15
CPPFLAGS += -I. -I$(SRC_PATH) -MMD -MP
CPPFLAGS += -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
bellard authored
16
LIBS=
bellard authored
17
ifdef CONFIG_STATIC
18
BASE_LDFLAGS += -static
bellard authored
19
endif
20
ifdef BUILD_DOCS
21
DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1
22
23
24
else
DOCS=
endif
bellard authored
25
26
LIBS+=$(AIOLIBS)
bellard authored
27
pbrook authored
28
all: $(TOOLS) $(DOCS) recurse-all 
pbrook authored
29
pbrook authored
30
subdir-%: dyngen$(EXESUF) libqemu_common.a
pbrook authored
31
32
33
	$(MAKE) -C $(subst subdir-,,$@) all

recurse-all: $(patsubst %,subdir-%, $(TARGET_DIRS))
bellard authored
34
pbrook authored
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
bellard authored
43
######################################################################
pbrook authored
44
# libqemu_common.a: Target indepedent part of system emulation. The
bellard authored
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
pbrook authored
49
50
51
OBJS=$(BLOCK_OBJS)
OBJS+=readline.o console.o 
OBJS+=block.o
bellard authored
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)

######################################################################
pbrook authored
115
qemu-img$(EXESUF): qemu-img.o qemu-img-block.o qemu-img-block-raw.o $(BLOCK_OBJS)
bellard authored
116
117
	$(CC) $(LDFLAGS) $(BASE_LDFLAGS) -o $@ $^ -lz $(LIBS)
pbrook authored
118
119
120
qemu-img-%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) -DQEMU_IMG $(BASE_CFLAGS) -c -o $@ $<
bellard authored
121
122
123
124
%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<

# dyngen host tool
bellard authored
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
bellard authored
131
132
	rm -f *.o *.d *.a $(TOOLS) dyngen$(EXESUF) TAGS cscope.* *.pod *~ */*~
	rm -f slirp/*.o slirp/*.d audio/*.o audio/*.d
bellard authored
133
	$(MAKE) -C tests clean
134
	for d in $(TARGET_DIRS); do \
bellard authored
135
	$(MAKE) -C $$d $@ || exit 1 ; \
136
        done
137
bellard authored
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}
bellard authored
141
	for d in $(TARGET_DIRS); do \
bellard authored
142
	rm -rf $$d || exit 1 ; \
bellard authored
143
        done
bellard authored
144
bellard authored
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)
pbrook authored
158
	mkdir -p "$(DESTDIR)$(bindir)"
159
ifneq ($(TOOLS),)
160
	$(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(bindir)"
161
endif
pbrook authored
162
	mkdir -p "$(DESTDIR)$(datadir)"
pbrook authored
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)"; \
pbrook authored
167
	done
bellard authored
168
ifndef CONFIG_WIN32
pbrook authored
169
	mkdir -p "$(DESTDIR)$(datadir)/keymaps"
pbrook authored
170
	for x in $(KEYMAPS); do \
171
		$(INSTALL) -m 644 $(SRC_PATH)/keymaps/$$x "$(DESTDIR)$(datadir)/keymaps"; \
pbrook authored
172
	done
bellard authored
173
endif
174
	for d in $(TARGET_DIRS); do \
bellard authored
175
	$(MAKE) -C $$d $@ || exit 1 ; \
176
        done
bellard authored
177
bellard authored
178
# various test targets
bellard authored
179
test speed test2: all
bellard authored
180
	$(MAKE) -C tests $@
181
182
TAGS:
bellard authored
183
	etags *.[ch] tests/*.[ch]
184
bellard authored
185
186
187
188
189
cscope:
	rm -f ./cscope.*
	find . -name "*.[ch]" -print > ./cscope.files
	cscope -b
bellard authored
190
# documentation
bellard authored
191
%.html: %.texi
bellard authored
192
193
	texi2html -monolithic -number $<
bellard authored
194
195
196
197
198
199
%.info: %.texi
	makeinfo $< -o $@

%.dvi: %.texi
	texi2dvi $<
200
qemu.1: qemu-doc.texi
pbrook authored
201
	$(SRC_PATH)/texi2pod.pl $< qemu.pod
202
203
	pod2man --section=1 --center=" " --release=" " qemu.pod > $@
204
qemu-img.1: qemu-img.texi
pbrook authored
205
	$(SRC_PATH)/texi2pod.pl $< qemu-img.pod
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)
bellard authored
216
217
# tar release (use 'make -k tar' on a checkouted tree)
bellard authored
218
219
tar:
	rm -rf /tmp/$(FILE)
220
	cp -r . /tmp/$(FILE)
bellard authored
221
	( cd /tmp ; tar zcvf ~/$(FILE).tar.gz $(FILE) --exclude CVS )
bellard authored
222
223
	rm -rf /tmp/$(FILE)
bellard authored
224
# generate a binary distribution
225
tarbin:
226
	( cd / ; tar zcvf ~/qemu-$(VERSION)-$(ARCH).tar.gz \
bellard authored
227
	$(bindir)/qemu \
bellard authored
228
	$(bindir)/qemu-system-ppc \
229
230
	$(bindir)/qemu-system-ppc64 \
	$(bindir)/qemu-system-ppcemb \
231
	$(bindir)/qemu-system-sparc \
bellard authored
232
	$(bindir)/qemu-system-x86_64 \
bellard authored
233
	$(bindir)/qemu-system-mips \
234
	$(bindir)/qemu-system-mipsel \
ths authored
235
236
	$(bindir)/qemu-system-mips64 \
	$(bindir)/qemu-system-mips64el \
bellard authored
237
	$(bindir)/qemu-system-arm \
ths authored
238
239
	$(bindir)/qemu-system-m68k \
	$(bindir)/qemu-system-sh4 \
bellard authored
240
241
	$(bindir)/qemu-i386 \
        $(bindir)/qemu-arm \
bellard authored
242
        $(bindir)/qemu-armeb \
bellard authored
243
244
        $(bindir)/qemu-sparc \
        $(bindir)/qemu-ppc \
245
        $(bindir)/qemu-ppc64 \
bellard authored
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 \
ths authored
253
254
        $(bindir)/qemu-m68k \
        $(bindir)/qemu-sh4 \
bellard authored
255
        $(bindir)/qemu-img \
bellard authored
256
257
	$(datadir)/bios.bin \
	$(datadir)/vgabios.bin \
258
	$(datadir)/vgabios-cirrus.bin \
bellard authored
259
	$(datadir)/ppc_rom.bin \
bellard authored
260
	$(datadir)/video.x \
261
	$(datadir)/openbios-sparc32 \
bellard authored
262
263
264
        $(datadir)/pxe-ne2k_pci.bin \
	$(datadir)/pxe-rtl8139.bin \
        $(datadir)/pxe-pcnet.bin \
bellard authored
265
266
	$(docdir)/qemu-doc.html \
	$(docdir)/qemu-tech.html \
267
	$(mandir)/man1/qemu.1 $(mandir)/man1/qemu-img.1 )
268
269
270
271
ifneq ($(wildcard .depend),)
include .depend
endif
bellard authored
272
273
274

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