15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Makefile for the LCOV example program. 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Make targets: 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# - example: compile the example program 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# - output: run test cases on example program and create HTML output 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# - clean: clean up directory 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CC := gcc 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CFLAGS := -Wall -I. -fprofile-arcs -ftest-coverage 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LCOV := ../bin/lcov 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GENHTML := ../bin/genhtml 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GENDESC := ../bin/gendesc 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GENPNG := ../bin/genpng 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Depending on the presence of the GD.pm perl module, we can use the 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# special option '--frames' for genhtml 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)USE_GENPNG := $(shell $(GENPNG) --help >/dev/null 2>/dev/null; echo $$?) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ifeq ($(USE_GENPNG),0) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRAMES := --frames 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRAMES := 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endif 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles).PHONY: clean output test_noargs test_2_to_2000 test_overflow 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)all: output 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)example: example.o iterate.o gauss.o 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $(CC) example.o iterate.o gauss.o -o example -lgcov 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)example.o: example.c iterate.h gauss.h 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $(CC) $(CFLAGS) -c example.c -o example.o 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)iterate.o: methods/iterate.c iterate.h 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $(CC) $(CFLAGS) -c methods/iterate.c -o iterate.o 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gauss.o: methods/gauss.c gauss.h 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $(CC) $(CFLAGS) -c methods/gauss.c -o gauss.o 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)output: example descriptions test_noargs test_2_to_2000 test_overflow 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '*' 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '* Generating HTML output' 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '*' 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $(GENHTML) trace_noargs.info trace_args.info trace_overflow.info \ 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --output-directory output --title "Basic example" \ 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --show-details --description-file descriptions $(FRAMES) \ 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --legend 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '*' 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '* See '`pwd`/output/index.html 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '*' 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)descriptions: descriptions.txt 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $(GENDESC) descriptions.txt -o descriptions 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)all_tests: example test_noargs test_2_to_2000 test_overflow 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test_noargs: 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '*' 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '* Test case 1: running ./example without parameters' 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '*' 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $(LCOV) --zerocounters --directory . 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ./example 733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) $(LCOV) --capture --directory . --output-file trace_noargs.info --test-name test_noargs --no-external 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test_2_to_2000: 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '*' 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '* Test case 2: running ./example 2 2000' 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '*' 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $(LCOV) --zerocounters --directory . 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ./example 2 2000 833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) $(LCOV) --capture --directory . --output-file trace_args.info --test-name test_2_to_2000 --no-external 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test_overflow: 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '*' 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '* Test case 3: running ./example 0 100000 (causes an overflow)' 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo '*' 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @echo 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $(LCOV) --zerocounters --directory . 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ./example 0 100000 || true 933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) $(LCOV) --capture --directory . --output-file trace_overflow.info --test-name "test_overflow" --no-external 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)clean: 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rm -rf *.o *.bb *.bbg *.da *.gcno *.gcda *.info output example \ 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) descriptions 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 99