On 21/06/12 22:19, Andreas Färber wrote: > Am 21.06.2012 13:21, schrieb Alexey Kardashevskiy: >> On 21/06/12 20:36, Andreas Färber wrote: >>> Am 21.06.2012 05:22, schrieb Alexey Kardashevskiy: >>>> I am trying to compile the very last qemu with vfio_pci enabled. VFIO_PCI >>>> is added as below: >>>> >>>> ./configure: >>>> >>>> case "$target_arch2" in >>>> i386|x86_64|ppc64) >>>> if test "$vfio_pci" = "yes" -a "$target_softmmu" = "yes" ; then >>>> echo "CONFIG_VFIO_PCI=y" >> $config_target_mak >>>> fi >>>> esac >>>> >>>> >>>> ./Makefile.target: >>>> >>>> # VFIO PCI device assignment >>>> obj-$(CONFIG_VFIO_PCI) += vfio_pci.o >>>> >>>> >>>> And it worked before. However it does not anymore as it seems that >>>> everything in hw/ (and vfio_pci.c >>>> as well as is in hw/ and it is a device) can be only compiled via >>>> hw/Makefile.objs and >>>> hw/ppc/Makefile.objs (my platform is POWER), it is ignored if to keep it >>>> as is. >>>> >>>> So I have to move "obj-$(CONFIG_VFIO_PCI) += vfio_pci.o" to >>>> hw/Makefile.objs (and change obj- to >>>> hw-obj-) but the hw/Makefile.objs does not include (directly or >>>> indirectly) generated >>>> ppc64-softmmu/config-target.mak with CONFIG_VFIO_PCI=y. >>>> >>>> What is the correct solution? >>> >>> If the file compiles the same for all three, put CONFIG_VFIO_PCI=y into >>> default-configs/{i386,x86_64,ppc64}-softmmu.mak and do >>> hw-obj-$(CONFIG_VFIO_PCI) += in hw/Makefile.objs. >> >> >> It only compiles with ./configure --enable-vfio-pci which may or may not set >> CONFIG_VFIO_PCI to "y". >> Your proposal makes it always "y" (for selected platforms). > > Apply some creativity, there's surely examples around. The question is > whether the contents of vfio_pci.o changes or not.
Applied already and gave up, this is why I am writing here :) What would be a good example of a device which is enabled by configure script? > If not, then you only > need to build it once in libhwX/, depending on $config_target_mak, and > link to the appropriate targets. If it accesses CPU internals then it > must be built per target. $config_target_mak points to ppc64-softmmu/config-target.mak, not in the root folder. When executed in libhw64, it is not visible to makefile. >>> Otherwise, add to hw/{i386,ppc}/Makefile.objs - or with Anthony's >>> proposal from yesterday hw/Makefile.objs becomes possible, too. >> >> Again, it will be unconditional "y". > > No, in this case the condition would be set from configure as before, it > only moves from Makefile.target to the appropriate Makefile.objs. > Note that to limit it to ppc64 (as opposed to ppc) some additional ifeq > check would be needed, as before. -- Alexey