#! /bin/sh
# Copyright (C) 2002, 2003  Free Software Foundation, Inc.
#
# This file is part of GNU Automake.
#
# GNU Automake 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; either version 2, or (at your option)
# any later version.
#
# GNU Automake 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 Automake; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.

# Make sure that Automake suggests using AM_PATH_PYTHON.

. ./defs || exit 1

set -e

echo 1
# pythondir not defined

cat > Makefile.am <<'END'
PYTHON = x
python_PYTHON = foo.py
END

$ACLOCAL
AUTOMAKE_fails -a
grep AM_PATH_PYTHON stderr

echo 2
# pkgpythondir not defined

cat > Makefile.am <<'END'
PYTHON = x
pkgpython_PYTHON = foo.py
END

$ACLOCAL
AUTOMAKE_fails -a
grep AM_PATH_PYTHON stderr


echo 3
# pyexecdir not defined

cat > Makefile.am <<'END'
PYTHON = x
pyexec_PYTHON = foo.py
END

$ACLOCAL
AUTOMAKE_fails -a
grep AM_PATH_PYTHON stderr


echo 4
# pkgpyexecdir not defined

cat > Makefile.am <<'END'
PYTHON = x
pkgpyexec_PYTHON = foo.py
END

$ACLOCAL
AUTOMAKE_fails -a
grep AM_PATH_PYTHON stderr


echo 5
# PYTHON not defined.

cat > Makefile.am <<'END'
pkgpyexecdir = /here/we/go
pkgpyexec_PYTHON = foo.py
END

$ACLOCAL
AUTOMAKE_fails -a
grep AM_PATH_PYTHON stderr


echo 6
# Ok.

cat > Makefile.am <<'END'
PYTHON = x
pkgpyexecdir = /here/we/go
pkgpyexec_PYTHON = foo.py
END

$ACLOCAL
$AUTOMAKE -a
test -f py-compile


echo 7
# Ok.

cat > Makefile.am <<'END'
PYTHON = x
fubardir = /here/we/go
fubar_PYTHON = foo.py
END

$ACLOCAL
$AUTOMAKE -a
