1CXXFLAGS = -Wall -Werror -pedantic -O3 2LIBMATRIX = libmatrix.a 3LIBSRCS = mat.cc program.cc log.cc util.cc shader-source.cc 4LIBOBJS = $(LIBSRCS:.cc=.o) 5TESTDIR = test 6LIBMATRIX_TESTS = $(TESTDIR)/libmatrix_test 7TESTSRCS = $(TESTDIR)/options.cc \ 8 $(TESTDIR)/const_vec_test.cc \ 9 $(TESTDIR)/inverse_test.cc \ 10 $(TESTDIR)/transpose_test.cc \ 11 $(TESTDIR)/shader_source_test.cc \ 12 $(TESTDIR)/util_split_test.cc \ 13 $(TESTDIR)/libmatrix_test.cc 14TESTOBJS = $(TESTSRCS:.cc=.o) 15 16# Make sure to build both the library targets and the tests, and generate 17# a make failure if the tests don't pass. 18default: $(LIBMATRIX) $(LIBMATRIX_TESTS) run_tests 19 20# Main library targets here. 21mat.o : mat.cc mat.h vec.h 22program.o: program.cc program.h mat.h vec.h 23log.o: log.cc log.h 24util.o: util.cc util.h 25shader-source.o: shader-source.cc shader-source.h mat.h vec.h util.h 26libmatrix.a : mat.o stack.h program.o log.o util.o shader-source.o 27 $(AR) -r $@ $(LIBOBJS) 28 29# Tests and execution targets here. 30$(TESTDIR)/options.o: $(TESTDIR)/options.cc $(TESTDIR)/libmatrix_test.h 31$(TESTDIR)/libmatrix_test.o: $(TESTDIR)/libmatrix_test.cc $(TESTDIR)/libmatrix_test.h $(TESTDIR)/inverse_test.h $(TESTDIR)/transpose_test.h 32$(TESTDIR)/const_vec_test.o: $(TESTDIR)/const_vec_test.cc $(TESTDIR)/const_vec_test.h $(TESTDIR)/libmatrix_test.h vec.h 33$(TESTDIR)/inverse_test.o: $(TESTDIR)/inverse_test.cc $(TESTDIR)/inverse_test.h $(TESTDIR)/libmatrix_test.h mat.h 34$(TESTDIR)/transpose_test.o: $(TESTDIR)/transpose_test.cc $(TESTDIR)/transpose_test.h $(TESTDIR)/libmatrix_test.h mat.h 35$(TESTDIR)/shader_source_test.o: $(TESTDIR)/shader_source_test.cc $(TESTDIR)/shader_source_test.h $(TESTDIR)/libmatrix_test.h shader-source.h 36$(TESTDIR)/util_split_test.o: $(TESTDIR)/util_split_test.cc $(TESTDIR)/util_split_test.h $(TESTDIR)/libmatrix_test.h util.h 37$(TESTDIR)/libmatrix_test: $(TESTOBJS) libmatrix.a 38 $(CXX) -o $@ $^ 39run_tests: $(LIBMATRIX_TESTS) 40 $(LIBMATRIX_TESTS) 41clean : 42 $(RM) $(LIBOBJS) $(TESTOBJS) $(LIBMATRIX) $(LIBMATRIX_TESTS) 43