blob: 9ac0c241b4d9b68932555781fb13a109b2a44d73 [file] [log] [blame]
Jaegeuk Kim036d45e2012-10-26 21:56:34 +09001# -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_PREREQ([2.68])
Sven-Göran Berghdd1ba072012-12-07 10:20:27 +09005
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
Helmut Grohnee034e762018-08-27 20:29:41 -040023AS_IF([test -d .git],[
Sven-Göran Berghdd1ba072012-12-07 10:20:27 +090024 AC_DEFINE([F2FS_TOOLS_DATE],
25 "m4_bpatsubst(f2fs_tools_gitdate,
26 [\([0-9-]*\)\(\w\|\W\)*], [\1])",
Helmut Grohnee034e762018-08-27 20:29:41 -040027 [f2fs-tools date based on Git commits])],[
Sven-Göran Berghdd1ba072012-12-07 10:20:27 +090028 AC_DEFINE([F2FS_TOOLS_DATE],
29 "f2fs_tools_date",
Helmut Grohnee034e762018-08-27 20:29:41 -040030 [f2fs-tools date based on Source releases])])
Sven-Göran Berghdd1ba072012-12-07 10:20:27 +090031
Jaegeuk Kime69e4372013-01-25 17:20:16 +090032AC_CONFIG_SRCDIR([config.h.in])
Jan Engelhardt8471b6a2012-12-12 03:59:16 +010033AC_CONFIG_HEADER([config.h])
Jaegeuk Kime69e4372013-01-25 17:20:16 +090034AC_CONFIG_MACRO_DIR([m4])
Jan Engelhardtec1a5da2012-12-12 03:55:42 +010035AC_CONFIG_AUX_DIR([build-aux])
Jan Engelhardt2a8c4b12012-12-12 03:57:11 +010036AM_INIT_AUTOMAKE([foreign tar-pax dist-xz])
Jaegeuk Kime69e4372013-01-25 17:20:16 +090037
Sergey Kvachonok0d6ce1f2017-01-13 11:02:02 +030038# Test configure options.
39AC_ARG_WITH([selinux],
40 AS_HELP_STRING([--without-selinux],
Kinglong Mee52a3a272017-03-05 21:05:01 +080041 [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]))
Sergey Kvachonok0d6ce1f2017-01-13 11:02:02 +030046
Jaegeuk Kim036d45e2012-10-26 21:56:34 +090047# Checks for programs.
48AC_PROG_CC
Jaegeuk Kime69e4372013-01-25 17:20:16 +090049AC_PROG_LIBTOOL
50AC_PATH_PROG([LDCONFIG], [ldconfig],
51 [AC_MSG_ERROR([ldconfig not found])],
52 [$PATH:/sbin])
Jaegeuk Kim036d45e2012-10-26 21:56:34 +090053
54# Checks for libraries.
Jan Engelhardtfe2928a2012-12-12 03:53:28 +010055PKG_CHECK_MODULES([libuuid], [uuid])
Sergey Kvachonok0d6ce1f2017-01-13 11:02:02 +030056
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"],
Christian Hesseb0a23862016-10-22 22:06:54 +020064 [AC_DEFINE([HAVE_LIBSELINUX], [1], [Use libselinux])],
Sergey Kvachonok0d6ce1f2017-01-13 11:02:02 +030065 [AS_IF([test "x$with_selinux" = "xyes"],
66 [AC_MSG_ERROR([selinux support requested but libselinux not found])]
67 )]
68)
Jaegeuk Kim036d45e2012-10-26 21:56:34 +090069
Kinglong Mee52a3a272017-03-05 21:05:01 +080070AS_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
Jaegeuk Kim036d45e2012-10-26 21:56:34 +090083# Checks for header files.
Jaegeuk Kim43bb7b62017-11-14 10:53:32 -080084AC_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
Jaegeuk Kimbf173782020-04-01 13:24:38 -070096 mach/mach_time.h
Jaegeuk Kim43bb7b62017-11-14 10:53:32 -080097 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
Jaegeuk Kim595fd572018-05-01 13:54:25 -0700106 sys/utsname.h
Jaegeuk Kim43bb7b62017-11-14 10:53:32 -0800107 sys/xattr.h
108 unistd.h
109]))
Jaegeuk Kim036d45e2012-10-26 21:56:34 +0900110
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
Jan Engelhardtb1bce4d2012-12-12 03:52:24 +0100119AC_CHECK_FUNCS_ONCE([
Jaegeuk Kim43bb7b62017-11-14 10:53:32 -0800120 add_key
Gustavo Zacarias3c160e72015-03-10 15:53:17 -0300121 fallocate
Sheng Yong7935c4e2017-11-02 11:56:07 +0800122 fsetxattr
Jaegeuk Kim43bb7b62017-11-14 10:53:32 -0800123 fstat
124 fstat64
125 getmntent
126 keyctl
127 llseek
128 lseek64
129 memset
130 setmntent
Jan Engelhardtb1bce4d2012-12-12 03:52:24 +0100131])
Jaegeuk Kim036d45e2012-10-26 21:56:34 +0900132
Yann E. MORINdc532e52014-12-25 18:52:00 +0100133AS_IF([test "$ac_cv_header_byteswap_h" = "yes"],
134 [AC_CHECK_DECLS([bswap_64],,,[#include <byteswap.h>])])
135
Jaegeuk Kim43bb7b62017-11-14 10:53:32 -0800136dnl
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
Baruch Siacheefe2252018-06-13 20:48:34 +0300170linux*|uclinux*)
Jaegeuk Kim43bb7b62017-11-14 10:53:32 -0800171 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
Jaegeuk Kime69e4372013-01-25 17:20:16 +0900189# Install directories
Anthony G. Basile57929512015-03-07 11:16:54 -0500190#AC_PREFIX_DEFAULT([/usr])
191#AC_SUBST([sbindir], [/sbin])
192#AC_SUBST([sysconfdir], [/etc])
193#AC_SUBST([localstatedir], [/var])
Theodore Ts'ob0670042018-08-19 23:04:06 -0400194
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
Jan Engelhardtb1bce4d2012-12-12 03:52:24 +0100205AC_CONFIG_FILES([
Mike Frysinger0903d1e2012-10-30 07:38:59 +0900206 Makefile
207 man/Makefile
Jaegeuk Kime69e4372013-01-25 17:20:16 +0900208 lib/Makefile
Mike Frysinger0903d1e2012-10-30 07:38:59 +0900209 mkfs/Makefile
Changman Lee7f35b542013-07-04 17:11:32 +0900210 fsck/Makefile
Changman Leea0a55672014-01-10 17:44:59 +0900211 tools/Makefile
Hyojun Kimb39f62d2018-03-01 13:42:44 -0800212 tools/sg_write_buffer/Makefile
Jaegeuk Kimbbff9a62018-11-28 10:52:05 -0800213 tools/f2fs_io/Makefile
Jan Engelhardtb1bce4d2012-12-12 03:52:24 +0100214])
Mike Frysinger0903d1e2012-10-30 07:38:59 +0900215
Jaegeuk Kim85aa5252015-12-09 10:30:25 -0800216# export library version info for mkfs/libf2fs_format_la
Jaegeuk Kim696bf1e2019-09-24 19:20:31 -0700217AC_SUBST(FMT_CURRENT, 6)
Jaegeuk Kim21d5a112018-08-27 23:44:54 -0700218AC_SUBST(FMT_REVISION, 0)
Jaegeuk Kim85aa5252015-12-09 10:30:25 -0800219AC_SUBST(FMT_AGE, 0)
220
221# export library version info for lib/libf2fs_la
Jaegeuk Kim696bf1e2019-09-24 19:20:31 -0700222AC_SUBST(LIBF2FS_CURRENT, 7)
Jaegeuk Kim21d5a112018-08-27 23:44:54 -0700223AC_SUBST(LIBF2FS_REVISION, 0)
Jaegeuk Kim85aa5252015-12-09 10:30:25 -0800224AC_SUBST(LIBF2FS_AGE, 0)
225
Jaegeuk Kim036d45e2012-10-26 21:56:34 +0900226AC_OUTPUT