]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blame - configure.in
ChangeLog, fsck.8.in:
[thirdparty/e2fsprogs.git] / configure.in
CommitLineData
50e1e10f 1AC_INIT(version.h)
a4b2d3ce 2AC_PREREQ(2.12)
50e1e10f
TT
3MCONFIG=./MCONFIG
4AC_SUBST_FILE(MCONFIG)
74becf3c
TT
5BINARY_TYPE=bin
6dnl
7dnl This is to figure out the version number and the date....
8dnl
9E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \
10 | awk '{print $3}' | tr \" " " | awk '{print $1}'`
11DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
12 | tr \" " "`
13MONTH=`echo $DATE | awk -F- '{print $2}'`
14YEAR=`echo $DATE | awk -F- '{print $3}'`
15
16if expr $YEAR ">" 90 >/dev/null ; then
17 E2FSPROGS_YEAR=19$YEAR
18else
19 E2FSPROGS_YEAR=20$YEAR
20fi
21
22case $MONTH in
23Jan) E2FSPROGS_MONTH="January" ;;
24Feb) E2FSPROGS_MONTH="February" ;;
25Mar) E2FSPROGS_MONTH="March" ;;
26Apr) E2FSPROGS_MONTH="April" ;;
27May) E2FSPROGS_MONTH="May" ;;
28Jun) E2FSPROGS_MONTH="June" ;;
29Jul) E2FSPROGS_MONTH="July" ;;
30Aug) E2FSPROGS_MONTH="August" ;;
31Sep) E2FSPROGS_MONTH="September" ;;
32Oct) E2FSPROGS_MONTH="October" ;;
33Nov) E2FSPROGS_MONTH="November" ;;
34Dec) E2FSPROGS_MONTH="December" ;;
35*) echo "Unknown month $MONTH??" ;;
36esac
37
38unset DATE MONTH YEAR
39echo "Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION"
40echo "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}"
41AC_SUBST(E2FSPROGS_YEAR)
42AC_SUBST(E2FSPROGS_MONTH)
43AC_SUBST(E2FSPROGS_VERSION)
fc6d9d51 44AC_REQUIRE([AC_CANONICAL_HOST])
74becf3c
TT
45dnl
46dnl set $(CC) from --with-cc=value
47dnl
48AC_ARG_WITH([cc],
49[ --with-cc=COMPILER select compiler to use],
50AC_MSG_RESULT(CC=$withval)
51CC=$withval,
52if test -z "$CC" ; then CC=cc; fi
53[AC_MSG_RESULT(CC defaults to $CC)])dnl
54export CC
55AC_SUBST([CC])
56dnl
57dnl set $(LD) from --with-linker=value
58dnl
59AC_ARG_WITH([linker],
60[ --with-linker=LINKER select linker to use],
61AC_MSG_RESULT(LD=$withval)
62LD=$withval,
63if test -z "$LD" ; then LD=$CC; fi
64[AC_MSG_RESULT(LD defaults to $LD)])dnl
65export LD
66AC_SUBST([LD])
67dnl
68dnl set $(CCOPTS) from --with-ccopts=value
69dnl
70AC_ARG_WITH([ccopts],
71[ --with-ccopts=CCOPTS select compiler command line options],
72AC_MSG_RESULT(CCOPTS is $withval)
73CCOPTS=$withval
74CFLAGS="$CFLAGS $withval",
75CCOPTS=)dnl
76AC_SUBST(CCOPTS)
77dnl
a4d09610
TT
78dnl Set default values for library extentions. Will be dealt with after
79dnl parsing configuration opions, which may modify these
80dnl
81LIB_EXT=.a
82STATIC_LIB_EXT=.a
83PROFILE_LIB_EXT=.a
84dnl
74becf3c
TT
85dnl set $(LDFLAGS) from --with-ldopts=value
86dnl
87AC_ARG_WITH([ldopts],
88[ --with-ldopts=LDOPTS select linker command line options],
89AC_MSG_RESULT(LDFLAGS is $withval)
90LDFLAGS=$withval,
91LDFLAGS=)dnl
92AC_SUBST(LDFLAGS)
50e1e10f 93dnl
a4b2d3ce 94dnl Allow separate `root_prefix' to be specified
fc6d9d51 95dnl
a4b2d3ce
TT
96AC_ARG_WITH([root-prefix],
97[ --with-root-prefix=PREFIX override prefix variable for files to be placed in the root],
98root_prefix=$withval,
99root_prefix=NONE)dnl
fc6d9d51 100dnl
50e1e10f
TT
101dnl handle --enable-dll-shlibs
102dnl
103AC_ARG_ENABLE([dll-shlibs],
a4d09610 104[ --enable-dll-shlibs select DLL libraries],
50e1e10f
TT
105if test "$enableval" = "no"
106then
107 DLL_CMT=#
108 MAKEFILE_DLL=/dev/null
109 echo "Disabling DLL shared libraries"
110else
111 DLL_CMT=
112 MAKEFILE_DLL=$srcdir/lib/Makefile.dll-lib
74becf3c 113 BINARY_TYPE=dllbin
a4d09610 114 LIB_EXT=.sa
50e1e10f
TT
115 echo "Enabling DLL shared libraries"
116fi
117,
118MAKEFILE_DLL=/dev/null
119DLL_CMT=#
120echo "Disabling DLL shared libraries by default"
121)
122AC_SUBST(DLL_CMT)
123AC_SUBST_FILE(MAKEFILE_DLL)
124dnl
125dnl handle --enable-elf-shlibs
126dnl
127AC_ARG_ENABLE([elf-shlibs],
a4d09610 128[ --enable-elf-shlibs select ELF shared libraries],
50e1e10f
TT
129if test "$enableval" = "no"
130then
131 ELF_CMT=#
132 MAKEFILE_ELF=/dev/null
133 echo "Disabling ELF shared libraries"
134else
135 ELF_CMT=
136 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
74becf3c 137 BINARY_TYPE=elfbin
a4d09610 138 LIB_EXT=.so
50e1e10f
TT
139 echo "Enabling ELF shared libraries"
140fi
141,
142MAKEFILE_ELF=/dev/null
143ELF_CMT=#
144echo "Disabling ELF shared libraries by default"
145)
146AC_SUBST(ELF_CMT)
147AC_SUBST_FILE(MAKEFILE_ELF)
148dnl
149dnl handle --enable-bsd-shlibs
150dnl
151AC_ARG_ENABLE([bsd-shlibs],
a4d09610 152[ --enable-bsd-shlibs select BSD shared libraries],
50e1e10f
TT
153if test "$enableval" = "no"
154then
155 BSDLIB_CMT=#
156 MAKEFILE_BSDLIB=/dev/null
157 echo "Disabling BSD shared libraries"
158else
159 BSDLIB_CMT=
160 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
a4d09610 161 LIB_EXT=.so
50e1e10f
TT
162 echo "Enabling BSD shared libraries"
163fi
164,
165MAKEFILE_BSDLIB=/dev/null
166BSDLIB_CMT=#
167echo "Disabling BSD shared libraries by default"
168)
169AC_SUBST(BSDLIB_CMT)
170AC_SUBST_FILE(MAKEFILE_BSDLIB)
171dnl
172dnl handle --enable-profile
173dnl
174AC_ARG_ENABLE([profile],
a4d09610 175[ --enable-profile build profiling libraries],
50e1e10f
TT
176if test "$enableval" = "no"
177then
178 PROFILE_CMT=#
179 MAKEFILE_PROFILE=/dev/null
180 echo "Disabling profiling libraries"
181else
182 PROFILE_CMT=
183 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
a4d09610 184 PROFILED_LIB_EXT=_p.a
50e1e10f
TT
185 echo "Building profiling libraries"
186fi
187,
188PROFILE_CMT=#
189MAKEFILE_PROFILE=/dev/null
190echo "Disabling profiling libraries by default"
191)
192AC_SUBST(PROFILE_CMT)
193AC_SUBST_FILE(MAKEFILE_PROFILE)
194dnl
195dnl handle --enable-checker
196dnl
197AC_ARG_ENABLE([checker],
a4d09610 198[ --enable-checker build checker libraries],
50e1e10f
TT
199if test "$enableval" = "no"
200then
201 CHECKER_CMT=#
202 MAKEFILE_CHECKER=/dev/null
203 echo "Disabling checker libraries"
204else
205 CHECKER_CMT=
206 MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker
207 echo "Building checker libraries"
208fi
209,
210CHECKER_CMT=#
211MAKEFILE_CHECKER=/dev/null
212echo "Disabling checker libraries by default"
213)
214AC_SUBST(CHECKER_CMT)
215AC_SUBST_FILE(MAKEFILE_CHECKER)
216dnl
a4d09610
TT
217dnl Substitute library extensions
218dnl
219AC_SUBST(LIB_EXT)
220AC_SUBST(STATIC_LIB_EXT)
221AC_SUBST(PROFILED_LIB_EXT)
222dnl
50e1e10f
TT
223dnl handle --enable-gcc-wall
224dnl
225AC_ARG_ENABLE([gcc-wall],
b0b9c4de 226[ --enable-gcc-wall enable GCC anal warnings (DON'T USE IN PRODUCTION)],
50e1e10f
TT
227if test "$enableval" = "no"
228then
229 W=#
230 echo "Disabling GCC warnings"
231else
232 W=
233 echo "Enabling GCC warnings"
234fi
235,
236W=#
237echo "Disabling GCC warnings by default"
238)
239AC_SUBST(W)
a4d09610
TT
240AC_ARG_ENABLE([dynamic-e2fsck],
241[ --enable-dynamic-e2fsck build e2fsck dynamically],
242if test "$enableval" = "no"
243then
244 E2FSCK_TYPE=static
245 echo "Building e2fsck statically"
246else
247 E2FSCK_TYPE=shared
248 echo "Building e2fsck dynamically"
249fi
250,
251E2FSCK_TYPE=static
252echo "Building e2fsck statically by default"
253)
254AC_SUBST(E2FSCK_TYPE)
50e1e10f 255dnl
fc6d9d51
TT
256dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
257dnl
258AC_ARG_ENABLE([fsck],
259[ --enable-fsck build fsck wrapper program],
260[if test "$enableval" = "no"
261then
262 FSCK_PROG='' FSCK_MAN=''
263 echo "Not building fsck wrapper"
264else
265 FSCK_PROG=fsck FSCK_MAN=fsck.8
266 echo "Building fsck wrapper"
267fi]
268,
269[case "$host_os" in
270 gnu*)
271 FSCK_PROG='' FSCK_MAN=''
272 echo "Not building fsck wrapper by default"
273 ;;
274 *)
275 FSCK_PROG=fsck FSCK_MAN=fsck.8
276 echo "Building fsck wrapper by default"
277esac]
278)
279AC_SUBST(FSCK_PROG)
280AC_SUBST(FSCK_MAN)
281dnl
50e1e10f
TT
282dnl
283MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
284AC_SUBST_FILE(MAKEFILE_LIBRARY)
285dnl
fc6d9d51
TT
286dnl
287AC_ARG_ENABLE([old-bitops],
288[ --enable-old-bitops Use old (non-standard but native) bitmask operations],
289if test "$enableval" = "no"
290then
291 echo "Using new (standard) bitmask operations"
292else
293 AC_DEFINE(EXT2_OLD_BITOPS)
294 echo "Using old (native) bitmask operations"
295
296fi
297,
298echo "Using standard bitmask operations by default"
299)
300dnl
50e1e10f
TT
301dnl End of configuration options
302dnl
74becf3c 303AC_SUBST(BINARY_TYPE)
50e1e10f
TT
304AC_PROG_MAKE_SET
305AC_PATH_PROG(LN, ln, ln)
fc6d9d51 306AC_PROG_LN_S
50e1e10f
TT
307AC_PATH_PROG(MV, mv, mv)
308AC_PATH_PROG(CP, cp, cp)
309AC_PATH_PROG(RM, rm, rm)
310AC_PATH_PROG(CHMOD, chmod, :)
311AC_PATH_PROG(AWK, awk, awk)
312AC_PATH_PROG(SED, sed, sed)
313AC_CHECK_TOOL(AR, ar, ar)
314AC_CHECK_TOOL(RANLIB, ranlib, :)
315AC_CHECK_TOOL(STRIP, strip, :)
316AC_PROG_CC
317AC_PROG_INSTALL
318AC_C_CROSS
5a679c8f 319AC_CHECK_HEADERS(stdlib.h unistd.h stdarg.h errno.h mntent.h paths.h dirent.h getopt.h setjmp.h linux/fd.h linux/major.h sys/disklabel.h sys/sockio.h sys/time.h sys/stat.h sys/types.h net/if.h netinet/in.h)
50e1e10f
TT
320AC_FUNC_VPRINTF
321dnl
322dnl See if struct dirent has a d_namlen field (like bsd systems), implying
323dnl that the actual length of the structure may be grater than the declared
324dnl length.
325dnl
326AC_MSG_CHECKING(whether struct dirent has a d_namlen field)
327AC_CACHE_VAL(e2fsprogs_cv_struct_d_namlen,
328 AC_TRY_COMPILE(
329[#include <sys/types.h>
330#include <dirent.h>],
331 [struct dirent de; de.d_namlen = 0;],
332 [e2fsprogs_cv_struct_d_namlen=yes],
333 [e2fsprogs_cv_struct_d_namlen=no]))
334AC_MSG_RESULT($e2fsprogs_cv_struct_d_namlen)
335if test "$e2fsprogs_cv_struct_d_namlen" = yes; then
336 AC_DEFINE(HAVE_DIRENT_NAMLEN)
337fi
338dnl
b0b9c4de
TT
339dnl Check to see if llseek() is declared in unistd.h. On some libc's
340dnl it is, and on others it isn't..... Thank you glibc developers....
341dnl
342dnl Warning! Use of --enable-gcc-wall may throw off this test.
343dnl
344dnl
345AC_MSG_CHECKING(whether llseek declared in unistd.h)
346AC_CACHE_VAL(e2fsprogs_cv_have_llseek_prototype,
347 AC_TRY_COMPILE(
348[#include <unistd.h>], [extern int llseek(int);],
349 [e2fsprogs_cv_have_llseek_prototype=no],
350 [e2fsprogs_cv_have_llseek_prototype=yes]))
351AC_MSG_RESULT($e2fsprogs_cv_have_llseek_prototype)
352if test "$e2fsprogs_cv_have_llseek_prototype" = yes; then
353 AC_DEFINE(HAVE_LLSEEK_PROTOTYPE)
354fi
355dnl
50e1e10f
TT
356dnl Word sizes...
357dnl
358if test "$cross_compiling" = yes -a "$ac_cv_sizeof_long" = ""; then
359 # if cross-compiling, with no cached values, just assume something common.
360 ac_cv_sizeof_short=2
361 ac_cv_sizeof_int=4
362 ac_cv_sizeof_long=4
fc6d9d51 363 ac_cv_sizeof_long_long=0
50e1e10f
TT
364 AC_MSG_WARN([Cross-compiling, so cannot check type sizes; assuming short=2, int=4, long=4])
365fi
366AC_CHECK_SIZEOF(short)
367AC_CHECK_SIZEOF(int)
368AC_CHECK_SIZEOF(long)
fc6d9d51 369AC_CHECK_SIZEOF(long long)
50e1e10f
TT
370SIZEOF_SHORT=$ac_cv_sizeof_short
371SIZEOF_INT=$ac_cv_sizeof_int
372SIZEOF_LONG=$ac_cv_sizeof_long
fc6d9d51 373SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
50e1e10f
TT
374AC_SUBST(SIZEOF_SHORT)
375AC_SUBST(SIZEOF_INT)
376AC_SUBST(SIZEOF_LONG)
fc6d9d51 377AC_SUBST(SIZEOF_LONG_LONG)
50e1e10f
TT
378dnl
379dnl See if struct stat has a st_flags field, in which case we can get file
380dnl flags somewhat portably. Also check for the analogous setter, chflags().
381dnl
382AC_MSG_CHECKING(whether struct stat has a st_flags field)
383AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
384 AC_TRY_COMPILE([#include <sys/stat.h>],
385 [struct stat stat; stat.st_flags = 0;],
386 [e2fsprogs_cv_struct_st_flags=yes],
387 [e2fsprogs_cv_struct_st_flags=no]))
388AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
389if test "$e2fsprogs_cv_struct_st_flags" = yes; then
390 AC_DEFINE(HAVE_STAT_FLAGS)
391fi
fc6d9d51
TT
392AC_CHECK_FUNCS(chflags getrusage llseek strdup getmntinfo strcasecmp srandom fchown)
393dnl
394dnl Check to see if ino_t is defined
395dnl
396AC_MSG_CHECKING(ino_t defined by sys/types.h)
397AC_CACHE_VAL(e2fsprogs_cv_ino_t,
398 AC_TRY_COMPILE([#include <sys/types.h>],
399 [ino_t ino; ino = 0;],
400 [e2fsprogs_cv_ino_t=yes],
401 [e2fsprogs_cv_ino_t=no]))
402AC_MSG_RESULT($e2fsprogs_cv_ino_t)
403if test "$e2fsprogs_cv_ino_t" = yes; then
404 AC_DEFINE(HAVE_INO_T)
405fi
50e1e10f
TT
406dnl
407dnl On systems without linux header files, we add an extra include directory
408dnl that holds enough to fake it (hopefully). Note that the $(top_srcdir) here
409dnl is quoted so that it gets expanded by make, not by configure.
410dnl
411AC_CHECK_HEADER(linux/fs.h, [linux_headers=yes], [linux_headers=no])
50e1e10f
TT
412if test "$linux_headers" = yes; then
413 AC_DEFINE(HAVE_LINUX_FS_H)
50e1e10f
TT
414else
415 LINUX_INCLUDE='-I$(top_srcdir)/include -I$(top_builddir)/include'
416 # Use this include directory with test compiles in the configure script too.
417 CPPFLAGS="$CPPFLAGS -I$srcdir/include -I./include"
418fi
419AC_SUBST(LINUX_INCLUDE)
420dnl
fc6d9d51
TT
421dnl Check to see if -lsocket is required (solaris) to make something
422dnl that uses socket() to compile; this is needed for the UUID library
423dnl
424SOCKET_LIB=''
425AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
426AC_SUBST(SOCKET_LIB)
427dnl
50e1e10f
TT
428dnl See if optreset exists
429dnl
430AC_MSG_CHECKING(for optreset)
431AC_CACHE_VAL(ac_cv_have_optreset,
432[AC_EGREP_HEADER(optreset, unistd.h,
433 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
434AC_MSG_RESULT($ac_cv_have_optreset)
435if test $ac_cv_have_optreset = yes; then
436 AC_DEFINE(HAVE_OPTRESET)
437fi
438dnl
50e1e10f
TT
439dnl See if using the EXT2 ioctls causes a compile-time barf (as on the hurd).
440dnl
441AC_MSG_CHECKING(whether the ext2 ioctls compile)
442AC_CACHE_VAL(e2fsprogs_cv_ioctl_ext2,
443 AC_TRY_COMPILE([#include <linux/ext2_fs.h>
444#include <sys/ioctl.h>],
445 [ioctl (0, EXT2_IOC_SETVERSION, 0);],
446 [e2fsprogs_cv_ioctl_ext2=yes],
447 [e2fsprogs_cv_ioctl_ext2=no]))
448AC_MSG_RESULT($e2fsprogs_cv_ioctl_ext2)
449if test "$e2fsprogs_cv_ioctl_ext2" = yes; then
450 AC_DEFINE(HAVE_EXT2_IOCTLS)
451fi
452dnl
a4b2d3ce 453dnl Linux places root files in the / by default
50e1e10f 454dnl
50e1e10f
TT
455case "$host_os" in
456linux*)
a4b2d3ce
TT
457 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
458 root_prefix="";
459 echo "On $host_os systems, root_prefix defaults to ''"
fc6d9d51
TT
460 fi
461 ;;
462esac
fc6d9d51 463dnl
a4b2d3ce 464dnl On Linux/hurd, force the prefix to be /usr
fc6d9d51
TT
465dnl
466case "$host_os" in
467linux* | gnu*)
468 if test "$prefix" = NONE ; then
a4b2d3ce
TT
469 prefix="/usr";
470 echo "On $host_os systems, prefix defaults to /usr"
50e1e10f
TT
471 fi
472;;
473esac
a4b2d3ce 474if test "$root_prefix" = NONE ; then
ffe1991f 475 if test "$prefix" = NONE ; then
a4b2d3ce
TT
476 root_prefix="$ac_default_prefix"
477 else
478 root_prefix="$prefix"
479 fi
480fi
481AC_SUBST(root_prefix)
50e1e10f
TT
482dnl
483dnl See if -static works.
50e1e10f 484dnl
ae851482
TT
485AC_MSG_CHECKING([whether linker accepts -static])
486AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
487[SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static"
488AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
489 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
490LDFLAGS=$SAVE_LDFLAGS])
defde784
TT
491dnl
492dnl Regardless of how the test turns out, Solaris doesn't handle -static
493dnl This is caused by the socket library requiring the nsl library, which
494dnl requires the -dl library, which only works for dynamically linked
495dnl programs. It basically means you can't have statically linked programs
496dnl which use the network under Solaris.
497dnl
498case "$host_os" in
499solaris2.*)
500 ac_cv_e2fsprogs_use_static=no
501;;
502esac
ae851482 503AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
74becf3c 504LDFLAG_STATIC=
ae851482 505if test $ac_cv_e2fsprogs_use_static = yes; then
50e1e10f 506 LDFLAG_STATIC=-static
ae851482 507fi
50e1e10f
TT
508AC_SUBST(LDFLAG_STATIC)
509dnl
50e1e10f
TT
510dnl Make the ss and et directories work correctly.
511dnl
512SS_DIR=`cd ${srcdir}/lib/ss; pwd`
513ET_DIR=`cd ${srcdir}/lib/et; pwd`
514AC_SUBST(SS_DIR)
515AC_SUBST(ET_DIR)
516dnl
517dnl Only try to run the test suite if we're not cross compiling.
518dnl
519if test "$cross_compiling" = yes ; then
520 DO_TEST_SUITE=
521else
522 DO_TEST_SUITE=check
523fi
524AC_SUBST(DO_TEST_SUITE)
525dnl
a4d09610
TT
526dnl
527dnl
528DO_SUBSTITUTE_SCRIPT=$srcdir/lib/do_substitute
529AC_SUBST_FILE(DO_SUBSTITUTE_SCRIPT)
530dnl
50e1e10f
TT
531dnl Make our output files, being sure that we create the some miscellaneous
532dnl directories
533dnl
534test -d lib || mkdir lib
535test -d include || mkdir include
536test -d include/linux || mkdir include/linux
defde784 537test -d include/asm || mkdir include/asm
24b2c7a7
TT
538rmakefile=
539if test -d ${srcdir}/resize ; then
540 rmakefile=resize/Makefile
541fi
44339bdf 542AC_OUTPUT(MCONFIG Makefile util/Makefile util/subst.conf lib/et/Makefile
fc6d9d51
TT
543 lib/ss/Makefile lib/ext2fs/Makefile lib/e2p/Makefile lib/uuid/Makefile
544 misc/Makefile e2fsck/Makefile debugfs/Makefile tests/Makefile
24b2c7a7 545 tests/progs/Makefile $rmakefile doc/Makefile)