| 1 | CFA = cfa
|
|---|
| 2 | DEPFLAGS = -MMD -MP
|
|---|
| 3 | CFLAGS = -O2
|
|---|
| 4 | ifdef N
|
|---|
| 5 | CFLAGS += -DN=$(N)
|
|---|
| 6 | endif
|
|---|
| 7 | CXXFLAGS = $(CFLAGS) --std=c++14
|
|---|
| 8 |
|
|---|
| 9 | .PHONY: all clean distclean run-c run-cpp run-cfa run
|
|---|
| 10 |
|
|---|
| 11 | all: c-bench cpp-bench cfa-bench cpp-vbench
|
|---|
| 12 |
|
|---|
| 13 | # rewrite object generation to auto-determine deps
|
|---|
| 14 | COMPILE.c = $(CC) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS)
|
|---|
| 15 | COMPILE.cpp = $(CXX) $(DEPFLAGS) $(CXXFLAGS) $(CPPFLAGS)
|
|---|
| 16 | COMPILE.cfa = $(CFA) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS)
|
|---|
| 17 |
|
|---|
| 18 | c-%.o : c-%.c
|
|---|
| 19 | c-%.o : c-%.c c-%.d
|
|---|
| 20 | $(COMPILE.c) $(OUTPUT_OPTION) -c $<
|
|---|
| 21 |
|
|---|
| 22 | cpp-%.o : cpp-%.cpp
|
|---|
| 23 | cpp-%.o : cpp-%.cpp cpp-%.d
|
|---|
| 24 | $(COMPILE.cpp) $(OUTPUT_OPTION) -c $<
|
|---|
| 25 |
|
|---|
| 26 | cfa-%.o : cfa-%.c
|
|---|
| 27 | cfa-%.o : cfa-%.c cfa-%.d
|
|---|
| 28 | $(COMPILE.cfa) $(OUTPUT_OPTION) -c $<
|
|---|
| 29 |
|
|---|
| 30 | COBJS = c-stack.o c-pair.o c-print.o
|
|---|
| 31 | CPPOBJS =
|
|---|
| 32 | CPPVOBJS = cpp-vstack.o
|
|---|
| 33 | CFAOBJS = cfa-stack.o cfa-pair.o cfa-print.o
|
|---|
| 34 |
|
|---|
| 35 | CFILES = c-bench.c bench.h $(COBJS:.o=.h) $(COBJS:.o=.c)
|
|---|
| 36 | CPPFILES = cpp-bench.cpp bench.hpp cpp-stack.hpp cpp-print.hpp
|
|---|
| 37 | CPPVFILES = cpp-vbench.cpp bench.hpp object.hpp $(CPPVOBJS:.o=.hpp) $(CPPVOBJS:.o=.cpp) cpp-vprint.hpp
|
|---|
| 38 | CFAFILES = cfa-bench.c bench.h cfa-stack.h cfa-print.h cfa-stack.c cfa-print.c
|
|---|
| 39 |
|
|---|
| 40 | c-bench: c-bench.c c-bench.d $(COBJS)
|
|---|
| 41 | $(COMPILE.c) -o $@ $< $(COBJS) $(LDFLAGS)
|
|---|
| 42 |
|
|---|
| 43 | cpp-bench: cpp-bench.cpp cpp-bench.d $(CPPOBJS)
|
|---|
| 44 | $(COMPILE.cpp) -o $@ $< $(CPPOBJS) $(LDFLAGS)
|
|---|
| 45 |
|
|---|
| 46 | cpp-vbench: cpp-vbench.cpp cpp-vbench.d $(CPPVOBJS)
|
|---|
| 47 | $(COMPILE.cpp) -o $@ $< $(CPPVOBJS) $(LDFLAGS)
|
|---|
| 48 |
|
|---|
| 49 | cfa-bench: cfa-bench.c cfa-bench.d $(CFAOBJS)
|
|---|
| 50 | $(COMPILE.cfa) -o $@ $< $(CFAOBJS) $(LDFLAGS)
|
|---|
| 51 |
|
|---|
| 52 | clean:
|
|---|
| 53 | -rm $(COBJS) c-bench
|
|---|
| 54 | -rm $(CPPOBJS) cpp-bench
|
|---|
| 55 | -rm $(CPPVOBJS) cpp-vbench
|
|---|
| 56 | -rm $(CFAOBJS) cfa-bench
|
|---|
| 57 |
|
|---|
| 58 | distclean: clean
|
|---|
| 59 | -rm $(COBJS:.o=.d) c-bench.d
|
|---|
| 60 | -rm $(CPPOBJS:.o=.d) cpp-bench.d
|
|---|
| 61 | -rm $(CPPVOBJS:.o=.d) cpp-vbench.d
|
|---|
| 62 | -rm $(CFAOBJS:.o=.d) cfa-bench.d
|
|---|
| 63 |
|
|---|
| 64 | run-c: c-bench
|
|---|
| 65 | @echo
|
|---|
| 66 | @echo '## C ##'
|
|---|
| 67 | @/usr/bin/time -f 'max_memory:\t%M kilobytes' ./c-bench
|
|---|
| 68 | @printf 'source_size:\t%8d lines\n' `cat $(CFILES) | wc -l`
|
|---|
| 69 | @printf 'redundant_type_annotations:%8d count\n' `cat $(CFILES) | fgrep '/***/' -c`
|
|---|
| 70 | @printf 'binary_size:\t%8d bytes\n' `stat -c %s c-bench`
|
|---|
| 71 |
|
|---|
| 72 | run-cfa: cfa-bench
|
|---|
| 73 | @echo
|
|---|
| 74 | @echo '## Cforall ##'
|
|---|
| 75 | @/usr/bin/time -f 'max_memory:\t %M kilobytes' ./cfa-bench
|
|---|
| 76 | @printf 'source_size:\t%8d lines\n' `cat $(CFAFILES) | wc -l`
|
|---|
| 77 | @printf 'redundant_type_annotations:%8d count\n' `cat $(CFAFILES) | fgrep '/***/' -c`
|
|---|
| 78 | @printf 'binary_size:\t%8d bytes\n' `stat -c %s cfa-bench`
|
|---|
| 79 |
|
|---|
| 80 | run-cpp: cpp-bench
|
|---|
| 81 | @echo
|
|---|
| 82 | @echo '## C++ ##'
|
|---|
| 83 | @/usr/bin/time -f 'max_memory:\t %M kilobytes' ./cpp-bench
|
|---|
| 84 | @printf 'source_size:\t%8d lines\n' `cat $(CPPFILES) | wc -l`
|
|---|
| 85 | @printf 'redundant_type_annotations:%8d count\n' `cat $(CPPFILES) | fgrep '/***/' -c`
|
|---|
| 86 | @printf 'binary_size:\t%8d bytes\n' `stat -c %s cpp-bench`
|
|---|
| 87 |
|
|---|
| 88 | run-cppv: cpp-vbench
|
|---|
| 89 | @echo
|
|---|
| 90 | @echo '## C++ virtual ##'
|
|---|
| 91 | @/usr/bin/time -f 'max_memory:\t%M kilobytes' ./cpp-vbench
|
|---|
| 92 | @printf 'source_size:\t%8d lines\n' `cat $(CPPVFILES) | wc -l`
|
|---|
| 93 | @printf 'redundant_type_annotations:%8d count\n' `cat $(CPPVFILES) | fgrep '/***/' -c`
|
|---|
| 94 | @printf 'binary_size:\t%8d bytes\n' `stat -c %s cpp-vbench`
|
|---|
| 95 |
|
|---|
| 96 | run: run-c run-cfa run-cpp run-cppv
|
|---|
| 97 |
|
|---|
| 98 | # so make doesn't fail without dependency files
|
|---|
| 99 | %.d: ;
|
|---|
| 100 |
|
|---|
| 101 | # so make won't delete dependency files
|
|---|
| 102 | .PRECIOUS: %.d
|
|---|
| 103 |
|
|---|
| 104 | # include dependency files
|
|---|
| 105 | -include: $(COBJS:.o=.d)
|
|---|
| 106 | -include: $(CPPOBJS:.o=.d)
|
|---|
| 107 | -include: $(CFAOBJS:.o=.d)
|
|---|
| 108 | -include: c-bench.d
|
|---|
| 109 | -include: cpp-bench.d
|
|---|
| 110 | -include: cfa-bench.d
|
|---|