#! /bin/sh
#  Copyright (c) 2005-2008 Wind River Systems, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# 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

cat << EOF
AC_PREREQ(2.57)
AC_INIT([site_wide],[1.0.0])

EOF

# Disable as endian is set in the default config
#echo AC_C_BIGENDIAN
#echo

if [ -e $1/types ] ; then
  while read type ; do
    echo "AC_CHECK_SIZEOF([$type])"
  done < $1/types

  echo
fi

if [ -e $1/funcs ]; then
  while read func ; do
    echo "AC_CHECK_FUNCS([$func])"
  done < $1/funcs

  echo
fi

if [ -e $1/headers ]; then
  while read header ; do
    echo "AC_CHECK_HEADERS([$header])"
  done < $1/headers

  echo
fi

cat << EOF
AC_OUTPUT
EOF
