ports/emulators/qemu/patches/patch-configure

98 lines
2.2 KiB
Text
Raw Normal View History

2023-08-16 22:26:55 +00:00
Revert..
[PATCH] configure: simplify creation of plugin symbol list
37650689473c4cdb5838f90cbc1aefbcd9332fb0
Index: configure
--- configure.orig
+++ configure
@@ -81,6 +81,7 @@ TMPC="${TMPDIR1}/${TMPB}.c"
TMPO="${TMPDIR1}/${TMPB}.o"
TMPM="${TMPDIR1}/${TMPB}.m"
TMPE="${TMPDIR1}/${TMPB}.exe"
+TMPTXT="${TMPDIR1}/${TMPB}.txt"
rm -f config.log
2023-08-18 18:38:43 +00:00
@@ -1330,7 +1331,6 @@ if test "$static" = "yes" ; then
2023-08-16 22:26:55 +00:00
plugins="no"
fi
fi
-test "$plugins" = "" && plugins=yes
cat > $TMPC << EOF
2023-08-18 18:38:43 +00:00
@@ -1475,6 +1475,56 @@ if ! has "$pkg_config_exe"; then
2023-08-16 22:26:55 +00:00
fi
##########################################
+# plugin linker support probe
+
+if test "$plugins" != "no"; then
+
+ #########################################
+ # See if --dynamic-list is supported by the linker
+
+ ld_dynamic_list="no"
+ cat > $TMPTXT <<EOF
+{
+ foo;
+};
+EOF
+
+ cat > $TMPC <<EOF
+#include <stdio.h>
+void foo(void);
+
+void foo(void)
+{
+ printf("foo\n");
+}
+
+int main(void)
+{
+ foo();
+ return 0;
+}
+EOF
+
+ if compile_prog "" "-Wl,--dynamic-list=$TMPTXT" ; then
+ ld_dynamic_list="yes"
+ fi
+
+ if test "$ld_dynamic_list" = "no" ; then
+ if test "$plugins" = "yes"; then
+ error_exit \
+ "Plugin support requires dynamic linking and specifying a set of symbols " \
+ "that are exported to plugins. Unfortunately your linker doesn't " \
+ "support the flag (--dynamic-list) used " \
+ "for this purpose."
+ else
+ plugins="no"
+ fi
+ else
+ plugins="yes"
+ fi
+fi
+
+##########################################
# glib support probe
# When bumping glib_req_ver, please check also whether we should increase
2023-08-18 18:38:43 +00:00
@@ -2404,6 +2454,15 @@ fi
2023-08-16 22:26:55 +00:00
if test "$plugins" = "yes" ; then
echo "CONFIG_PLUGIN=y" >> $config_host_mak
+ # Copy the export object list to the build dir
+ if test "$ld_dynamic_list" = "yes" ; then
+ echo "CONFIG_HAS_LD_DYNAMIC_LIST=yes" >> $config_host_mak
+ ld_symbols=qemu-plugins-ld.symbols
+ cp "$source_path/plugins/qemu-plugins.symbols" $ld_symbols
+ else
+ error_exit \
+ "If \$plugins=yes, \$ld_dynamic_list should have been set to 'yes'."
+ fi
fi
if test -n "$gdb_bin"; then