]> git.proxmox.com Git - qemu.git/commitdiff
Compile some user files only once for all targets
authorBlue Swirl <blauwirbel@gmail.com>
Sun, 27 Sep 2009 16:26:02 +0000 (16:26 +0000)
committerBlue Swirl <blauwirbel@gmail.com>
Sun, 27 Sep 2009 16:26:02 +0000 (16:26 +0000)
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Makefile
Makefile.target
Makefile.user [new file with mode: 0644]
configure

index 86b168b33bb7ade2981bf59b607d4d0512a3c483..d66826cba23c72ab5a51eb5accf37a2aa433cbc0 100644 (file)
--- 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
 
index 7e61e851b50c20def2819479831ae41d835f79a0..1f4518c2609e0fb868aba87483aefb13fe48fa16 100644 (file)
@@ -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 (file)
index 0000000..907e74b
--- /dev/null
@@ -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)
index 8ac8b4dce51d09fd3b4d590b85f7cc19d4c139c6..fb5b6bbd2e652624bf6392fdb1c52f8b0674d749 100755 (executable)
--- 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