Test OpenScop support only when it is enabled
[cloog.git] / test / Makefile.am
blob679183f45b912b50e8bbf4e7afa6e5335f9134c9
2 #   /**-------------------------------------------------------------------**
3 #    **                              CLooG                                **
4 #    **-------------------------------------------------------------------**
5 #    **                            makefile                               **
6 #    **-------------------------------------------------------------------**
7 #    **                   First version: march 6th 2003                   **
8 #    **-------------------------------------------------------------------**/
10 # makefile for checking.
12 #/*****************************************************************************
13 # *               CLooG : the Chunky Loop Generator (experimental)            *
14 # *****************************************************************************
15 # *                                                                           *
16 # * Copyright (C) 2003 Cedric Bastoul                                         *
17 # *                                                                           *
18 # * This library is free software; you can redistribute it and/or             *
19 # * modify it under the terms of the GNU Lesser General Public                *
20 # * License as published by the Free Software Foundation; either              *
21 # * version 2.1 of the License, or (at your option) any later version.        *
22 # *                                                                           *
23 # * This library is distributed in the hope that it will be useful,           *
24 # * but WITHOUT ANY WARRANTY; without even the implied warranty of            *
25 # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
26 # * Lesser General Public License for more details.                           *
27 # *                                                                           *
28 # * You should have received a copy of the GNU Lesser General Public          *
29 # * License along with this library; if not, write to the Free Software       *
30 # * Foundation, Inc., 51 Franklin Street, Fifth Floor,                        *
31 # * Boston, MA  02110-1301  USA                                               *
32 # *                                                                           *
33 # * CLooG, the Chunky Loop Generator                                          *
34 # * Written by Cedric Bastoul, Cedric.Bastoul@inria.fr                        *
35 # * This file has been written with the help of the Bart Kienhuis's checking  *
36 # * makefile for PipLib.                                                      *
37 # *                                                                           *
38 # *****************************************************************************/
40 if NO_ISL
41 GENERATE_TEST =
42 else
43 GENERATE_TEST = generate_test
44 endif
45 noinst_PROGRAMS = $(GENERATE_TEST)
46 INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
47 LDADD = ../libcloog-isl.la
48 generate_test_SOURCES = generate_test.c
50 FORCE:
51 ../libcloog-isl.la: FORCE
52         cd ..; $(MAKE) $(AM_MAKEFLAGS) libcloog-isl.la
54 ROOT = ..
56 FINITE_CLOOGTEST_C =                   \
57         0D-1                           \
58         0D-2                           \
59         0D-3                           \
60         1point-1                       \
61         1point-2                       \
62         4-param                        \
63         basic-bounds-1                 \
64         basic-bounds-2                 \
65         basic-bounds-3                 \
66         basic-bounds-4                 \
67         basic-bounds-5                 \
68         basic-bounds-6                 \
69         block                          \
70         block2                         \
71         block3                         \
72         byu98-1-2-3                    \
73         cholesky                       \
74         cholesky2                      \
75         christian                      \
76         classen                        \
77         classen2                       \
78         constant                       \
79         constbound                     \
80         darte                          \
81         dealII                         \
82         donotsimp                      \
83         dot                            \
84         dot2                           \
85         double                         \
86         durbin_e_s                     \
87         emploi                         \
88         esced                          \
89         ex1                            \
90         forwardsub-1-1-2               \
91         forwardsub-2-1-2-3             \
92         forwardsub-3-1-2               \
93         gauss                          \
94         gesced                         \
95         gesced2                        \
96         gesced3                        \
97         guide                          \
98         iftest                         \
99         iftest2                        \
100         largeur                        \
101         levenshtein-1-2-3              \
102         lex                            \
103         lineality-1-2                  \
104         lineality-2-1-2                \
105         logo                           \
106         logopar                        \
107         lu                             \
108         lu2                            \
109         lub                            \
110         lux                            \
111         min-1-1                        \
112         min-2-1                        \
113         min-3-1                        \
114         min-4-1                        \
115         mode                           \
116         multi-mm-1                     \
117         no_lindep                      \
118         orc                            \
119         rectangle                      \
120         singleton                      \
121         square+triangle-1-1-2-3        \
122         swim                           \
123         test                           \
124         thomasset                      \
125         tiling                         \
126         uday_scalars                   \
127         union                          \
128         vivien                         \
129         vivien2                        \
130         walters                        \
131         walters2                       \
132         walters3                       \
133         wavefront                      \
134         yosr                           \
135         yosr2                          \
136         ./non_optimal/nul_complex1     \
137         ./non_optimal/usvd_e_t         \
138         ./non_optimal/youcef           \
139         ./reservoir/cholesky2          \
140         ./reservoir/fusion1            \
141         ./reservoir/fusion2            \
142         ./reservoir/jacobi2            \
143         ./reservoir/jacobi3            \
144         ./reservoir/lim-lam1           \
145         ./reservoir/lim-lam2           \
146         ./reservoir/lim-lam3           \
147         ./reservoir/lim-lam4           \
148         ./reservoir/lim-lam5           \
149         ./reservoir/lim-lam6           \
150         ./reservoir/liu-zhuge1         \
151         ./reservoir/loechner3          \
152         ./reservoir/loechner4          \
153         ./reservoir/loechner5          \
154         ./reservoir/mg-interp2         \
155         ./reservoir/mg-interp          \
156         ./reservoir/mg-psinv           \
157         ./reservoir/mg-resid           \
158         ./reservoir/mg-rprj3           \
159         ./reservoir/pingali1           \
160         ./reservoir/pingali2           \
161         ./reservoir/pingali3           \
162         ./reservoir/pingali4           \
163         ./reservoir/pingali5           \
164         ./reservoir/pingali6           \
165         ./reservoir/QR                 \
166         ./reservoir/tang-xue1          \
167         ./reservoir/two   
169 CLOOG_ISL_TEST_C =                      \
170         isl/mod                         \
171         isl/mod2                        \
172         isl/mod3                        \
173         isl/mod4
175 CLOOGTEST_C =                          \
176         infinite                       \
177         infinite2                      \
178         infinite3                      \
179         infinite4                      \
180         $(FINITE_CLOOGTEST_C)          \
181         $(CLOOG_ISL_TEST_C)
183 #       ./reservoir/long               \
184 #       faber
186 CLOOGTEST_FORTRAN =                    \
187         dartef                         \
188         iftestf                        \
189         levenshtein-1-2-3f             \
190         yosrf
192 CLOOG_ISL_TEST_STRIDED =                \
193         isl/mxm-shared
195 CLOOGTEST_STRIDED =                    \
196         basic-bounds-2                 \
197         mod4                           \
198         nul_basic1                     \
199         nul_basic2                     \
200         nul_lcpc                       \
201         multi-stride                   \
202         multi-stride2                  \
203         stride3                        \
204         stride4                        \
205         reservoir/bastoul3             \
206         reservoir/stride               \
207         reservoir/stride2              \
208         $(CLOOG_ISL_TEST_STRIDED)
210 CLOOGTEST_OPENSCOP =                   \
211         ./openscop/matmult             \
212         ./openscop/empty               \
213         ./openscop/union
215 SPECIAL_TESTS = \
216         isl/unroll \
217         isl/jacobi-shared \
218         isl/unroll2 \
219         backtrack \
220         vasilache \
221         merge \
222         equality \
223         equality2 \
224         otl \
225         param-split \
226         pouchet \
227         stride \
228         stride2 \
229         sor1d
230 SPECIAL_OPTIONS = \
231         'isl/unroll -first-unroll 1' \
232         'isl/jacobi-shared -f 4 -l -1 -override -strides 1 -sh 1' \
233         'isl/unroll2 -first-unroll 1' \
234         'backtrack -f 1 -backtrack' \
235         'vasilache -f 8 -l 9' \
236         'merge -f -1' \
237         'equality -f -1 -l 2 -override' \
238         'equality2 -f -1 -l 4 -esp 1 -override' \
239         'otl -block 1 -esp 0 -otl 0' \
240         'param-split -f -1' \
241         'pouchet -f 3 -l 7' \
242         'stride -f -1 -strides 1' \
243         'stride2 -f -1 -strides 1' \
244         'sor1d -f -1'
246 EXTRA_DIST = \
247         $(CLOOGTEST_C:%=%.cloog) \
248         $(CLOOGTEST_C:%=%.c) \
249         $(FINITE_CLOOGTEST_C:%=%.good.c) \
250         $(CLOOGTEST_FORTRAN:%=%.cloog) \
251         $(CLOOGTEST_FORTRAN:%=%.f) \
252         $(CLOOGTEST_STRIDED:%=%.cloog) \
253         $(CLOOGTEST_STRIDED:%=%.c) \
254         $(SPECIAL_TESTS:%=%.cloog) \
255         $(SPECIAL_TESTS:%=%.c) \
256         $(SPECIAL_TESTS:%=%.good.c)
258 generate:
259         @echo "             /*-----------------------------------------------*"
260         @echo "              *                 Generate files                *"
261         @echo "              *-----------------------------------------------*/"
262         @for x in $(CLOOGTEST_C) ; do \
263                 echo "Generate $$x.c" ; \
264                 $(top_builddir)/cloog $(srcdir)/$$x.cloog -o $(srcdir)/$$x.c ; \
265         done ; \
266         for x in $(CLOOGTEST_FORTRAN) ; do \
267                 echo "Generate $$x.f" ; \
268                 $(top_builddir)/cloog $(srcdir)/$$x.cloog -o $(srcdir)/$$x.f ; \
269         done ; \
270         for x in $(CLOOGTEST_STRIDED) ; do \
271                 echo "Generate $$x.c" ; \
272                 $(top_builddir)/cloog $(srcdir)/$$x.cloog \
273                         -strides 1 -o $(srcdir)/$$x.c ; \
274         done ; \
275         for line in $(SPECIAL_OPTIONS); do \
276                 options=`echo $$line | sed -e 's/^[^ ]* //'`; \
277                 x=`echo $$line | sed -e 's/ .*//'`; \
278                 echo "Generate file $$x ($$options)" ; \
279                 $(top_builddir)/cloog$(EXEEXT) $(srcdir)/$$x.cloog \
280                     $$options > $(srcdir)/$$x.c ; \
281         done
283 generate_good:
284         @for x in $(FINITE_CLOOGTEST_C) ; do \
285                 echo "Generate $$x.good.c" ; \
286                 $(top_builddir)/cloog$(EXEEXT) -callable 1 $(srcdir)/$$x.cloog -o $(srcdir)/$$x.good.c ; \
287         done; \
288         for line in $(SPECIAL_OPTIONS); do echo $$line | while read x options; do \
289                 echo "Generate $$x.good.c ($$options)" ; \
290                 $(top_builddir)/cloog$(EXEEXT) -callable 1 $$options $(srcdir)/$$x.cloog -o $(srcdir)/$$x.good.c ; \
291         done; done
293 valgrind:
294         @echo "             /*-----------------------------------------------*"
295         @echo "              *            Checking files by Valgrind         *"
296         @echo "              *-----------------------------------------------*/"
297         for x in $(CLOOGTEST_C) ; do \
298                 echo "Valgrinding $$x.c" ; \
299                 valgrind $(top_builddir)/cloog$(EXEEXT) $(srcdir)/$$x.cloog ; \
300         done ; \
301         for x in $(CLOOGTEST_FORTRAN) ; do \
302                 echo "Valgrinding $$x.f" ; \
303                 valgrind $(top_builddir)/cloog$(EXEEXT) $(srcdir)/$$x.cloog ; \
304         done
306 test_run: generate_test$(EXEEXT)
307         @echo "             /*-----------------------------------------------*"
308         @echo "              *                 Testing CLooG                 *"
309         @echo "              *-----------------------------------------------*/"
310         @failedtest=0 ; \
311         echo "--- Testing C files... (correct output)" ; \
312         for x in $(FINITE_CLOOGTEST_C) ; do \
313                 echo -n "Verify file $$x... " ; \
314                 echo -n "generating... " ; \
315                 $(top_builddir)/cloog$(EXEEXT) -q -callable 1 $(srcdir)/$$x.cloog > test_test.c ; \
316                 ./generate_test$(EXEEXT) < $(srcdir)/$$x.cloog > test_main.c; \
317                 echo -n "compiling... " ; \
318                 $(COMPILE) -c test_test.c; \
319                 $(COMPILE) -Dtest=good -c $(srcdir)/$$x.good.c -o test_good.o; \
320                 $(LINK) test_main.c test_test.o test_good.o > /dev/null; \
321                 echo -n "comparing... " ; \
322                 ./test_run$(EXEEXT); \
323                 result=$$?; \
324                 if test "$$result" -ne "0" ; then \
325                         failedtest=`expr $$failedtest + 1` ; \
326                 fi; \
327                 $(RM) $@; \
328                 echo; \
329         done; \
330         for line in $(SPECIAL_OPTIONS); do \
331                 options=`echo $$line | sed -e 's/^[^ ]* //'`; \
332                 x=`echo $$line | sed -e 's/ .*//'`; \
333                 echo -n "Verify file $$x ($$options)... " ; \
334                 echo -n "generating... " ; \
335                 $(top_builddir)/cloog$(EXEEXT) -q -callable 1 $$options $(srcdir)/$$x.cloog > test_test.c ; \
336                 ./generate_test$(EXEEXT) < $(srcdir)/$$x.cloog > test_main.c; \
337                 echo -n "compiling... " ; \
338                 $(COMPILE) -c test_test.c; \
339                 $(COMPILE) -Dtest=good -c $(srcdir)/$$x.good.c -o test_good.o; \
340                 $(LINK) test_main.c test_test.o test_good.o > /dev/null; \
341                 echo -n "comparing... " ; \
342                 ./test_run$(EXEEXT); \
343                 result=$$?; \
344                 if test "$$result" -ne "0" ; then \
345                         failedtest=`expr $$failedtest + 1` ; \
346                 fi; \
347                 $(RM) $@; \
348                 echo; \
349         done; \
350         for line in $(SPECIAL_OPTIONS); do \
351                 options=`echo $$line | sed -e 's/^[^ ]* //'`; \
352                 x=`echo $$line | sed -e 's/ .*//'`; \
353                 echo -n "Verify file $$x ($$options -sh 1)... " ; \
354                 echo -n "generating... " ; \
355                 $(top_builddir)/cloog$(EXEEXT) -q -callable 1 $$options -sh 1 $(srcdir)/$$x.cloog > test_test.c ; \
356                 ./generate_test$(EXEEXT) < $(srcdir)/$$x.cloog > test_main.c; \
357                 echo -n "compiling... " ; \
358                 $(COMPILE) -c test_test.c; \
359                 $(COMPILE) -Dtest=good -c $(srcdir)/$$x.good.c -o test_good.o; \
360                 $(LINK) test_main.c test_test.o test_good.o > /dev/null; \
361                 echo -n "comparing... " ; \
362                 ./test_run$(EXEEXT); \
363                 result=$$?; \
364                 if test "$$result" -ne "0" ; then \
365                         failedtest=`expr $$failedtest + 1` ; \
366                 fi; \
367                 $(RM) $@; \
368                 echo; \
369         done; \
370         if [ $$failedtest != 0 ] ; then \
371                 echo "$$failedtest tests failed" ; \
372         else \
373                 echo "CLooG works correctly :-) !" ; \
374         fi
376 if NO_OSL
377 test_openscop:
378 else
379 test_openscop:
380         @echo "             /*-----------------------------------------------*"
381         @echo "              *        Testing CLooG's OpenScop Input         *"
382         @echo "              *-----------------------------------------------*/"
383         @failedtest=0 ; \
384         echo "--- Testing OpenScop files..." ; \
385         for x in $(CLOOGTEST_OPENSCOP) ; do \
386                 echo "Verify file $$x" ; \
387                 $(top_builddir)/cloog$(EXEEXT) $(srcdir)/$$x.scop \
388                 -openscop > ttemp ; \
389                 diff -u -w --ignore-matching-lines='CLooG' ttemp $(srcdir)/$$x.c ; \
390                 result=$$?; \
391                 if [ "$$result" -ne "0" ] ; then \
392                         echo "!!! Error: $$x is not the same" ; \
393                         failedtest=`expr $$failedtest + 1` ; \
394                 else \
395                         echo "$$x passed" ; \
396                 fi ; \
397         done ; \
398         rm ttemp ; \
399         if [ $$failedtest != 0 ] ; then \
400                 echo "$$failedtest tests failed" ; \
401         else \
402                 echo "CLooG's OpenScop input works correctly :-) !" ; \
403         fi
404 endif
406 test: test_openscop
407         @echo "             /*-----------------------------------------------*"
408         @echo "              *                 Testing CLooG                 *"
409         @echo "              *-----------------------------------------------*/"
410         @failedtest=0 ; \
411         echo "--- Testing C files... (expected output)" ; \
412         for x in $(CLOOGTEST_C) ; do \
413                 echo "Verify file $$x" ; \
414                 $(top_builddir)/cloog$(EXEEXT) $(srcdir)/$$x.cloog > ttemp ; \
415                 diff -u -w --ignore-matching-lines='CLooG' ttemp $(srcdir)/$$x.c ; \
416                 result=$$?; \
417                 if [ "$$result" -ne "0" ] ; then \
418                         echo "!!! Error: $$x is not the same" ; \
419                         failedtest=`expr $$failedtest + 1` ; \
420                 else \
421                         echo "$$x passed" ; \
422                 fi ; \
423         done ; \
424         echo "--- Testing FORTRAN files..." ; \
425         for x in $(CLOOGTEST_FORTRAN) ; do \
426                 echo "Verify file $$x" ; \
427                 $(top_builddir)/cloog$(EXEEXT) $(srcdir)/$$x.cloog > ttemp ; \
428                 diff -u -w --ignore-matching-lines='CLooG' ttemp $(srcdir)/$$x.f ; \
429                 result=$$?; \
430                 if [ "$$result" -ne "0" ] ; then \
431                         echo "!!! Error: $$x is not the same" ; \
432                         failedtest=`expr $$failedtest + 1` ; \
433                 else \
434                         echo "$$x passed" ; \
435                 fi ; \
436         done ; \
437         echo "--- Testing STRIDED files..." ; \
438         for x in $(CLOOGTEST_STRIDED) ; do \
439                 echo "Verify file $$x" ; \
440                 $(top_builddir)/cloog$(EXEEXT) $(srcdir)/$$x.cloog \
441                 -strides 1 > ttemp ; \
442                 diff -u -w --ignore-matching-lines='CLooG' ttemp $(srcdir)/$$x.c ; \
443                 result=$$?; \
444                 if [ "$$result" -ne "0" ] ; then \
445                         echo "!!! Error: $$x is not the same" ; \
446                         failedtest=`expr $$failedtest + 1` ; \
447                 else \
448                         echo "$$x passed" ; \
449                 fi ; \
450         done ; \
451         echo "--- Testing SPECIAL OPTIONS files..." ; \
452         for line in $(SPECIAL_OPTIONS); do \
453                 options=`echo $$line | sed -e 's/^[^ ]* //'`; \
454                 x=`echo $$line | sed -e 's/ .*//'`; \
455                 echo "Verify file $$x ($$options)" ; \
456                 $(top_builddir)/cloog$(EXEEXT) $(srcdir)/$$x.cloog \
457                         $$options > ttemp ; \
458                 diff -u -w --ignore-matching-lines='CLooG' ttemp $(srcdir)/$$x.c ; \
459                 result=$$?; \
460                 if [ "$$result" -ne "0" ] ; then \
461                         echo "!!! Error: $$x is not the same" ; \
462                         failedtest=`expr $$failedtest + 1` ; \
463                 else \
464                         echo "$$x passed" ; \
465                 fi ; \
466         done; \
467         rm ttemp ; \
468         if [ $$failedtest != 0 ] ; then \
469                 echo "$$failedtest tests failed" ; \
470         else \
471                 echo "CLooG works correctly :-) !" ; \
472         fi