head 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 2026.09.09.02.26.33; author charlotte; state Exp; branches; next ; commitid lrjsUOamsppbhTUG; desc @@ 1.1 log @textproc/libxo: New package The libxo library allows an application to generate text, XML, JSON, and HTML output using a common set of function calls. The application decides at run time which output style should be produced. The application calls a function "xo_emit" to product output that is described in a format string. A "field descriptor" tells libxo what the field is and what it means. @ text @$NetBSD$ Fix gettext detection. commit 1f32d0fbb11462376d4294bddc59c2fd9e56a57c Author: Rui Chen Date: Sun Aug 16 19:06:13 2026 -0400 configure: detect gettext in libc and make msgfmt conditional On glibc, gettext lives in libc with no separate libintl, so the -lintl link probes failed and the msgfmt check aborted even when gettext is usable. Detect whether -lintl is needed, add so NULL is defined, gate the msgfmt lookup on gettext being present, and also search PATH for msgfmt. Overlaps Juniper/libxo#114 and #115. Signed-off-by: Rui Chen --- configure.ac.old +++ configure.ac @@@@ -209,11 +209,20 @@@@ HAVE_GETTEXT=no if test "$GETTEXT_ENABLE" != "no"; then + dnl glibc provides gettext in libc; only link -lintl when a separate + dnl libintl is required (e.g. macOS, *BSD), so detection also works on glibc. + GETTEXT_INTL=-lintl + AC_LINK_IFELSE([AC_LANG_SOURCE([[#include ] + [#include ] + [int main() {char *cp = dgettext(NULL, "xx"); return 0; }]])], + [GETTEXT_INTL=]) + AC_MSG_CHECKING([gettext in ${GETTEXT_PREFIX}]) _save_cflags="$CFLAGS" - CFLAGS="$CFLAGS -I${GETTEXT_PREFIX}/include -L${GETTEXT_PREFIX}/lib -Werror -lintl" + CFLAGS="$CFLAGS -I${GETTEXT_PREFIX}/include -L${GETTEXT_PREFIX}/lib -Werror ${GETTEXT_INTL}" AC_LINK_IFELSE([AC_LANG_SOURCE([[#include ] + [#include ] [int main() {char *cp = dgettext(NULL, "xx"); return 0; }]])], [HAVE_GETTEXT=yes], [HAVE_GETTEXT=no]) @@@@ -226,8 +235,9 @@@@ if test "$GETTEXT_ENABLE" != "no"; then AC_MSG_CHECKING([gettext in ${GETTEXT_PREFIX}]) _save_cflags="$CFLAGS" - CFLAGS="$CFLAGS -I${GETTEXT_PREFIX}/include -L${GETTEXT_PREFIX}/lib -Werror -lintl" + CFLAGS="$CFLAGS -I${GETTEXT_PREFIX}/include -L${GETTEXT_PREFIX}/lib -Werror ${GETTEXT_INTL}" AC_LINK_IFELSE([AC_LANG_SOURCE([[#include ] + [#include ] [int main() {char *cp = dgettext(NULL, "xx"); return 0; }]])], [HAVE_GETTEXT=yes], [HAVE_GETTEXT=no]) @@@@ -241,8 +251,9 @@@@ if test "$GETTEXT_ENABLE" != "no"; then AC_MSG_CHECKING([gettext in ${GETTEXT_PREFIX}]) _save_cflags="$CFLAGS" - CFLAGS="$CFLAGS -I${GETTEXT_PREFIX}/include -L${GETTEXT_PREFIX}/lib -Werror -lintl" + CFLAGS="$CFLAGS -I${GETTEXT_PREFIX}/include -L${GETTEXT_PREFIX}/lib -Werror ${GETTEXT_INTL}" AC_LINK_IFELSE([AC_LANG_SOURCE([[#include ] + [#include ] [int main() {char *cp = dgettext(NULL, "xx"); return 0; }]])], [HAVE_GETTEXT=yes], [HAVE_GETTEXT=no]) @@@@ -255,7 +266,7 @@@@ fi if test "$HAVE_GETTEXT" = "yes"; then AC_DEFINE([HAVE_GETTEXT], [1], [gettext(3)]) GETTEXT_CFLAGS="-I${GETTEXT_PREFIX}/include" - GETTEXT_LIBS="-L${GETTEXT_PREFIX}/lib -lintl" + GETTEXT_LIBS="-L${GETTEXT_PREFIX}/lib ${GETTEXT_INTL}" else GETTEXT_PREFIX=none GETTEXT_CFLAGS= @@@@ -266,14 +277,17 @@@@ AC_SUBST(GETTEXT_LIBS) GETTEXT_LIBDIR=${GETTEXT_PREFIX}/lib AC_SUBST(GETTEXT_LIBDIR) -if test -x ${GETTEXT_PREFIX}/bin/msgfmt ; then +if test "$HAVE_GETTEXT" != "yes"; then + GETTEXT_BINDIR= +elif test -x ${GETTEXT_PREFIX}/bin/msgfmt ; then GETTEXT_BINDIR=${GETTEXT_PREFIX}/bin elif test -x ${GETTEXT_PREFIX}/local/bin/msgfmt ; then GETTEXT_BINDIR=${GETTEXT_PREFIX}/local/bin else - AC_MSG_FAILURE("could not find msgfmt tool") - # Use a (bad) fall back value - GETTEXT_BINDIR=${GETTEXT_PREFIX}/bin + dnl gettext may live in libc (glibc); msgfmt can be elsewhere on PATH + AC_PATH_PROG([MSGFMT], [msgfmt]) + AS_IF([test -n "$MSGFMT"], [GETTEXT_BINDIR=`AS_DIRNAME([$MSGFMT])`], + [AC_MSG_FAILURE([could not find msgfmt tool])]) fi AC_SUBST(GETTEXT_BINDIR) @