source: tests/Makefile.am@ 1eea589f

Last change on this file since 1eea589f was d03a386, checked in by Michael Brooks <mlbrooks@…>, 6 months ago

Give a few string operator overloads a preference boost.

Intent is to approximate: When selecting +/* candidates, treat it ambiguous until finding a user-given arithmetic-vs-string constraint, such as assigning the result to a string. Once a string interpretation is imposed, prefer an alternative that converts to string as soon as possible.

This description is not directly achievable with the CFA type system. The approximation has the known flaw shown in the string-operator test, where a fairly built-up expression that should be ambiguous is actually defaulting to the string version.

This change is the last of the string-overload reorganizations that the string-operator test was originally meant to illustrate. In Mike's opinion, the resulting state is ideal, except for the just-mentioned flaw.

  • Property mode set to 100644
File size: 12.9 KB
RevLine 
[ef7d253]1######################## -*- Mode: Makefile-Automake -*- ######################
2##
3## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
4##
5## The contents of this file are covered under the licence agreement in the
6## file "LICENCE" distributed with Cforall.
7##
8## Makefile.am --
9##
10## Author : Peter A. Buhr
11## Created On : Sun May 31 09:08:15 2015
12## Last Modified By : Peter A. Buhr
[bbbff10]13## Last Modified On : Sat Feb 1 08:20:27 2025
14## Update Count : 201
[ef7d253]15###############################################################################
16
[0c1b566]17AUTOMAKE_OPTIONS = foreign # do not require all the GNU file names
[107b01a]18ACLOCAL_AMFLAGS = -I automake
[f85bc15]19
[bcadb26]20include $(top_srcdir)/tools/build/cfa.make
[dc8511c]21
[e2887a9]22DEFAULT_INCLUDES = -I${abs_srcdir}
[74cfe054]23
[4daf79f]24debug ?= yes
25installed ?= no
[e3d4fd1]26ARCH = ${if ${arch},"--arch=${arch}"}
27arch_support = "x86/x64/arm"
[bdbf536]28TIMEOUT = ${if ${timeout},"--timeout=${timeout}"}
[5007618]29GLOBAL_TIMEOUT = ${if ${global-timeout},"--global-timeout=${global-timeout}"}
30ARCHIVE_ERRORS = ${if ${archive-errors},"--archive-errors=${archive-errors}"}
31
[e3d4fd1]32DEBUG_FLAGS = -debug -g -O0
[e3a5a73]33
[e3d4fd1]34quick_test = avl_test operators numericConstants expression enum array typeof cast raii/dtor-early-exit raii/init_once attributes meta/dumpable
[be65cca]35
[e2887a9]36TEST_PY = python3 ${builddir}/test.py
[f85bc15]37
[faf9e19]38WFLAGS_STRICT = \
39 -Wall \
40 -Wextra \
[656c8ac]41 -Werror
[faf9e19]42
43WFLAGS_LAX = \
44 -Wall \
45 -Werror=return-type \
46 -Wno-unused-function \
47 -Wno-psabi
48
49# These tests opt for lax wflags. (By default, new tests get strict wflags.)
50# Indented list entries are finer-grained targets under the test.
51# Making this association implicit would be ideal, but requires learning more automake than is affordable.
[92aeae1]52WFLAGS_OPT_LAX = \
53 ${WFLAGS_OPT_LAX_EXPECT_WARN} \
[d923fca]54 ${WFLAGS_OPT_LAX_WAITING_ON_303} \
[92aeae1]55 ${WFLAGS_OPT_LAX_TO_INVESTIGATE}
[2853d6f]56
57# Tests checking that cfa-cc raises a certain warning, so -Werror is permanently inappropriate
[92aeae1]58WFLAGS_OPT_LAX_EXPECT_WARN = \
[2853d6f]59 attr-priority \
[bbbff10]60 ctrl-flow/loop_else-WRN1 \
[2853d6f]61 warnings/self-assignment
62
[d923fca]63# These are failing because of trac #303; it is not likely to be fixed soon.
64# It only shows up on some configurations and machines.
65WFLAGS_OPT_LAX_WAITING_ON_303 = \
[faf9e19]66 concurrency/actors/dynamic \
67 concurrency/actors/executor \
68 concurrency/actors/inherit \
69 concurrency/actors/inline \
70 concurrency/actors/matrixMultiply \
71 concurrency/actors/pingpong \
72 concurrency/actors/poison \
73 concurrency/actors/static \
[b8b64c34]74 concurrency/actors/types \
75 io/away_fair \
76 io/comp_basic \
77 io/comp_fair \
78 io/many_read
[d923fca]79
80# Tests that need investigation from the CFA team about why they require lax wflags. Goal is to eliminate this list.
81WFLAGS_OPT_LAX_TO_INVESTIGATE = \
[372d33c]82 forall \
[faf9e19]83 include/includes \
84 include/stdincludes \
85 references \
86 tuple/tupleCast \
[641707d]87 tuple/tupleMember
[faf9e19]88
[92aeae1]89WFLAGS=${if ${filter ${WFLAGS_OPT_LAX},${@}},${WFLAGS_LAX},${WFLAGS_STRICT}}
[faf9e19]90
[ef7d253]91# applies to both programs
[d65f92c]92# since automake doesn't have support for CFA we have to
[e2887a9]93AM_CFLAGS = ${if ${test}, 2> ${test}, } \
94 -fdebug-prefix-map=${abspath ${abs_srcdir}}= \
[87fc1b4]95 -fdebug-prefix-map=/tmp= \
[0a19c51]96 -fno-diagnostics-show-caret \
[b8f6002]97 -g \
[faf9e19]98 $(WFLAGS) \
[b44959f]99 -quiet @CFA_FLAGS@
[7c03d6d]100
[7215000]101AM_CFAFLAGS = -XCFA --deterministic-out
102
[158b026]103# get the desired cfa to test
[e2887a9]104TARGET_CFA = ${if ${filter ${installed},yes}, @CFACC_INSTALL@, @CFACC@}
[158b026]105
[34e1494]106# adjust CC to current flags
[e2887a9]107CC = LC_ALL=C ${if ${DISTCC_CFA_PATH},distcc ${DISTCC_CFA_PATH} ${ARCH_FLAGS} ,${TARGET_CFA} ${DEBUG_FLAGS} ${ARCH_FLAGS}}
108CFACC = ${CC}
[ef7d253]109
[34e1494]110# get local binary for depedencies
111CFACCBIN = @CFACC@
112
113# adjusted CC but without the actual distcc call
[e2887a9]114CFACCLOCAL = ${if ${DISTCC_CFA_PATH},${DISTCC_CFA_PATH} ${ARCH_FLAGS} ,${TARGET_CFA} ${DEBUG_FLAGS} ${ARCH_FLAGS}}
115CFACCLINK = ${CFACCLOCAL} -quiet ${if ${test}, 2> ${test}, } ${${shell echo "${@}_FLAGSLD" | sed 's/-\|\//_/g'}}
[34e1494]116
[e3d4fd1]117PRETTY_PATH = mkdir -p ${dir ${abspath ${@}}} && cd ${srcdir} &&
[f7d3215]118
[bdbf536]119.PHONY : concurrency list .validate .test_makeflags
[e2887a9]120.INTERMEDIATE : .validate .validate.cfa .test_makeflags
[fd4df379]121EXTRA_PROGRAMS = array-collections/boxed avl_test linkonce linking/mangling/anon .dummy_hack # build but do not install
[a468e1e9]122EXTRA_DIST = test.py \
123 pybin/__init__.py \
124 pybin/print-core.gdb \
125 pybin/settings.py \
126 pybin/test_run.py \
127 pybin/tools.py \
128 long_tests.hfa \
[fd4df379]129 array-collections/boxed.hfa \
130 array-collections/boxed.cases.hfa \
[d0fa494]131 avltree/avl-private.h \
132 avltree/avl.h \
133 exceptions/except-io.hfa \
134 exceptions/with-threads.hfa \
135 meta/fork+exec.hfa \
[c26bea2a]136 concurrency/clib_tls.c \
137 concurrency/clib.c \
138 concurrency/unified_locking/mutex_test.hfa \
[9c4330d5]139 concurrency/channels/parallel_harness.hfa \
[0b8c951d]140 array-collections/dimexpr-match.hfa \
[ee16f8fc]141 array-collections/dimexpr-match-detail.sh \
142 array-collections/array-raii.hfa
[a468e1e9]143
144dist-hook:
145 echo "Gathering test files"
[e2887a9]146 for file in `${TEST_PY} --list-dist`; do \
[b24cbaf]147 if ls ${srcdir}/$${file} > /dev/null 2>&1; then \
[e2887a9]148 ${MKDIR_P} $$(dirname ${distdir}/$${file}); \
[b24cbaf]149 cp -df ${srcdir}/$${file} $$(dirname ${distdir}/$${file}); \
[a468e1e9]150 fi; \
151 done
[44f44617]152
[fd4df379]153array_collections_boxed_SOURCES = array-collections/boxed.main.cfa array-collections/boxed.bookend.cfa
[107b01a]154avl_test_SOURCES = avltree/avl_test.cfa avltree/avl0.cfa avltree/avl1.cfa avltree/avl2.cfa avltree/avl3.cfa avltree/avl4.cfa avltree/avl-private.cfa
[aff7e86]155linkonce_SOURCES = link-once/main.cfa link-once/partner.cfa
[258aaab8]156linking_mangling_anon_SOURCES = linking/mangling/header.hfa linking/mangling/lib.cfa linking/mangling/main.cfa
[2b10f95]157# automake doesn't know we still need C/CPP rules so pretend like we have a C program
[b7fe2e6]158nodist__dummy_hack_SOURCES = .dummy_hack.c .dummy_hackxx.cpp
[a0dcd2e]159
[73abe95]160#----------------------------------------------------------------------------------------------------------------
[4daf79f]161
[5007618]162# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
[c083c3d]163all-local : # This name is important to automake and implies the default build target.
[d144c26]164 @+${TEST_PY} --debug=${debug} --install=${installed} ${ARCHIVE_ERRORS} ${TIMEOUT} ${GLOBAL_TIMEOUT} ${ARCH} --all
[4daf79f]165
[5007618]166tests : all-local # synonym
[4daf79f]167
[5007618]168install : all-local # synonym, PAB only
[df42128]169
[4daf79f]170quick :
[5007618]171 @+${TEST_PY} --debug=${debug} --install=${installed} ${ARCHIVE_ERRORS} ${ARCH} ${quick_test}
[e2887a9]172
173concurrency :
[5007618]174 @+${TEST_PY} --debug=${debug} --install=${installed} ${ARCHIVE_ERRORS} ${TIMEOUT} ${GLOBAL_TIMEOUT} ${ARCH} -Iconcurrency
[e2887a9]175
176list :
[bdbf536]177 @+${TEST_PY} --list
[e2887a9]178
179help :
180 @echo "user targets:"
181 @echo " Run the complete test suite."
[5007618]182 @echo " $$ make (null) / tests [debug=yes/no] [installed=yes/no] [archive-errors=dump-dir] [timeout=seconds] [global-timeout=seconds] [arch=${arch_support}]"
[e2887a9]183 @echo ""
184 @echo " Run the short (quick) test suite."
[5007618]185 @echo " $$ make quick [debug=yes/no] [installed=yes/no] [archive-errors=dump-dir] [arch=${arch_support}]"
[e2887a9]186 @echo ""
[bdbf536]187 @echo " Run the concurrency test suite."
[5007618]188 @echo " $$ make concurrency [debug=yes/no] [installed=yes/no] [archive-errors=dump-dir] [timeout=seconds] [global-timeout=seconds] [arch=${arch_support}]"
[e2887a9]189 @echo ""
190 @echo " List all tests in the test suite."
191 @echo " $$ make list"
[927e9ce]192
[2a59655]193mostlyclean-local :
[e2887a9]194 find ${builddir} -not -path './__pycache__/*' -path '*.o' -delete
195 find ${builddir} -not -path './__pycache__/*' -path '*/.err/*.log' -delete
196 find ${builddir} -not -path './__pycache__/*' -path '*/.out/*.log' -delete
197 rm -f ${EXTRA_PROGRAMS}
[2a59655]198 rm -rf __pycache__
199
200distclean-local :
[e2887a9]201 find ${builddir} -path '*.Po' -delete
[927e9ce]202
[fc01219]203.test_makeflags:
[e2887a9]204 @echo "${MAKEFLAGS}"
[fc01219]205
[1e995d6]206.validate: .validate.cfa
[e2887a9]207 ${CFACOMPILE} .validate.cfa -fsyntax-only -Wall -Wextra -Werror
[1e995d6]208
209.validate.cfa:
[e2887a9]210 @echo "int main() { return 0; }" > ${@}
[28582b2]211
[107b01a]212# automake doesn't know we still need C rules so pretend like we have a C program
213.dummy_hack.c:
[e2887a9]214 @echo "int main() { return 0; }" > ${@}
[28582b2]215
[2b10f95]216.dummy_hackxx.cpp:
[e2887a9]217 @echo "int bar() { return 0; }" > ${@}
[026a0f5]218
[73abe95]219#----------------------------------------------------------------------------------------------------------------
[dc8511c]220
[e16797c]221# Use for all tests, make sure the path are correct and all flags are added
[e2887a9]222CFACOMPILETEST=${PRETTY_PATH} ${CFACOMPILE} ${shell realpath --relative-to=${srcdir} ${<}} ${${shell echo "${@}_FLAGSCFA" | sed 's/-\|\//_/g'}}
[d9b499c]223
[e16797c]224#----------------------------------------------------------------------------------------------------------------
[a843067]225
[e16797c]226# implicit rule so not all test require a rule
[15f9c8e]227# split into two steps to support compiling remotely using distcc
[34e1494]228# don't use distcc to do the linking because distcc doesn't do linking
[e2887a9]229% : %.cfa ${CFACCBIN}
230 ${CFACOMPILETEST} -c -o ${abspath ${@}}.o -DIN_DIR="${abspath ${dir ${<}}}/.in/"
231 ${CFACCLINK} ${@}.o -o ${abspath ${@}}
232 rm ${abspath ${@}}.o
[f7d3215]233
[34e1494]234# implicit rule for c++ test
235# convient for testing the testsuite itself but not actuall used
[e16797c]236% : %.cpp
[e2887a9]237 ${PRETTY_PATH} ${CXXCOMPILE} ${shell realpath --relative-to=${srcdir} ${<}} -o ${abspath ${@}}
[4c8f86b3]238
[f7d3215]239#------------------------------------------------------------------------------
[34e1494]240# TARGETS WITH CUSTOM FLAGS
[e16797c]241#------------------------------------------------------------------------------
[34e1494]242# custom libs
243gmp_FLAGSLD= -lgmp
[dc8511c]244
[e16797c]245#------------------------------------------------------------------------------
[34e1494]246# Generated code
247GENERATED_CODE = declarationSpecifier gccExtensions extension attributes functions KRfunctions
[e2887a9]248${GENERATED_CODE} : % : %.cfa ${CFACCBIN}
249 ${CFACOMPILETEST} -CFA -XCFA -p -c -fsyntax-only -o ${abspath ${@}}
[34e1494]250
[e16797c]251#------------------------------------------------------------------------------
252# CUSTOM TARGET
253#------------------------------------------------------------------------------
[66812dd]254# tests that just validate syntax and compiler output should be compared to stderr
[e2887a9]255CFACOMPILE_SYNTAX = ${CFACOMPILETEST} -Wno-unused-variable -Wno-unused-label -c -fsyntax-only -o ${abspath ${@}}
[40c81e5]256
[2853d6f]257SYNTAX_ONLY_CODE = attr-priority warnings/self-assignment
[afb15cf]258
[e2887a9]259${SYNTAX_ONLY_CODE} : % : %.cfa ${CFACCBIN}
260 ${CFACOMPILE_SYNTAX}
261 ${if ${test}, cp ${test} ${abspath ${@}}, }
[87fc1b4]262
[34e1494]263# expected failures
[e6cfb4e2]264# use custom target since they require a custom define *and* have a name that doesn't match the file
[a5aa5bf]265
266array-ERR1 : array.cfa ${CFACCBIN}
267 ${CFACOMPILE_SYNTAX} -DERR1
268 -cp ${test} ${abspath ${@}}
269
270array-ERR2 : array.cfa ${CFACCBIN}
271 ${CFACOMPILE_SYNTAX} -DERR2
272 -cp ${test} ${abspath ${@}}
273
274array-ERR3 : array.cfa ${CFACCBIN}
275 ${CFACOMPILE_SYNTAX} -DERR3
276 -cp ${test} ${abspath ${@}}
277
[0b8c951d]278array-collections/dimexpr-match-c-ERRS : array-collections/dimexpr-match-c.cfa
[0f4ac10]279 ${CFACOMPILE_SYNTAX} -DERRS
280 -cp ${test} ${abspath ${@}}
281
[0b8c951d]282array-collections/dimexpr-match-cfa-ERRS : array-collections/dimexpr-match-cfa.cfa
[0f4ac10]283 ${CFACOMPILE_SYNTAX} -DERRS
284 -cp ${test} ${abspath ${@}}
285
[e2887a9]286alloc-ERROR : alloc.cfa ${CFACCBIN}
287 ${CFACOMPILE_SYNTAX} -DERR1
288 -cp ${test} ${abspath ${@}}
[d175767]289
[3f631d6]290collections/string-operator-ERR09 : collections/string-operator.cfa
291 ${CFACOMPILE_SYNTAX} -DTRY_MR09
292 -cp ${test} ${abspath ${@}}
293
[570e7ad]294collections/string-operator-ERR11 : collections/string-operator.cfa
295 ${CFACOMPILE_SYNTAX} -DTRY_MR11
296 -cp ${test} ${abspath ${@}}
297
298collections/string-operator-ERR13 : collections/string-operator.cfa
299 ${CFACOMPILE_SYNTAX} -DTRY_MR13
300 -cp ${test} ${abspath ${@}}
301
[d175767]302collections/string-operator-ERR15 : collections/string-operator.cfa
303 ${CFACOMPILE_SYNTAX} -DTRY_MR15
304 -cp ${test} ${abspath ${@}}
[570e7ad]305
306collections/string-operator-ERR16 : collections/string-operator.cfa
307 ${CFACOMPILE_SYNTAX} -DTRY_MR16
308 -cp ${test} ${abspath ${@}}
[b93a3de]309
[e2887a9]310init1-ERROR : init1.cfa ${CFACCBIN}
311 ${CFACOMPILE_SYNTAX} -DERR1
312 -cp ${test} ${abspath ${@}}
[ee858bf]313
[e2887a9]314typedefRedef-ERR1 : typedefRedef.cfa ${CFACCBIN}
315 ${CFACOMPILE_SYNTAX} -DERR1
316 -cp ${test} ${abspath ${@}}
[e2c70ab]317
[e2887a9]318nested-types-ERR1 : nested-types.cfa ${CFACCBIN}
319 ${CFACOMPILE_SYNTAX} -DERR1
320 -cp ${test} ${abspath ${@}}
[49e1275]321
[e2887a9]322nested-types-ERR2 : nested-types.cfa ${CFACCBIN}
323 ${CFACOMPILE_SYNTAX} -DERR2
324 -cp ${test} ${abspath ${@}}
[49e1275]325
[e2887a9]326raii/memberCtors-ERR1 : raii/memberCtors.cfa ${CFACCBIN}
327 ${CFACOMPILE_SYNTAX} -DERR1
328 -cp ${test} ${abspath ${@}}
[cdbfab0]329
[e2887a9]330raii/ctor-autogen-ERR1 : raii/ctor-autogen.cfa ${CFACCBIN}
331 ${CFACOMPILE_SYNTAX} -DERR1
332 -cp ${test} ${abspath ${@}}
[80e8582]333
[e2887a9]334raii/dtor-early-exit-ERR1 : raii/dtor-early-exit.cfa ${CFACCBIN}
335 ${CFACOMPILE_SYNTAX} -DERR1
336 -cp ${test} ${abspath ${@}}
[80e8582]337
[e2887a9]338raii/dtor-early-exit-ERR2 : raii/dtor-early-exit.cfa ${CFACCBIN}
339 ${CFACOMPILE_SYNTAX} -DERR2
340 -cp ${test} ${abspath ${@}}
[e16797c]341
[64f3b9f]342raii/partial-ERR1 : raii/partial.cfa ${CFACCBIN}
343 ${CFACOMPILE_SYNTAX} -DERR1
344 -cp ${test} ${abspath ${@}}
345
[7959e56]346zero_one-ERR1 : zero_one.cfa ${CFACCBIN}
347 ${CFACOMPILE_SYNTAX} -DERR1
348 -cp ${test} ${abspath ${@}}
349
[bbbff10]350ctrl-flow/loop_else : ctrl-flow/loop_else.cfa ${CFACCBIN}
[301e9f7]351 ${CC} ${AM_CFLAGS} -Wno-superfluous-else $< -o $@
[bbbff10]352
353ctrl-flow/loop_else-WRN1 : ctrl-flow/loop_else.cfa ${CFACCBIN}
[301e9f7]354 ${CFACOMPILE_SYNTAX}
[bbbff10]355 -cp ${test} ${abspath ${@}}
356
[5715d43]357# Exception Tests
358# Test with libcfathread; it changes how storage works.
359
[e2887a9]360exceptions/%-threads : exceptions/%.cfa ${CFACCBIN}
361 ${CFACOMPILETEST} -include exceptions/with-threads.hfa -c -o ${abspath ${@}}.o
362 ${CFACCLOCAL} ${${shell echo "${@}_FLAGSLD" | sed 's/-\|\//_/g'}} ${abspath ${@}}.o -o ${abspath ${@}}
[5715d43]363
[673eb7a]364# Linking tests
365# Meta tests to make sure we see linking errors (can't compile with -O2 since it may multiply number of calls)
[e2887a9]366linking/linkerror : linking/linkerror.cfa ${CFACCBIN}
367 ${CFACOMPILETEST} -O0 -c -o ${abspath ${@}}.o
368 ${CFACCLINK} -O0 ${@}.o -o ${abspath ${@}}
369 rm ${abspath ${@}}.o
[673eb7a]370
[34e1494]371#------------------------------------------------------------------------------
372# Other targets
Note: See TracBrowser for help on using the repository browser.