# -*- 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]) # 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)]) AC_CHECK_LIB([lzo2], [main], [AC_SUBST([liblzo2_LIBS], ["-llzo2"]) AC_DEFINE([HAVE_LIBLZO2], [1], [Define if you have liblzo2]) ], [], []) AC_CHECK_LIB([lz4], [main], [AC_SUBST([liblz4_LIBS], ["-llz4"]) AC_DEFINE([HAVE_LIBLZ4], [1], [Define if you have liblz4]) ], [], []) 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/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 llseek lseek64 memset setmntent ]) AS_IF([test "$ac_cv_header_byteswap_h" = "yes"], [AC_CHECK_DECLS([bswap_64],,,[#include ])]) AC_MSG_CHECKING([for CLOCK_BOOTIME]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include #ifdef HAVE_PTHREAD_TIME_H #include #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/sg_write_buffer/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 #elif defined(HAVE_LINUX_BLKZONED_H) #include #endif ]]) # export library version info for mkfs/libf2fs_format_la AC_SUBST(FMT_CURRENT, 8) AC_SUBST(FMT_REVISION, 0) AC_SUBST(FMT_AGE, 0) # export library version info for lib/libf2fs_la AC_SUBST(LIBF2FS_CURRENT, 9) AC_SUBST(LIBF2FS_REVISION, 0) AC_SUBST(LIBF2FS_AGE, 0) AH_BOTTOM([ #ifndef _CONFIG_H_ #define _CONFIG_H_ #ifdef HAVE_SYS_STAT_H #include #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