01668d98a3
To create html output from texi input, texi2html was used. Output from makeinfo looks cleaner, so replace the old rule and use makeinfo now. For those who want to use their own variant of html output, the macros MAKEINFO and MAKEINFOFLAGS allow customisation. Option "-I ." is not needed (the current directory is searched by default), so remove it. Please note that the build requirements changed, too: makeinfo is required for doc builds. texi2html is no longer used. Signed-off-by: Stefan Weil <weil@mail.berlios.de> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
354 lines
10 KiB
Makefile
354 lines
10 KiB
Makefile
# Makefile for QEMU.
|
|
|
|
GENERATED_HEADERS = config-host.h
|
|
|
|
ifneq ($(wildcard config-host.mak),)
|
|
# Put the all: rule here so that config-host.mak can contain dependencies.
|
|
all: build-all
|
|
include config-host.mak
|
|
include $(SRC_PATH)/rules.mak
|
|
config-host.mak: $(SRC_PATH)/configure
|
|
@echo $@ is out-of-date, running configure
|
|
@sed -n "/.*Configured with/s/[^:]*: //p" $@ | sh
|
|
else
|
|
config-host.mak:
|
|
@echo "Please call configure before running make!"
|
|
@exit 1
|
|
endif
|
|
|
|
# Don't try to regenerate Makefile or configure
|
|
# We don't generate any of them
|
|
Makefile: ;
|
|
configure: ;
|
|
|
|
.PHONY: all clean cscope distclean dvi html info install install-doc \
|
|
pdf recurse-all speed tar tarbin test build-all
|
|
|
|
$(call set-vpath, $(SRC_PATH):$(SRC_PATH)/hw)
|
|
|
|
LIBS+=-lz $(LIBS_TOOLS)
|
|
|
|
ifdef BUILD_DOCS
|
|
DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1 qemu-nbd.8
|
|
else
|
|
DOCS=
|
|
endif
|
|
|
|
SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory)
|
|
SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_DIRS))
|
|
|
|
config-all-devices.mak: $(SUBDIR_DEVICES_MAK)
|
|
$(call quiet-command,cat $(SUBDIR_DEVICES_MAK) | grep =y | sort -u > $@," GEN $@")
|
|
|
|
%/config-devices.mak: default-configs/%.mak
|
|
$(call quiet-command,cat $< > $@.tmp, " GEN $@")
|
|
@if test -f $@; then \
|
|
if cmp -s $@.old $@ || cmp -s $@ $@.tmp; then \
|
|
mv $@.tmp $@; \
|
|
cp -p $@ $@.old; \
|
|
else \
|
|
if test -f $@.old; then \
|
|
echo "WARNING: $@ (user modified) out of date.";\
|
|
else \
|
|
echo "WARNING: $@ out of date.";\
|
|
fi; \
|
|
echo "Run \"make defconfig\" to regenerate."; \
|
|
rm $@.tmp; \
|
|
fi; \
|
|
else \
|
|
mv $@.tmp $@; \
|
|
cp -p $@ $@.old; \
|
|
fi
|
|
|
|
defconfig:
|
|
rm -f config-all-devices.mak $(SUBDIR_DEVICES_MAK)
|
|
|
|
-include config-all-devices.mak
|
|
|
|
build-all: $(DOCS) $(TOOLS) recurse-all
|
|
|
|
config-host.h: config-host.h-timestamp
|
|
config-host.h-timestamp: config-host.mak
|
|
|
|
SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
|
|
|
|
subdir-%: $(GENERATED_HEADERS)
|
|
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
|
|
|
|
ifneq ($(wildcard config-host.mak),)
|
|
include $(SRC_PATH)/Makefile.objs
|
|
endif
|
|
|
|
$(common-obj-y): $(GENERATED_HEADERS)
|
|
$(filter %-softmmu,$(SUBDIR_RULES)): $(common-obj-y)
|
|
|
|
$(filter %-user,$(SUBDIR_RULES)): $(GENERATED_HEADERS) subdir-libuser
|
|
|
|
ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
|
|
romsubdir-%:
|
|
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C pc-bios/$* V="$(V)" TARGET_DIR="$*/",)
|
|
|
|
ALL_SUBDIRS=$(TARGET_DIRS) $(patsubst %,pc-bios/%, $(ROMS))
|
|
|
|
recurse-all: $(SUBDIR_RULES) $(ROMSUBDIR_RULES)
|
|
|
|
audio/audio.o audio/fmodaudio.o: QEMU_CFLAGS += $(FMOD_CFLAGS)
|
|
|
|
QEMU_CFLAGS+=$(CURL_CFLAGS)
|
|
|
|
cocoa.o: cocoa.m
|
|
|
|
keymaps.o: keymaps.c keymaps.h
|
|
|
|
sdl_zoom.o: sdl_zoom.c sdl_zoom.h sdl_zoom_template.h
|
|
|
|
sdl.o: sdl.c keymaps.h sdl_keysym.h sdl_zoom.h
|
|
|
|
sdl.o audio/sdlaudio.o sdl_zoom.o baum.o: QEMU_CFLAGS += $(SDL_CFLAGS)
|
|
|
|
acl.o: acl.h acl.c
|
|
|
|
vnc.h: vnc-tls.h vnc-auth-vencrypt.h vnc-auth-sasl.h keymaps.h
|
|
|
|
vnc.o: vnc.c vnc.h vnc_keysym.h vnchextile.h d3des.c d3des.h acl.h
|
|
|
|
vnc.o: QEMU_CFLAGS += $(VNC_TLS_CFLAGS)
|
|
|
|
vnc-tls.o: vnc-tls.c vnc.h
|
|
|
|
vnc-auth-vencrypt.o: vnc-auth-vencrypt.c vnc.h
|
|
|
|
vnc-auth-sasl.o: vnc-auth-sasl.c vnc.h
|
|
|
|
curses.o: curses.c keymaps.h curses_keys.h
|
|
|
|
bt-host.o: QEMU_CFLAGS += $(BLUEZ_CFLAGS)
|
|
|
|
######################################################################
|
|
|
|
qemu-img.o: qemu-img-cmds.h
|
|
qemu-img.o qemu-tool.o qemu-nbd.o qemu-io.o: $(GENERATED_HEADERS)
|
|
|
|
qemu-img$(EXESUF): qemu-img.o qemu-tool.o $(block-obj-y) $(qobject-obj-y)
|
|
|
|
qemu-nbd$(EXESUF): qemu-nbd.o qemu-tool.o $(block-obj-y) $(qobject-obj-y)
|
|
|
|
qemu-io$(EXESUF): qemu-io.o qemu-tool.o cmd.o $(block-obj-y) $(qobject-obj-y)
|
|
|
|
qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx
|
|
$(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@," GEN $@")
|
|
|
|
check-qint: check-qint.o qint.o qemu-malloc.o
|
|
check-qstring: check-qstring.o qstring.o qemu-malloc.o
|
|
check-qdict: check-qdict.o qdict.o qfloat.o qint.o qstring.o qbool.o qemu-malloc.o qlist.o
|
|
check-qlist: check-qlist.o qlist.o qint.o qemu-malloc.o
|
|
check-qfloat: check-qfloat.o qfloat.o qemu-malloc.o
|
|
check-qjson: check-qjson.o qfloat.o qint.o qdict.o qstring.o qlist.o qbool.o qjson.o json-streamer.o json-lexer.o json-parser.o qemu-malloc.o
|
|
|
|
clean:
|
|
# avoid old build problems by removing potentially incorrect old files
|
|
rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
|
|
rm -f *.o *.d *.a $(TOOLS) TAGS cscope.* *.pod *~ */*~
|
|
rm -f slirp/*.o slirp/*.d audio/*.o audio/*.d block/*.o block/*.d net/*.o net/*.d
|
|
rm -f qemu-img-cmds.h
|
|
$(MAKE) -C tests clean
|
|
for d in $(ALL_SUBDIRS) libhw32 libhw64 libuser; do \
|
|
if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
|
|
done
|
|
|
|
distclean: clean
|
|
rm -f config-host.mak config-host.h* config-host.ld $(DOCS) qemu-options.texi qemu-img-cmds.texi qemu-monitor.texi
|
|
rm -f config-all-devices.mak
|
|
rm -f roms/seabios/config.mak roms/vgabios/config.mak
|
|
rm -f qemu-{doc,tech}.{info,aux,cp,dvi,fn,info,ky,log,pdf,pg,toc,tp,vr}
|
|
for d in $(TARGET_DIRS) libhw32 libhw64 libuser; do \
|
|
rm -rf $$d || exit 1 ; \
|
|
done
|
|
|
|
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
|
|
|
|
ifdef INSTALL_BLOBS
|
|
BLOBS=bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
|
|
video.x openbios-sparc32 openbios-sparc64 openbios-ppc \
|
|
gpxe-eepro100-80861209.rom \
|
|
gpxe-eepro100-80861229.rom \
|
|
pxe-e1000.bin \
|
|
pxe-ne2k_pci.bin pxe-pcnet.bin \
|
|
pxe-rtl8139.bin pxe-virtio.bin \
|
|
bamboo.dtb petalogix-s3adsp1800.dtb \
|
|
multiboot.bin linuxboot.bin
|
|
else
|
|
BLOBS=
|
|
endif
|
|
|
|
install-doc: $(DOCS)
|
|
$(INSTALL_DIR) "$(DESTDIR)$(docdir)"
|
|
$(INSTALL_DATA) qemu-doc.html qemu-tech.html "$(DESTDIR)$(docdir)"
|
|
ifdef CONFIG_POSIX
|
|
$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
|
|
$(INSTALL_DATA) qemu.1 qemu-img.1 "$(DESTDIR)$(mandir)/man1"
|
|
$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man8"
|
|
$(INSTALL_DATA) qemu-nbd.8 "$(DESTDIR)$(mandir)/man8"
|
|
endif
|
|
|
|
install-sysconfig:
|
|
$(INSTALL_DIR) "$(sysconfdir)/qemu"
|
|
$(INSTALL_DATA) $(SRC_PATH)/sysconfigs/target/target-x86_64.conf "$(sysconfdir)/qemu"
|
|
|
|
install: all $(if $(BUILD_DOCS),install-doc) install-sysconfig
|
|
$(INSTALL_DIR) "$(DESTDIR)$(bindir)"
|
|
ifneq ($(TOOLS),)
|
|
$(INSTALL_PROG) $(STRIP_OPT) $(TOOLS) "$(DESTDIR)$(bindir)"
|
|
endif
|
|
ifneq ($(BLOBS),)
|
|
$(INSTALL_DIR) "$(DESTDIR)$(datadir)"
|
|
set -e; for x in $(BLOBS); do \
|
|
$(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(datadir)"; \
|
|
done
|
|
endif
|
|
$(INSTALL_DIR) "$(DESTDIR)$(datadir)/keymaps"
|
|
set -e; for x in $(KEYMAPS); do \
|
|
$(INSTALL_DATA) $(SRC_PATH)/pc-bios/keymaps/$$x "$(DESTDIR)$(datadir)/keymaps"; \
|
|
done
|
|
for d in $(TARGET_DIRS); do \
|
|
$(MAKE) -C $$d $@ || exit 1 ; \
|
|
done
|
|
|
|
# various test targets
|
|
test speed: all
|
|
$(MAKE) -C tests $@
|
|
|
|
.PHONY: TAGS
|
|
TAGS:
|
|
find "$(SRC_PATH)" -name '*.[hc]' -print0 | xargs -0 etags
|
|
|
|
cscope:
|
|
rm -f ./cscope.*
|
|
find . -name "*.[ch]" -print | sed 's,^\./,,' > ./cscope.files
|
|
cscope -b
|
|
|
|
# documentation
|
|
MAKEINFO=makeinfo
|
|
MAKEINFOFLAGS=--no-headers --no-split --number-sections
|
|
TEXIFLAG=$(if $(V),,--quiet)
|
|
%.dvi: %.texi
|
|
$(call quiet-command,texi2dvi $(TEXIFLAG) -I . $<," GEN $@")
|
|
|
|
%.html: %.texi
|
|
$(call quiet-command,$(MAKEINFO) $(MAKEINFOFLAGS) --html $< -o $@, \
|
|
" GEN $@")
|
|
|
|
%.info: %.texi
|
|
$(call quiet-command,$(MAKEINFO) $< -o $@," GEN $@")
|
|
|
|
%.pdf: %.texi
|
|
$(call quiet-command,texi2pdf $(TEXIFLAG) -I . $<," GEN $@")
|
|
|
|
qemu-options.texi: $(SRC_PATH)/qemu-options.hx
|
|
$(call quiet-command,sh $(SRC_PATH)/hxtool -t < $< > $@," GEN $@")
|
|
|
|
qemu-monitor.texi: $(SRC_PATH)/qemu-monitor.hx
|
|
$(call quiet-command,sh $(SRC_PATH)/hxtool -t < $< > $@," GEN $@")
|
|
|
|
qemu-img-cmds.texi: $(SRC_PATH)/qemu-img-cmds.hx
|
|
$(call quiet-command,sh $(SRC_PATH)/hxtool -t < $< > $@," GEN $@")
|
|
|
|
qemu.1: qemu-doc.texi qemu-options.texi qemu-monitor.texi
|
|
$(call quiet-command, \
|
|
perl -Ww -- $(SRC_PATH)/texi2pod.pl $< qemu.pod && \
|
|
pod2man --section=1 --center=" " --release=" " qemu.pod > $@, \
|
|
" GEN $@")
|
|
|
|
qemu-img.1: qemu-img.texi qemu-img-cmds.texi
|
|
$(call quiet-command, \
|
|
perl -Ww -- $(SRC_PATH)/texi2pod.pl $< qemu-img.pod && \
|
|
pod2man --section=1 --center=" " --release=" " qemu-img.pod > $@, \
|
|
" GEN $@")
|
|
|
|
qemu-nbd.8: qemu-nbd.texi
|
|
$(call quiet-command, \
|
|
perl -Ww -- $(SRC_PATH)/texi2pod.pl $< qemu-nbd.pod && \
|
|
pod2man --section=8 --center=" " --release=" " qemu-nbd.pod > $@, \
|
|
" GEN $@")
|
|
|
|
dvi: qemu-doc.dvi qemu-tech.dvi
|
|
html: qemu-doc.html qemu-tech.html
|
|
info: qemu-doc.info qemu-tech.info
|
|
pdf: qemu-doc.pdf qemu-tech.pdf
|
|
|
|
qemu-doc.dvi qemu-doc.html qemu-doc.info qemu-doc.pdf: \
|
|
qemu-img.texi qemu-nbd.texi qemu-options.texi \
|
|
qemu-monitor.texi qemu-img-cmds.texi
|
|
|
|
VERSION ?= $(shell cat VERSION)
|
|
FILE = qemu-$(VERSION)
|
|
|
|
# tar release (use 'make -k tar' on a checkouted tree)
|
|
tar:
|
|
rm -rf /tmp/$(FILE)
|
|
cp -r . /tmp/$(FILE)
|
|
cd /tmp && tar zcvf ~/$(FILE).tar.gz $(FILE) --exclude CVS --exclude .git --exclude .svn
|
|
rm -rf /tmp/$(FILE)
|
|
|
|
# generate a binary distribution
|
|
tarbin:
|
|
cd / && tar zcvf ~/qemu-$(VERSION)-$(ARCH).tar.gz \
|
|
$(bindir)/qemu \
|
|
$(bindir)/qemu-system-x86_64 \
|
|
$(bindir)/qemu-system-arm \
|
|
$(bindir)/qemu-system-cris \
|
|
$(bindir)/qemu-system-m68k \
|
|
$(bindir)/qemu-system-microblaze \
|
|
$(bindir)/qemu-system-mips \
|
|
$(bindir)/qemu-system-mipsel \
|
|
$(bindir)/qemu-system-mips64 \
|
|
$(bindir)/qemu-system-mips64el \
|
|
$(bindir)/qemu-system-ppc \
|
|
$(bindir)/qemu-system-ppcemb \
|
|
$(bindir)/qemu-system-ppc64 \
|
|
$(bindir)/qemu-system-sh4 \
|
|
$(bindir)/qemu-system-sh4eb \
|
|
$(bindir)/qemu-system-sparc \
|
|
$(bindir)/qemu-i386 \
|
|
$(bindir)/qemu-x86_64 \
|
|
$(bindir)/qemu-alpha \
|
|
$(bindir)/qemu-arm \
|
|
$(bindir)/qemu-armeb \
|
|
$(bindir)/qemu-cris \
|
|
$(bindir)/qemu-m68k \
|
|
$(bindir)/qemu-microblaze \
|
|
$(bindir)/qemu-mips \
|
|
$(bindir)/qemu-mipsel \
|
|
$(bindir)/qemu-ppc \
|
|
$(bindir)/qemu-ppc64 \
|
|
$(bindir)/qemu-ppc64abi32 \
|
|
$(bindir)/qemu-sh4 \
|
|
$(bindir)/qemu-sh4eb \
|
|
$(bindir)/qemu-sparc \
|
|
$(bindir)/qemu-sparc64 \
|
|
$(bindir)/qemu-sparc32plus \
|
|
$(bindir)/qemu-img \
|
|
$(bindir)/qemu-nbd \
|
|
$(datadir)/bios.bin \
|
|
$(datadir)/vgabios.bin \
|
|
$(datadir)/vgabios-cirrus.bin \
|
|
$(datadir)/ppc_rom.bin \
|
|
$(datadir)/video.x \
|
|
$(datadir)/openbios-sparc32 \
|
|
$(datadir)/openbios-sparc64 \
|
|
$(datadir)/openbios-ppc \
|
|
$(datadir)/pxe-ne2k_pci.bin \
|
|
$(datadir)/pxe-rtl8139.bin \
|
|
$(datadir)/pxe-pcnet.bin \
|
|
$(datadir)/pxe-e1000.bin \
|
|
$(docdir)/qemu-doc.html \
|
|
$(docdir)/qemu-tech.html \
|
|
$(mandir)/man1/qemu.1 \
|
|
$(mandir)/man1/qemu-img.1 \
|
|
$(mandir)/man8/qemu-nbd.8
|
|
|
|
# Include automatically generated dependency files
|
|
-include $(wildcard *.d audio/*.d slirp/*.d block/*.d net/*.d)
|