summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac180
1 files changed, 132 insertions, 48 deletions
diff --git a/configure.ac b/configure.ac
index fbef15c..aedbb32 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,8 +4,6 @@ m4_define([RELEASE], 2.0.0)
AC_INIT([mtd-utils], [RELEASE], [linux-mtd@lists.infradead.org], mtd-utils)
-AC_CONFIG_HEADERS([include/config.h])
-
AC_ARG_ENABLE([unit-tests],
[AS_HELP_STRING([--enable-unit-tests], [Compile unit test programs])],
[case "${enableval}" in
@@ -26,9 +24,21 @@ AC_DISABLE_STATIC
AC_PROG_CC
AC_PROG_INSTALL
+###### handle configure switches, select dependencies ######
+
+need_clock_gettime="no"
+need_pthread="no"
+need_uuid="no"
+need_zlib="no"
+need_lzo="no"
+need_xattr="no"
+need_cmocka="no"
+
+
+AM_COND_IF([UNIT_TESTS], [
+ need_cmocka="yes"
+])
-AC_SEARCH_LIBS([clock_gettime],[rt posix4])
-AC_CHECK_FUNCS([clock_gettime])
AC_ARG_ENABLE([tests],
[AS_HELP_STRING([--disable-tests], [Compile test programs])],
@@ -39,8 +49,10 @@ AC_ARG_ENABLE([tests],
esac],
[AM_CONDITIONAL([BUILD_TESTS], [true])])
-AM_COND_IF([BUILD_TESTS],
- [AX_PTHREAD([], [AC_MSG_ERROR([pthread missing])])])
+AM_COND_IF([BUILD_TESTS], [
+ need_clock_gettime="yes"
+ need_pthread="yes"
+])
AC_ARG_ENABLE([install-tests],
@@ -58,18 +70,6 @@ AM_COND_IF([INSTALL_TESTS],
[AC_SUBST(testbindir, ["\".\""])])
-AC_CONFIG_FILES([tests/fs-tests/fs_help_all.sh
- tests/fs-tests/fs_run_all.sh
- tests/fs-tests/stress/fs_stress00.sh
- tests/fs-tests/stress/fs_stress01.sh
- tests/ubi-tests/runubitests.sh
- tests/ubi-tests/ubi-stress-test.sh])
-
-
-need_uuid="no"
-need_zlib="no"
-need_lzo="no"
-
AC_ARG_WITH([jffs],
[AS_HELP_STRING([--without-jffs], [Disable jffsX utilities])],
[case "${withval}" in
@@ -90,67 +90,151 @@ AC_ARG_WITH([ubifs],
AM_COND_IF([BUILD_UBIFS], [
need_uuid="yes"
+ need_xattr="yes"
need_zlib="yes"
need_lzo="yes"
])
AM_COND_IF([BUILD_JFFSX], [
+ need_xattr="yes"
need_zlib="yes"
need_lzo="yes"
])
-if test "x$need_zlib" = "xyes"; then
- PKG_CHECK_MODULES(ZLIB, [zlib])
-fi
-
-if test "x$need_uuid" = "xyes"; then
- PKG_CHECK_MODULES(UUID, [uuid])
-fi
-
-
AC_ARG_WITH([xattr],
[AS_HELP_STRING([--without-xattr],
[Disable support forextended file attributes])],
[case "${withval}" in
- yes) AM_CONDITIONAL([WITHOUT_XATTR], [false]) ;;
- no) AM_CONDITIONAL([WITHOUT_XATTR], [true]) ;;
+ yes) ;;
+ no) need_xattr="no" ;;
*) AC_MSG_ERROR([bad value ${withval} for --without-xattr]) ;;
- esac],
- [AM_CONDITIONAL([WITHOUT_XATTR], [false])])
-
-AC_CHECK_HEADER(sys/xattr.h, [], [AM_CONDITIONAL([WITHOUT_XATTR], [true])])
-AC_CHECK_HEADER(sys/acl.h, [], [AM_CONDITIONAL([WITHOUT_XATTR], [true])])
-
+ esac])
AC_ARG_WITH([lzo],
[AS_HELP_STRING([--without-lzo], [Disable support for LZO compression])],
[case "${withval}" in
- yes) AM_CONDITIONAL([WITHOUT_LZO], [test "x$need_lzo" != "xyes"]) ;;
- no) AM_CONDITIONAL([WITHOUT_LZO], [true]) ;;
+ yes) ;;
+ no) need_lzo="no" ;;
*) AC_MSG_ERROR([bad value ${withval} for --without-lzo]) ;;
- esac],
- [AM_CONDITIONAL([WITHOUT_LZO], [test "x$need_lzo" != "xyes"])])
+ esac])
+##### search for dependencies #####
-AC_CHECK_HEADERS([execinfo.h], [execinfo_found=yes])
-AM_CONDITIONAL([HAVE_EXECINFO], [test "x$execinfo_found" == "xyes"])
+clock_gettime_missing="no"
+pthread_missing="no"
+uuid_missing="no"
+zlib_missing="no"
+lzo_missing="no"
+xattr_missing="no"
+cmocka_missing="no"
+
+if test "x$need_zlib" = "xyes"; then
+ PKG_CHECK_MODULES(ZLIB, [zlib], [], [zlib_missing="yes"])
+fi
-AM_COND_IF([UNIT_TESTS], [PKG_CHECK_MODULES(CMOCKA, [ cmocka ])], [])
+if test "x$need_uuid" = "xyes"; then
+ PKG_CHECK_MODULES(UUID, [uuid], [], [uuid_missing="yes"])
+fi
+
+if test "x$need_clock_gettime" = "xyes"; then
+ AC_SEARCH_LIBS([clock_gettime], [rt posix4])
+ AC_CHECK_FUNCS([clock_gettime], [], [clock_gettime_missing="yes"])
+fi
-AM_COND_IF([WITHOUT_LZO], [], [
- have_lzo="yes"
+if test "x$need_pthread" = "xyes"; then
+ AX_PTHREAD([], [pthread_missing="yes"])
+fi
+
+if test "x$need_lzo" = "xyes"; then
AC_ARG_VAR([LZO_CFLAGS], [C compiler flags for lzo])
AC_ARG_VAR([LZO_LIBS], [linker flags for lzo])
AC_CHECK_LIB([lzo2], [lzo1x_1_15_compress], [LZO_LIBS="-llzo2"],
[AC_CHECK_LIB([lzo],[lzo1x_1_15_compress],[LZO_LIBS="-llzo"],
- [have_lzo="no"]
+ [lzo_missing="yes"]
)]
)
- test "${have_lzo}" != "yes" && AC_MSG_ERROR([lzo missing])
-])
+fi
-AC_CHECK_SIZEOF([off_t])
+if test "x$need_xattr" = "xyes"; then
+ AC_CHECK_HEADERS([sys/xattr.h], [], [xattr_missing="yes"])
+ AC_CHECK_HEADERS([sys/acl.h], [], [xattr_missing="yes"])
+fi
+
+if test "x$need_cmocka" = "xyes"; then
+ PKG_CHECK_MODULES(CMOCKA, [cmocka], [], [cmocka_missing="yes"])
+fi
+
+AC_CHECK_HEADERS([execinfo.h], [execinfo_found=yes])
+
+##### produce summary on dependencies #####
+dep_missing="no"
+
+if test "x$clock_gettime_missing" = "xyes"; then
+ AC_MSG_WARN([cannot find clock_gettime function required for MTD tests])
+ AC_MSG_NOTICE([building test programs can optionally be dissabled])
+ dep_missing="yes"
+fi
+
+if test "x$pthread_missing" = "xyes"; then
+ AC_MSG_WARN([cannot find pthread support required for test programs])
+ AC_MSG_NOTICE([building test programs can optionally be dissabled])
+ dep_missing="yes"
+fi
+
+if test "x$uuid_missing" = "xyes"; then
+ AC_MSG_WARN([cannot find uuid library required for mkfs.ubifs])
+ AC_MSG_NOTICE([mtd-utils can optionally be built without mkfs.ubifs])
+ dep_missing="yes"
+fi
+
+if test "x$zlib_missing" = "xyes"; then
+ AC_MSG_WARN([cannot find ZLIB library required for mkfs programs])
+ AC_MSG_NOTICE([mtd-utils can optionally be built without mkfs.ubifs])
+ AC_MSG_NOTICE([mtd-utils can optionally be built without mkfs.jffs2])
+ dep_missing="yes"
+fi
+
+if test "x$lzo_missing" = "xyes"; then
+ AC_MSG_WARN([cannot find LZO library required for mkfs programs])
+ AC_MSG_NOTICE([mtd-utils can optionally be built without mkfs.ubifs])
+ AC_MSG_NOTICE([mtd-utils can optionally be built without mkfs.jffs2])
+ AC_MSG_NOTICE([mtd-utils can optionally be built without LZO support])
+ dep_missing="yes"
+fi
+
+if test "x$xattr_missing" = "xyes"; then
+ AC_MSG_WARN([cannot find headers for extended attributes])
+ AC_MSG_WARN([disabling XATTR support])
+ need_xattr="no"
+fi
+
+if test "x$cmocka_missing" = "xyes"; then
+ AC_MSG_WARN([cannot find CMocka library required for unit tests])
+ AC_MSG_NOTICE([unit tests can optionally be disabled])
+ dep_missing="yes"
+fi
+
+if test "x$dep_missing" = "xyes"; then
+ AC_MSG_ERROR([missing one or more dependencies])
+fi
+
+##### generate output #####
+
+AM_CONDITIONAL([WITHOUT_LZO], [test "x$need_lzo" != "xyes"])
+AM_CONDITIONAL([WITHOUT_XATTR], [test "x$need_xattr" != "xyes"])
+AM_CONDITIONAL([HAVE_EXECINFO], [test "x$execinfo_found" == "xyes"])
+
+AC_CHECK_SIZEOF([off_t])
AC_CHECK_SIZEOF([loff_t])
+AC_CONFIG_HEADERS([include/config.h])
+
+AC_CONFIG_FILES([tests/fs-tests/fs_help_all.sh
+ tests/fs-tests/fs_run_all.sh
+ tests/fs-tests/stress/fs_stress00.sh
+ tests/fs-tests/stress/fs_stress01.sh
+ tests/ubi-tests/runubitests.sh
+ tests/ubi-tests/ubi-stress-test.sh])
+
AC_OUTPUT([Makefile])