Makefile 2.1 KB

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