Subject: make it easier to build with development versions of PCRE2

From: Carlo Marcelo Arenas Belón <[email-masked]>
Date: Sat, 22 Apr 2023 09:06:55 -0700

Building against a different version of PCRE2 that the one that is provided
with the system is complicated by the fact that unlike what is advertised,
if a pkg-config module for libpcre2-8 is found, it will override the values
that were provided with PCRE_CFLAGS and PCRE_LIBS.

Carlo
>From b0a2cffcf81d628f22b317ed5c2148f6355958dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= <[email-masked]>
Date: Sat, 22 Apr 2023 02:03:48 -0700
Subject: [PATCH] build: prevent pkg-config from overriding PCRE_* settings

The use of PCRE_CFLAGS and PCRE_LIBS, as documented in the output of
`--help`, is meant to override those settings from pkg-config.

* NEWS: mention this
* m4/pcre.m4: avoid overriding user provided settings
---
 NEWS       | 5 ++++-
 m4/pcre.m4 | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/NEWS b/NEWS
index f16c576..c3ef942 100644
--- a/NEWS
+++ b/NEWS
@@ -19,10 +19,13 @@ GNU grep NEWS                                    -*- outline -*-
 
   grep --version now prints a line describing the version of PCRE2 it uses.
   For example, it prints this when built with the very latest from git:
-    grep -P uses PCRE2 10.43-DEV 2023-01-15
+    grep -P uses PCRE2 10.43-DEV 2023-04-14
   or this with what's currently available in Fedora 37:
     grep -P uses PCRE2 10.40 2022-04-14
 
+  previous versions of grep wouldn't respect the user provided settings for
+  PCRE_CFLAGS and PCRE_LIBS when building if a libpcre2-8 pkg-config module
+  found in the system.
 
 * Noteworthy changes in release 3.10 (2023-03-22) [stable]
 
diff --git a/m4/pcre.m4 b/m4/pcre.m4
index a8ee55e..f4c71c7 100644
--- a/m4/pcre.m4
+++ b/m4/pcre.m4
@@ -21,7 +21,10 @@ AC_DEFUN([gl_FUNC_PCRE],
   use_pcre=no
 
   if test $test_pcre != no; then
-    PKG_CHECK_MODULES([PCRE], [libpcre2-8], [], [: ${PCRE_LIBS=-lpcre2-8}])
+
+    if test -z "$PCRE_CFLAGS" && test -z "$PCRE_LIBS"; then
+      PKG_CHECK_MODULES([PCRE], [libpcre2-8], [], [: ${PCRE_LIBS=-lpcre2-8}])
+    fi
 
     AC_CACHE_CHECK([for pcre2_compile], [pcre_cv_have_pcre2_compile],
       [pcre_saved_CFLAGS=$CFLAGS
-- 
2.39.2 (Apple Git-143)