#
#  Copyright 2007 Sony Corp.
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; version 2 of the License.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#

AC_INIT([ps3-utils], [@version@], [Geoff Levand <geoffrey.levand@am.sony.com>])

AC_PREFIX_DEFAULT([/usr/local])

AC_ARG_ENABLE([debug],
	[AS_HELP_STRING([--enable-debug], [enable debugging support])])
AM_CONDITIONAL([COND_DEBUG], [test "x${enable_debug}" = "xyes"])

AC_PROG_LIBTOOL
AM_INIT_AUTOMAKE
AC_SUBST([DESTDIR])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_SUBDIRS([lib])

AC_OUTPUT
