• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# $Id: mk-test.awk,v 1.30 2021/12/19 16:54:36 tom Exp $
2##############################################################################
3# Copyright 2019-2020,2021 Thomas E. Dickey                                  #
4# Copyright 2006-2017,2018 Free Software Foundation, Inc.                    #
5#                                                                            #
6# Permission is hereby granted, free of charge, to any person obtaining a    #
7# copy of this software and associated documentation files (the "Software"), #
8# to deal in the Software without restriction, including without limitation  #
9# the rights to use, copy, modify, merge, publish, distribute, distribute    #
10# with modifications, sublicense, and/or sell copies of the Software, and to #
11# permit persons to whom the Software is furnished to do so, subject to the  #
12# following conditions:                                                      #
13#                                                                            #
14# The above copyright notice and this permission notice shall be included in #
15# all copies or substantial portions of the Software.                        #
16#                                                                            #
17# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
18# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
19# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
20# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
21# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
22# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
23# DEALINGS IN THE SOFTWARE.                                                  #
24#                                                                            #
25# Except as contained in this notice, the name(s) of the above copyright     #
26# holders shall not be used in advertising or otherwise to promote the sale, #
27# use or other dealings in this Software without prior written               #
28# authorization.                                                             #
29##############################################################################
30#
31# Author: Thomas E. Dickey
32#
33# generate Makefile for ncurses tests.
34BEGIN	{
35		first = 1;
36		count = 0;
37	}
38/^#/	{
39		next;
40	}
41/^$/	{
42		next;
43	}
44	{
45		if (first) {
46			print "# generated by mk-test.awk\n";
47			first = 0;
48		}
49		progs[count] = $1;
50		flags[count] = $2;
51		using[count] = $3;
52		files[count] = "";
53		for (n = 4; n <= NF; ++n) {
54			files[count] = sprintf("%s $(MODEL)/%s$o", files[count], $n);
55		}
56		count = count + 1;
57	}
58END	{
59	for (n = 0; n < count; ++n) {
60		if (n == 0) {
61			printf "TESTS\t= ";
62		} else {
63			printf "\t  ";
64		}
65		printf "$(destdir)%s$x", progs[n];
66		if (n < count - 1) {
67			printf " \\";
68		}
69		print "";
70	}
71	print	"SCRIPTS = \\"
72	print	"	$(srcdir)/savescreen.sh \\"
73	print	"	$(srcdir)/tput-colorcube \\"
74	print	"	$(srcdir)/tput-initc \\"
75	print	"	$(srcdir)/tracemunch"
76	print	"DATAFILES = \\"
77	print	"	$(srcdir)/*.x* \\"
78	print	"	$(srcdir)/*.dat"
79	print	""
80	print	"all:: $(TESTS)"
81	print	""
82	print	"sources:"
83	print	""
84	print	"check::"
85	print	"	@ echo The test-programs are interactive"
86	print	"tags:"
87	print	"	$(CTAGS) *.[ch]"
88	print	""
89	print	"# no libraries here"
90	print	"libs \\"
91	print	"install.libs \\"
92	print	"uninstall.libs:"
93	print	""
94	if (INSTALL == "yes") {
95		print	"# we might install the test-programs"
96		print	"$(PACKAGE) :"
97		print	"	@echo \"creating $(PACKAGE) script\""
98		print	"	@$(SHELL) -c '\\"
99		print	"	L=$(real_bindir);                            \\"
100		print	"	rm -f $@;                                    \\"
101		print	"	echo \"#!$(SHELL)\" >                     $@;\\"
102		print	"	echo \"PATH=\\\"$$L\\\":\\$$PATH\"      >>$@;\\"
103		print	"	echo \"export PATH\"                    >>$@;\\"
104		print	"	echo \"if test \\$$# != 0; then\"       >>$@;\\"
105		print	"	echo \"  exec \\\"\\$$@\\\"\"           >>$@;\\"
106		print	"	echo \"elif test -t 1; then\"           >>$@;\\"
107		print	"	echo \"  cd \\\"$$L\\\" || exit\"       >>$@;\\"
108		print	"	echo \"  ls -l | \\$${PAGER:-less}\"    >>$@;\\"
109		print	"	echo \"fi\"                             >>$@;\\"
110		print	"	echo \"echo \\\"usage: $@ [program]\\\"\" >>$@'"
111		print	""
112		print	"install \\"
113		print	"install.test: $(PACKAGE) $(BINDIR) $(REAL_BINDIR) $(DATADIR) $(TESTS)"
114
115		print	"	@echo \"installing $(PACKAGE) -> $(BINDIR)/\""
116		print	"	@$(INSTALL_SCRIPT) $(PACKAGE) $(BINDIR)"
117
118		print	"	@$(SHELL) -c 'for src in $(TESTS); do \\"
119		print	"	dst=`echo $$src | $(TRANSFORM)`; \\"
120		print	"	echo \"installing $$src -> $(REAL_BINDIR)/$$dst\"; \\"
121		print	"	$(INSTALL_PROG) $$src $(REAL_BINDIR)/$$dst; \\"
122		print	"	done'"
123
124		print	"	@$(SHELL) -c 'for src in $(SCRIPTS); do \\"
125		print	"	dst=`echo $$src | sed -e 's,^.*/,,' | $(TRANSFORM)`; \\"
126		print	"	echo \"installing $$src -> $(REAL_BINDIR)/$$dst\"; \\"
127		print	"	$(INSTALL_SCRIPT) $$src $(REAL_BINDIR)/$$dst; \\"
128		print	"	done'"
129
130		print	"	@$(SHELL) -c 'for src in $(DATAFILES); do \\"
131		print	"	dst=`echo $$src | sed -e 's,^.*/,,'`; \\"
132		print	"	echo \"installing $$src -> $(DATADIR)/$$dst\"; \\"
133		print	"	$(INSTALL_DATA) $$src $(DATADIR)/$$dst; \\"
134		print	"	done'"
135		print	""
136		print	"uninstall \\"
137		print	"uninstall.test:"
138
139		print	"	-rm -f $(BINDIR)/$(PACKAGE)"
140
141		print	"	@$(SHELL) -c 'for src in $(TESTS); do \\"
142		print	"	dst=`echo $$src | $(TRANSFORM)`; \\"
143		print	"	rm -f $(REAL_BINDIR)/$$dst; \\"
144		print	"	done'"
145
146		print	"	@$(SHELL) -c 'for src in $(SCRIPTS); do \\"
147		print	"	dst=`echo $$src | sed -e 's,^.*/,,' | $(TRANSFORM)`; \\"
148		print	"	rm -f $(REAL_BINDIR)/$$dst; \\"
149		print	"	done'"
150
151		print	"	@$(SHELL) -c 'for src in $(DATAFILES); do \\"
152		print	"	dst=`echo $$src | sed -e 's,^.*/,,'`; \\"
153		print	"	rm -f $(DATADIR)/$$dst; \\"
154		print	"	done'"
155	} else {
156		print	"install \\"
157		print	"install.test \\"
158		print	"uninstall \\"
159		print	"uninstall.test:"
160	}
161	print	""
162	print	"mostlyclean ::"
163	print	"	-rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace"
164	print	""
165	print	"clean :: mostlyclean"
166	print	"	-$(SHELL) -c \"if test -n '$x' ; then $(MAKE) clean x=''; fi\""
167	print	"	-rm -rf *$o screendump *.lis $(TESTS) .libs *.dSYM"
168	print	"	-rm -f $(PACKAGE)"
169	print	""
170	print	"distclean :: clean"
171	print	"	-rm -f Makefile ncurses_cfg.h config.status config.log"
172	print	""
173	print	"realclean :: distclean"
174	print	""
175	print	"lint:"
176	print	"	$(SHELL) -c 'for N in $(TESTS); do echo LINT:$$N; $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/$$N.c $(LINT_LIBS); done'"
177	print	"$(BINDIR) $(REAL_BINDIR) $(DATADIR) :"
178	print	"	mkdir -p $@"
179
180
181	if (ECHO_LINK != "") {
182		ECHO_LINK="@ echo linking $@ ... ;"
183	}
184	for (n = 0; n < count; ++n) {
185		print "";
186		printf "$(destdir)%s$x:%s %s\n", progs[n], files[n], using[n];
187		printf "\t%s$(LINK) -o $@%s %s\n", ECHO_LINK, files[n], flags[n];
188	}
189
190	}
191