## Copyright (C) 2002, 2005-2012 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 <http://www.gnu.org/licenses/>.

dist_pkgdata_DATA = README bison.m4 \
   c-like.m4 \
   c-skel.m4 c.m4 yacc.c glr.c \
   c++-skel.m4 c++.m4 location.cc lalr1.cc glr.cc stack.hh \
   java-skel.m4 java.m4 lalr1.java

m4sugardir = $(pkgdatadir)/m4sugar
dist_m4sugar_DATA = m4sugar/m4sugar.m4 m4sugar/foreach.m4

xsltdir = $(pkgdatadir)/xslt
dist_xslt_DATA =				\
   xslt/bison.xsl				\
   xslt/xml2dot.xsl				\
   xslt/xml2text.xsl				\
   xslt/xml2xhtml.xsl
