AC_INIT(version.h)
AC_PREREQ(2.12)
MCONFIG=./MCONFIG
AC_SUBST_FILE(MCONFIG)
BINARY_TYPE=bin
dnl
dnl This is to figure out the version number and the date....
dnl
E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h  \
	| awk '{print $3}' | tr \" " " | awk '{print $1}'`
DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
	| tr \" " "`
MONTH=`echo $DATE | awk -F- '{print $2}'`
YEAR=`echo $DATE | awk -F- '{print $3}'`

if expr $YEAR ">" 1900 > /dev/null ; then
	E2FSPROGS_YEAR=$YEAR
elif expr $YEAR ">" 90 >/dev/null ; then
	E2FSPROGS_YEAR=19$YEAR
else
	E2FSPROGS_YEAR=20$YEAR
fi

case $MONTH in
Jan)	E2FSPROGS_MONTH="January" ;;
Feb)	E2FSPROGS_MONTH="February" ;;
Mar)	E2FSPROGS_MONTH="March" ;;
Apr)	E2FSPROGS_MONTH="April" ;;
May)	E2FSPROGS_MONTH="May" ;;
Jun)	E2FSPROGS_MONTH="June" ;;
Jul)	E2FSPROGS_MONTH="July" ;;
Aug)	E2FSPROGS_MONTH="August" ;;
Sep)	E2FSPROGS_MONTH="September" ;;
Oct)	E2FSPROGS_MONTH="October" ;;
Nov)	E2FSPROGS_MONTH="November" ;;
Dec)	E2FSPROGS_MONTH="December" ;;
*)	echo "Unknown month $MONTH??" ;;
esac

unset DATE MONTH YEAR
echo "Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION"
echo "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}"
AC_SUBST(E2FSPROGS_YEAR)
AC_SUBST(E2FSPROGS_MONTH)
AC_SUBST(E2FSPROGS_VERSION)
AC_REQUIRE([AC_CANONICAL_HOST])
dnl
dnl set $(CC) from --with-cc=value
dnl
AC_ARG_WITH([cc],
[  --with-cc=COMPILER      select compiler to use],
AC_MSG_RESULT(CC=$withval)
CC=$withval,
if test -z "$CC" ; then CC=cc; fi
[AC_MSG_RESULT(CC defaults to $CC)])dnl
export CC
AC_SUBST([CC])
AC_PROG_CC
dnl
dnl set $(LD) from --with-linker=value
dnl
AC_ARG_WITH([linker],
[  --with-linker=LINKER    select linker to use],
AC_MSG_RESULT(LD=$withval)
LD=$withval,
if test -z "$LD" ; then LD=$CC; fi
[AC_MSG_RESULT(LD defaults to $LD)])dnl
export LD
AC_SUBST([LD])
dnl
dnl set $(CCOPTS) from --with-ccopts=value
dnl
AC_ARG_WITH([ccopts],
[  --with-ccopts=CCOPTS    select compiler command line options],
AC_MSG_RESULT(CCOPTS is $withval)
CFLAGS=$withval,
)dnl
dnl
dnl On systems without linux header files, we add an extra include directory
dnl that holds enough to fake it (hopefully).  Note that the $(top_srcdir) here
dnl is quoted so that it gets expanded by make, not by configure.
dnl
AC_CHECK_HEADER(linux/fs.h, [linux_headers=yes], [linux_headers=no])
if test "$linux_headers" != yes; then
  LINUX_INCLUDE='-I$(top_builddir)/include'
fi
AC_SUBST(LINUX_INCLUDE)
dnl
dnl Set default values for library extentions.  Will be dealt with after
dnl parsing configuration opions, which may modify these
dnl
LIB_EXT=.a
STATIC_LIB_EXT=.a
PROFILE_LIB_EXT=.a
dnl
dnl set $(LDFLAGS) from --with-ldopts=value
dnl
AC_ARG_WITH([ldopts],
[  --with-ldopts=LDOPTS    select linker command line options],
AC_MSG_RESULT(LDFLAGS is $withval)
LDFLAGS=$withval,
LDFLAGS=)dnl
AC_SUBST(LDFLAGS)
dnl
dnl Allow separate `root_prefix' to be specified
dnl
AC_ARG_WITH([root-prefix],
[  --with-root-prefix=PREFIX override prefix variable for files to be placed in the root],
root_prefix=$withval,
root_prefix=NONE)dnl
dnl
dnl handle --enable-compression
dnl
AC_ARG_ENABLE([compression],
[  --enable-compression	  enable EXPERIMENTAL compression support],
if test "$enableval" = "no"
then
	echo "Disabling compression support"
else
	AC_DEFINE(ENABLE_COMPRESSION)
	echo "Enabling compression support"
	echo "WARNING: Compression support is experimental"
fi
,
echo "Disabling compression support by default"
)
dnl
dnl handle --enable-dll-shlibs
dnl
AC_ARG_ENABLE([dll-shlibs],
[  --enable-dll-shlibs	  select DLL libraries],
if test "$enableval" = "no"
then
	DLL_CMT=#
	MAKEFILE_DLL=/dev/null
	echo "Disabling DLL shared libraries"
else
	DLL_CMT=
	MAKEFILE_DLL=$srcdir/lib/Makefile.dll-lib
	BINARY_TYPE=dllbin
	LIB_EXT=.sa
	echo "Enabling DLL shared libraries"
fi
,
MAKEFILE_DLL=/dev/null
DLL_CMT=#
echo "Disabling DLL shared libraries by default"
)
AC_SUBST(DLL_CMT)
AC_SUBST_FILE(MAKEFILE_DLL)
dnl
dnl handle --enable-elf-shlibs
dnl
AC_ARG_ENABLE([elf-shlibs],
[  --enable-elf-shlibs	  select ELF shared libraries],
if test "$enableval" = "no"
then
	ELF_CMT=#
	MAKEFILE_ELF=/dev/null
	echo "Disabling ELF shared libraries"
else
	ELF_CMT=
	MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
	[case "$host_os" in
	solaris2.*)
		MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
	;;
	esac]
	BINARY_TYPE=elfbin
	LIB_EXT=.so
	echo "Enabling ELF shared libraries"
fi
,
MAKEFILE_ELF=/dev/null
ELF_CMT=#
echo "Disabling ELF shared libraries by default"
)
AC_SUBST(ELF_CMT)
AC_SUBST_FILE(MAKEFILE_ELF)
dnl
dnl handle --enable-bsd-shlibs
dnl
AC_ARG_ENABLE([bsd-shlibs],
[  --enable-bsd-shlibs	  select BSD shared libraries],
if test "$enableval" = "no"
then
	BSDLIB_CMT=#
	MAKEFILE_BSDLIB=/dev/null
	echo "Disabling BSD shared libraries"
else
	BSDLIB_CMT=
	MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
	LIB_EXT=.so
	echo "Enabling BSD shared libraries"
fi
,
MAKEFILE_BSDLIB=/dev/null
BSDLIB_CMT=#
echo "Disabling BSD shared libraries by default"
)
AC_SUBST(BSDLIB_CMT)
AC_SUBST_FILE(MAKEFILE_BSDLIB)
dnl
dnl handle --enable-profile
dnl
AC_ARG_ENABLE([profile],
[  --enable-profile	  build profiling libraries],
if test "$enableval" = "no"
then
	PROFILE_CMT=#
	MAKEFILE_PROFILE=/dev/null
	echo "Disabling profiling libraries"
else
	PROFILE_CMT=
	MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
	PROFILED_LIB_EXT=_p.a
	echo "Building profiling libraries"
fi
,
PROFILE_CMT=#
MAKEFILE_PROFILE=/dev/null
echo "Disabling profiling libraries by default"
)
AC_SUBST(PROFILE_CMT)
AC_SUBST_FILE(MAKEFILE_PROFILE)
dnl
dnl handle --enable-checker
dnl
AC_ARG_ENABLE([checker],
[  --enable-checker	  build checker libraries],
if test "$enableval" = "no"
then
	CHECKER_CMT=#
	MAKEFILE_CHECKER=/dev/null
	echo "Disabling checker libraries"
else
	CHECKER_CMT=
	MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker
	echo "Building checker libraries"
fi
,
CHECKER_CMT=#
MAKEFILE_CHECKER=/dev/null
echo "Disabling checker libraries by default"
)
AC_SUBST(CHECKER_CMT)
AC_SUBST_FILE(MAKEFILE_CHECKER)
dnl
dnl Substitute library extensions
dnl
AC_SUBST(LIB_EXT)
AC_SUBST(STATIC_LIB_EXT)
AC_SUBST(PROFILED_LIB_EXT)
dnl
dnl handle --enable-jfs-debug
dnl
AC_ARG_ENABLE([jfs-debug],
[  --enable-jfs-debug  	  enable journal debugging],
if test "$enableval" = "no"
then
	echo "Disabling journal debugging"
else
	AC_DEFINE(JFS_DEBUG)
	echo "Enabling journal debugging"
fi
,
echo "Disabling journal debugging by default"
)
dnl
dnl handle --enable-swapfs
dnl
AC_ARG_ENABLE([swapfs],
[  --disable-swapfs    	  disable support of legacy byte-swapped filesystems],
if test "$enableval" = "no"
then
	echo "Disabling swapfs support"
else
	AC_DEFINE(ENABLE_SWAPFS)
	echo "Enabling swapfs support"
fi
,
echo "Enabling swapfs support by default"
AC_DEFINE(ENABLE_SWAPFS)
)
dnl
dnl handle --enable-debugfs
dnl
AC_ARG_ENABLE([debugfs],
[  --disable-debugfs   	  disable support of debugfs program],
if test "$enableval" = "no"
then
	echo "Disabling debugfs support"
	DEBUGFS_CMT="#"
else
	DEBUGFS_CMT=
	echo "Enabling debugfs support"
fi
,
echo "Enabling debugfs support by default"
DEBUGFS_CMT=
)
AC_SUBST(DEBUGFS_CMT)
dnl
dnl handle --enable-imager
dnl
AC_ARG_ENABLE([imager],
[  --disable-imager   	  disable support of e2image program],
if test "$enableval" = "no"
then
	echo "Disabling e2image support"
	IMAGER_CMT="#"
else
	IMAGER_CMT=
	echo "Enabling e2image support"
fi
,
echo "Enabling e2image support by default"
IMAGER_CMT=
)
AC_SUBST(IMAGER_CMT)
dnl
dnl handle --enable-resizer
dnl
AC_ARG_ENABLE([resizer],
[  --disable-resizer   	  disable support of e2resize program],
if test "$enableval" = "no"
then
	echo "Disabling e2resize support"
	RESIZER_CMT="#"
else
	RESIZER_CMT=
	echo "Enabling e2resize support"
fi
,
echo "Enabling e2resize support by default"
RESIZER_CMT=
)
AC_SUBST(RESIZER_CMT)
dnl
dnl handle --enable-dynamic-e2fsck
dnl
AC_ARG_ENABLE([dynamic-e2fsck],
[  --enable-dynamic-e2fsck build e2fsck dynamically],
if test "$enableval" = "no"
then
	E2FSCK_TYPE=static
	echo "Building e2fsck statically"
else
	E2FSCK_TYPE=shared
	echo "Building e2fsck dynamically"
fi
,
E2FSCK_TYPE=static
echo "Building e2fsck statically by default"
)
AC_SUBST(E2FSCK_TYPE)
dnl
dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
dnl
AC_ARG_ENABLE([fsck],
[  --enable-fsck           build fsck wrapper program],
[if test "$enableval" = "no"
then
	FSCK_PROG='' FSCK_MAN=''
	echo "Not building fsck wrapper"
else
	FSCK_PROG=fsck FSCK_MAN=fsck.8
	echo "Building fsck wrapper"
fi]
,
[case "$host_os" in
  gnu*)
    FSCK_PROG='' FSCK_MAN=''
    echo "Not building fsck wrapper by default"
    ;;
  *)
    FSCK_PROG=fsck FSCK_MAN=fsck.8
    echo "Building fsck wrapper by default"
esac]
)
AC_SUBST(FSCK_PROG)
AC_SUBST(FSCK_MAN)
dnl
dnl
MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
AC_SUBST_FILE(MAKEFILE_LIBRARY)
dnl
dnl
AC_ARG_ENABLE([old-bitops],
[  --enable-old-bitops	  Use old (non-standard but native) bitmask operations],
if test "$enableval" = "no"
then
	echo "Using new (standard) bitmask operations"
else
	AC_DEFINE(EXT2_OLD_BITOPS)
	echo "Using old (native) bitmask operations"

fi
,
echo "Using standard bitmask operations by default"
)
dnl
dnl Add internationalization support, using gettext.
dnl
PACKAGE=e2fsprogs
VERSION="$E2FSPROGS_VERSION"
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
AC_SUBST(PACKAGE)
AC_SUBST(VERSION)

ALL_LINGUAS="it nyc"
AM_GNU_GETTEXT
dnl
dnl End of configuration options
dnl
AC_SUBST(BINARY_TYPE)
AC_PROG_MAKE_SET
AC_PATH_PROG(LN, ln, ln)
AC_PROG_LN_S
AC_PATH_PROG(MV, mv, mv)
AC_PATH_PROG(CP, cp, cp)
AC_PATH_PROG(RM, rm, rm)
AC_PATH_PROG(CHMOD, chmod, :)
AC_PATH_PROG(AWK, awk, awk)
AC_PATH_PROG(SED, sed, sed)
AC_PATH_PROG(PERL, perl, perl)
AC_PATH_PROG(LDCONFIG, ldconfig, :)
AC_CHECK_TOOL(AR, ar, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :)
AC_CHECK_TOOL(STRIP, strip, :)
AC_PROG_INSTALL
# See if we need a separate native compiler.
if test $cross_compiling = no; then
  BUILD_CC="$CC"
  AC_SUBST(BUILD_CC)
else
  AC_CHECK_PROGS(BUILD_CC, gcc cc)
fi
AC_CHECK_HEADERS(stdlib.h unistd.h stdarg.h errno.h malloc.h mntent.h paths.h dirent.h getopt.h setjmp.h signal.h termios.h linux/fd.h linux/major.h sys/disklabel.h sys/ioctl.h sys/mkdev.h sys/mount.h sys/sockio.h sys/sysmacros.h sys/time.h sys/stat.h sys/types.h net/if.h netinet/in.h)
AC_FUNC_VPRINTF
dnl
dnl See if struct dirent has a d_namlen field (like bsd systems), implying
dnl that the actual length of the structure may be grater than the declared
dnl length. 
dnl
AC_MSG_CHECKING(whether struct dirent has a d_namlen field)
AC_CACHE_VAL(e2fsprogs_cv_struct_d_namlen,
	AC_TRY_COMPILE(
[#include <sys/types.h>
#include <dirent.h>],
		[struct dirent de; de.d_namlen = 0;],
		[e2fsprogs_cv_struct_d_namlen=yes],
		[e2fsprogs_cv_struct_d_namlen=no]))
AC_MSG_RESULT($e2fsprogs_cv_struct_d_namlen)
if test "$e2fsprogs_cv_struct_d_namlen" = yes; then
  AC_DEFINE(HAVE_DIRENT_NAMLEN)
fi
dnl
dnl Check to see if llseek() is declared in unistd.h.  On some libc's 
dnl it is, and on others it isn't..... Thank you glibc developers....
dnl
dnl Warning!  Use of --enable-gcc-wall may throw off this test.
dnl
dnl
AC_MSG_CHECKING(whether llseek declared in unistd.h)
AC_CACHE_VAL(e2fsprogs_cv_have_llseek_prototype,
	AC_TRY_COMPILE(
[#include <unistd.h>], [extern int llseek(int);],
	[e2fsprogs_cv_have_llseek_prototype=no],
	[e2fsprogs_cv_have_llseek_prototype=yes]))
AC_MSG_RESULT($e2fsprogs_cv_have_llseek_prototype)
if test "$e2fsprogs_cv_have_llseek_prototype" = yes; then
   AC_DEFINE(HAVE_LLSEEK_PROTOTYPE)
fi
dnl
dnl Check to see if lseek64() is declared in unistd.h.  Glibc's header files
dnl are so convoluted that I can't tell whether it will always be defined,
dnl and if it isn't defined while lseek64 is defined in the library, 
dnl disaster will strike.  
dnl
dnl Warning!  Use of --enable-gcc-wall may throw off this test.
dnl
dnl
AC_MSG_CHECKING(whether lseek64 declared in unistd.h)
AC_CACHE_VAL(e2fsprogs_cv_have_lseek64_prototype,
	AC_TRY_COMPILE(
[#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE
#include <unistd.h>], [extern int lseek64(int);],
	[e2fsprogs_cv_have_lseek64_prototype=no],
	[e2fsprogs_cv_have_lseek64_prototype=yes]))
AC_MSG_RESULT($e2fsprogs_cv_have_lseek64_prototype)
if test "$e2fsprogs_cv_have_lseek64_prototype" = yes; then
   AC_DEFINE(HAVE_LSEEK64_PROTOTYPE)
fi
dnl
dnl Word sizes...
dnl
if test "$cross_compiling" = yes -a "$ac_cv_sizeof_long" = ""; then
  # if cross-compiling, with no cached values, just assume something common. 
  ac_cv_sizeof_short=2
  ac_cv_sizeof_int=4
  ac_cv_sizeof_long=4
  ac_cv_sizeof_long_long=8
  AC_MSG_WARN([Cross-compiling, so cannot check type sizes; assuming short=2, int=4, long=4, long long=8])
fi
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(long long)
SIZEOF_SHORT=$ac_cv_sizeof_short
SIZEOF_INT=$ac_cv_sizeof_int
SIZEOF_LONG=$ac_cv_sizeof_long
SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
AC_SUBST(SIZEOF_SHORT)
AC_SUBST(SIZEOF_INT)
AC_SUBST(SIZEOF_LONG)
AC_SUBST(SIZEOF_LONG_LONG)
AC_C_BIGENDIAN
dnl
dnl See if struct stat has a st_flags field, in which case we can get file
dnl flags somewhat portably.  Also check for the analogous setter, chflags().
dnl
AC_MSG_CHECKING(whether struct stat has a st_flags field)
AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
	AC_TRY_COMPILE([#include <sys/stat.h>],
		[struct stat stat; stat.st_flags = 0;],
		[e2fsprogs_cv_struct_st_flags=yes],
		[e2fsprogs_cv_struct_st_flags=no]))
AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
if test "$e2fsprogs_cv_struct_st_flags" = yes; then
  AC_MSG_CHECKING(whether st_flags field is useful)
  AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
	AC_TRY_COMPILE([#include <sys/stat.h>],
		[struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
		[e2fsprogs_cv_struct_st_flags_immut=yes],
		[e2fsprogs_cv_struct_st_flags_immut=no]))
  AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
  if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
	  AC_DEFINE(HAVE_STAT_FLAGS)
  fi
fi
AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 getmntinfo strcasecmp srandom fchown mallinfo fdatasync strnlen)
dnl
dnl Check to see if -lsocket is required (solaris) to make something
dnl that uses socket() to compile; this is needed for the UUID library
dnl
SOCKET_LIB=''
AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
AC_SUBST(SOCKET_LIB)
dnl
dnl See if optreset exists
dnl
AC_MSG_CHECKING(for optreset)
AC_CACHE_VAL(ac_cv_have_optreset,
[AC_EGREP_HEADER(optreset, unistd.h,
  ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
AC_MSG_RESULT($ac_cv_have_optreset)
if test $ac_cv_have_optreset = yes; then
  AC_DEFINE(HAVE_OPTRESET)
fi
dnl
dnl We use the EXT2 ioctls only under Linux
dnl
case "$host_os" in
linux*)
	AC_DEFINE(HAVE_EXT2_IOCTLS)
	;;
esac
dnl
dnl Linux and Hurd places root files in the / by default
dnl
case "$host_os" in
linux* | gnu*)
	if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
		root_prefix="";
		echo "On $host_os systems, root_prefix defaults to ''"
	fi
	;;
esac
dnl
dnl On Linux/hurd, force the prefix to be /usr
dnl
case "$host_os" in
linux* | gnu*)
	if test "$prefix" = NONE ; then
		prefix="/usr";
		echo "On $host_os systems, prefix defaults to /usr"
	fi
;;
esac
if test "$root_prefix" = NONE ; then
	if test "$prefix" = NONE ; then
		root_prefix="$ac_default_prefix"
	else
		root_prefix="$prefix"
	fi
fi
AC_SUBST(root_prefix)
dnl
dnl See if -static works.
dnl
AC_MSG_CHECKING([whether linker accepts -static])
AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
[SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static"
AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
LDFLAGS=$SAVE_LDFLAGS])
dnl
dnl Regardless of how the test turns out, Solaris doesn't handle -static
dnl This is caused by the socket library requiring the nsl library, which
dnl requires the -dl library, which only works for dynamically linked 
dnl programs.  It basically means you can't have statically linked programs
dnl which use the network under Solaris.  
dnl
case "$host_os" in
solaris2.*)
	ac_cv_e2fsprogs_use_static=no	
;;
esac
AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
LDFLAG_STATIC=
if test $ac_cv_e2fsprogs_use_static = yes; then
	LDFLAG_STATIC=-static
fi
AC_SUBST(LDFLAG_STATIC)
dnl
dnl Make the ss and et directories work correctly.
dnl
SS_DIR=`cd ${srcdir}/lib/ss; pwd`
ET_DIR=`cd ${srcdir}/lib/et; pwd`
AC_SUBST(SS_DIR)
AC_SUBST(ET_DIR)
dnl
dnl Only try to run the test suite if we're not cross compiling.
dnl
if test "$cross_compiling" = yes ; then
  DO_TEST_SUITE=
else
  DO_TEST_SUITE=check
fi
AC_SUBST(DO_TEST_SUITE)
dnl
dnl Make our output files, being sure that we create the some miscellaneous 
dnl directories
dnl
test -d lib || mkdir lib
test -d include || mkdir include
test -d include/linux || mkdir include/linux
test -d include/asm || mkdir include/asm
rmakefile=
if test -d ${srcdir}/resize ; then
   rmakefile=resize/Makefile
fi
AC_OUTPUT(MCONFIG Makefile util/Makefile util/subst.conf lib/et/Makefile 
	lib/ss/Makefile lib/ext2fs/Makefile lib/e2p/Makefile lib/uuid/Makefile
	misc/Makefile e2fsck/Makefile debugfs/Makefile tests/Makefile 
	tests/progs/Makefile $rmakefile doc/Makefile 
	intl/Makefile po/Makefile.in)
