# Process this file with autoconf to produce a configure script.

# Copyright (c) 2001, 2002 Clifton Labs, Inc
# All rights reserved.

# CLIFTON LABS MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
# SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
# NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
# A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.  CLIFTON LABS SHALL NOT BE
# LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
# RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
# DERIVATIVES.

# By using or copying this Software, Licensee agrees to abide by the
# intellectual property laws, and all other applicable laws of the U.S.,
# and the terms of this license.

# You may modify, distribute, and use the software contained in this
# package under the terms of the "GNU LIBRARY GENERAL PUBLIC LICENSE"
# version 2, June 1991. A copy of this license agreement can be found in
# the file "LGPL", distributed with this archive.

# Author: Philip A. Wilsey	philip.wilsey@ieee.org

# ------------------------------------------------------------------------

AC_INIT(helloworld, demo-version, philip.wilsey@ieee.org)
AM_INIT_AUTOMAKE(helloworld, demo-version)

#AC_CONFIG_SRCDIR([hello.cc])
#AC_CONFIG_HEADER([config.h])

# Checks for programs.
AC_NO_EXECUTABLES
AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_CONFIG_FILES([Makefile testsuite/Makefile])
AC_OUTPUT
