]> ncurses.scripts.mit.edu Git - ncurses.git/blob - test/mk-test.awk
ncurses 6.4 - patch 20240414
[ncurses.git] / test / mk-test.awk
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.
34 BEGIN   {
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         }
58 END     {
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         }