summaryrefslogtreecommitdiff
path: root/Build/source/texk/xdvik/m4/xdvi-linker-multiple-defns.m4
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/xdvik/m4/xdvi-linker-multiple-defns.m4')
-rw-r--r--Build/source/texk/xdvik/m4/xdvi-linker-multiple-defns.m479
1 files changed, 79 insertions, 0 deletions
diff --git a/Build/source/texk/xdvik/m4/xdvi-linker-multiple-defns.m4 b/Build/source/texk/xdvik/m4/xdvi-linker-multiple-defns.m4
new file mode 100644
index 00000000000..3de54de5b89
--- /dev/null
+++ b/Build/source/texk/xdvik/m4/xdvi-linker-multiple-defns.m4
@@ -0,0 +1,79 @@
+dnl ### Check if the --allow-multiple-definition linker flag is
+dnl ### available (assuming that we need to use it if it is).
+dnl ### If it isn't, check if the linker accepts multiple definitions,
+dnl ### and if it doesn't, don't define LD_ALLOWS_MULTIPLE_DEFINITIONS.
+
+AC_DEFUN([XDVI_LINKER_MULTIPLE_DEFNS],
+[AC_CACHE_CHECK([whether linker supports the --allow-multiple-definition flag],
+xdvi_cv_linker_multiple_defns,
+xdvi_save_LDFLAGS="$LDFLAGS"
+LDFLAGS="-Xlinker --allow-multiple-definition"
+x_linker_options=""
+[AC_TRY_LINK(
+ [#include <stdio.h>
+ ],
+ [void foo(void);
+ ],
+ [xdvi_cv_linker_multiple_defns=yes], [xdvi_cv_linker_multiple_defns=no]
+)]
+)
+if test $xdvi_cv_linker_multiple_defns = yes; then
+ x_linker_options="-Xlinker --allow-multiple-definition"
+ LDFLAGS="$xdvi_save_LDFLAGS"
+ AC_DEFINE([LD_ALLOWS_MULTIPLE_DEFINITIONS], 1,
+ [Define if your system allows multiple definitions of functions.])
+else
+ LDFLAGS="$xdvi_save_LDFLAGS"
+
+ xdvi_ld_save_LIBS="$LIBS"
+ xdvi_ld_save_CFLAGS="$CFLAGS"
+ xdvi_ld_save_CPPFLAGS="$CPPFLAGS"
+ xdvi_ld_save_LDFLAGS="$LDFLAGS"
+
+ LIBS="$X_PRE_LIBS -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+ CFLAGS="$X_CFLAGS $CFLAGS"
+ CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+ LDFLAGS="$X_LIBS $LDFLAGS"
+
+ AC_MSG_CHECKING([whether linker supports multiple definitions by default])
+
+ AC_TRY_LINK(
+ [#include <X11/Intrinsic.h>
+
+ XtIntervalId XtAppAddTimeOut(XtAppContext app,
+ unsigned long interval,
+ XtTimerCallbackProc proc,
+ XtPointer closure)
+ {
+ (void)app; (void)interval; (void)proc; (void)closure;
+ return (XtIntervalId)0;
+ }
+ ],[
+ XtIntervalId i = 0;
+ XtRemoveTimeOut(i);
+ ],
+ [xdvi_cv_linker_multiple_defns=yes], [xdvi_cv_linker_multiple_defns=no]
+ )
+
+ if test $xdvi_cv_linker_multiple_defns = yes; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([LD_ALLOWS_MULTIPLE_DEFINITIONS], 1)
+ else
+ AC_MSG_RESULT(no)
+ AC_MSG_WARN([Linker does not allow multiple definitions.
+ *****************************************************************
+ * Warning: Your linker does not allow multiple definitions. *
+ * This does not make xdvik unusable, but it will cause problems *
+ * with event handling: Some widgets, e.g. the print log window, *
+ * tooltips, statusline messages and hyperlink location markers *
+ * will not be updated until the mouse is moved. *
+ *****************************************************************])
+ fi
+ LIBS="$xdvi_ld_save_LIBS"
+ CFLAGS="$xdvi_ld_save_CFLAGS"
+ CPPFLAGS="$xdvi_ld_save_CPPFLAGS"
+ LDFLAGS="$xdvi_ld_save_LDFLAGS"
+fi
+AC_SUBST(x_linker_options)])
+
+