## Makefile.am - template for generating Makefile via Automake
##
## Copyright (C) 2006-2014, 2016 Free Software Foundation, Inc.
##
## This file is part of GNU M4.
##
## GNU M4 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.
##
## GNU M4 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/>.
##
## This file written by Eric Blake <ebb9@byu.net>

EXTRA_DIST =\
capitalize.m4 \
capitalize2.m4 \
comments.m4 \
curry.m4 \
ddivert.m4 \
debug.m4 \
esyscmd.m4 \
exp.m4 \
file.m4 \
foo \
foreach.m4 \
foreach2.m4 \
foreachq.m4 \
foreachq2.m4 \
foreachq3.m4 \
foreachq4.m4 \
forloop.m4 \
forloop2.m4 \
forloop3.m4 \
fstab.m4 \
hanoi.m4 \
incl-test.m4 \
incl.m4 \
include.m4 \
indir.m4 \
join.m4 \
loop.m4 \
misc.m4 \
multiquotes.m4 \
patsubst.m4 \
pushpop.m4 \
quote.m4 \
regexp.m4 \
reverse.m4 \
stack.m4 \
stack_sep.m4 \
sync-lines.m4 \
sysv-args.m4 \
trace.m4 \
translit.m4 \
undivert.incl \
undivert.m4 \
wrap.m4 \
wrapfifo.m4 \
wraplifo.m4 \
wraplifo2.m4
