@@ -97,3 +97,4 @@
/Documentation/mkfs.btrfs.8
*.patch
+*.pc
@@ -436,13 +436,18 @@ test-clean:
@echo "Cleaning tests"
$(Q)bash tests/clean-tests.sh
+test-pkg-config:
+ @echo "Test pkg-config settings"
+ export libdir incdir
+ $(Q)bash tests/pkg-config-tests.sh
+
test-inst: all
@tmpdest=`mktemp --tmpdir -d btrfs-inst.XXXXXX` && \
echo "Test installation to $$tmpdest" && \
$(MAKE) $(MAKEOPTS) DESTDIR=$$tmpdest install && \
$(RM) -rf -- $$tmpdest
-test: test-check test-check-lowmem test-mkfs test-misc test-cli test-convert test-fuzz
+test: test-check test-check-lowmem test-mkfs test-misc test-cli test-convert test-fuzz test-pkg-config
testsuite: btrfs-corrupt-block btrfs-find-root btrfs-select-super fssum
@echo "Export tests as a package"
@@ -779,6 +784,8 @@ endif
$(INSTALL) -m755 -d $(DESTDIR)$(incdir)/btrfs
$(INSTALL) -m644 $(libbtrfs_headers) $(DESTDIR)$(incdir)/btrfs
$(INSTALL) -m644 libbtrfsutil/btrfsutil.h $(DESTDIR)$(incdir)
+ $(INSTALL) -m755 -d $(DESTDIR)$(pkgconfigdir)
+ $(INSTALL) -m644 libbtrfsutil/libbtrfsutil.pc $(DESTDIR)$(pkgconfigdir)
endif
ifeq ($(PYTHON_BINDINGS),1)
@@ -41,6 +41,7 @@ libdir ?= @libdir@
incdir = @includedir@
udevdir = @UDEVDIR@
udevruledir = ${udevdir}/rules.d
+pkgconfigdir = @pkgconfigdir@
# external libs required by various binaries; for btrfs-foo,
# specify btrfs_foo_libs = <list of libs>; see $($(subst...)) rules in Makefile
@@ -12,6 +12,10 @@ LIBBTRFS_MAJOR=0
LIBBTRFS_MINOR=1
LIBBTRFS_PATCHLEVEL=2
+BTRFS_UTIL_VERSION_MAJOR=1
+BTRFS_UTIL_VERSION_MINOR=2
+BTRFS_UTIL_VERSION_PATCH=0
+
CFLAGS=${CFLAGS:-"-g -O1 -Wall -D_FORTIFY_SOURCE=2"}
AC_SUBST([CFLAGS])
@@ -300,18 +304,25 @@ AC_SUBST([LZO2_LIBS])
AC_SUBST([LZO2_LIBS_STATIC])
AC_SUBST([LZO2_CFLAGS])
+dnl call PKG_INSTALLDIR from pkg.m4 to set pkgconfigdir
+m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], [AC_MSG_ERROR([please install pkgconf])])
dnl library stuff
AC_SUBST([LIBBTRFS_MAJOR])
AC_SUBST([LIBBTRFS_MINOR])
AC_SUBST([LIBBTRFS_PATCHLEVEL])
+AC_SUBST([BTRFS_UTIL_VERSION_MAJOR])
+AC_SUBST([BTRFS_UTIL_VERSION_MINOR])
+AC_SUBST([BTRFS_UTIL_VERSION_PATCH])
+
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile.inc
Documentation/Makefile
version.h
+libbtrfsutil/libbtrfsutil.pc
])
AC_OUTPUT
@@ -325,6 +336,7 @@ AC_MSG_RESULT([
bindir: ${bindir}
libdir: ${libdir}
includedir: ${includedir}
+ pkgconfigdir: ${pkgconfigdir}
compiler: ${CC}
cflags: ${CFLAGS}
new file mode 100644
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libbtrfsutil
+Description: libbtrfsutil library
+Version: @BTRFS_UTIL_VERSION_MAJOR@.@BTRFS_UTIL_VERSION_MINOR@.@BTRFS_UTIL_VERSION_PATCH@
+URL: http://btrfs.wiki.kernel.org
+Cflags: -I${includedir}
+Libs: -L${libdir} -lbtrfsutil
new file mode 100644
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# test pkg-config can find libbtrfsutil
+
+SCRIPT_DIR=$(dirname $(readlink -f "$0"))
+TOP=$(readlink -f "$SCRIPT_DIR/../")
+if [ ! -f "$TOP/configure.ac" ]; then
+ exit 0
+fi
+
+export PKG_CONFIG_PATH="$TOP/libbtrfsutil"
+PKG_CONFIG=pkg-config
+LIBNAME=libbtrfsutil
+
+die() {
+ echo "ERROR: $@"
+ exit 1
+}
+
+test-exists() {
+ ${PKG_CONFIG} --exists $1 || die "$1 doesn't exist"
+}
+
+test-pkg-config() {
+ if [ "$#" != "3" ]; then
+ echo "$0 needs 3 arguments"
+ exit 1
+ fi
+ libname="$1"
+ flags="$2"
+ actual="$(${PKG_CONFIG} $flags $libname | awk '{gsub(/^\s+|\s+$/,"")}1')"
+ expected="$3"
+
+ if [ "$actual" != "$expected" ]; then
+ die "pkg-config $flags failed on $libname: '$actual' != '$expected'"
+ fi
+}
+
+test-exists "$LIBNAME"
+test-pkg-config "$LIBNAME" "--cflags" "-I${incdir}"
+test-pkg-config "$LIBNAME" "--libs" "-L${libdir} -lbtrfsutil"
Add pc file for btrfsutil libraries. Users can use pkg-config to set up compilation and linking flags. The paths in pc file depend on prefix variable but ignore DESTDIR. DESTDIR is used for packaging and it should not affect the paths in pc file. Signed-off-by: Sheng Mao <shngmao@gmail.com> --- .gitignore | 1 + Makefile | 9 +++++++- Makefile.inc.in | 1 + configure.ac | 12 ++++++++++ libbtrfsutil/libbtrfsutil.pc.in | 11 +++++++++ tests/pkg-config-tests.sh | 41 +++++++++++++++++++++++++++++++++ 6 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 libbtrfsutil/libbtrfsutil.pc.in create mode 100644 tests/pkg-config-tests.sh