diff --git a/Makefile b/Makefile index 86b168b33b..d66826cba2 100644 --- a/Makefile +++ b/Makefile @@ -40,6 +40,11 @@ subdir-%: $(filter %-softmmu,$(SUBDIR_RULES)): libqemu_common.a +$(filter %-user,$(SUBDIR_RULES)): libuser.a + +libuser.a: + $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C libuser V="$(V)" TARGET_DIR="$*/" all,) + ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS)) romsubdir-%: $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C pc-bios/$* V="$(V)" TARGET_DIR="$*/",) @@ -185,14 +190,14 @@ clean: rm -f slirp/*.o slirp/*.d audio/*.o audio/*.d block/*.o block/*.d rm -f qemu-img-cmds.h $(MAKE) -C tests clean - for d in $(ALL_SUBDIRS) libhw32 libhw64; do \ + for d in $(ALL_SUBDIRS) libhw32 libhw64 libuser; do \ $(MAKE) -C $$d $@ || exit 1 ; \ done distclean: clean rm -f config-host.mak config-host.h config-host.ld $(DOCS) qemu-options.texi qemu-img-cmds.texi rm -f qemu-{doc,tech}.{info,aux,cp,dvi,fn,info,ky,log,pg,toc,tp,vr} - for d in $(TARGET_DIRS) libhw32 libhw64; do \ + for d in $(TARGET_DIRS) libhw32 libhw64 libuser; do \ rm -rf $$d || exit 1 ; \ done diff --git a/Makefile.target b/Makefile.target index 7e61e851b5..1f4518c260 100644 --- a/Makefile.target +++ b/Makefile.target @@ -82,7 +82,6 @@ VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) obj-y = main.o syscall.o strace.o mmap.o signal.o thunk.o \ elfload.o linuxload.o uaccess.o gdbstub.o gdbstub-xml.o -obj-y += envlist.o path.o obj-$(TARGET_HAS_BFLT) += flatload.o obj-$(TARGET_HAS_ELFLOAD32) += elfload32.o @@ -98,7 +97,8 @@ obj-arm-y += arm-semi.o obj-m68k-y += m68k-sim.o m68k-semi.o -ARLIBS=libqemu.a +ARLIBS=../libuser/libuser.a libqemu.a + endif #CONFIG_LINUX_USER ######################################################### @@ -116,11 +116,10 @@ LIBS+=-lmx obj-y = main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o \ gdbstub.o gdbstub-xml.o -obj-y += envlist.o path.o obj-i386-y += ioport-user.o -ARLIBS=libqemu.a +ARLIBS=../libuser/libuser.a libqemu.a endif #CONFIG_DARWIN_USER @@ -134,24 +133,13 @@ QEMU_CFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH) obj-y = main.o bsdload.o elfload.o mmap.o signal.o strace.o syscall.o \ gdbstub.o gdbstub-xml.o uaccess.o -obj-y += envlist.o path.o obj-i386-y += ioport-user.o -ARLIBS=libqemu.a +ARLIBS=../libuser/libuser.a libqemu.a endif #CONFIG_BSD_USER -ifdef CONFIG_USER_ONLY -# hack to compile with -fpie for *-user targets -obj-y += tcg-runtime-user.o host-utils-user.o -obj-y += cutils-user.o cache-utils-user.o -tcg-runtime-user.c host-utils-user.c cutils-user.c cache-utils-user.c: - @echo " LN $(TARGET_DIR)$@" - @ln -s $(SRC_PATH)/$(@:%-user.c=%.c) $@ -endif - - ######################################################### # System emulator target ifdef CONFIG_SOFTMMU diff --git a/Makefile.user b/Makefile.user new file mode 100644 index 0000000000..907e74bd9e --- /dev/null +++ b/Makefile.user @@ -0,0 +1,27 @@ +# Makefile for qemu target independent user files. + +include ../config-host.mak +include $(SRC_PATH)/rules.mak + +.PHONY: all + +VPATH=$(SRC_PATH) + +QEMU_CFLAGS+=-I.. + +obj-y = +obj-y += envlist.o path.o +obj-y += tcg-runtime.o host-utils.o +obj-y += cutils.o cache-utils.o + +all: libuser.a +# Dummy command so that make thinks it has done something + @true + +libuser.a: $(obj-y) + +clean: + rm -f *.o *.d *.a *~ + +# Include automatically generated dependency files +-include $(wildcard *.d */*.d) diff --git a/configure b/configure index 8ac8b4dce5..fb5b6bbd2e 100755 --- a/configure +++ b/configure @@ -2489,3 +2489,8 @@ for hwlib in 32 64; do echo "HWLIB=libqemuhw$hwlib.a" > $d/config.mak echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" >> $d/config.mak done + +d=libuser +mkdir -p $d +rm -f $d/Makefile +ln -s $source_path/Makefile.user $d/Makefile