diff options
author | Jeremie Koenig <jk@jk.fr.eu.org> | 2010-08-16 13:51:21 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2010-08-18 01:06:28 +0200 |
commit | 6fa2f65fa28c0eebb736108d55b723e1a207c243 (patch) | |
tree | 48b3f1020804d9069a9e741b29d4821fda1678a1 | |
parent | a6bb3e62109c72ec912d264418c5e9b95c780dbf (diff) |
Fix the build system to handle part stores
Part stores are used for debian-installer, and they're considered more
elegant than kernel partition devices. This patch makes sure they're
included in the build unless the user disables them explicitely.
* Makeconf: add $(PARTED_LIBS) to static binaries which use libstore_part.a.
* configure.in: look for libparted again (see also 7c7a04eb).
* libstore/Makefile (store-types): include the 'part' store type when
appropriate, remove the previous attempt.
Signed-off-by: Jeremie Koenig <jk@jk.fr.eu.org>
-rw-r--r-- | Makeconf | 4 | ||||
-rw-r--r-- | configure.in | 33 | ||||
-rw-r--r-- | libstore/Makefile | 12 |
3 files changed, 30 insertions, 19 deletions
@@ -325,7 +325,8 @@ $(progtarg): %$(target-suffix): $(BUGADDR) $(addsuffix .static,$(progtarg)): %$(target-suffix).static: $(BUGADDR) $(link-executable) -static \ '-Wl,-(' $(patsubst %.so,%.a,$^) $($*-LDLIBS) $(LDLIBS) \ - '-Wl,-)' + '-Wl,-)' \ + $(and $(filter %/libstore_part.a,$^), $(PARTED_LIBS)) endif # Just like above, but tell how to make .prof versions of programs. @@ -468,6 +469,7 @@ relink: # Tell make where to find other -l libraries that we use vpath libutil.% $(libdir)/ +# The libstore_%.a files fetch symbols from libstore.so ifneq ($(dir),libstore) $(boot-store-types:%=../libstore/libstore_%.a): ../libstore/libstore.so endif diff --git a/configure.in b/configure.in index e8c12616..1cf4daab 100644 --- a/configure.in +++ b/configure.in @@ -190,9 +190,26 @@ fi AC_SUBST(libc_cv_gnu89_inline) -AC_ARG_WITH(parted, dnl -[ --without-parted don't try to use GNU Parted libraries], - , with_parted=yes) +# Insist on libparted unless the user declines explicitely +AC_ARG_WITH([parted], + [AS_HELP_STRING([--without-parted], [disable user-space partition stores])], + [], + [with_parted=yes]) + +PARTED_LIBS= +AC_DEFUN([PARTED_FAIL], [ + AC_MSG_FAILURE([Please install required libraries or use --without-parted.]) +]) +AS_IF([test "x$with_parted" != xno], [ + AC_CHECK_HEADER([parted/parted.h], + [AC_DEFINE(HAVE_PARTED_PARTED_H)], + [PARTED_FAIL]) + AC_CHECK_LIB([parted], [ped_device_read], [], [PARTED_FAIL]) + AC_CHECK_LIB([uuid], [uuid_generate], [], [PARTED_FAIL]) + AC_CHECK_LIB([dl], [dlopen], [], [PARTED_FAIL]) + PARTED_LIBS="-lparted -luuid -ldl" +]) +AC_SUBST([PARTED_LIBS]) AC_ARG_ENABLE(boot-store-types, [ --enable-boot-store-types=TYPES... @@ -200,15 +217,7 @@ AC_ARG_ENABLE(boot-store-types, linked filesystems used for booting])dnl if test -z "$enable_boot_store_types"; then boot_store_types='device remap gunzip bunzip2' - - # Check for Parted's static store module. - if test "x$with_parted" != xno; then - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -static" - AC_CHECK_LIB(store_part, store_part_open, [dnl - boot_store_types="$boot_store_types part"], , -luuid -lstore) - LDFLAGS="$save_LDFLAGS" - fi + test -z "$PARTED_LIBS" || boot_store_types="$boot_store_types part" elif test "x$enable_boot_store_types" = xno; then AC_MSG_WARN([you probably wanted --disable-static-progs]) else diff --git a/libstore/Makefile b/libstore/Makefile index b1172c6a..56c1fdfd 100644 --- a/libstore/Makefile +++ b/libstore/Makefile @@ -28,6 +28,10 @@ SRCS = create.c derive.c make.c rdwr.c set.c \ open.c xinl.c typed.c map.c url.c unknown.c \ stripe.c $(filter-out ileave.c concat.c,$(store-types:=.c)) +# This has to be evaluated after config.make has been included; +# as a consequence, using 'ifneq' or similar is not an option. +maybe_part = $(and $(PARTED_LIBS),part) + store-types = \ bunzip2 \ concat \ @@ -40,16 +44,12 @@ store-types = \ module \ mvol \ nbd \ + $(maybe_part) \ remap \ task \ zero -ifeq (HAVE_PARTED,yes) -store-types += part -libstore.so-LDLIBS += -lparted -endif - -libstore.so-LDLIBS += -ldl +libstore.so-LDLIBS += $(PARTED_LIBS) -ldl LCLHDRS=store.h installhdrs=store.h |