summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2021-01-03 11:19:48 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2021-01-03 11:51:57 -0800
commit585997d05adde5a3510ce1221f9e8dd60407ce30 (patch)
tree0a83e6375dc82f7febe52a7c3e793b03f54c78d8
parenta7c2793efe503ad7ad9f2d6fc73555da3a4cdaea (diff)
downloademacs-585997d05adde5a3510ce1221f9e8dd60407ce30.tar.gz
Fix broken build on AIX 7.2
Without this fix, the build on AIX 7.2 with xlc fails in the ‘CCLD temacs’ step with the diagnostic ‘ld: 0711-317 ERROR: Undefined symbol: BC’. This is because -lcurses does not define BC etc. * configure.ac: When building terminfo.o, define TERMINFO_DEFINES_BC if the library defines BC etc. * src/terminfo.c (UP, BC, PC): Define depending on TERMINFO_DEFINES_BC, not on TERMINFO.
-rw-r--r--configure.ac12
-rw-r--r--src/terminfo.c6
2 files changed, 15 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index 48e96529ff2..89b0785d031 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4366,6 +4366,18 @@ TERMCAP_OBJ=tparam.o
if test $TERMINFO = yes; then
AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.])
TERMCAP_OBJ=terminfo.o
+ AC_CACHE_CHECK([whether $LIBS_TERMCAP library defines BC],
+ [emacs_cv_terminfo_defines_BC],
+ [OLD_LIBS=$LIBS
+ LIBS="$LIBS $LIBS_TERMCAP"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern char *BC;]], [[return !*BC;]])],
+ [emacs_cv_terminfo_defines_BC=yes],
+ [emacs_cv_terminfo_defines_BC=no])
+ LIBS=$OLD_LIBS])
+ if test "$emacs_cv_terminfo_defines_BC" = yes; then
+ AC_DEFINE([TERMINFO_DEFINES_BC], 1, [Define to 1 if the
+ terminfo library defines the variables BC, PC, and UP.])
+ fi
fi
if test "X$LIBS_TERMCAP" = "X-lncurses"; then
AC_DEFINE(USE_NCURSES, 1, [Define to 1 if you use ncurses.])
diff --git a/src/terminfo.c b/src/terminfo.c
index 15aff317f15..a9c9572bbb2 100644
--- a/src/terminfo.c
+++ b/src/terminfo.c
@@ -23,10 +23,10 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
/* Define these variables that serve as global parameters to termcap,
so that we do not need to conditionalize the places in Emacs
- that set them. But don't do that for terminfo, as that could
- cause link errors when using -fno-common. */
+ that set them. But don't do that if terminfo defines them, as that
+ could cause link errors when using -fno-common. */
-#if !TERMINFO
+#ifndef TERMINFO_DEFINES_BC
char *UP, *BC, PC;
#endif