Fix build on Solaris and WIN32
authorAnthony Liguori <aliguori@us.ibm.com>
Tue, 12 May 2009 14:55:27 +0000 (09:55 -0500)
committerAnthony Liguori <aliguori@us.ibm.com>
Thu, 14 May 2009 22:03:49 +0000 (17:03 -0500)
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

configure
rules.mak

index 8fbe35b..4111e7c 100755 (executable)
--- a/configure
+++ b/configure
@@ -1691,6 +1691,29 @@ bsd)
 ;;
 esac
 
+# Determine what linker flags to use to force archive inclusion
+check_linker_flags()
+{
+    $cc $ARCH_CFLAGS -o $TMPE $OS_CFLAGS $TMPC -Wl,$1 -Wl,$2 >/dev/null 2>/dev/null
+}
+
+cat > $TMPC << EOF
+int main(void) { }
+EOF
+if check_linker_flags --whole-archive --no-whole-archive ; then
+    # GNU ld
+    echo "ARLIBS_BEGIN=-Wl,--whole-archive" >> $config_mak
+    echo "ARLIBS_END=-Wl,--no-whole-archive" >> $config_mak
+elif check_linker_flags -z,allextract -z,defaultextract ; then
+    # Solaris ld
+    echo "ARLIBS_BEGIN=-Wl,-z,allextract" >> $config_mak
+    echo "ARLIBS_END=-Wl,-z,defaultextract" >> $config_mak
+else
+    echo "Error: your linker does not support --whole-archive or -z."
+    echo "Please report to qemu-devel@nongnu.org"
+    exit 1
+fi
+
 tools=
 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
   tools="qemu-img\$(EXESUF) $tools"
index 8471d40..8d6d96e 100644 (file)
--- a/rules.mak
+++ b/rules.mak
@@ -8,10 +8,7 @@
 %.o: %.m
        $(call quiet-command,$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<,"  OBJC  $(TARGET_DIR)$@")
 
-WAS=-Wl,--whole-archive
-WAE=-Wl,--no-whole-archive
-
-LINK = $(call quiet-command,$(CC) $(LDFLAGS) -o $@ $(1) $(LIBS) $(WAS) $(ARLIBS) $(WAE),"  LINK  $(TARGET_DIR)$@")
+LINK = $(call quiet-command,$(CC) $(LDFLAGS) -o $@ $(1) $(ARLIBS_BEGIN) $(ARLIBS) $(ARLIBS_END) $(LIBS),"  LINK  $(TARGET_DIR)$@")
 
 %$(EXESUF): %.o
        $(call LINK,$^)