## Copyright (C) 2018-2022, 2025-2026 Free Software Foundation, Inc.
##
## This program 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 3 of the License, or
## (at your option) any later version.
##
## 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, see <https://www.gnu.org/licenses/>.

java_simpledir = $(docdir)/%D%

## ------ ##
## Calc.  ##
## ------ ##

if ENABLE_JAVA
  check_SCRIPTS += %D%/Calc.class
  TESTS += %D%/Calc.test
endif
EXTRA_DIST += %D%/Calc.test

%D%/Calc.java: %D%/Calc.y $(dependencies)
	$(AM_V_GEN)$(MKDIR_P) %D%
	$(AM_V_at)$(BISON) -o $@ $(srcdir)/%D%/Calc.y

%D%/Calc.class: %D%/Calc.java
	$(AM_V_GEN) $(SHELL) $(top_builddir)/javacomp.sh %D%/Calc.java

dist_java_simple_DATA = %D%/Calc.y %D%/Makefile
CLEANFILES += %D%/*.class %D%/Calc.java
