Commit 4d399a6f authored by Tom Lane's avatar Tom Lane

Bring configure support for LZ4 up to snuff.

It's not okay to just shove the pkg_config results right into our
build flags, for a couple different reasons:

* This fails to maintain the separation between CPPFLAGS and CFLAGS,
as well as that between LDFLAGS and LIBS.  (The CPPFLAGS angle is,
I believe, the reason for warning messages reported when building
with MacPorts' liblz4.)

* If pkg_config emits anything other than -I/-D/-L/-l switches,
it's highly unlikely that we want to absorb those.  That'd be more
likely to break the build than do anything helpful.  (Even the -D
case is questionable; but we're doing that for libxml2, so I kept it.)

Also, it's not okay to skip doing an AC_CHECK_LIB probe, as
evidenced by recent build failure on topminnow; that should
have been caught at configure time.

Model fixes for this on configure's libxml2 support.

It appears that somebody overlooked an autoheader run, too.

Discussion: https://postgr.es/m/20210119190720.GL8560@telsasoft.com
parent fd1ac9a5
...@@ -8699,8 +8699,18 @@ else ...@@ -8699,8 +8699,18 @@ else
$as_echo "yes" >&6; } $as_echo "yes" >&6; }
fi fi
LIBS="$LZ4_LIBS $LIBS" # We only care about -I, -D, and -L switches;
CFLAGS="$LZ4_CFLAGS $CFLAGS" # note that -llz4 will be added by AC_CHECK_LIB below.
for pgac_option in $LZ4_CFLAGS; do
case $pgac_option in
-I*|-D*) CPPFLAGS="$CPPFLAGS $pgac_option";;
esac
done
for pgac_option in $LZ4_LIBS; do
case $pgac_option in
-L*) LDFLAGS="$LDFLAGS $pgac_option";;
esac
done
fi fi
# #
...@@ -12816,6 +12826,56 @@ fi ...@@ -12816,6 +12826,56 @@ fi
fi fi
if test "$with_lz4" = yes ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LZ4_compress_default in -llz4" >&5
$as_echo_n "checking for LZ4_compress_default in -llz4... " >&6; }
if ${ac_cv_lib_lz4_LZ4_compress_default+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-llz4 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char LZ4_compress_default ();
int
main ()
{
return LZ4_compress_default ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_lz4_LZ4_compress_default=yes
else
ac_cv_lib_lz4_LZ4_compress_default=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lz4_LZ4_compress_default" >&5
$as_echo "$ac_cv_lib_lz4_LZ4_compress_default" >&6; }
if test "x$ac_cv_lib_lz4_LZ4_compress_default" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBLZ4 1
_ACEOF
LIBS="-llz4 $LIBS"
else
as_fn_error $? "library 'lz4' is required for LZ4 support" "$LINENO" 5
fi
fi
# Note: We can test for libldap_r only after we know PTHREAD_LIBS # Note: We can test for libldap_r only after we know PTHREAD_LIBS
if test "$with_ldap" = yes ; then if test "$with_ldap" = yes ; then
_LIBS="$LIBS" _LIBS="$LIBS"
......
...@@ -997,8 +997,18 @@ AC_SUBST(with_lz4) ...@@ -997,8 +997,18 @@ AC_SUBST(with_lz4)
if test "$with_lz4" = yes; then if test "$with_lz4" = yes; then
PKG_CHECK_MODULES(LZ4, liblz4) PKG_CHECK_MODULES(LZ4, liblz4)
LIBS="$LZ4_LIBS $LIBS" # We only care about -I, -D, and -L switches;
CFLAGS="$LZ4_CFLAGS $CFLAGS" # note that -llz4 will be added by AC_CHECK_LIB below.
for pgac_option in $LZ4_CFLAGS; do
case $pgac_option in
-I*|-D*) CPPFLAGS="$CPPFLAGS $pgac_option";;
esac
done
for pgac_option in $LZ4_LIBS; do
case $pgac_option in
-L*) LDFLAGS="$LDFLAGS $pgac_option";;
esac
done
fi fi
# #
...@@ -1271,6 +1281,10 @@ if test "$with_libxslt" = yes ; then ...@@ -1271,6 +1281,10 @@ if test "$with_libxslt" = yes ; then
AC_CHECK_LIB(xslt, xsltCleanupGlobals, [], [AC_MSG_ERROR([library 'xslt' is required for XSLT support])]) AC_CHECK_LIB(xslt, xsltCleanupGlobals, [], [AC_MSG_ERROR([library 'xslt' is required for XSLT support])])
fi fi
if test "$with_lz4" = yes ; then
AC_CHECK_LIB(lz4, LZ4_compress_default, [], [AC_MSG_ERROR([library 'lz4' is required for LZ4 support])])
fi
# Note: We can test for libldap_r only after we know PTHREAD_LIBS # Note: We can test for libldap_r only after we know PTHREAD_LIBS
if test "$with_ldap" = yes ; then if test "$with_ldap" = yes ; then
_LIBS="$LIBS" _LIBS="$LIBS"
......
...@@ -319,6 +319,9 @@ ...@@ -319,6 +319,9 @@
/* Define to 1 if you have the `ldap_r' library (-lldap_r). */ /* Define to 1 if you have the `ldap_r' library (-lldap_r). */
#undef HAVE_LIBLDAP_R #undef HAVE_LIBLDAP_R
/* Define to 1 if you have the `lz4' library (-llz4). */
#undef HAVE_LIBLZ4
/* Define to 1 if you have the `m' library (-lm). */ /* Define to 1 if you have the `m' library (-lm). */
#undef HAVE_LIBM #undef HAVE_LIBM
...@@ -358,6 +361,12 @@ ...@@ -358,6 +361,12 @@
/* Define to 1 if `long long int' works and is 64 bits. */ /* Define to 1 if `long long int' works and is 64 bits. */
#undef HAVE_LONG_LONG_INT_64 #undef HAVE_LONG_LONG_INT_64
/* Define to 1 if you have the <lz4.h> header file. */
#undef HAVE_LZ4_H
/* Define to 1 if you have the <lz4/lz4.h> header file. */
#undef HAVE_LZ4_LZ4_H
/* Define to 1 if you have the <mbarrier.h> header file. */ /* Define to 1 if you have the <mbarrier.h> header file. */
#undef HAVE_MBARRIER_H #undef HAVE_MBARRIER_H
...@@ -902,7 +911,7 @@ ...@@ -902,7 +911,7 @@
/* Define to 1 to build with LLVM based JIT support. (--with-llvm) */ /* Define to 1 to build with LLVM based JIT support. (--with-llvm) */
#undef USE_LLVM #undef USE_LLVM
/* Define to 1 to build with LZ4 support (--with-lz4) */ /* Define to 1 to build with LZ4 support. (--with-lz4) */
#undef USE_LZ4 #undef USE_LZ4
/* Define to select named POSIX semaphores. */ /* Define to select named POSIX semaphores. */
......
...@@ -298,6 +298,7 @@ sub GenerateFiles ...@@ -298,6 +298,7 @@ sub GenerateFiles
HAVE_LIBCRYPTO => undef, HAVE_LIBCRYPTO => undef,
HAVE_LIBLDAP => undef, HAVE_LIBLDAP => undef,
HAVE_LIBLDAP_R => undef, HAVE_LIBLDAP_R => undef,
HAVE_LIBLZ4 => undef,
HAVE_LIBM => undef, HAVE_LIBM => undef,
HAVE_LIBPAM => undef, HAVE_LIBPAM => undef,
HAVE_LIBREADLINE => undef, HAVE_LIBREADLINE => undef,
...@@ -311,6 +312,8 @@ sub GenerateFiles ...@@ -311,6 +312,8 @@ sub GenerateFiles
HAVE_LOCALE_T => 1, HAVE_LOCALE_T => 1,
HAVE_LONG_INT_64 => undef, HAVE_LONG_INT_64 => undef,
HAVE_LONG_LONG_INT_64 => 1, HAVE_LONG_LONG_INT_64 => 1,
HAVE_LZ4_H => undef,
HAVE_LZ4_LZ4_H => undef,
HAVE_MBARRIER_H => undef, HAVE_MBARRIER_H => undef,
HAVE_MBSTOWCS_L => 1, HAVE_MBSTOWCS_L => 1,
HAVE_MEMORY_H => 1, HAVE_MEMORY_H => 1,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment