• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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