1# Copyright (c) 2004-2011 Michael Stevens, David Bellot
2# Use, modification and distribution are subject to the
3# Boost Software License, Version 1.0. (See accompanying file
4# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6# Bring in rules for testing
7import testing ;
8
9# Define features to test:
10#  Value types: USE_FLOAT USE_DOUBLE USE_STD_COMPLEX
11#  Proxies: USE_RANGE USE_SLICE
12#  Storage types: USE_BOUNDED_ARRAY USE_UNBOUNDED_ARRAY
13#  Vector types: USE_STD_VECTOR USE_BOUNDED_VECTOR
14#  Matrix types: USE_MATRIX USE_BOUNDED_MATRIX USE_VECTOR_OF_VECTOR
15#  Adaptors: USE_ADAPTOR
16
17UBLAS_TESTSET = [ modules.peek : UBLAS_TESTSET ] ;
18UBLAS_TESTSET ?=
19            USE_DOUBLE USE_STD_COMPLEX
20            USE_RANGE USE_SLICE
21            USE_UNBOUNDED_ARRAY USE_STD_VECTOR USE_BOUNDED_VECTOR USE_MATRIX
22            ;
23
24#  Sparse storage: USE_MAP_ARRAY USE_STD_MAP
25#  Sparse vectors: USE_MAPPED_VECTOR USE_COMPRESSED_VECTOR USE_COORDINATE_VECTOR
26#  Sparse matrices: USE_MAPPED_MATRIX USE_COMPRESSED_MATRIX USE_COORDINATE_MATRIX USE_MAPPED_VECTOR_OF_MAPPED_VECTOR USE_GENERALIZED_VECTOR_OF_VECTOR
27
28UBLAS_TESTSET_SPARSE = [ modules.peek : UBLAS_TESTSET_SPARSE ] ;
29UBLAS_TESTSET_SPARSE ?=
30            USE_DOUBLE USE_STD_COMPLEX
31            # USE_RANGE USE_SLICE	 # Too complex for regression testing
32            USE_UNBOUNDED_ARRAY
33			USE_MAP_ARRAY USE_STD_MAP
34            USE_MAPPED_VECTOR USE_COMPRESSED_VECTOR
35            USE_MAPPED_MATRIX USE_COMPRESSED_MATRIX
36			;
37# Generalize VofV still failing
38#            USE_GENERALIZED_VECTOR_OF_VECTOR
39
40UBLAS_TESTSET_SPARSE_COO = [ modules.peek : UBLAS_TESTSET_SPARSE_COO ] ;
41UBLAS_TESTSET_SPARSE_COO ?=
42            USE_DOUBLE USE_STD_COMPLEX
43            USE_UNBOUNDED_ARRAY
44            USE_COORDINATE_VECTOR
45            USE_COORDINATE_MATRIX
46			;
47
48
49# Project settings
50project boost-ublas-test
51    : requirements
52       <define>BOOST_UBLAS_NO_EXCEPTIONS
53       <toolset>vacpp:<define>"BOOST_UBLAS_NO_ELEMENT_PROXIES"
54       <toolset>gcc:<cxxflags>"-Wall -Wno-unknown-pragmas"
55       <toolset>msvc:<cxxflags>/bigobj
56       <toolset>msvc:<cxxflags>"/W4" # == all
57       #  The define of macros below prevent warnings about the checked versions of SCL and CRT libraries.
58       #  Most Boost code does not need these versions (as they are markedly slower).
59       <toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS
60       <toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE
61       <toolset>msvc:<define>_CRT_SECURE_NO_WARNINGS
62       <toolset>msvc:<define>_CRT_SECURE_NO_DEPRECATE
63       <toolset>msvc:<define>_CRT_NONSTDC_NO_DEPRECATE # Suppresses other warnings about using standard POSIX and C9X.
64       #  Alternatively, you can just suppress the warnings (perhaps not the best way).
65       #<toolset>msvc:<cxxflags>/wd4996 # 'putenv': The POSIX name for this item is deprecated.
66       #<toolset>msvc:<cxxflags>/wd4512 # assignment operator could not be generated.
67       #<toolset>msvc:<cxxflags>/wd4224 # nonstandard extension used : formal parameter 'arg' was previously defined as a type.
68       #<toolset>msvc:<cxxflags>/wd4127 # expression is constant.
69       #<toolset>msvc:<cxxflags>/wd4701 # unreachable code - needed for lexical cast - temporary for Boost 1.40 & earlier.
70    ;
71
72
73
74
75test-suite numeric/uBLAS
76    : [ run test1.cpp
77            test11.cpp
78            test12.cpp
79            test13.cpp
80        : # args
81        : # input files
82        : # requirements
83            <define>$(UBLAS_TESTSET)
84      ]
85      [ run test2.cpp
86            test21.cpp
87            test22.cpp
88            test23.cpp
89        : : :
90            <define>$(UBLAS_TESTSET)
91      ]
92      [ run test3.cpp
93            test31.cpp
94            test32.cpp
95            test33.cpp
96        : : :
97            <define>$(UBLAS_TESTSET_SPARSE)
98      ]
99      [ run test3.cpp
100            test31.cpp
101            test32.cpp
102            test33.cpp
103        : : :
104            <define>$(UBLAS_TESTSET_SPARSE_COO)
105	: test3_coo
106	:
107      ]
108      [ run test3.cpp
109            test31.cpp
110            test32.cpp
111            test33.cpp
112        : : :
113            <define>USE_FLOAT
114            <define>USE_DOUBLE
115            <define>USE_STD_COMPLEX
116            <define>USE_STD_MAP
117            <define>USE_MAPPED_VECTOR_OF_MAPPED_VECTOR
118        : test3_mvov
119        :
120      ]
121      [ run test4.cpp
122            test42.cpp
123            test43.cpp
124        : : :
125            <define>$(UBLAS_TESTSET)
126      ]
127      [ run test5.cpp
128            test52.cpp
129            test53.cpp
130        : : :
131            <define>$(UBLAS_TESTSET)
132      ]
133      [ run test6.cpp
134            test62.cpp
135            test63.cpp
136        : : :
137            <define>$(UBLAS_TESTSET)
138      ]
139# Test commented out because boost::interval does not behave like a scalar type
140#      [ run test7.cpp
141#            test71.cpp
142#            test72.cpp
143#            test73.cpp
144#        : : :
145#            <define>BOOST_UBLAS_USE_INTERVAL
146#            <define>$(UBLAS_TESTSET)
147#      ]
148
149      [ run placement_new.cpp
150      ]
151      [ compile concepts.cpp
152        : # requirements
153            <define>EXTERNAL
154#            <define>INTERAL
155#            <define>SKIP_BAD
156            <toolset>intel-linux:<cxxflags>"-Xc"
157            <toolset>darwin:<cxxflags>"-fabi-version=0"
158      ]
159      [ run test_lu.cpp
160        : : :
161      ]
162      [ run triangular_access.cpp
163        : : :
164            <define>NOMESSAGES
165      ]
166      [ run triangular_layout.cpp
167      ]
168      [ run comp_mat_erase.cpp
169        : : :
170            <toolset>msvc:<asynch-exceptions>on
171      ]
172      [ run sparse_view_test.cpp
173        : : :
174            <toolset>msvc:<asynch-exceptions>on
175      ]
176      [ run begin_end.cpp
177      ]
178      [ run num_columns.cpp
179      ]
180      [ run num_rows.cpp
181      ]
182      [ run size.cpp
183      ]
184      [ run test_coordinate_matrix_sort.cpp
185      ]
186      [ run test_coordinate_matrix_sort.cpp
187       :
188       :
189       : <define>BOOST_UBLAS_COO_ALWAYS_DO_FULL_SORT
190       : test_coordinate_matrix_always_do_full_sort
191       :
192      ]
193      [ run test_complex_norms.cpp
194      ]
195      [ run test_scaled_norm.cpp
196       : : :
197           <define>BOOST_UBLAS_SCALED_NORM
198      ]
199      [ run test_assignment.cpp
200       : : :
201           <define>BOOST_UBLAS_COO_ALWAYS_DO_FULL_SORT
202      ]
203      [ run test_triangular.cpp
204       :
205       :
206       : <library>/boost/timer//boost_timer
207      ]
208      [ run test_ticket7296.cpp
209        :
210        :
211        : <toolset>msvc:<cxxflags>/wd4127 # The program checks that test facilities work fine. The warning appears many times.
212        :
213        :
214      ]
215      [ run test_inplace_solve.cpp
216        :
217        :
218        : <define>$(UBLAS_TESTSET)
219        : test_inplace_solve_basic
220        :
221      ]
222      [ run test_inplace_solve.cpp
223        :
224        :
225        : <define>$(UBLAS_TESTSET_SPARSE)
226          <define>$(UBLAS_TESTSET_SPARSE_COO)
227        : test_inplace_solve_sparse
228        :
229      ]
230      [ run test_inplace_solve.cpp
231        :
232        :
233        : <define>USE_MAPPED_VECTOR_OF_MAPPED_VECTOR
234        : test_inplace_solve_mvov
235        :
236      ]
237      [ run test_coordinate_vector_inplace_merge.cpp
238      ]
239      [ run test_coordinate_matrix_inplace_merge.cpp
240      ]
241      [ run test_banded_storage_layout.cpp
242        :
243        :
244        :
245        :
246        :
247      ]
248      [ run test_fixed_containers.cpp
249        :
250        :
251        :
252      ]
253      [ run test_matrix_vector.cpp
254      ]
255    ;
256
257build-project opencl ;
258build-project tensor ;
259