#! /bin/sh
# Copyright (C) 2002, 2003, 2004  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 Java rules doesn't attempt to run javac when there is
# no classes to compile.
# Report from Braden McDaniel.

. ./defs || exit 1

set -e

cat >> configure.in << 'END'
AM_CONDITIONAL(WITH_JDK, false)
AC_OUTPUT
END

cat > Makefile.am << 'END'
JAVAC = false
JAVAROOT = $(top_builddir)/java

JAVA_FILES = MyClass1.java

if WITH_JDK
noinst_JAVA = $(JAVA_FILES)
endif

EXTRA_DIST = $(JAVA_FILES)
END

: >MyClass1.java

$ACLOCAL
$AUTOCONF
$AUTOMAKE
./configure
$MAKE
