1#==================================================================================================
2#
3#  Makefile for the traits module of the Blaze test suite
4#
5#  Copyright (C) 2012-2020 Klaus Iglberger - All Rights Reserved - All Rights Reserved
6#
7#  This file is part of the Blaze library. You can redistribute it and/or modify it under
8#  the terms of the New (Revised) BSD License. Redistribution and use in source and binary
9#  forms, with or without modification, are permitted provided that the following conditions
10#  are met:
11#
12#  1. Redistributions of source code must retain the above copyright notice, this list of
13#     conditions and the following disclaimer.
14#  2. Redistributions in binary form must reproduce the above copyright notice, this list
15#     of conditions and the following disclaimer in the documentation and/or other materials
16#     provided with the distribution.
17#  3. Neither the names of the Blaze development group nor the names of its contributors
18#     may be used to endorse or promote products derived from this software without specific
19#     prior written permission.
20#
21#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
22#  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23#  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
24#  SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25#  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
26#  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
27#  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29#  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
30#  DAMAGE.
31#
32#==================================================================================================
33
34
35# Including the compiler and library settings
36ifneq ($(MAKECMDGOALS),reset)
37ifneq ($(MAKECMDGOALS),clean)
38-include ../../Makeconfig
39endif
40endif
41
42
43# Setting the source, object and dependency files
44SRC = $(wildcard ./*.cpp)
45DEP = $(SRC:.cpp=.d)
46OBJ = $(SRC:.cpp=.o)
47BIN = $(SRC:.cpp=)
48
49
50# Build rules
51default: all
52
53all: $(BIN) addtrait bandtrait columntrait columnstrait crosstrait decldiagtrait declhermtrait \
54     declidtrait decllowtrait declstrlowtrait declstrupptrait declsymtrait declunilowtrait \
55     decluniupptrait declupptrait declzerotrait divtrait elementstrait expandtrait krontrait \
56     maptrait multtrait reducetrait repeattrait rowtrait rowstrait schurtrait solvetrait \
57     submatrixtrait subtrait subvectortrait
58
59essential: all
60
61single: all
62
63IncludeTest: IncludeTest.o
64	@$(CXX) $(CXXFLAGS) -o $@ $< $(LIBRARIES)
65
66
67# Internal rules
68addtrait:
69	@echo
70	@echo "Building the AddTrait tests..."
71	@$(MAKE) --no-print-directory -C ./addtrait $(MAKECMDGOALS)
72
73bandtrait:
74	@echo
75	@echo "Building the BandTrait tests..."
76	@$(MAKE) --no-print-directory -C ./bandtrait $(MAKECMDGOALS)
77
78columntrait:
79	@echo
80	@echo "Building the ColumnTrait tests..."
81	@$(MAKE) --no-print-directory -C ./columntrait $(MAKECMDGOALS)
82
83columnstrait:
84	@echo
85	@echo "Building the ColumnsTrait tests..."
86	@$(MAKE) --no-print-directory -C ./columnstrait $(MAKECMDGOALS)
87
88crosstrait:
89	@echo
90	@echo "Building the CrossTrait tests..."
91	@$(MAKE) --no-print-directory -C ./crosstrait $(MAKECMDGOALS)
92
93decldiagtrait:
94	@echo
95	@echo "Building the DeclDiagTrait tests..."
96	@$(MAKE) --no-print-directory -C ./decldiagtrait $(MAKECMDGOALS)
97
98declhermtrait:
99	@echo
100	@echo "Building the DeclHermTrait tests..."
101	@$(MAKE) --no-print-directory -C ./declhermtrait $(MAKECMDGOALS)
102
103declidtrait:
104	@echo
105	@echo "Building the DeclIdTrait tests..."
106	@$(MAKE) --no-print-directory -C ./declidtrait $(MAKECMDGOALS)
107
108decllowtrait:
109	@echo
110	@echo "Building the DeclLowTrait tests..."
111	@$(MAKE) --no-print-directory -C ./decllowtrait $(MAKECMDGOALS)
112
113declstrlowtrait:
114	@echo
115	@echo "Building the DeclStrLowTrait tests..."
116	@$(MAKE) --no-print-directory -C ./declstrlowtrait $(MAKECMDGOALS)
117
118declstrupptrait:
119	@echo
120	@echo "Building the DeclStrUppTrait tests..."
121	@$(MAKE) --no-print-directory -C ./declstrupptrait $(MAKECMDGOALS)
122
123declsymtrait:
124	@echo
125	@echo "Building the DeclSymTrait tests..."
126	@$(MAKE) --no-print-directory -C ./declsymtrait $(MAKECMDGOALS)
127
128declunilowtrait:
129	@echo
130	@echo "Building the DeclUniLowTrait tests..."
131	@$(MAKE) --no-print-directory -C ./declunilowtrait $(MAKECMDGOALS)
132
133decluniupptrait:
134	@echo
135	@echo "Building the DeclUniUppTrait tests..."
136	@$(MAKE) --no-print-directory -C ./decluniupptrait $(MAKECMDGOALS)
137
138declupptrait:
139	@echo
140	@echo "Building the DeclUppTrait tests..."
141	@$(MAKE) --no-print-directory -C ./declupptrait $(MAKECMDGOALS)
142
143declzerotrait:
144	@echo
145	@echo "Building the DeclZeroTrait tests..."
146	@$(MAKE) --no-print-directory -C ./declzerotrait $(MAKECMDGOALS)
147
148divtrait:
149	@echo
150	@echo "Building the DivTrait tests..."
151	@$(MAKE) --no-print-directory -C ./divtrait $(MAKECMDGOALS)
152
153elementstrait:
154	@echo
155	@echo "Building the ElementsTrait tests..."
156	@$(MAKE) --no-print-directory -C ./elementstrait $(MAKECMDGOALS)
157
158expandtrait:
159	@echo
160	@echo "Building the ExpandTrait tests..."
161	@$(MAKE) --no-print-directory -C ./expandtrait $(MAKECMDGOALS)
162
163krontrait:
164	@echo
165	@echo "Building the KronTrait tests..."
166	@$(MAKE) --no-print-directory -C ./krontrait $(MAKECMDGOALS)
167
168maptrait:
169	@echo
170	@echo "Building the MapTrait tests..."
171	@$(MAKE) --no-print-directory -C ./maptrait $(MAKECMDGOALS)
172
173multtrait:
174	@echo
175	@echo "Building the MultTrait tests..."
176	@$(MAKE) --no-print-directory -C ./multtrait $(MAKECMDGOALS)
177
178reducetrait:
179	@echo
180	@echo "Building the ReduceTrait tests..."
181	@$(MAKE) --no-print-directory -C ./reducetrait $(MAKECMDGOALS)
182
183repeattrait:
184	@echo
185	@echo "Building the RepeatTrait tests..."
186	@$(MAKE) --no-print-directory -C ./repeattrait $(MAKECMDGOALS)
187
188rowtrait:
189	@echo
190	@echo "Building the RowTrait tests..."
191	@$(MAKE) --no-print-directory -C ./rowtrait $(MAKECMDGOALS)
192
193rowstrait:
194	@echo
195	@echo "Building the RowsTrait tests..."
196	@$(MAKE) --no-print-directory -C ./rowstrait $(MAKECMDGOALS)
197
198schurtrait:
199	@echo
200	@echo "Building the SchurTrait tests..."
201	@$(MAKE) --no-print-directory -C ./schurtrait $(MAKECMDGOALS)
202
203solvetrait:
204	@echo
205	@echo "Building the SolveTrait tests..."
206	@$(MAKE) --no-print-directory -C ./solvetrait $(MAKECMDGOALS)
207
208submatrixtrait:
209	@echo
210	@echo "Building the SubmatrixTrait tests..."
211	@$(MAKE) --no-print-directory -C ./submatrixtrait $(MAKECMDGOALS)
212
213subtrait:
214	@echo
215	@echo "Building the SubTrait tests..."
216	@$(MAKE) --no-print-directory -C ./subtrait $(MAKECMDGOALS)
217
218subvectortrait:
219	@echo
220	@echo "Building the SubvectorTrait tests..."
221	@$(MAKE) --no-print-directory -C ./subvectortrait $(MAKECMDGOALS)
222
223
224# Cleanup
225reset:
226	@$(RM) $(OBJ) $(BIN)
227	@$(MAKE) --no-print-directory -C ./addtrait reset
228	@$(MAKE) --no-print-directory -C ./bandtrait reset
229	@$(MAKE) --no-print-directory -C ./columntrait reset
230	@$(MAKE) --no-print-directory -C ./columnstrait reset
231	@$(MAKE) --no-print-directory -C ./crosstrait reset
232	@$(MAKE) --no-print-directory -C ./decldiagtrait reset
233	@$(MAKE) --no-print-directory -C ./declhermtrait reset
234	@$(MAKE) --no-print-directory -C ./declidtrait reset
235	@$(MAKE) --no-print-directory -C ./decllowtrait reset
236	@$(MAKE) --no-print-directory -C ./declstrlowtrait reset
237	@$(MAKE) --no-print-directory -C ./declstrupptrait reset
238	@$(MAKE) --no-print-directory -C ./declsymtrait reset
239	@$(MAKE) --no-print-directory -C ./declunilowtrait reset
240	@$(MAKE) --no-print-directory -C ./decluniupptrait reset
241	@$(MAKE) --no-print-directory -C ./declupptrait reset
242	@$(MAKE) --no-print-directory -C ./declzerotrait reset
243	@$(MAKE) --no-print-directory -C ./divtrait reset
244	@$(MAKE) --no-print-directory -C ./elementstrait reset
245	@$(MAKE) --no-print-directory -C ./expandtrait reset
246	@$(MAKE) --no-print-directory -C ./krontrait reset
247	@$(MAKE) --no-print-directory -C ./maptrait reset
248	@$(MAKE) --no-print-directory -C ./multtrait reset
249	@$(MAKE) --no-print-directory -C ./reducetrait reset
250	@$(MAKE) --no-print-directory -C ./repeattrait reset
251	@$(MAKE) --no-print-directory -C ./rowtrait reset
252	@$(MAKE) --no-print-directory -C ./rowstrait reset
253	@$(MAKE) --no-print-directory -C ./schurtrait reset
254	@$(MAKE) --no-print-directory -C ./solvetrait reset
255	@$(MAKE) --no-print-directory -C ./submatrixtrait reset
256	@$(MAKE) --no-print-directory -C ./subtrait reset
257	@$(MAKE) --no-print-directory -C ./subvectortrait reset
258
259clean:
260	@$(RM) $(OBJ) $(BIN) $(DEP)
261	@$(MAKE) --no-print-directory -C ./addtrait clean
262	@$(MAKE) --no-print-directory -C ./bandtrait clean
263	@$(MAKE) --no-print-directory -C ./columntrait clean
264	@$(MAKE) --no-print-directory -C ./columnstrait clean
265	@$(MAKE) --no-print-directory -C ./crosstrait clean
266	@$(MAKE) --no-print-directory -C ./decldiagtrait clean
267	@$(MAKE) --no-print-directory -C ./declhermtrait clean
268	@$(MAKE) --no-print-directory -C ./declidtrait clean
269	@$(MAKE) --no-print-directory -C ./decllowtrait clean
270	@$(MAKE) --no-print-directory -C ./declstrlowtrait clean
271	@$(MAKE) --no-print-directory -C ./declstrupptrait clean
272	@$(MAKE) --no-print-directory -C ./declsymtrait clean
273	@$(MAKE) --no-print-directory -C ./declunilowtrait clean
274	@$(MAKE) --no-print-directory -C ./decluniupptrait clean
275	@$(MAKE) --no-print-directory -C ./declupptrait clean
276	@$(MAKE) --no-print-directory -C ./declzerotrait clean
277	@$(MAKE) --no-print-directory -C ./divtrait clean
278	@$(MAKE) --no-print-directory -C ./elementstrait clean
279	@$(MAKE) --no-print-directory -C ./expandtrait clean
280	@$(MAKE) --no-print-directory -C ./krontrait clean
281	@$(MAKE) --no-print-directory -C ./maptrait clean
282	@$(MAKE) --no-print-directory -C ./multtrait clean
283	@$(MAKE) --no-print-directory -C ./reducetrait clean
284	@$(MAKE) --no-print-directory -C ./repeattrait clean
285	@$(MAKE) --no-print-directory -C ./rowtrait clean
286	@$(MAKE) --no-print-directory -C ./rowstrait clean
287	@$(MAKE) --no-print-directory -C ./schurtrait clean
288	@$(MAKE) --no-print-directory -C ./solvetrait clean
289	@$(MAKE) --no-print-directory -C ./submatrixtrait clean
290	@$(MAKE) --no-print-directory -C ./subtrait clean
291	@$(MAKE) --no-print-directory -C ./subvectortrait clean
292
293
294# Setting the independent commands
295.PHONY: default all essential single reset clean \
296        addtrait bandtrait columntrait columnstrait crosstrait decldiagtrait declhermtrait \
297        declidtrait decllowtrait declstrlowtrait declstrupptrait declsymtrait declunilowtrait \
298        decluniupptrait declupptrait declzerotrait divtrait elementstrait expandtrait krontrait \
299        maptrait multtrait reducetrait repeattrait rowtrait rowstrait schurtrait solvetrait \
300        submatrixtrait subtrait subvectortrait
301