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