>From 2504eef721805401397822accbcadc14a0cc1d0d Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 1 Jan 2021 15:15:54 -0800 Subject: [PATCH] Fix broken build on AIX 7.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- configure.ac | 12 ++++++++++++ src/terminfo.c | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 48e96529ff..07a11cc990 100644 --- a/configure.ac +++ b/configure.ac @@ -4366,6 +4366,18 @@ AC_DEFUN 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 terminfo 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 15aff317f1..a9c9572bbb 100644 --- a/src/terminfo.c +++ b/src/terminfo.c @@ -23,10 +23,10 @@ /* 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 -- 2.27.0