Commit 9abbdbfe59318779902ab08e5070f3819cb83b58

Authored by Anthony Liguori
1 parent a984a69e

Fix build on Solaris and WIN32

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing 2 changed files with 24 additions and 4 deletions
configure
... ... @@ -1691,6 +1691,29 @@ bsd)
1691 1691 ;;
1692 1692 esac
1693 1693  
  1694 +# Determine what linker flags to use to force archive inclusion
  1695 +check_linker_flags()
  1696 +{
  1697 + $cc $ARCH_CFLAGS -o $TMPE $OS_CFLAGS $TMPC -Wl,$1 -Wl,$2 >/dev/null 2>/dev/null
  1698 +}
  1699 +
  1700 +cat > $TMPC << EOF
  1701 +int main(void) { }
  1702 +EOF
  1703 +if check_linker_flags --whole-archive --no-whole-archive ; then
  1704 + # GNU ld
  1705 + echo "ARLIBS_BEGIN=-Wl,--whole-archive" >> $config_mak
  1706 + echo "ARLIBS_END=-Wl,--no-whole-archive" >> $config_mak
  1707 +elif check_linker_flags -z,allextract -z,defaultextract ; then
  1708 + # Solaris ld
  1709 + echo "ARLIBS_BEGIN=-Wl,-z,allextract" >> $config_mak
  1710 + echo "ARLIBS_END=-Wl,-z,defaultextract" >> $config_mak
  1711 +else
  1712 + echo "Error: your linker does not support --whole-archive or -z."
  1713 + echo "Please report to qemu-devel@nongnu.org"
  1714 + exit 1
  1715 +fi
  1716 +
1694 1717 tools=
1695 1718 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1696 1719 tools="qemu-img\$(EXESUF) $tools"
... ...
rules.mak
... ... @@ -8,10 +8,7 @@
8 8 %.o: %.m
9 9 $(call quiet-command,$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<," OBJC $(TARGET_DIR)$@")
10 10  
11   -WAS=-Wl,--whole-archive
12   -WAE=-Wl,--no-whole-archive
13   -
14   -LINK = $(call quiet-command,$(CC) $(LDFLAGS) -o $@ $(1) $(LIBS) $(WAS) $(ARLIBS) $(WAE)," LINK $(TARGET_DIR)$@")
  11 +LINK = $(call quiet-command,$(CC) $(LDFLAGS) -o $@ $(1) $(ARLIBS_BEGIN) $(ARLIBS) $(ARLIBS_END) $(LIBS)," LINK $(TARGET_DIR)$@")
15 12  
16 13 %$(EXESUF): %.o
17 14 $(call LINK,$^)
... ...