all: $(TOOLS) $(DOCS) recurse-all
-subdir-%: dyngen$(EXESUF) libqemu_common.a
+SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
+
+subdir-%: dyngen$(EXESUF)
$(MAKE) -C $(subst subdir-,,$@) all
-recurse-all: $(patsubst %,subdir-%, $(TARGET_DIRS))
+$(filter %-softmmu,$(SUBDIR_RULES)): libqemu_common.a
+$(filter %-user,$(SUBDIR_RULES)): libqemu_user.a
+
+recurse-all: $(SUBDIR_RULES)
#######################################################################
# BLOCK_OBJS is code used by both qemu system emulation and qemu-img
rm -f $@
$(AR) rcs $@ $(OBJS)
+#######################################################################
+# USER_OBJS is code used by qemu userspace emulation
+USER_OBJS=cutils.o
+
+libqemu_user.a: $(USER_OBJS)
+ rm -f $@
+ $(AR) rcs $@ $(USER_OBJS)
+
QEMU_IMG_BLOCK_OBJS = $(BLOCK_OBJS)
ifdef CONFIG_WIN32
QEMU_IMG_BLOCK_OBJS += qemu-img-block-raw-win32.o
endif
OBJS+= libqemu.a
-OBJS+= ../libqemu_common.a
# Note: this is a workaround. The real fix is to avoid compiling
# cpu_signal_handler() in cpu-exec.c.
signal.o: signal.c
$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
-$(QEMU_PROG): $(OBJS)
+$(QEMU_PROG): $(OBJS) ../libqemu_user.a
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
ifeq ($(ARCH),alpha)
# Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of