Makefile 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. WARNINGS := -Wall -pedantic \
  2. -pedantic-errors -Wextra -Wcast-align \
  3. -Wcast-qual -Wchar-subscripts -Wcomment -Wconversion \
  4. -Wdisabled-optimization \
  5. -Werror -Wfloat-equal -Wformat -Wformat=2 \
  6. -Wformat-nonliteral -Wformat-security \
  7. -Wformat-y2k \
  8. -Wimport -Winit-self -Winline \
  9. -Winvalid-pch \
  10. -Wunsafe-loop-optimizations -Wno-long-long -Wmissing-braces \
  11. -Wmissing-field-initializers -Wmissing-format-attribute \
  12. -Wmissing-include-dirs -Wmissing-noreturn -Wmissing-declarations \
  13. -Wpacked -Wparentheses -Wpointer-arith \
  14. -Wredundant-decls -Wreturn-type \
  15. -Wsequence-point -Wshadow -Wsign-compare -Wstack-protector \
  16. -Wstrict-aliasing -Wstrict-aliasing=2 -Wswitch -Wswitch-default \
  17. -Wswitch-enum -Wtrigraphs -Wuninitialized \
  18. -Wunknown-pragmas -Wunreachable-code -Wunused \
  19. -Wunused-function -Wunused-label -Wunused-parameter \
  20. -Wunused-value -Wunused-variable -Wvariadic-macros \
  21. -Wvolatile-register-var -Wwrite-strings
  22. CWARNINGS := $(WARNINGS) -Wimplicit
  23. CPPWARNINGS := $(WARNINGS)
  24. CFLAGS := $(CWARNINGS)
  25. CPPFLAGS := --std=c++11 $(CPPWARNINGS)
  26. LDFLAGS :=
  27. HDRFILES := vector.hpp
  28. SRCFILES :=
  29. DEPFILES := $(patsubst %.cpp,.%.d,$(SRCFILES))
  30. OBJFILES := $(patsubst %.cpp,%.o,$(SRCFILES))
  31. TSTSUITE := vector.t.h
  32. TSTFILES := $(patsubst %.t.h,%.cpp,$(TSTSUITE))
  33. TSTDRIVR := $(patsubst %.cpp,%,$(TSTFILES))
  34. BINARY :=
  35. ALLFILES := $(SRCFILES) $(HDRFILES) $(AUXFILES)
  36. .PHONY: all clean debug release check coverage
  37. all: $(BINARY) $(LNBINARY)
  38. debug: CFLAGS += -DDEBUG -g
  39. debug: CPPFLAGS += -DDEBUG -g
  40. debug: all
  41. release: CFLAGS += -O2
  42. release: CPPFLAGS += -O2
  43. release: all
  44. coverage: CFLAGS += -fprofile-arcs -ftest-coverage
  45. coverage: CPPFLAGS += -fprofile-arcs -ftest-coverage
  46. coverage: check
  47. clean: check-clean
  48. @$(RM) $(BINARY) $(wildcard $(OBJFILES)) $(LNBINARY)
  49. check-clean:
  50. @$(RM) $(TSTDRIVR) $(TSTFILES)
  51. check: check-clean $(TSTDRIVR)
  52. .h.cpp:
  53. @cxxtestgen --error-printer $< -o $@
  54. .cpp.o: Makefile
  55. $(CXX) $(CPPFLAGS) -MMD -MP -MF $(patsubst %.cpp,.%.d,$<) -c $< -o $@
  56. $(BINARY): $(OBJFILES)
  57. $(CXX) $(LDFLAGS) -o $@ $(OBJFILES)
  58. $(TSTDRIVR): $(TSTFILES)
  59. @$(CXX) $(CPPFLAGS) -I$(CXXTEST) -w $@.cpp -o $@
  60. @echo Running TestDriver: ./$@
  61. @./$@