source: tests/Makefile.am @ 94aa202

Last change on this file since 94aa202 was e797179, checked in by Michael Brooks <mlbrooks@…>, 7 days ago

Accept meta-test, expecting the buid to fail.

The fix is forthcoming.

The new test style (nowarn) checks for the absence of warnings. The team has seen inconsistent results with who sees what warning. This meta-test ensures that the checkin-triggered testing can notice a warning. The fix for this failing test will be to make the warning go away.

  • Property mode set to 100644
File size: 10.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
[0b8c951d]13## Last Modified On : Wed Aug 30 22:31:45 2023
14## Update Count     : 197
[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
[ef7d253]38# applies to both programs
[d65f92c]39# since automake doesn't have support for CFA we have to
[e2887a9]40AM_CFLAGS = ${if ${test}, 2> ${test}, } \
41        -fdebug-prefix-map=${abspath ${abs_srcdir}}= \
[87fc1b4]42        -fdebug-prefix-map=/tmp= \
[0a19c51]43        -fno-diagnostics-show-caret \
[b8f6002]44        -g \
45        -Wall \
[850aff1]46        -Werror=return-type \
[b8f6002]47        -Wno-unused-function \
[36fbaeca]48        -Wno-psabi \
[b44959f]49        -quiet @CFA_FLAGS@
[7c03d6d]50
[7215000]51AM_CFAFLAGS = -XCFA --deterministic-out
52
[158b026]53# get the desired cfa to test
[e2887a9]54TARGET_CFA = ${if ${filter ${installed},yes}, @CFACC_INSTALL@, @CFACC@}
[158b026]55
[34e1494]56# adjust CC to current flags
[e2887a9]57CC = LC_ALL=C ${if ${DISTCC_CFA_PATH},distcc ${DISTCC_CFA_PATH} ${ARCH_FLAGS} ,${TARGET_CFA} ${DEBUG_FLAGS} ${ARCH_FLAGS}}
58CFACC = ${CC}
[ef7d253]59
[34e1494]60# get local binary for depedencies
61CFACCBIN = @CFACC@
62
63# adjusted CC but without the actual distcc call
[e2887a9]64CFACCLOCAL = ${if ${DISTCC_CFA_PATH},${DISTCC_CFA_PATH} ${ARCH_FLAGS} ,${TARGET_CFA} ${DEBUG_FLAGS} ${ARCH_FLAGS}}
65CFACCLINK = ${CFACCLOCAL} -quiet ${if ${test}, 2> ${test}, } ${${shell echo "${@}_FLAGSLD" | sed 's/-\|\//_/g'}}
[34e1494]66
[e3d4fd1]67PRETTY_PATH = mkdir -p ${dir ${abspath ${@}}} && cd ${srcdir} &&
[f7d3215]68
[bdbf536]69.PHONY : concurrency list .validate .test_makeflags
[e2887a9]70.INTERMEDIATE : .validate .validate.cfa .test_makeflags
[fd4df379]71EXTRA_PROGRAMS = array-collections/boxed avl_test linkonce linking/mangling/anon .dummy_hack # build but do not install
[a468e1e9]72EXTRA_DIST = test.py \
73        pybin/__init__.py \
74        pybin/print-core.gdb \
75        pybin/settings.py \
76        pybin/test_run.py \
77        pybin/tools.py \
78        long_tests.hfa \
[fd4df379]79        array-collections/boxed.hfa \
80        array-collections/boxed.cases.hfa \
[d0fa494]81        avltree/avl-private.h \
82        avltree/avl.h \
83        exceptions/except-io.hfa \
84        exceptions/with-threads.hfa \
85        meta/fork+exec.hfa \
[c26bea2a]86        concurrency/clib_tls.c \
87        concurrency/clib.c \
88        concurrency/unified_locking/mutex_test.hfa \
[9c4330d5]89        concurrency/channels/parallel_harness.hfa \
[0b8c951d]90        array-collections/dimexpr-match.hfa \
[ee16f8fc]91        array-collections/dimexpr-match-detail.sh \
92        array-collections/array-raii.hfa
[a468e1e9]93
94dist-hook:
95        echo "Gathering test files"
[e2887a9]96        for file in `${TEST_PY} --list-dist`; do \
[b24cbaf]97                if ls ${srcdir}/$${file} > /dev/null 2>&1; then \
[e2887a9]98                        ${MKDIR_P} $$(dirname ${distdir}/$${file}); \
[b24cbaf]99                        cp -df ${srcdir}/$${file} $$(dirname ${distdir}/$${file}); \
[a468e1e9]100                fi; \
101        done
[44f44617]102
[fd4df379]103array_collections_boxed_SOURCES = array-collections/boxed.main.cfa array-collections/boxed.bookend.cfa
[107b01a]104avl_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]105linkonce_SOURCES = link-once/main.cfa link-once/partner.cfa
[258aaab8]106linking_mangling_anon_SOURCES = linking/mangling/header.hfa linking/mangling/lib.cfa linking/mangling/main.cfa
[2b10f95]107# automake doesn't know we still need C/CPP rules so pretend like we have a C program
[b7fe2e6]108nodist__dummy_hack_SOURCES = .dummy_hack.c .dummy_hackxx.cpp
[a0dcd2e]109
[73abe95]110#----------------------------------------------------------------------------------------------------------------
[4daf79f]111
[5007618]112# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
[c083c3d]113all-local : # This name is important to automake and implies the default build target.
[d144c26]114        @+${TEST_PY} --debug=${debug} --install=${installed} ${ARCHIVE_ERRORS} ${TIMEOUT} ${GLOBAL_TIMEOUT} ${ARCH} --all
[4daf79f]115
[5007618]116tests : all-local # synonym
[4daf79f]117
[5007618]118install : all-local  # synonym, PAB only
[df42128]119
[4daf79f]120quick :
[5007618]121        @+${TEST_PY} --debug=${debug} --install=${installed} ${ARCHIVE_ERRORS} ${ARCH} ${quick_test}
[e2887a9]122
123concurrency :
[5007618]124        @+${TEST_PY} --debug=${debug} --install=${installed} ${ARCHIVE_ERRORS} ${TIMEOUT} ${GLOBAL_TIMEOUT} ${ARCH} -Iconcurrency
[e2887a9]125
126list :
[bdbf536]127        @+${TEST_PY} --list
[e2887a9]128
129help :
130        @echo "user targets:"
131        @echo "    Run the complete test suite."
[5007618]132        @echo "    $$ make (null) / tests [debug=yes/no] [installed=yes/no] [archive-errors=dump-dir] [timeout=seconds] [global-timeout=seconds] [arch=${arch_support}]"
[e2887a9]133        @echo ""
134        @echo "    Run the short (quick) test suite."
[5007618]135        @echo "    $$ make quick [debug=yes/no] [installed=yes/no] [archive-errors=dump-dir] [arch=${arch_support}]"
[e2887a9]136        @echo ""
[bdbf536]137        @echo "    Run the concurrency test suite."
[5007618]138        @echo "    $$ make concurrency [debug=yes/no] [installed=yes/no] [archive-errors=dump-dir] [timeout=seconds] [global-timeout=seconds] [arch=${arch_support}]"
[e2887a9]139        @echo ""
140        @echo "    List all tests in the test suite."
141        @echo "    $$ make list"
[927e9ce]142
[2a59655]143mostlyclean-local :
[e2887a9]144        find ${builddir} -not -path './__pycache__/*' -path '*.o' -delete
145        find ${builddir} -not -path './__pycache__/*' -path '*/.err/*.log' -delete
146        find ${builddir} -not -path './__pycache__/*' -path '*/.out/*.log' -delete
147        rm -f ${EXTRA_PROGRAMS}
[2a59655]148        rm -rf __pycache__
149
150distclean-local :
[e2887a9]151        find ${builddir} -path '*.Po' -delete
[927e9ce]152
[fc01219]153.test_makeflags:
[e2887a9]154        @echo "${MAKEFLAGS}"
[fc01219]155
[1e995d6]156.validate: .validate.cfa
[e2887a9]157        ${CFACOMPILE} .validate.cfa -fsyntax-only -Wall -Wextra -Werror
[1e995d6]158
159.validate.cfa:
[e2887a9]160        @echo "int main() { return 0; }" > ${@}
[28582b2]161
[107b01a]162# automake doesn't know we still need C rules so pretend like we have a C program
163.dummy_hack.c:
[e2887a9]164        @echo "int main() { return 0; }" > ${@}
[28582b2]165
[2b10f95]166.dummy_hackxx.cpp:
[e2887a9]167        @echo "int bar() { return 0; }" > ${@}
[026a0f5]168
[73abe95]169#----------------------------------------------------------------------------------------------------------------
[dc8511c]170
[e16797c]171# Use for all tests, make sure the path are correct and all flags are added
[e2887a9]172CFACOMPILETEST=${PRETTY_PATH} ${CFACOMPILE} ${shell realpath --relative-to=${srcdir} ${<}} ${${shell echo "${@}_FLAGSCFA" | sed 's/-\|\//_/g'}}
[d9b499c]173
[e16797c]174#----------------------------------------------------------------------------------------------------------------
[a843067]175
[e16797c]176# implicit rule so not all test require a rule
[15f9c8e]177# split into two steps to support compiling remotely using distcc
[34e1494]178# don't use distcc to do the linking because distcc doesn't do linking
[e2887a9]179% : %.cfa ${CFACCBIN}
180        ${CFACOMPILETEST} -c -o ${abspath ${@}}.o -DIN_DIR="${abspath ${dir ${<}}}/.in/"
181        ${CFACCLINK} ${@}.o -o ${abspath ${@}}
182        rm ${abspath ${@}}.o
[f7d3215]183
[34e1494]184# implicit rule for c++ test
185# convient for testing the testsuite itself but not actuall used
[e16797c]186% : %.cpp
[e2887a9]187        ${PRETTY_PATH} ${CXXCOMPILE} ${shell realpath --relative-to=${srcdir} ${<}} -o ${abspath ${@}}
[4c8f86b3]188
[f7d3215]189#------------------------------------------------------------------------------
[34e1494]190# TARGETS WITH CUSTOM FLAGS
[e16797c]191#------------------------------------------------------------------------------
[34e1494]192# custom libs
193gmp_FLAGSLD= -lgmp
[dc8511c]194
[e16797c]195#------------------------------------------------------------------------------
[34e1494]196# Generated code
197GENERATED_CODE = declarationSpecifier gccExtensions extension attributes functions KRfunctions
[e2887a9]198${GENERATED_CODE} : % : %.cfa ${CFACCBIN}
199        ${CFACOMPILETEST} -CFA -XCFA -p -c -fsyntax-only -o ${abspath ${@}}
[34e1494]200
[e16797c]201#------------------------------------------------------------------------------
202# CUSTOM TARGET
203#------------------------------------------------------------------------------
[66812dd]204# tests that just validate syntax and compiler output should be compared to stderr
[e2887a9]205CFACOMPILE_SYNTAX = ${CFACOMPILETEST} -Wno-unused-variable -Wno-unused-label -c -fsyntax-only -o ${abspath ${@}}
[40c81e5]206
[afb15cf]207SYNTAX_ONLY_CODE = \
208        array cast expression identFuncDeclarator init1 limits nested-types numericConstants opt-params quasiKeyword switch typedefRedef variableDeclarator \
209        builtins/sync concurrency/waitfor/parse ctrl-flow/labelledExit include/stdincludes include/includes warnings/self-assignment
210
[e2887a9]211${SYNTAX_ONLY_CODE} : % : %.cfa ${CFACCBIN}
212        ${CFACOMPILE_SYNTAX}
213        ${if ${test}, cp ${test} ${abspath ${@}}, }
[87fc1b4]214
[34e1494]215# expected failures
[e6cfb4e2]216# use custom target since they require a custom define *and* have a name that doesn't match the file
[a5aa5bf]217
218array-ERR1 : array.cfa ${CFACCBIN}
219        ${CFACOMPILE_SYNTAX} -DERR1
220        -cp ${test} ${abspath ${@}}
221
222array-ERR2 : array.cfa ${CFACCBIN}
223        ${CFACOMPILE_SYNTAX} -DERR2
224        -cp ${test} ${abspath ${@}}
225
226array-ERR3 : array.cfa ${CFACCBIN}
227        ${CFACOMPILE_SYNTAX} -DERR3
228        -cp ${test} ${abspath ${@}}
229
[0b8c951d]230array-collections/dimexpr-match-c-ERRS : array-collections/dimexpr-match-c.cfa
[0f4ac10]231        ${CFACOMPILE_SYNTAX} -DERRS
232        -cp ${test} ${abspath ${@}}
233
[0b8c951d]234array-collections/dimexpr-match-cfa-ERRS : array-collections/dimexpr-match-cfa.cfa
[0f4ac10]235        ${CFACOMPILE_SYNTAX} -DERRS
236        -cp ${test} ${abspath ${@}}
237
[e2887a9]238alloc-ERROR : alloc.cfa ${CFACCBIN}
239        ${CFACOMPILE_SYNTAX} -DERR1
240        -cp ${test} ${abspath ${@}}
[b93a3de]241
[e2887a9]242init1-ERROR : init1.cfa ${CFACCBIN}
243        ${CFACOMPILE_SYNTAX} -DERR1
244        -cp ${test} ${abspath ${@}}
[ee858bf]245
[e2887a9]246typedefRedef-ERR1 : typedefRedef.cfa ${CFACCBIN}
247        ${CFACOMPILE_SYNTAX} -DERR1
248        -cp ${test} ${abspath ${@}}
[e2c70ab]249
[e2887a9]250nested-types-ERR1 : nested-types.cfa ${CFACCBIN}
251        ${CFACOMPILE_SYNTAX} -DERR1
252        -cp ${test} ${abspath ${@}}
[49e1275]253
[e2887a9]254nested-types-ERR2 : nested-types.cfa ${CFACCBIN}
255        ${CFACOMPILE_SYNTAX} -DERR2
256        -cp ${test} ${abspath ${@}}
[49e1275]257
[e2887a9]258raii/memberCtors-ERR1 : raii/memberCtors.cfa ${CFACCBIN}
259        ${CFACOMPILE_SYNTAX} -DERR1
260        -cp ${test} ${abspath ${@}}
[cdbfab0]261
[e2887a9]262raii/ctor-autogen-ERR1 : raii/ctor-autogen.cfa ${CFACCBIN}
263        ${CFACOMPILE_SYNTAX} -DERR1
264        -cp ${test} ${abspath ${@}}
[80e8582]265
[e2887a9]266raii/dtor-early-exit-ERR1 : raii/dtor-early-exit.cfa ${CFACCBIN}
267        ${CFACOMPILE_SYNTAX} -DERR1
268        -cp ${test} ${abspath ${@}}
[80e8582]269
[e2887a9]270raii/dtor-early-exit-ERR2 : raii/dtor-early-exit.cfa ${CFACCBIN}
271        ${CFACOMPILE_SYNTAX} -DERR2
272        -cp ${test} ${abspath ${@}}
[e16797c]273
[64f3b9f]274raii/partial-ERR1 : raii/partial.cfa ${CFACCBIN}
275        ${CFACOMPILE_SYNTAX} -DERR1
276        -cp ${test} ${abspath ${@}}
277
[5715d43]278# Exception Tests
279# Test with libcfathread; it changes how storage works.
280
[e2887a9]281exceptions/%-threads : exceptions/%.cfa ${CFACCBIN}
282        ${CFACOMPILETEST} -include exceptions/with-threads.hfa -c -o ${abspath ${@}}.o
283        ${CFACCLOCAL} ${${shell echo "${@}_FLAGSLD" | sed 's/-\|\//_/g'}} ${abspath ${@}}.o -o ${abspath ${@}}
[5715d43]284
[673eb7a]285# Linking tests
286# Meta tests to make sure we see linking errors (can't compile with -O2 since it may multiply number of calls)
[e2887a9]287linking/linkerror : linking/linkerror.cfa ${CFACCBIN}
288        ${CFACOMPILETEST} -O0 -c -o ${abspath ${@}}.o
289        ${CFACCLINK}  -O0 ${@}.o -o ${abspath ${@}}
290        rm ${abspath ${@}}.o
[673eb7a]291
[e797179]292# No-warning tests
293# Tests to make sure that given CFA code gets emitted C code that GCC accepts without any warnings
294nowarn/% : nowarn/%.cfa ${CFABIN}
295        ${CFACOMPILETEST} -Wunused-function -Wpsabi -Wall -Wextra -Werror -o ${abspath ${@}}
296
[34e1494]297#------------------------------------------------------------------------------
298# Other targets
Note: See TracBrowser for help on using the repository browser.