1# -*- Autoconf -*- 2# Process this file with autoconf to produce a configure script. 3 4AC_PREREQ([2.68]) 5 6# Get version from file VERSION 7m4_define([f2fs_tools_version], m4_esyscmd([sed -n '1p' VERSION | tr -d '\n'])) 8m4_define([f2fs_tools_date], m4_esyscmd([sed -n '2p' VERSION | tr -d '\n'])) 9m4_define([f2fs_tools_gitdate], 10 m4_esyscmd([git log -1 --pretty=format:%ci 2> /dev/null])) 11 12AC_INIT([F2FS tools], [f2fs_tools_version], 13 [linux-f2fs-devel@lists.sourceforge.net]) 14 15AC_DEFINE([F2FS_TOOLS_VERSION], "f2fs_tools_version", [f2fs-tools version]) 16AC_DEFINE([F2FS_MAJOR_VERSION], m4_bpatsubst(f2fs_tools_version, 17 [\([0-9]*\)\(\w\|\W\)*], [\1]), 18 [Major version for f2fs-tools]) 19AC_DEFINE([F2FS_MINOR_VERSION], m4_bpatsubst(f2fs_tools_version, 20 [\([0-9]*\).\([0-9]*\)\(\w\|\W\)*], [\2]), 21 [Minor version for f2fs-tools]) 22 23AS_IF([test -d .git],[ 24 AC_DEFINE([F2FS_TOOLS_DATE], 25 "m4_bpatsubst(f2fs_tools_gitdate, 26 [\([0-9-]*\)\(\w\|\W\)*], [\1])", 27 [f2fs-tools date based on Git commits])],[ 28 AC_DEFINE([F2FS_TOOLS_DATE], 29 "f2fs_tools_date", 30 [f2fs-tools date based on Source releases])]) 31 32AC_CONFIG_SRCDIR([config.h.in]) 33AC_CONFIG_HEADER([config.h]) 34AC_CONFIG_MACRO_DIR([m4]) 35AC_CONFIG_AUX_DIR([build-aux]) 36AM_INIT_AUTOMAKE([foreign tar-pax dist-xz]) 37 38# Test configure options. 39AC_ARG_WITH([selinux], 40 AS_HELP_STRING([--without-selinux], 41 [Ignore presence of libselinux and disable selinux support])) 42 43AC_ARG_WITH([blkid], 44 AS_HELP_STRING([--without-blkid], 45 [Ignore presence of libblkid and disable blkid support])) 46 47# Checks for programs. 48AC_PROG_CC 49AC_PROG_LIBTOOL 50AC_PATH_PROG([LDCONFIG], [ldconfig], 51 [AC_MSG_ERROR([ldconfig not found])], 52 [$PATH:/sbin]) 53 54# Checks for libraries. 55PKG_CHECK_MODULES([libuuid], [uuid]) 56 57AS_IF([test "x$with_selinux" != "xno"], 58 [PKG_CHECK_MODULES([libselinux], [libselinux], 59 [have_selinux=yes], [have_selinux=no])], 60 [have_selinux=no] 61) 62 63AS_IF([test "x$have_selinux" = "xyes"], 64 [AC_DEFINE([HAVE_LIBSELINUX], [1], [Use libselinux])], 65 [AS_IF([test "x$with_selinux" = "xyes"], 66 [AC_MSG_ERROR([selinux support requested but libselinux not found])] 67 )] 68) 69 70AS_IF([test "x$with_blkid" != "xno"], 71 [PKG_CHECK_MODULES([libblkid], [blkid], 72 [have_blkid=yes], [have_blkid=no])], 73 [have_blkid=no] 74) 75 76AS_IF([test "x$have_blkid" = "xyes"], 77 [AC_DEFINE([HAVE_LIBBLKID], [1], [Use blkid])], 78 [AS_IF([test "x$with_blkid" = "xyes"], 79 [AC_MSG_ERROR([blkid support requested but libblkid not found])] 80 )] 81) 82 83# Checks for header files. 84AC_CHECK_HEADERS(m4_flatten([ 85 attr/xattr.h 86 byteswap.h 87 fcntl.h 88 linux/blkzoned.h 89 linux/falloc.h 90 linux/fs.h 91 linux/hdreg.h 92 linux/limits.h 93 linux/posix_acl.h 94 linux/types.h 95 linux/xattr.h 96 mach/mach_time.h 97 mntent.h 98 scsi/sg.h 99 stdlib.h 100 string.h 101 sys/acl.h 102 sys/ioctl.h 103 sys/syscall.h 104 sys/mount.h 105 sys/sysmacros.h 106 sys/utsname.h 107 sys/xattr.h 108 unistd.h 109])) 110 111# Checks for typedefs, structures, and compiler characteristics. 112AC_C_INLINE 113AC_TYPE_INT32_T 114AC_TYPE_INT8_T 115AC_TYPE_SIZE_T 116 117# Checks for library functions. 118AC_FUNC_GETMNTENT 119AC_CHECK_FUNCS_ONCE([ 120 add_key 121 fallocate 122 fsetxattr 123 fstat 124 fstat64 125 getmntent 126 keyctl 127 llseek 128 lseek64 129 memset 130 setmntent 131]) 132 133AS_IF([test "$ac_cv_header_byteswap_h" = "yes"], 134 [AC_CHECK_DECLS([bswap_64],,,[#include <byteswap.h>])]) 135 136dnl 137dnl Check to see if llseek() is declared in unistd.h. On some libc's 138dnl it is, and on others it isn't..... Thank you glibc developers.... 139dnl 140AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1, 141 [Define to 1 if llseek declared in unistd.h])],, 142 [#include <unistd.h>]) 143dnl 144dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files 145dnl are so convoluted that I can't tell whether it will always be defined, 146dnl and if it isn't defined while lseek64 is defined in the library, 147dnl disaster will strike. 148dnl 149dnl Warning! Use of --enable-gcc-wall may throw off this test. 150dnl 151dnl 152AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1, 153 [Define to 1 if lseek64 declared in unistd.h])],, 154 [#define _LARGEFILE_SOURCE 155 #define _LARGEFILE64_SOURCE 156 #include <unistd.h>]) 157dnl 158dnl Word sizes... 159dnl 160 161# AC_CANONICAL_HOST is needed to access the 'host_os' variable 162AC_CANONICAL_HOST 163 164build_linux=no 165build_windows=no 166build_mac=no 167 168# Detect the target system 169case "${host_os}" in 170linux*|uclinux*) 171 build_linux=yes 172 ;; 173cygwin*|mingw*) 174 build_windows=yes 175 ;; 176darwin*) 177 build_mac=yes 178 ;; 179*) 180 AC_MSG_ERROR(["OS $host_os is not supported"]) 181 ;; 182esac 183 184# Pass the conditionals to automake 185AM_CONDITIONAL([LINUX], [test "$build_linux" = "yes"]) 186AM_CONDITIONAL([WINDOWS], [test "$build_windows" = "yes"]) 187AM_CONDITIONAL([OSX], [test "$build_mac" = "yes"]) 188 189# Install directories 190#AC_PREFIX_DEFAULT([/usr]) 191#AC_SUBST([sbindir], [/sbin]) 192#AC_SUBST([sysconfdir], [/etc]) 193#AC_SUBST([localstatedir], [/var]) 194 195AC_ARG_WITH([root-libdir], 196[ --with-root-libdir=DIR override location for /lib/libf2fs.so], 197root_libdir=$withval, 198root_libdir=NONE)dnl 199 200if test "$root_libdir" = NONE ; then 201 root_libdir="$libdir" 202fi 203AC_SUBST(root_libdir) 204 205AC_CONFIG_FILES([ 206 Makefile 207 man/Makefile 208 lib/Makefile 209 mkfs/Makefile 210 fsck/Makefile 211 tools/Makefile 212 tools/sg_write_buffer/Makefile 213 tools/f2fs_io/Makefile 214]) 215 216AC_CHECK_MEMBER([struct blk_zone.capacity], 217 [AC_DEFINE(HAVE_BLK_ZONE_REP_V2, [1], [report zones includes zone capacity])], 218 [], [[#include <linux/blkzoned.h>]]) 219 220# export library version info for mkfs/libf2fs_format_la 221AC_SUBST(FMT_CURRENT, 7) 222AC_SUBST(FMT_REVISION, 0) 223AC_SUBST(FMT_AGE, 0) 224 225# export library version info for lib/libf2fs_la 226AC_SUBST(LIBF2FS_CURRENT, 8) 227AC_SUBST(LIBF2FS_REVISION, 0) 228AC_SUBST(LIBF2FS_AGE, 0) 229 230AC_OUTPUT 231