| # -*- Autoconf -*- |
| # Process this file with autoconf to produce a configure script. |
| |
| AC_PREREQ([2.68]) |
| |
| # Get version from file VERSION |
| m4_define([f2fs_tools_version], m4_esyscmd([sed -n '1p' VERSION | tr -d '\n'])) |
| m4_define([f2fs_tools_date], m4_esyscmd([sed -n '2p' VERSION | tr -d '\n'])) |
| m4_define([f2fs_tools_gitdate], |
| m4_esyscmd([git log -1 --pretty=format:%ci 2> /dev/null])) |
| |
| AC_INIT([F2FS tools], [f2fs_tools_version], |
| [linux-f2fs-devel@lists.sourceforge.net]) |
| |
| AM_SILENT_RULES([yes]) |
| |
| AC_DEFINE([F2FS_TOOLS_VERSION], "f2fs_tools_version", [f2fs-tools version]) |
| AC_DEFINE([F2FS_MAJOR_VERSION], m4_bpatsubst(f2fs_tools_version, |
| [\([0-9]*\)\(\w\|\W\)*], [\1]), |
| [Major version for f2fs-tools]) |
| AC_DEFINE([F2FS_MINOR_VERSION], m4_bpatsubst(f2fs_tools_version, |
| [\([0-9]*\).\([0-9]*\)\(\w\|\W\)*], [\2]), |
| [Minor version for f2fs-tools]) |
| |
| AS_IF([test -d .git],[ |
| AC_DEFINE([F2FS_TOOLS_DATE], |
| "m4_bpatsubst(f2fs_tools_gitdate, |
| [\([0-9-]*\)\(\w\|\W\)*], [\1])", |
| [f2fs-tools date based on Git commits])],[ |
| AC_DEFINE([F2FS_TOOLS_DATE], |
| "f2fs_tools_date", |
| [f2fs-tools date based on Source releases])]) |
| |
| AC_CONFIG_SRCDIR([config.h.in]) |
| AC_CONFIG_HEADERS([config.h]) |
| AC_CONFIG_MACRO_DIR([m4]) |
| AC_CONFIG_AUX_DIR([build-aux]) |
| AM_INIT_AUTOMAKE([-Wall -Werror foreign tar-pax dist-xz]) |
| |
| # Test configure options. |
| AC_ARG_WITH([selinux], |
| [AS_HELP_STRING([--without-selinux], |
| [Ignore presence of libselinux and disable selinux support])], |
| [], |
| [with_selinux=check]) |
| |
| AC_ARG_WITH([blkid], |
| [AS_HELP_STRING([--without-blkid], |
| [Ignore presence of libblkid and disable blkid support])], |
| [], |
| [with_blkid=check]) |
| |
| AC_ARG_WITH([lzo2], |
| [AS_HELP_STRING([--without-lzo2], |
| [Ignore presence of liblzo2 and disable lzo2 support])], |
| [], |
| [with_lzo2=check]) |
| |
| AC_ARG_WITH([lz4], |
| [AS_HELP_STRING([--without-lz4], |
| [Ignore presence of liblz4 and disable lz4 support])], |
| [], |
| [with_lz4=check]) |
| |
| # Checks for programs. |
| AC_PROG_CC |
| AM_PROG_AR |
| LT_INIT |
| AC_PATH_PROG([LDCONFIG], [ldconfig], |
| [AC_MSG_ERROR([ldconfig not found])], |
| [$PATH:/sbin]) |
| |
| # Checks for libraries. |
| AS_IF([test "x$with_blkid" != xno], |
| [AC_CHECK_LIB([blkid], [blkid_probe_all], |
| [AC_SUBST([libblkid_LIBS], ["-lblkid"]) |
| AC_DEFINE([HAVE_LIBBLKID], [1], |
| [Define if you have libblkid]) |
| ], |
| [if test "x$with_blkid" != xcheck; then |
| AC_MSG_FAILURE( |
| [--with-blkid was given, but test for blkid failed]) |
| fi |
| ], -lblkid)]) |
| |
| AS_IF([test "x$with_lzo2" != xno], |
| [AC_CHECK_LIB([lzo2], [main], |
| [AC_SUBST([liblzo2_LIBS], ["-llzo2"]) |
| AC_DEFINE([HAVE_LIBLZO2], [1], |
| [Define if you have liblzo2]) |
| ], |
| [if test "x$with_lzo2" != xcheck; then |
| AC_MSG_FAILURE( |
| [--with-lzo2 was given, but test for lzo2 failed]) |
| fi |
| ], -llzo2)]) |
| |
| AS_IF([test "x$with_lz4" != xno], |
| [AC_CHECK_LIB([lz4], [main], |
| [AC_SUBST([liblz4_LIBS], ["-llz4"]) |
| AC_DEFINE([HAVE_LIBLZ4], [1], |
| [Define if you have liblz4]) |
| ], |
| [if test "x$with_lz4" != xcheck; then |
| AC_MSG_FAILURE( |
| [--with-lz4 was given, but test for lz4 failed]) |
| fi |
| ], -llz4)]) |
| |
| AS_IF([test "x$with_selinux" != xno], |
| [AC_CHECK_LIB([selinux], [getcon], |
| [AC_SUBST([libselinux_LIBS], ["-lselinux"]) |
| AC_DEFINE([HAVE_LIBSELINUX], [1], |
| [Define if you have libselinux]) |
| ], |
| [if test "x$with_selinux" != xcheck; then |
| AC_MSG_FAILURE( |
| [--with-selinux was given, but test for selinux failed]) |
| fi |
| ], -lselinux)]) |
| |
| AC_CHECK_LIB([uuid], [uuid_clear], |
| [AC_SUBST([libuuid_LIBS], ["-luuid"]) |
| AC_DEFINE([HAVE_LIBUUID], [1], |
| [Define if you have libuuid]) |
| ], [], []) |
| |
| AC_CHECK_LIB([winpthread], [clock_gettime], |
| [AC_SUBST([libwinpthread_LIBS], ["-lwinpthread"]) |
| AC_DEFINE([HAVE_LIBWINPTHREAD], [1], |
| [Define if you have libwinpthread]) |
| ], [], []) |
| |
| # Checks for header files. |
| AC_CHECK_HEADERS(m4_flatten([ |
| attr/xattr.h |
| blkid/blkid.h |
| byteswap.h |
| fcntl.h |
| kernel/uapi/linux/blkzoned.h |
| linux/blkzoned.h |
| linux/falloc.h |
| linux/fiemap.h |
| linux/fs.h |
| linux/hdreg.h |
| linux/limits.h |
| linux/loop.h |
| linux/major.h |
| linux/posix_acl.h |
| linux/types.h |
| linux/xattr.h |
| mach/mach_time.h |
| mntent.h |
| pthread_time.h |
| scsi/sg.h |
| selinux/android.h |
| selinux/selinux.h |
| sparse/sparse.h |
| stdlib.h |
| string.h |
| sys/acl.h |
| sys/ioctl.h |
| sys/mount.h |
| sys/stat.h |
| sys/syscall.h |
| sys/sysmacros.h |
| sys/utsname.h |
| sys/xattr.h |
| unistd.h |
| uuid/uuid.h |
| ])) |
| |
| # Checks for typedefs, structures, and compiler characteristics. |
| AC_C_INLINE |
| AC_TYPE_INT32_T |
| AC_TYPE_INT8_T |
| AC_TYPE_SIZE_T |
| |
| # Checks for library functions. |
| AC_FUNC_GETMNTENT |
| AC_CHECK_FUNCS_ONCE([ |
| add_key |
| fallocate |
| fsetxattr |
| fstat |
| fstat64 |
| fsync |
| getgid |
| getmntent |
| getuid |
| keyctl |
| memset |
| setmntent |
| clock_gettime |
| ]) |
| |
| AS_IF([test "$ac_cv_header_byteswap_h" = "yes"], |
| [AC_CHECK_DECLS([bswap_64],,,[#include <byteswap.h>])]) |
| |
| AC_MSG_CHECKING([for CLOCK_BOOTIME]) |
| AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ |
| #include <time.h> |
| #ifdef HAVE_PTHREAD_TIME_H |
| #include <pthread_time.h> |
| #endif |
| ],[return CLOCK_BOOTTIME])], |
| [AC_MSG_RESULT([yes]) |
| AC_DEFINE([HAVE_CLOCK_BOOTTIME], [1], |
| [Define if CLOCK_BOOTTIME is available])], |
| [AC_MSG_RESULT([no])]) |
| |
| # AC_CANONICAL_HOST is needed to access the 'host_os' variable |
| AC_CANONICAL_HOST |
| |
| build_linux=no |
| build_windows=no |
| build_mac=no |
| |
| # Detect the target system |
| case "${host_os}" in |
| linux*|uclinux*) |
| build_linux=yes |
| ;; |
| cygwin*|mingw*) |
| build_windows=yes |
| ;; |
| darwin*) |
| build_mac=yes |
| ;; |
| *) |
| AC_MSG_ERROR(["OS $host_os is not supported"]) |
| ;; |
| esac |
| |
| # Pass the conditionals to automake |
| AM_CONDITIONAL([LINUX], [test "$build_linux" = "yes"]) |
| AM_CONDITIONAL([WINDOWS], [test "$build_windows" = "yes"]) |
| AM_CONDITIONAL([OSX], [test "$build_mac" = "yes"]) |
| |
| # Install directories |
| #AC_PREFIX_DEFAULT([/usr]) |
| #AC_SUBST([sbindir], [/sbin]) |
| #AC_SUBST([sysconfdir], [/etc]) |
| #AC_SUBST([localstatedir], [/var]) |
| |
| AC_ARG_WITH([root-libdir], |
| [ --with-root-libdir=DIR override location for /lib/libf2fs.so], |
| root_libdir=$withval, |
| root_libdir=NONE)dnl |
| |
| if test "$root_libdir" = NONE ; then |
| root_libdir="$libdir" |
| fi |
| AC_SUBST(root_libdir) |
| |
| AC_CONFIG_FILES([ |
| Makefile |
| man/Makefile |
| lib/Makefile |
| mkfs/Makefile |
| fsck/Makefile |
| tools/Makefile |
| tools/f2fs_io/Makefile |
| ]) |
| |
| AC_CHECK_MEMBER([struct blk_zone.capacity], |
| [AC_DEFINE(HAVE_BLK_ZONE_REP_V2, [1], [report zones includes zone capacity])], |
| [], [[ |
| #ifdef HAVE_KERNEL_UAPI_LINUX_BLKZONED_H |
| #include <kernel/uapi/linux/blkzoned.h> |
| #elif defined(HAVE_LINUX_BLKZONED_H) |
| #include <linux/blkzoned.h> |
| #endif |
| ]]) |
| |
| # export library version info for mkfs/libf2fs_format_la |
| AC_SUBST(FMT_CURRENT, 9) |
| AC_SUBST(FMT_REVISION, 0) |
| AC_SUBST(FMT_AGE, 0) |
| |
| # export library version info for lib/libf2fs_la |
| AC_SUBST(LIBF2FS_CURRENT, 10) |
| AC_SUBST(LIBF2FS_REVISION, 0) |
| AC_SUBST(LIBF2FS_AGE, 0) |
| |
| AH_BOTTOM([ |
| #ifndef _CONFIG_H_ |
| #define _CONFIG_H_ |
| |
| #ifdef HAVE_SYS_STAT_H |
| #include <sys/stat.h> |
| #endif |
| |
| #ifndef HAVE_GETUID |
| static inline unsigned int getuid(void) { return -1; } |
| #endif |
| #ifndef HAVE_GETGID |
| static inline unsigned int getgid(void) { return -1; } |
| #endif |
| |
| #ifndef S_ISLNK |
| #define S_ISLNK(mode) false |
| #endif |
| #ifndef S_ISSOCK |
| #define S_ISSOCK(mode) false |
| #endif |
| |
| #endif |
| ]) |
| |
| AC_OUTPUT |