################################################################################
##
##    Copyright 1999-2000 Sistina Software, Inc.
##
##    This is free software released under the GNU General Public License.
##    There is no warranty for this software.  See the file COPYING for
##    details.
##
##    See the file CONTRIBUTORS for a list of contributors.
##
##    This file is maintained by:
##      AJ Lewis <lewis@sistina.com>
## 
##    File name: configure.in
##
##    Description: Input file for autoconf.  Generates the configure script 
##                 that tries to keep everything nice and portable.  It also
##                 simplifies distribution package building considerably.
################################################################################

dnl Process this file with autoconf to produce a configure script.
AC_INIT(lib/device/dev-cache.h)

dnl setup the directory where autoconf has auxilary files
AC_CONFIG_AUX_DIR(autoconf) 

dnl Checks for programs.
AC_PROG_AWK
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_RANLIB

dnl Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_CHECK_HEADERS(fcntl.h malloc.h sys/ioctl.h unistd.h)

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_STRUCT_ST_RDEV
AC_HEADER_TIME

dnl -- prefix is /usr by default, the exec_prefix default is setup later
AC_PREFIX_DEFAULT(/usr)

dnl -- setup the ownership of the files
AC_ARG_WITH(user,
  [  --with-user=USER        Set the owner of installed files ],
  [ OWNER="$withval" ],
  [ OWNER="root" ])

dnl -- setup the group ownership of the files
AC_ARG_WITH(group,
  [  --with-group=GROUP      Set the group owner of installed files ],
  [ GROUP="$withval" ],
  [ GROUP="root" ])

dnl -- format1 inclusion type
AC_ARG_WITH(lvm1,
  [  --with-lvm1=TYPE        LVM1 metadata support: internal/shared/none
                          [TYPE=internal] ],
  [ LVM1="$withval" ],
  [ LVM1="internal" ])

if [[ "x$LVM1" != xnone -a "x$LVM1" != xinternal -a "x$LVM1" != xshared ]];
 then  AC_MSG_ERROR(
--with-lvm1 parameter invalid
)
 exit
fi;

AC_ARG_ENABLE(jobs, [  --enable-jobs=NUM       Number of jobs to run simultaneously], JOBS=-j$enableval, JOBS=-j2)

dnl Enables staticly linked tools
AC_ARG_ENABLE(static_link, [  --enable-static_link    Use this to link the tools to the liblvm library
                          statically.  Default is dynamic linking],  STATIC_LINK=$enableval, STATIC_LINK=no)

dnl Enable readline
AC_ARG_ENABLE(readline, [  --enable-readline       Enable readline support],  \
READLINE=$enableval, READLINE=no)

dnl Enable Debugging
AC_ARG_ENABLE(debug,    [  --enable-debug          Enable debugging],  \
DEBUG=yes, DEBUG=no)

dnl Disable devmapper
AC_ARG_ENABLE(devmapper, [  --disable-devmapper     Disable device-mapper interaction],  \
DEVMAPPER=no, DEVMAPPER=yes)

dnl Mess with default exec_prefix
if [[ "x$exec_prefix" = xNONE -a "x$prefix" = xNONE ]];
 then  exec_prefix="";
fi;

dnl Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_TYPE_SIGNAL
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(mkdir rmdir uname)

dnl check for termcap (Shamelessly copied from parted 1.4.17)
if test x$READLINE = xyes; then
	AC_SEARCH_LIBS(tgetent, ncurses curses termcap termlib, ,
		AC_MSG_ERROR(
termcap could not be found which is required for the
--enable-readline option (which is enabled by default).  Either disable readline
support with --disable-readline or download and install termcap from:
	ftp.gnu.org/gnu/termcap
Note: if you are using precompiled packages you will also need the development
  package as well (which may be called termcap-devel or something similar).
Note: (n)curses also seems to work as a substitute for termcap.  This was
  not found either - but you could try installing that as well.
)
	exit
	)
fi

dnl Check for readline (Shamelessly copied from parted 1.4.17)
if test x$READLINE = xyes; then
	AC_CHECK_LIB(readline, readline, ,
		AC_MSG_ERROR(
GNU Readline could not be found which is required for the
--enable-readline option (which is enabled by default).  Either disable readline
support with --disable-readline or download and install readline from:
	ftp.gnu.org/gnu/readline
Note: if you are using precompiled packages you will also need the development
package as well (which may be called readline-devel or something similar).
)
		exit
	)
	AC_CHECK_FUNC(rl_completion_matches, HAVE_RL_COMPLETION_MATCHES=yes,
		HAVE_RL_COMPLETION_MATCHES=no)
fi

if test "-f VERSION"; then
  LVM_VERSION="\"`cat VERSION`\""
else
  LVM_VERSION="Unknown"
fi

AC_SUBST(JOBS)
AC_SUBST(STATIC_LINK)
AC_SUBST(READLINE)
AC_SUBST(LVM1)
AC_SUBST(HAVE_RL_COMPLETION_MATCHES)
AC_SUBST(OWNER)
AC_SUBST(GROUP)
AC_SUBST(LIBS)
AC_SUBST(LVM_VERSION)
AC_SUBST(DEBUG)
AC_SUBST(DEVMAPPER)
dnl First and last lines should not contain files to generate in order to 
dnl keep utility scripts running properly
AC_OUTPUT( 								\
Makefile								\
make.tmpl                                                               \
include/Makefile						 	\
lib/Makefile							 	\
lib/format1/Makefile						 	\
man/Makefile							 	\
tools/Makefile							 	\
tools/version.h								\
test/mm/Makefile							\
test/device/Makefile							\
test/format1/Makefile							\
test/regex/Makefile                                                     \
test/filters/Makefile                                                   \
)
