On Mon, Jun 1, 2015 at 12:10 PM, Richard Henderson <r...@twiddle.net> wrote: > On 05/30/2015 11:11 PM, Peter Crosthwaite wrote: >> ######################################################### >> # cpu emulator library >> -obj-y = exec.o translate-all.o cpu-exec.o >> -obj-y += tcg/tcg.o tcg/tcg-op.o tcg/optimize.o >> +obj-y += exec.o >> +arch-obj-$(call lnot,$(TARGET_MULTI)) += translate-all.o >> +arch-obj-$(call lnot,$(TARGET_MULTI)) += cpu-exec.o >> +arch-obj-$(call lnot,$(TARGET_MULTI)) += tcg/tcg.o tcg/tcg-op.o >> tcg/optimize.o >> obj-$(CONFIG_TCG_INTERPRETER) += tci.o >> obj-$(CONFIG_TCG_INTERPRETER) += disas/tci.o >> obj-y += fpu/softfloat.o >> -obj-y += target-$(TARGET_BASE_ARCH)/ >> +obj-$(CONFIG_ARCH_SINGLE) += target-$(TARGET_BASE_ARCH)/ >> +arch-obj-$(CONFIG_ARCH_MULTI) += target-$(TARGET_BASE_ARCH)/ >> +obj-$(CONFIG_ARCH_MULTI) += target-$(TARGET_BASE_ARCH)/hw/ >> obj-y += disas.o >> obj-$(call notempty,$(TARGET_XML_FILES)) += gdbstub-xml.o >> obj-$(call lnot,$(CONFIG_KVM)) += kvm-stub.o >> @@ -132,7 +136,8 @@ obj-y += arch_init.o cpus.o monitor.o gdbstub.o >> balloon.o ioport.o numa.o >> obj-y += qtest.o bootdevice.o >> obj-y += hw/ >> obj-$(CONFIG_KVM) += kvm-all.o >> -obj-y += memory.o savevm.o cputlb.o >> +obj-y += memory.o savevm.o >> +arch-obj-$(call lnot,$(TARGET_MULTI)) += cputlb.o >> obj-y += memory_mapping.o >> obj-y += dump.o >> LIBS := $(libs_softmmu) $(LIBS) > > How does translate-all.o get built for CONFIG_ARCH_SINGLE? >
It will be an arch-obj-y. The entire arch-obj-y list will then be added to obj-y list as is without any of the intermediate link stuff. In CONFIG_ARCH_SINGLE there is no difference between obj-y and arch-obj-y. It's the meaning of arch-obj that changes between the two configs rather than the configs changing the bucketing of objects. > Is arch-obj-n added to obj-y somewhere I'm missing? Such an inclusion would > seem to tidy some of the lines above... > No it's not. I didn't even know that was ok. Regards, Peter > > r~ >