diff options
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 180 |
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]) |