1#-------------------------------------------------------------------------------
2# SLIP_LU/Tcov/Makefile: compile and run SLIP_LU test coverage
3#-------------------------------------------------------------------------------
4
5# SLIP_LU: (c) 2019-2020, Chris Lourenco, Jinhao Chen, Erick Moreno-Centeno,
6# Timothy A. Davis, Texas A&M University.  All Rights Reserved.  See
7# SLIP_LU/License for the license.
8
9#-------------------------------------------------------------------------------
10
11default: run
12
13include ../../SuiteSparse_config/SuiteSparse_config.mk
14
15# Linux test coverage
16CC = gcc
17CFLAGS = -g -fprofile-arcs -ftest-coverage \
18        -Wall -W -Wshadow -Wmissing-prototypes -Wstrict-prototypes \
19        -Wredundant-decls -Wnested-externs -Wdisabled-optimization -std=c99 \
20        -Wno-unused-parameter -I../Include -I../Source -I../Demo \
21        -I../../SuiteSparse_config -I../../COLAMD/Include -I../../AMD/Include \
22        -DSLIP_GMP_LIST_INIT=2 -DSLIP_LU_TCOV
23
24LDLIBS += -lm -lgmp -lmpfr -lcolamd -lamd -lsuitesparseconfig
25
26# run all statement coverage tests, and then check for 100% coverage
27run: runtests
28	./covall
29
30all: test SLIPLU
31
32CS = \
33    slip_matrix_div.o slip_matrix_mul.o slip_back_sub.o \
34    SLIP_backslash.o \
35    slip_cast_array.o \
36    slip_cast_matrix.o \
37    slip_check_solution.o \
38    SLIP_create_default_options.o \
39    slip_create_mpfr_array.o \
40    slip_create_mpq_array.o \
41    slip_create_mpz_array.o \
42    slip_cumsum.o \
43    slip_dfs.o \
44    slip_expand_double_array.o \
45    slip_expand_mpfr_array.o \
46    slip_expand_mpq_array.o \
47    SLIP_finalize.o \
48    slip_forward_sub.o \
49    SLIP_malloc.o \
50    SLIP_calloc.o \
51    SLIP_realloc.o \
52    SLIP_free.o \
53    slip_get_largest_pivot.o \
54    slip_get_nonzero_pivot.o \
55    slip_get_pivot.o \
56    slip_get_smallest_pivot.o \
57    SLIP_gmp.o \
58    SLIP_initialize.o \
59    SLIP_initialize_expert.o \
60    SLIP_LU_analysis_free.o \
61    SLIP_LU_analyze.o \
62    SLIP_LU_factorize.o \
63    SLIP_LU_solve.o \
64    SLIP_matrix_allocate.o \
65    SLIP_matrix_check.o \
66    SLIP_matrix_copy.o \
67    SLIP_matrix_free.o \
68    SLIP_matrix_nnz.o \
69    slip_permute_b.o \
70    slip_permute_x.o \
71    slip_reach.o \
72    slip_ref_triangular_solve.o \
73    slip_sparse_collapse.o \
74    slip_sparse_realloc.o \
75    tcov_malloc_test.o
76
77$(CS): ../Include/SLIP_LU.h ../Source/slip_internal.h tcov_malloc_test.h ../Demo/demos.h
78
79.PRECIOUS: SLIP_%.c slip_%.c SLIPLU.c demos.c
80
81SLIP_%.c:
82	- ln -s ../Source/$@
83
84slip_%.c:
85	- ln -s ../Source/$@
86
87SLIPLU.c:
88	- ln -s ../Demo/$@
89
90demos.c:
91	- ln -s ../Demo/$@
92
93test: $(CS) tcov_test.c demos.c
94	$(CC) $(LDFLAGS) tcov_test.c demos.c $(CFLAGS) -o tcov_test $(CS) $(LDLIBS)
95
96SLIPLU: $(CS) SLIPLU.c demos.c
97	$(CC) $(LDFLAGS) SLIPLU.c demos.c $(CFLAGS) -o SLIPLU $(CS) $(LDLIBS)
98
99# run all statement coverage tests
100runtests: all
101	- ./SLIPLU p 2 q 0
102	- ./SLIPLU p 3 q 1 o 1
103	- ./SLIPLU p 4 q 2 o 1 f ../ExampleMats/test_mat.txt ../ExampleMats/test_rhs.txt
104	- ./SLIPLU p 5
105	- ./tcov_test
106	- ./tcov_test 0 1 1
107
108# To run with valgrind:
109V = valgrind #--leak-check=full
110
111# run all statement coverage tests but with valgrind
112vtests: all
113	- $(V) ./SLIPLU p 2 q 0
114	- $(V) ./SLIPLU p 3 q 1 o 1
115	- $(V) ./SLIPLU p 4 q 2 o 1 f ../ExampleMats/test_mat.txt ../ExampleMats/test_rhs.txt
116	- $(V) ./SLIPLU p 5
117	- $(V) ./tcov_test
118	- $(V) ./tcov_test 0 1 1
119
120# remove all files not in the original distribution, including symbolic links
121clean:
122	- $(RM) *.o *.bbg *.da *.gcov *.gcda *gcno
123	- $(RM) tcov_test SLIPLU *.out *.a cov.sort out
124	- $(RM) -r SLIP_*.c slip_*.c *.dSYM SLIPLU.c demos.c
125
126purge: distclean
127
128distclean: clean
129
130