# $Id: modules,v 1.52 2015/06/27 10:40:27 tom Exp $
##############################################################################
# Copyright (c) 1998-2014,2015 Free Software Foundation, Inc.                #
#                                                                            #
# Permission is hereby granted, free of charge, to any person obtaining a    #
# copy of this software and associated documentation files (the "Software"), #
# to deal in the Software without restriction, including without limitation  #
# the rights to use, copy, modify, merge, publish, distribute, distribute    #
# with modifications, sublicense, and/or sell copies of the Software, and to #
# permit persons to whom the Software is furnished to do so, subject to the  #
# following conditions:                                                      #
#                                                                            #
# The above copyright notice and this permission notice shall be included in #
# all copies or substantial portions of the Software.                        #
#                                                                            #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
# DEALINGS IN THE SOFTWARE.                                                  #
#                                                                            #
# Except as contained in this notice, the name(s) of the above copyright     #
# holders shall not be used in advertising or otherwise to promote the sale, #
# use or other dealings in this Software without prior written               #
# authorization.                                                             #
##############################################################################
#
# Author: Thomas E. Dickey	1997-on
#
# Test-Program modules

@ base
background	progs		$(srcdir)	$(HEADER_DEPS)
blue		progs		$(srcdir)	$(HEADER_DEPS)
bs		progs		$(srcdir)	$(HEADER_DEPS)
cardfile	progs		$(srcdir)	$(HEADER_DEPS)	../include/panel.h ../include/form.h
chgat		progs		$(srcdir)	$(HEADER_DEPS)
clip_printw	progs		$(srcdir)	$(HEADER_DEPS)
color_set	progs		$(srcdir)	$(HEADER_DEPS)
demo_altkeys	progs		$(srcdir)	$(HEADER_DEPS)
demo_defkey	progs		$(srcdir)	$(HEADER_DEPS)
demo_forms	progs		$(srcdir)	$(HEADER_DEPS)	$(srcdir)/edit_field.h
demo_keyok	progs		$(srcdir)	$(HEADER_DEPS)
demo_menus	progs		$(srcdir)	$(HEADER_DEPS)	../include/menu.h
demo_panels	progs		$(srcdir)	$(HEADER_DEPS)	../include/panel.h
demo_termcap	progs		$(srcdir)	$(HEADER_DEPS)
demo_terminfo	progs		$(srcdir)	$(HEADER_DEPS)
ditto		progs		$(srcdir)	$(HEADER_DEPS)
dots		progs		$(srcdir)	$(HEADER_DEPS)
dots_curses	progs		$(srcdir)	$(HEADER_DEPS)
dots_mvcur	progs		$(srcdir)	$(HEADER_DEPS)
dots_termcap	progs		$(srcdir)	$(HEADER_DEPS)
echochar	progs		$(srcdir)	$(HEADER_DEPS)
edit_field	progs		$(srcdir)	$(HEADER_DEPS)	$(srcdir)/edit_field.h
filter		progs		$(srcdir)	$(HEADER_DEPS)
firework	progs		$(srcdir)	$(HEADER_DEPS)
firstlast	progs		$(srcdir)	$(HEADER_DEPS)
foldkeys	progs		$(srcdir)	$(HEADER_DEPS)
form_driver_w	progs		$(srcdir)	$(HEADER_DEPS)
gdc		progs		$(srcdir)	$(HEADER_DEPS)
hanoi		progs		$(srcdir)	$(HEADER_DEPS)
hashtest	progs		$(srcdir)	$(HEADER_DEPS)
inch_wide	progs		$(srcdir)	$(HEADER_DEPS)
inchs		progs		$(srcdir)	$(HEADER_DEPS)
ins_wide	progs		$(srcdir)	$(HEADER_DEPS)	$(srcdir)/linedata.h
insdelln	progs		$(srcdir)	$(HEADER_DEPS)
inserts		progs		$(srcdir)	$(HEADER_DEPS)	$(srcdir)/linedata.h
key_names	progs		$(srcdir)	$(HEADER_DEPS)
keynames	progs		$(srcdir)	$(HEADER_DEPS)
knight		progs		$(srcdir)	$(HEADER_DEPS)
lrtest		progs		$(srcdir)	$(HEADER_DEPS)
movewindow	progs		$(srcdir)	$(HEADER_DEPS)
ncurses		progs		$(srcdir)	$(HEADER_DEPS)	../include/panel.h ../include/menu.h ../include/form.h
newdemo		progs		$(srcdir)	$(HEADER_DEPS)
railroad	progs		$(srcdir)	$(HEADER_DEPS)
rain		progs		$(srcdir)	$(HEADER_DEPS)
redraw		progs		$(srcdir)	$(HEADER_DEPS)
savescreen	progs		$(srcdir)	$(HEADER_DEPS)
tclock		progs		$(srcdir)	$(HEADER_DEPS)
test_add_wchstr	progs		$(srcdir)	$(HEADER_DEPS)	$(srcdir)/linedata.h
test_addchstr	progs		$(srcdir)	$(HEADER_DEPS)	$(srcdir)/linedata.h
test_addstr	progs		$(srcdir)	$(HEADER_DEPS)	$(srcdir)/linedata.h
test_addwstr	progs		$(srcdir)	$(HEADER_DEPS)	$(srcdir)/linedata.h
test_arrays	progs		$(srcdir)	$(HEADER_DEPS)
test_get_wstr	progs		$(srcdir)	$(HEADER_DEPS)
test_getstr	progs		$(srcdir)	$(HEADER_DEPS)
test_instr	progs		$(srcdir)	$(HEADER_DEPS)
test_inwstr	progs		$(srcdir)	$(HEADER_DEPS)
test_opaque	progs		$(srcdir)	$(HEADER_DEPS)
test_setupterm	progs		$(srcdir)	$(HEADER_DEPS)
test_vid_puts	progs		$(srcdir)	$(HEADER_DEPS)
test_vidputs	progs		$(srcdir)	$(HEADER_DEPS)
testaddch	progs		$(srcdir)	$(HEADER_DEPS)
testcurs	progs		$(srcdir)	$(HEADER_DEPS)
testscanw	progs		$(srcdir)	$(HEADER_DEPS)
view		progs		$(srcdir)	$(HEADER_DEPS)	$(srcdir)/widechars.h
worm		progs		$(srcdir)	$(HEADER_DEPS)
xmas		progs		$(srcdir)	$(HEADER_DEPS)

# vile:makemode
