Blame view

Makefile 7.73 KB
1
2
# Makefile for QEMU.
pbrook authored
3
include config-host.mak
bellard authored
4
5
.PHONY: all clean distclean dvi info install install-doc tar tarbin \
6
	speed test html dvi info
7
pbrook authored
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)
bellard authored
16
17
CPPFLAGS += -I. -I$(SRC_PATH) -MMD -MP
CPPFLAGS += -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
bellard authored
18
LIBS=
bellard authored
19
ifdef CONFIG_STATIC
20
BASE_LDFLAGS += -static
bellard authored
21
endif
22
ifdef BUILD_DOCS
23
DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1
24
25
26
else
DOCS=
endif
bellard authored
27
28
LIBS+=$(AIOLIBS)
bellard authored
29
pbrook authored
30
all: $(TOOLS) $(DOCS) recurse-all 
pbrook authored
31
pbrook authored
32
subdir-%: dyngen$(EXESUF) libqemu_common.a
pbrook authored
33
34
35
	$(MAKE) -C $(subst subdir-,,$@) all

recurse-all: $(patsubst %,subdir-%, $(TARGET_DIRS))
bellard authored
36
pbrook authored
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
bellard authored
45
######################################################################
pbrook authored
46
# libqemu_common.a: Target indepedent part of system emulation. The
bellard authored
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
pbrook authored
51
OBJS=$(BLOCK_OBJS)
pbrook authored
52
OBJS+=readline.o console.o
pbrook authored
53
OBJS+=block.o
bellard authored
54
pbrook authored
55
56
OBJS+=irq.o
OBJS+=i2c.o smbus.o smbus_eeprom.o max7310.o max111x.o wm8750.o
pbrook authored
57
OBJS+=ssd0303.o ssd0323.o ads7846.o stellaris_input.o
pbrook authored
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
60
OBJS+=sd.o ssi-sd.o
pbrook authored
61
bellard authored
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 $@ $<
bellard authored
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
bellard authored
129
130
######################################################################
131
qemu-img$(EXESUF): qemu-img.o qemu-img-block.o $(QEMU_IMG_BLOCK_OBJS)
bellard authored
132
133
	$(CC) $(LDFLAGS) $(BASE_LDFLAGS) -o $@ $^ -lz $(LIBS)
pbrook authored
134
135
136
qemu-img-%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) -DQEMU_IMG $(BASE_CFLAGS) -c -o $@ $<
bellard authored
137
138
139
140
%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<

# dyngen host tool
bellard authored
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
bellard authored
147
148
	rm -f *.o *.d *.a $(TOOLS) dyngen$(EXESUF) TAGS cscope.* *.pod *~ */*~
	rm -f slirp/*.o slirp/*.d audio/*.o audio/*.d
bellard authored
149
	$(MAKE) -C tests clean
150
	for d in $(TARGET_DIRS); do \
bellard authored
151
	$(MAKE) -C $$d $@ || exit 1 ; \
152
        done
153
bellard authored
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}
bellard authored
157
	for d in $(TARGET_DIRS); do \
bellard authored
158
	rm -rf $$d || exit 1 ; \
bellard authored
159
        done
bellard authored
160
bellard authored
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)
pbrook authored
174
	mkdir -p "$(DESTDIR)$(bindir)"
175
ifneq ($(TOOLS),)
176
	$(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(bindir)"
177
endif
pbrook authored
178
	mkdir -p "$(DESTDIR)$(datadir)"
pbrook authored
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)"; \
pbrook authored
183
	done
bellard authored
184
ifndef CONFIG_WIN32
pbrook authored
185
	mkdir -p "$(DESTDIR)$(datadir)/keymaps"
pbrook authored
186
	for x in $(KEYMAPS); do \
187
		$(INSTALL) -m 644 $(SRC_PATH)/keymaps/$$x "$(DESTDIR)$(datadir)/keymaps"; \
pbrook authored
188
	done
bellard authored
189
endif
190
	for d in $(TARGET_DIRS); do \
bellard authored
191
	$(MAKE) -C $$d $@ || exit 1 ; \
192
        done
bellard authored
193
bellard authored
194
# various test targets
195
test speed: all
bellard authored
196
	$(MAKE) -C tests $@
197
198
TAGS:
bellard authored
199
	etags *.[ch] tests/*.[ch]
200
bellard authored
201
202
203
204
205
cscope:
	rm -f ./cscope.*
	find . -name "*.[ch]" -print > ./cscope.files
	cscope -b
bellard authored
206
# documentation
bellard authored
207
%.html: %.texi
bellard authored
208
209
	texi2html -monolithic -number $<
bellard authored
210
211
212
213
214
215
%.info: %.texi
	makeinfo $< -o $@

%.dvi: %.texi
	texi2dvi $<
216
qemu.1: qemu-doc.texi
pbrook authored
217
	$(SRC_PATH)/texi2pod.pl $< qemu.pod
218
219
	pod2man --section=1 --center=" " --release=" " qemu.pod > $@
220
qemu-img.1: qemu-img.texi
pbrook authored
221
	$(SRC_PATH)/texi2pod.pl $< qemu-img.pod
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)
bellard authored
232
233
# tar release (use 'make -k tar' on a checkouted tree)
bellard authored
234
235
tar:
	rm -rf /tmp/$(FILE)
236
	cp -r . /tmp/$(FILE)
bellard authored
237
	( cd /tmp ; tar zcvf ~/$(FILE).tar.gz $(FILE) --exclude CVS )
bellard authored
238
239
	rm -rf /tmp/$(FILE)
bellard authored
240
# generate a binary distribution
241
tarbin:
242
	( cd / ; tar zcvf ~/qemu-$(VERSION)-$(ARCH).tar.gz \
bellard authored
243
	$(bindir)/qemu \
bellard authored
244
	$(bindir)/qemu-system-ppc \
245
246
	$(bindir)/qemu-system-ppc64 \
	$(bindir)/qemu-system-ppcemb \
247
	$(bindir)/qemu-system-sparc \
bellard authored
248
	$(bindir)/qemu-system-x86_64 \
bellard authored
249
	$(bindir)/qemu-system-mips \
250
	$(bindir)/qemu-system-mipsel \
ths authored
251
252
	$(bindir)/qemu-system-mips64 \
	$(bindir)/qemu-system-mips64el \
bellard authored
253
	$(bindir)/qemu-system-arm \
ths authored
254
255
	$(bindir)/qemu-system-m68k \
	$(bindir)/qemu-system-sh4 \
256
	$(bindir)/qemu-system-sh4eb \
bellard authored
257
258
	$(bindir)/qemu-i386 \
        $(bindir)/qemu-arm \
bellard authored
259
        $(bindir)/qemu-armeb \
bellard authored
260
261
        $(bindir)/qemu-sparc \
        $(bindir)/qemu-ppc \
262
        $(bindir)/qemu-ppc64 \
bellard authored
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 \
ths authored
270
271
        $(bindir)/qemu-m68k \
        $(bindir)/qemu-sh4 \
272
        $(bindir)/qemu-sh4eb \
bellard authored
273
        $(bindir)/qemu-img \
bellard authored
274
275
	$(datadir)/bios.bin \
	$(datadir)/vgabios.bin \
276
	$(datadir)/vgabios-cirrus.bin \
bellard authored
277
	$(datadir)/ppc_rom.bin \
bellard authored
278
	$(datadir)/video.x \
279
	$(datadir)/openbios-sparc32 \
bellard authored
280
281
282
        $(datadir)/pxe-ne2k_pci.bin \
	$(datadir)/pxe-rtl8139.bin \
        $(datadir)/pxe-pcnet.bin \
bellard authored
283
284
	$(docdir)/qemu-doc.html \
	$(docdir)/qemu-tech.html \
285
	$(mandir)/man1/qemu.1 $(mandir)/man1/qemu-img.1 )
286
287
288
289
ifneq ($(wildcard .depend),)
include .depend
endif
bellard authored
290
291
292

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