changeset 23005:8e9dd0d6e337

update check for pcre library to use pkg-config (bug #49993) * configure.ac: Use PKG_CONFIG to check for pcre library. Define PCRE_LDFLAGS separately from PCRE_LIBS. Display PCRE_LDFLAGS in summary message. * subst-config-vals.in.sh, subst-cross-config-vals.in.sh: Also substitute PCRE_LDFLAGS. * libinterp/corefcn/toplev.cc (F__octave_config_info__): Also include PCRE_LDFLAGS in the struct. * libinterp/build-env.in.cc, libinterp/build-env.h (PCRE_LDFLAGS): New variable.
author John W. Eaton <jwe@octave.org>
date Fri, 06 Jan 2017 08:08:58 -0500
parents 71f19f38cbad
children 06c248729e6f
files build-aux/subst-config-vals.in.sh build-aux/subst-cross-config-vals.in.sh configure.ac libinterp/build-env.h libinterp/build-env.in.cc libinterp/corefcn/toplev.cc
diffstat 6 files changed, 19 insertions(+), 43 deletions(-) [+]
line wrap: on
line diff
--- a/build-aux/subst-config-vals.in.sh	Thu Jan 05 13:26:10 2017 -0500
+++ b/build-aux/subst-config-vals.in.sh	Fri Jan 06 08:08:58 2017 -0500
@@ -135,6 +135,7 @@
 OSMESA_LDFLAGS="@OSMESA_LDFLAGS@"
 OSMESA_LIBS="@OSMESA_LIBS@"
 PCRE_CPPFLAGS="@PCRE_CPPFLAGS@"
+PCRE_LDFLAGS="@PCRE_LDFLAGS@"
 PCRE_LIBS="@PCRE_LIBS@"
 prefix="@prefix@"
 PTHREAD_CFLAGS="@PTHREAD_CFLAGS@"
@@ -298,6 +299,7 @@
   -e "s|%OCTAVE_CONF_OSMESA_LDFLAGS%|\"${OSMESA_LDFLAGS}\"|" \
   -e "s|%OCTAVE_CONF_OSMESA_LIBS%|\"${OSMESA_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_PCRE_CPPFLAGS%|\"${PCRE_CPPFLAGS}\"|" \
+  -e "s|%OCTAVE_CONF_PCRE_LDFLAGS%|\"${PCRE_LDFLAGS}\"|" \
   -e "s|%OCTAVE_CONF_PCRE_LIBS%|\"${PCRE_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_PREFIX%|\"${prefix}\"|" \
   -e "s|%OCTAVE_CONF_PTHREAD_CFLAGS%|\"${PTHREAD_CFLAGS}\"|" \
--- a/build-aux/subst-cross-config-vals.in.sh	Thu Jan 05 13:26:10 2017 -0500
+++ b/build-aux/subst-cross-config-vals.in.sh	Fri Jan 06 08:08:58 2017 -0500
@@ -139,6 +139,7 @@
 OSMESA_LDFLAGS="@OSMESA_LDFLAGS@"
 OSMESA_LIBS="@OSMESA_LIBS@"
 PCRE_CPPFLAGS="@PCRE_CPPFLAGS@"
+PCRE_LDFLAGS="@PCRE_LDFLAGS@"
 PCRE_LIBS="@PCRE_LIBS@"
 prefix="@prefix@"
 PTHREAD_CFLAGS="@PTHREAD_CFLAGS@"
@@ -302,6 +303,7 @@
   -e "s|%OCTAVE_CONF_OSMESA_LDFLAGS%|\"${OSMESA_LDFLAGS}\"|" \
   -e "s|%OCTAVE_CONF_OSMESA_LIBS%|\"${OSMESA_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_PCRE_CPPFLAGS%|\"${PCRE_CPPFLAGS}\"|" \
+  -e "s|%OCTAVE_CONF_PCRE_LDFLAGS%|\"${PCRE_LDFLAGS}\"|" \
   -e "s|%OCTAVE_CONF_PCRE_LIBS%|\"${PCRE_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_PREFIX%|\"${prefix}\"|" \
   -e "s|%OCTAVE_CONF_PTHREAD_CFLAGS%|\"${PTHREAD_CFLAGS}\"|" \
--- a/configure.ac	Thu Jan 05 13:26:10 2017 -0500
+++ b/configure.ac	Fri Jan 06 08:08:58 2017 -0500
@@ -1339,47 +1339,15 @@
 
 ### Check for PCRE regex library.
 
-PCRE_LIBS=
-
-pcre_fail_msg="to build Octave, you must have the PCRE library and header files installed"
-
-AC_CHECK_HEADERS([pcre.h pcre/pcre.h])
-
-AC_CACHE_CHECK([whether pcre.h defines the macros we need],
-  [ac_cv_pcre_h_macros_present],
-  [AC_EGREP_CPP([PCRE_HAS_MACROS_WE_NEED], [
-    #if defined (HAVE_PCRE_H)
-    # include <pcre.h>
-    #elif defined (HAVE_PCRE_PCRE_H)
-    # include <pcre/pcre.h>
-    #error "NO PCRE HEADER"
-    #endif
-    #if defined (PCRE_INFO_NAMECOUNT) \
-      && defined (PCRE_INFO_NAMEENTRYSIZE) \
-      && defined (PCRE_INFO_NAMETABLE)
-      PCRE_HAS_MACROS_WE_NEED
-    #endif],
-    ac_cv_pcre_h_macros_present=yes, ac_cv_pcre_h_macros_present=no)])
-
-if test $ac_cv_pcre_h_macros_present = yes; then
-  ## check for pcre-config, and if so, get build variables
-  AC_CHECK_PROG(HAVE_PCRE_CONFIG, pcre-config, [yes], [no])
-  if test $HAVE_PCRE_CONFIG = yes; then
-    PCRE_CPPFLAGS=`pcre-config --cflags`
-    PCRE_LIBS=`pcre-config --libs`
-  else
-    PCRE_LIBS="-lpcre"
-  fi
-  save_LIBS="$LIBS"
-  LIBS="$PCRE_LIBS $LIBS"
-  AC_CHECK_FUNCS([pcre_compile],
-    [AC_SUBST(PCRE_CPPFLAGS)
-     AC_SUBST(PCRE_LIBS)],
-    [AC_MSG_ERROR([$pcre_fail_msg])])
-  LIBS="$save_LIBS"
-else
-  AC_MSG_ERROR([$pcre_fail_msg])
-fi
+PKG_CHECK_EXISTS([libpcre],
+  [AC_CHECK_HEADERS([pcre.h pcre/pcre.h])
+   PCRE_CPPFLAGS=`$PKG_CONFIG --cflags-only-I libpcre`
+   PCRE_LDFLAGS=`$PKG_CONFIG --libs-only-L libpcre`
+   PCRE_LIBS=`$PKG_CONFIG --libs-only-l libpcre`
+   AC_SUBST(PCRE_CPPFLAGS)
+   AC_SUBST(PCRE_LDFLAGS)
+   AC_SUBST(PCRE_LIBS)],
+  [AC_MSG_ERROR([to build Octave, you must have the PCRE library and header files installed])])
 
 ### Check for ZLIB library.
 
@@ -1392,7 +1360,6 @@
   AC_DEFINE(HAVE_ZLIB, 1, [Define to 1 if ZLIB is available.])
 fi
 
-
 ### Check for BZIP2 library.
 
 OCTAVE_CHECK_LIB(bz2, BZIP2,
@@ -3024,7 +2991,7 @@
 
 LIBOCTAVE_LINK_DEPS="$GNULIB_LINK_DEPS $CURL_LIBS $SPARSE_XLIBS $ARPACK_LIBS $QRUPDATE_LIBS $FFTW_XLIBS $LAPACK_LIBS $BLAS_LIBS $READLINE_LIBS $TERM_LIBS $LIBGLOB $PCRE_LIBS $DL_LIBS $PTHREAD_LIBS $FLIBS $LIBS"
 
-LIBOCTAVE_LINK_OPTS="$CURL_LDFLAGS $SPARSE_XLDFLAGS $ARPACK_LDFLAGS $QRUPDATE_LDFLAGS $FFTW_XLDFLAGS"
+LIBOCTAVE_LINK_OPTS="$CURL_LDFLAGS $SPARSE_XLDFLAGS $ARPACK_LDFLAGS $QRUPDATE_LDFLAGS $FFTW_XLDFLAGS $PCRE_LDFLAGS"
 
 AC_SUBST(LIBOCTAVE_LINK_DEPS)
 AC_SUBST(LIBOCTAVE_LINK_OPTS)
@@ -3323,6 +3290,7 @@
   OSMesa LDFLAGS:                $OSMESA_LDFLAGS
   OSMesa libraries:              $OSMESA_LIBS
   PCRE CPPFLAGS:                 $PCRE_CPPFLAGS
+  PCRE LDFLAGS:                  $PCRE_LDFLAGS
   PCRE libraries:                $PCRE_LIBS
   PortAudio CPPFLAGS:            $PORTAUDIO_CPPFLAGS
   PortAudio LDFLAGS:             $PORTAUDIO_LDFLAGS
--- a/libinterp/build-env.h	Thu Jan 05 13:26:10 2017 -0500
+++ b/libinterp/build-env.h	Fri Jan 06 08:08:58 2017 -0500
@@ -136,6 +136,7 @@
     extern const char *OSMESA_LDFLAGS;
     extern const char *OSMESA_LIBS;
     extern const char *PCRE_CPPFLAGS;
+    extern const char *PCRE_LDFLAGS;
     extern const char *PCRE_LIBS;
     extern const char *PREFIX;
     extern const char *PTHREAD_CFLAGS;
--- a/libinterp/build-env.in.cc	Thu Jan 05 13:26:10 2017 -0500
+++ b/libinterp/build-env.in.cc	Fri Jan 06 08:08:58 2017 -0500
@@ -237,6 +237,8 @@
 
     const char *PCRE_CPPFLAGS = %OCTAVE_CONF_PCRE_CPPFLAGS%;
 
+    const char *PCRE_LDFLAGS = %OCTAVE_CONF_PCRE_LDFLAGS%;
+
     const char *PCRE_LIBS = %OCTAVE_CONF_PCRE_LIBS%;
 
     const char *PREFIX = %OCTAVE_CONF_PREFIX%;
--- a/libinterp/corefcn/toplev.cc	Thu Jan 05 13:26:10 2017 -0500
+++ b/libinterp/corefcn/toplev.cc	Fri Jan 06 08:08:58 2017 -0500
@@ -523,6 +523,7 @@
     { "OSMESA_LDFLAGS", octave::build_env::OSMESA_LDFLAGS },
     { "OSMESA_LIBS", octave::build_env::OSMESA_LIBS },
     { "PCRE_CPPFLAGS", octave::build_env::PCRE_CPPFLAGS },
+    { "PCRE_LDFLAGS", octave::build_env::PCRE_LDFLAGS },
     { "PCRE_LIBS", octave::build_env::PCRE_LIBS },
     { "PTHREAD_CFLAGS", octave::build_env::PTHREAD_CFLAGS },
     { "PTHREAD_LIBS", octave::build_env::PTHREAD_LIBS },