Use pkg-config Autoconf check for libparted version first (#740004)
Currently ./configure links and runs a program to query the libparted library version, which is used to determine the availability of some features. This makes cross-compiling harder because the compile host has to fake a virtual installation target in which to run the check. Because of this, pkg-config based Autoconf checks are preferred. Switch to using a pkg-config based Autoconf check first to determine the version of libparted, falling back to the previous method for older distributions which don't provide a pkg-config file for libparted. Also small comment tidy-up elsewhere. Bug 740004 - use pkg-config to check for version of libparted
This commit is contained in:
parent
2f39337863
commit
9c7cb6f496
50
configure.ac
50
configure.ac
|
@ -43,14 +43,31 @@ AC_CHECK_LIB([dl], [dlopen], [], AC_MSG_ERROR([*** libdl not found.]))
|
|||
AC_CHECK_LIB([parted], [ped_device_read], [], AC_MSG_ERROR([*** libparted not found.]))
|
||||
|
||||
|
||||
dnl Check for minimum required libparted version
|
||||
dnl Check for minimum required libparted version.
|
||||
dnl 1) Check using pkg-config.
|
||||
dnl (Older distros tend to not provide pkg-config information for libparted).
|
||||
dnl 2) Check by linking and running a program to report libparted version directly.
|
||||
LIBPARTED_REQUIRED_VERSION='1.7.1'
|
||||
AC_MSG_CHECKING([for libparted >= $LIBPARTED_REQUIRED_VERSION])
|
||||
AC_MSG_CHECKING([for libparted >= $LIBPARTED_REQUIRED_VERSION (querying pkg-config)])
|
||||
LIBPARTED_REQUIRED_INT=`echo "$LIBPARTED_REQUIRED_VERSION" |
|
||||
$AWK -F. '{print $1 * 10000 + $2 * 100 + $3}'`
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE(
|
||||
[[
|
||||
dnl 1) Check using pkg-config.
|
||||
PKG_CHECK_EXISTS(
|
||||
[libparted],
|
||||
[LIBPARTED_FOUND_VERSION=`$PKG_CONFIG --modversion libparted`
|
||||
LIBPARTED_FOUND_INT=`echo "$LIBPARTED_FOUND_VERSION" |
|
||||
$AWK -F. '{print $1 * 10000 + $2 * 100 + $3}'`
|
||||
AC_MSG_RESULT([$LIBPARTED_FOUND_VERSION])
|
||||
test "$LIBPARTED_FOUND_INT" -ge "$LIBPARTED_REQUIRED_INT" ||
|
||||
AC_MSG_ERROR([*** libparted too old. Require libparted >= $LIBPARTED_REQUIRED_VERSION but only found libparted $LIBPARTED_FOUND_VERSION.])
|
||||
],
|
||||
[AC_MSG_RESULT([not found])
|
||||
dnl 2) Check by linking and running a program to report libparted version
|
||||
dnl directly.
|
||||
AC_MSG_CHECKING([for libparted >= $LIBPARTED_REQUIRED_VERSION (querying libparted)])
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE(
|
||||
[[
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <parted/parted.h>
|
||||
|
@ -66,16 +83,17 @@ int main()
|
|||
printf("%s\n", version);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
]]
|
||||
)],
|
||||
dnl Run test program again to cache libparted version.
|
||||
[LIBPARTED_FOUND_VERSION=`./conftest$EXEEXT`
|
||||
LIBPARTED_FOUND_INT=`echo "$LIBPARTED_FOUND_VERSION" |
|
||||
$AWK -F. '{print $1 * 10000 + $2 * 100 + $3}'`
|
||||
test "$LIBPARTED_FOUND_INT" -ge "$LIBPARTED_REQUIRED_INT" ||
|
||||
AC_MSG_ERROR([*** libparted too old. Require libparted >= $LIBPARTED_REQUIRED_VERSION but only found libparted $LIBPARTED_FOUND_VERSION.])
|
||||
],
|
||||
[AC_MSG_ERROR([*** Error querying libparted version. Check config.log for details.])]
|
||||
]]
|
||||
)],
|
||||
dnl Run test program again to cache libparted version.
|
||||
[LIBPARTED_FOUND_VERSION=`./conftest$EXEEXT`
|
||||
LIBPARTED_FOUND_INT=`echo "$LIBPARTED_FOUND_VERSION" |
|
||||
$AWK -F. '{print $1 * 10000 + $2 * 100 + $3}'`
|
||||
test "$LIBPARTED_FOUND_INT" -ge "$LIBPARTED_REQUIRED_INT" ||
|
||||
AC_MSG_ERROR([*** libparted too old. Require libparted >= $LIBPARTED_REQUIRED_VERSION but only found libparted $LIBPARTED_FOUND_VERSION.])
|
||||
],
|
||||
[AC_MSG_ERROR([*** Error querying libparted version. Check config.log for details.])]
|
||||
)]
|
||||
)
|
||||
|
||||
|
||||
|
@ -106,8 +124,6 @@ dnl NOTE:
|
|||
dnl For AC_CHECK_LIB the default action-if-found ($3) includes extending
|
||||
dnl LIBS with the newly found library ($1) thus:
|
||||
dnl LIBS="-l$1 $LIBS"
|
||||
dnl If default action-if-found is overridden, LIBS is not extended when
|
||||
dnl the library is found.
|
||||
dnl
|
||||
dnl As the default action-if-found is overridden, LIBS isn't extended so
|
||||
dnl saving and restoring LIBS isn't required.
|
||||
|
|
Loading…
Reference in New Issue