#!/bin/sh

# Copyright (c) 2009, Aleksey Cheusov <vle@gmx.net>
# All rights reserved.
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

set -e

LC_ALL=C
export LC_ALL

##################################################
# options
usage (){
    cat <<EOF
mkc_check_header detects presense of header file
by compiling a test program.

Usage: mkc_check_header header.h

Examples:
   mkc_check_header stdint.h
   mkc_check_header getopt.h
EOF
}

if test $# -eq 0; then
    usage
    exit 1
fi
if test "$1" = '-h' -o "$1" = '--help'; then
    usage
    exit 0
fi

##################################################
# initializing

pathpart=`echo $1 | tr /. __`

. mkc_check_common.sh

##################################################
# test

if test "$MKC_NOCACHE" != 1 && test -f "$cache"; then
    cached=1
    printme '%s' "checking for header $1... (cached) " 1>&2
    ret=`cat "$cache"`
else
    printme '%s' "checking for header $1... " 1>&2

    # preparations
    cat > "$tmpc" <<EOF
#include <$1>
int main ()
{
   return 0;
}
EOF

    # test itself
    if $CC -c -o "${tmpo}" $CPPFLAGS $CFLAGS "${tmpc}" 2>"${tmperr}"
    then
	echo 1 > "$cache"
	ret=1
    else
	echo 0 > "$cache"
	ret=0
    fi
fi

##################################################
# clean-ups

cleanup

##################################################
# finishing

if test "$ret" -eq 1; then
    printme 'yes\n' 1>&2
else
    printme 'no\n' 1>&2
fi

echo $ret
