From: Anthony Liguori <anthony@codemonkey.ws>
To: Blue Swirl <blauwirbel@gmail.com>
Cc: qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] Force object directory use
Date: Tue, 16 Nov 2010 16:18:22 -0600 [thread overview]
Message-ID: <4CE3032E.6020108@codemonkey.ws> (raw)
In-Reply-To: <AANLkTikG6irnzidq-UMFyqLTUoqPR8EUo-M=+soM4jhZ@mail.gmail.com>
On 11/16/2010 03:59 PM, Blue Swirl wrote:
> If the user attempts to run 'configure' in the source tree,
> create an object directory and configure that instead.
>
> Rename topmost Makefile to Makefile.top. Add a new Makefile, which
> is only used when user attempts to run 'make' in the source tree.
>
> Signed-off-by: Blue Swirl<blauwirbel@gmail.com>
>
Interesting idea. I certainly would support this.
Regards,
Anthony Liguori
> ---
> Makefile | 369 +---------------------------------------------------------
> Makefile.top | 367 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> configure | 51 +++++----
> 3 files changed, 396 insertions(+), 391 deletions(-)
> create mode 100644 Makefile.top
>
> diff --git a/Makefile b/Makefile
> index 747e47c..87e7dbb 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1,367 +1,2 @@
> -# Makefile for QEMU.
> -
> -GENERATED_HEADERS = config-host.h trace.h qemu-options.def
> -ifeq ($(TRACE_BACKEND),dtrace)
> -GENERATED_HEADERS += trace-dtrace.h
> -endif
> -
> -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
> QMP/qmp-commands.txt
> -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 $@; then \
> - if ! cmp -s $@ $@.tmp; then \
> - mv $@.tmp $@; \
> - cp -p $@ $@.old; \
> - fi; \
> - 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
> -qemu-options.def: $(SRC_PATH)/qemu-options.hx
> - $(call quiet-command,sh $(SRC_PATH)/hxtool -h< $< > $@," GEN $@")
> -
> -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)): $(trace-obj-y) $(common-obj-y)
> subdir-libdis
> -
> -$(filter %-user,$(SUBDIR_RULES)): $(GENERATED_HEADERS) $(trace-obj-y)
> subdir-libdis-user 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)
> -
> -ui/cocoa.o: ui/cocoa.m
> -
> -ui/sdl.o audio/sdlaudio.o ui/sdl_zoom.o baum.o: QEMU_CFLAGS += $(SDL_CFLAGS)
> -
> -ui/vnc.o: QEMU_CFLAGS += $(VNC_TLS_CFLAGS)
> -
> -bt-host.o: QEMU_CFLAGS += $(BLUEZ_CFLAGS)
> -
> -ifeq ($(TRACE_BACKEND),dtrace)
> -trace.h: trace.h-timestamp trace-dtrace.h
> -else
> -trace.h: trace.h-timestamp
> -endif
> -trace.h-timestamp: $(SRC_PATH)/trace-events config-host.mak
> - $(call quiet-command,sh $(SRC_PATH)/tracetool --$(TRACE_BACKEND) -h
> < $< > $@," GEN trace.h")
> - @cmp -s $@ trace.h || cp $@ trace.h
> -
> -trace.c: trace.c-timestamp
> -trace.c-timestamp: $(SRC_PATH)/trace-events config-host.mak
> - $(call quiet-command,sh $(SRC_PATH)/tracetool --$(TRACE_BACKEND) -c
> < $< > $@," GEN trace.c")
> - @cmp -s $@ trace.c || cp $@ trace.c
> -
> -trace.o: trace.c $(GENERATED_HEADERS)
> -
> -trace-dtrace.h: trace-dtrace.dtrace
> - $(call quiet-command,dtrace -o $@ -h -s $<, " GEN trace-dtrace.h")
> -
> -# Normal practice is to name DTrace probe file with a '.d' extension
> -# but that gets picked up by QEMU's Makefile as an external dependancy
> -# rule file. So we use '.dtrace' instead
> -trace-dtrace.dtrace: trace-dtrace.dtrace-timestamp
> -trace-dtrace.dtrace-timestamp: $(SRC_PATH)/trace-events config-host.mak
> - $(call quiet-command,sh $(SRC_PATH)/tracetool --$(TRACE_BACKEND) -d
> < $< > $@," GEN trace-dtrace.dtrace")
> - @cmp -s $@ trace-dtrace.dtrace || cp $@ trace-dtrace.dtrace
> -
> -trace-dtrace.o: trace-dtrace.dtrace $(GENERATED_HEADERS)
> - $(call quiet-command,dtrace -o $@ -G -s $<, " GEN trace-dtrace.o")
> -
> -simpletrace.o: simpletrace.c $(GENERATED_HEADERS)
> -
> -version.o: $(SRC_PATH)/version.rc config-host.mak
> - $(call quiet-command,$(WINDRES) -I. -o $@ $<," RC $(TARGET_DIR)$@")
> -
> -version-obj-$(CONFIG_WIN32) += version.o
> -######################################################################
> -
> -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 qemu-error.o $(oslib-obj-y)
> $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y)
> qemu-timer-common.o
> -
> -qemu-nbd$(EXESUF): qemu-nbd.o qemu-tool.o qemu-error.o $(oslib-obj-y)
> $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y)
> qemu-timer-common.o
> -
> -qemu-io$(EXESUF): qemu-io.o cmd.o qemu-tool.o qemu-error.o
> $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y)
> $(version-obj-y) qemu-timer-common.o
> -
> -qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx
> - $(call quiet-command,sh $(SRC_PATH)/hxtool -h< $< > $@," GEN $@")
> -
> -check-qint.o check-qstring.o check-qdict.o check-qlist.o
> check-qfloat.o check-qjson.o: $(GENERATED_HEADERS)
> -
> -check-qint: check-qint.o qint.o qemu-malloc.o $(trace-obj-y)
> -check-qstring: check-qstring.o qstring.o qemu-malloc.o $(trace-obj-y)
> -check-qdict: check-qdict.o qdict.o qfloat.o qint.o qstring.o qbool.o
> qemu-malloc.o qlist.o $(trace-obj-y)
> -check-qlist: check-qlist.o qlist.o qint.o qemu-malloc.o $(trace-obj-y)
> -check-qfloat: check-qfloat.o qfloat.o qemu-malloc.o $(trace-obj-y)
> -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 $(trace-obj-y)
> -
> -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 qemu-options.def
> - 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 fsdev/*.o fsdev/*.d ui/*.o ui/*.d
> - rm -f qemu-img-cmds.h
> - rm -f trace.c trace.h trace.c-timestamp trace.h-timestamp
> - rm -f trace-dtrace.dtrace trace-dtrace.dtrace-timestamp
> - rm -f trace-dtrace.h trace-dtrace.h-timestamp
> - $(MAKE) -C tests clean
> - for d in $(ALL_SUBDIRS) libhw32 libhw64 libuser libdis libdis-user; do \
> - if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
> - rm -f $$d/qemu-options.def; \
> - 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.info qemu-doc.aux qemu-doc.cp qemu-doc.dvi
> qemu-doc.fn qemu-doc.info qemu-doc.ky qemu-doc.log qemu-doc.pdf
> qemu-doc.pg qemu-doc.toc qemu-doc.tp qemu-doc.vr
> - rm -f qemu-tech.info qemu-tech.aux qemu-tech.cp qemu-tech.dvi
> qemu-tech.fn qemu-tech.info qemu-tech.ky qemu-tech.log qemu-tech.pdf
> qemu-tech.pg qemu-tech.toc qemu-tech.tp qemu-tech.vr
> - for d in $(TARGET_DIRS) libhw32 libhw64 libuser libdis libdis-user; 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 \
> -vgabios-stdvga.bin vgabios-vmware.bin \
> -ppc_rom.bin 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 \
> -s390-zipl.rom
> -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) "$(DESTDIR)$(sysconfdir)/qemu"
> - $(INSTALL_DATA) $(SRC_PATH)/sysconfigs/target/target-x86_64.conf
> "$(DESTDIR)$(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)/hmp-commands.hx
> - $(call quiet-command,sh $(SRC_PATH)/hxtool -t< $< > $@," GEN $@")
> -
> -QMP/qmp-commands.txt: $(SRC_PATH)/qmp-commands.hx
> - $(call quiet-command,sh $(SRC_PATH)/hxtool -q< $< > $@," 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)
> -
> -SYSTEM_TARGETS=$(filter %-softmmu,$(TARGET_DIRS))
> -SYSTEM_PROGS=$(patsubst qemu-system-i386,qemu, \
> - $(patsubst %-softmmu,qemu-system-%, \
> - $(SYSTEM_TARGETS)))
> -
> -USER_TARGETS=$(filter %-user,$(TARGET_DIRS))
> -USER_PROGS=$(patsubst %-bsd-user,qemu-%, \
> - $(patsubst %-darwin-user,qemu-%, \
> - $(patsubst %-linux-user,qemu-%, \
> - $(USER_TARGETS))))
> -
> -# generate a binary distribution
> -tarbin:
> - cd /&& tar zcvf ~/qemu-$(VERSION)-$(ARCH).tar.gz \
> - $(patsubst %,$(bindir)/%, $(SYSTEM_PROGS)) \
> - $(patsubst %,$(bindir)/%, $(USER_PROGS)) \
> - $(bindir)/qemu-img \
> - $(bindir)/qemu-nbd \
> - $(datadir)/bios.bin \
> - $(datadir)/vgabios.bin \
> - $(datadir)/vgabios-cirrus.bin \
> - $(datadir)/ppc_rom.bin \
> - $(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 ui/*.d)
> +all clean distclean defconfig install install-doc install-sysconfig
> test speed TAGS cscope tar tarbin:
> + $(MAKE) -C obj $@
> diff --git a/Makefile.top b/Makefile.top
> new file mode 100644
> index 0000000..747e47c
> --- /dev/null
> +++ b/Makefile.top
> @@ -0,0 +1,367 @@
> +# Makefile for QEMU.
> +
> +GENERATED_HEADERS = config-host.h trace.h qemu-options.def
> +ifeq ($(TRACE_BACKEND),dtrace)
> +GENERATED_HEADERS += trace-dtrace.h
> +endif
> +
> +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
> QMP/qmp-commands.txt
> +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 $@; then \
> + if ! cmp -s $@ $@.tmp; then \
> + mv $@.tmp $@; \
> + cp -p $@ $@.old; \
> + fi; \
> + 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
> +qemu-options.def: $(SRC_PATH)/qemu-options.hx
> + $(call quiet-command,sh $(SRC_PATH)/hxtool -h< $< > $@," GEN $@")
> +
> +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)): $(trace-obj-y) $(common-obj-y)
> subdir-libdis
> +
> +$(filter %-user,$(SUBDIR_RULES)): $(GENERATED_HEADERS) $(trace-obj-y)
> subdir-libdis-user 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)
> +
> +ui/cocoa.o: ui/cocoa.m
> +
> +ui/sdl.o audio/sdlaudio.o ui/sdl_zoom.o baum.o: QEMU_CFLAGS += $(SDL_CFLAGS)
> +
> +ui/vnc.o: QEMU_CFLAGS += $(VNC_TLS_CFLAGS)
> +
> +bt-host.o: QEMU_CFLAGS += $(BLUEZ_CFLAGS)
> +
> +ifeq ($(TRACE_BACKEND),dtrace)
> +trace.h: trace.h-timestamp trace-dtrace.h
> +else
> +trace.h: trace.h-timestamp
> +endif
> +trace.h-timestamp: $(SRC_PATH)/trace-events config-host.mak
> + $(call quiet-command,sh $(SRC_PATH)/tracetool --$(TRACE_BACKEND) -h
> < $< > $@," GEN trace.h")
> + @cmp -s $@ trace.h || cp $@ trace.h
> +
> +trace.c: trace.c-timestamp
> +trace.c-timestamp: $(SRC_PATH)/trace-events config-host.mak
> + $(call quiet-command,sh $(SRC_PATH)/tracetool --$(TRACE_BACKEND) -c
> < $< > $@," GEN trace.c")
> + @cmp -s $@ trace.c || cp $@ trace.c
> +
> +trace.o: trace.c $(GENERATED_HEADERS)
> +
> +trace-dtrace.h: trace-dtrace.dtrace
> + $(call quiet-command,dtrace -o $@ -h -s $<, " GEN trace-dtrace.h")
> +
> +# Normal practice is to name DTrace probe file with a '.d' extension
> +# but that gets picked up by QEMU's Makefile as an external dependancy
> +# rule file. So we use '.dtrace' instead
> +trace-dtrace.dtrace: trace-dtrace.dtrace-timestamp
> +trace-dtrace.dtrace-timestamp: $(SRC_PATH)/trace-events config-host.mak
> + $(call quiet-command,sh $(SRC_PATH)/tracetool --$(TRACE_BACKEND) -d
> < $< > $@," GEN trace-dtrace.dtrace")
> + @cmp -s $@ trace-dtrace.dtrace || cp $@ trace-dtrace.dtrace
> +
> +trace-dtrace.o: trace-dtrace.dtrace $(GENERATED_HEADERS)
> + $(call quiet-command,dtrace -o $@ -G -s $<, " GEN trace-dtrace.o")
> +
> +simpletrace.o: simpletrace.c $(GENERATED_HEADERS)
> +
> +version.o: $(SRC_PATH)/version.rc config-host.mak
> + $(call quiet-command,$(WINDRES) -I. -o $@ $<," RC $(TARGET_DIR)$@")
> +
> +version-obj-$(CONFIG_WIN32) += version.o
> +######################################################################
> +
> +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 qemu-error.o $(oslib-obj-y)
> $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y)
> qemu-timer-common.o
> +
> +qemu-nbd$(EXESUF): qemu-nbd.o qemu-tool.o qemu-error.o $(oslib-obj-y)
> $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y)
> qemu-timer-common.o
> +
> +qemu-io$(EXESUF): qemu-io.o cmd.o qemu-tool.o qemu-error.o
> $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y)
> $(version-obj-y) qemu-timer-common.o
> +
> +qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx
> + $(call quiet-command,sh $(SRC_PATH)/hxtool -h< $< > $@," GEN $@")
> +
> +check-qint.o check-qstring.o check-qdict.o check-qlist.o
> check-qfloat.o check-qjson.o: $(GENERATED_HEADERS)
> +
> +check-qint: check-qint.o qint.o qemu-malloc.o $(trace-obj-y)
> +check-qstring: check-qstring.o qstring.o qemu-malloc.o $(trace-obj-y)
> +check-qdict: check-qdict.o qdict.o qfloat.o qint.o qstring.o qbool.o
> qemu-malloc.o qlist.o $(trace-obj-y)
> +check-qlist: check-qlist.o qlist.o qint.o qemu-malloc.o $(trace-obj-y)
> +check-qfloat: check-qfloat.o qfloat.o qemu-malloc.o $(trace-obj-y)
> +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 $(trace-obj-y)
> +
> +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 qemu-options.def
> + 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 fsdev/*.o fsdev/*.d ui/*.o ui/*.d
> + rm -f qemu-img-cmds.h
> + rm -f trace.c trace.h trace.c-timestamp trace.h-timestamp
> + rm -f trace-dtrace.dtrace trace-dtrace.dtrace-timestamp
> + rm -f trace-dtrace.h trace-dtrace.h-timestamp
> + $(MAKE) -C tests clean
> + for d in $(ALL_SUBDIRS) libhw32 libhw64 libuser libdis libdis-user; do \
> + if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
> + rm -f $$d/qemu-options.def; \
> + 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.info qemu-doc.aux qemu-doc.cp qemu-doc.dvi
> qemu-doc.fn qemu-doc.info qemu-doc.ky qemu-doc.log qemu-doc.pdf
> qemu-doc.pg qemu-doc.toc qemu-doc.tp qemu-doc.vr
> + rm -f qemu-tech.info qemu-tech.aux qemu-tech.cp qemu-tech.dvi
> qemu-tech.fn qemu-tech.info qemu-tech.ky qemu-tech.log qemu-tech.pdf
> qemu-tech.pg qemu-tech.toc qemu-tech.tp qemu-tech.vr
> + for d in $(TARGET_DIRS) libhw32 libhw64 libuser libdis libdis-user; 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 \
> +vgabios-stdvga.bin vgabios-vmware.bin \
> +ppc_rom.bin 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 \
> +s390-zipl.rom
> +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) "$(DESTDIR)$(sysconfdir)/qemu"
> + $(INSTALL_DATA) $(SRC_PATH)/sysconfigs/target/target-x86_64.conf
> "$(DESTDIR)$(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)/hmp-commands.hx
> + $(call quiet-command,sh $(SRC_PATH)/hxtool -t< $< > $@," GEN $@")
> +
> +QMP/qmp-commands.txt: $(SRC_PATH)/qmp-commands.hx
> + $(call quiet-command,sh $(SRC_PATH)/hxtool -q< $< > $@," 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)
> +
> +SYSTEM_TARGETS=$(filter %-softmmu,$(TARGET_DIRS))
> +SYSTEM_PROGS=$(patsubst qemu-system-i386,qemu, \
> + $(patsubst %-softmmu,qemu-system-%, \
> + $(SYSTEM_TARGETS)))
> +
> +USER_TARGETS=$(filter %-user,$(TARGET_DIRS))
> +USER_PROGS=$(patsubst %-bsd-user,qemu-%, \
> + $(patsubst %-darwin-user,qemu-%, \
> + $(patsubst %-linux-user,qemu-%, \
> + $(USER_TARGETS))))
> +
> +# generate a binary distribution
> +tarbin:
> + cd /&& tar zcvf ~/qemu-$(VERSION)-$(ARCH).tar.gz \
> + $(patsubst %,$(bindir)/%, $(SYSTEM_PROGS)) \
> + $(patsubst %,$(bindir)/%, $(USER_PROGS)) \
> + $(bindir)/qemu-img \
> + $(bindir)/qemu-nbd \
> + $(datadir)/bios.bin \
> + $(datadir)/vgabios.bin \
> + $(datadir)/vgabios-cirrus.bin \
> + $(datadir)/ppc_rom.bin \
> + $(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 ui/*.d)
> diff --git a/configure b/configure
> index e560f87..ac7e220 100755
> --- a/configure
> +++ b/configure
> @@ -500,14 +500,17 @@ fi
>
> # find source path
> source_path=`dirname "$0"`
> -source_path_used="no"
> workdir=`pwd`
> if [ -z "$source_path" ]; then
> source_path=$workdir
> else
> source_path=`cd "$source_path"; pwd`
> fi
> -[ -f "$workdir/vl.c" ] || source_path_used="yes"
> +if [ "$source_path" = "$workdir" ]; then
> + # Force object directory use
> + mkdir -p obj
> + cd obj
> +fi
>
> werror=""
>
> @@ -521,7 +524,6 @@ for opt do
> --interp-prefix=*) interp_prefix="$optarg"
> ;;
> --source-path=*) source_path="$optarg"
> - source_path_used="yes"
> ;;
> --cross-prefix=*)
> ;;
> @@ -3119,27 +3121,28 @@ echo "QEMU_CFLAGS+=$cflags">> $config_target_mak
> done # for target in $targets
>
> # build tree in object directory if source path is different from current one
> -if test "$source_path_used" = "yes" ; then
> - DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
> - DIRS="$DIRS roms/seabios roms/vgabios"
> - DIRS="$DIRS fsdev ui"
> - FILES="Makefile tests/Makefile"
> - FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
> - FILES="$FILES tests/test-mmap.c"
> - FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
> - FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
> - for bios_file in $source_path/pc-bios/*.bin
> $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
> - FILES="$FILES pc-bios/`basename $bios_file`"
> - done
> - for dir in $DIRS ; do
> - mkdir -p $dir
> - done
> - # remove the link and recreate it, as not all "ln -sf" overwrite the link
> - for f in $FILES ; do
> - rm -f $f
> - ln -s $source_path/$f $f
> - done
> -fi
> +DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
> +DIRS="$DIRS roms/seabios roms/vgabios"
> +DIRS="$DIRS fsdev ui"
> +FILES="tests/Makefile"
> +FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
> +FILES="$FILES tests/test-mmap.c"
> +FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
> +FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
> +for bios_file in $source_path/pc-bios/*.bin
> $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
> + FILES="$FILES pc-bios/`basename $bios_file`"
> +done
> +for dir in $DIRS ; do
> + mkdir -p $dir
> +done
> +
> +ln -s $source_path/Makefile.top Makefile
> +
> +# remove the link and recreate it, as not all "ln -sf" overwrite the link
> +for f in $FILES ; do
> + rm -f $f
> + ln -s $source_path/$f $f
> +done
>
> # temporary config to build submodules
> for rom in seabios vgabios ; do
>
next prev parent reply other threads:[~2010-11-16 22:18 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-16 21:59 [Qemu-devel] [PATCH] Force object directory use Blue Swirl
2010-11-16 22:18 ` Anthony Liguori [this message]
2010-11-16 22:37 ` Peter Maydell
2010-11-17 19:08 ` Blue Swirl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CE3032E.6020108@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=blauwirbel@gmail.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.