diff --git a/Makefile b/Makefile index b0e47ba..870955c 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,36 @@ .PHONY: all all: opt +.PHONY: opt opt: $(MAKE) -C src opt $(MAKE) -C Z80/src opt $(MAKE) -C Z80/test opt +.PHONY: debug debug: $(MAKE) -C src debug $(MAKE) -C Z80/src debug $(MAKE) -C Z80/test debug +.PHONY: coverage coverage: $(MAKE) -C src coverage $(MAKE) -C Z80/src coverage $(MAKE) -C Z80/test coverage +.PHONY: profile +profile: + $(MAKE) -C src profile + $(MAKE) -C Z80/src profile + $(MAKE) -C Z80/test profile + +.PHONY: profiled +profiled: + $(MAKE) -C src profiled + $(MAKE) -C Z80/src profiled + $(MAKE) -C Z80/test profiled + .PHONY: clean clean: $(MAKE) -C src clean diff --git a/Z80/src/Makefile b/Z80/src/Makefile index e5b99be..773003f 100644 --- a/Z80/src/Makefile +++ b/Z80/src/Makefile @@ -4,4 +4,5 @@ CXXFLAGS = -I ../inc -I ../../inc CXXFILES = Disassembler.cpp Profiler.cpp Z80.cpp +include ../../compile.mk include ../../lib_build.mk diff --git a/compile.mk b/compile.mk new file mode 100644 index 0000000..69d2ff6 --- /dev/null +++ b/compile.mk @@ -0,0 +1,9 @@ +CXXFLAGS += -g -Wall -std=c++14 -pipe + +#CXXFLAGS_OPT = -DNDEBUG -march=native -Ofast -flto +CXXFLAGS_OPT = -DNDEBUG -march=native -Ofast +CXXFLAGS_DEBUG = -D_DEBUG +CXXFLAGS_COVERAGE = $(CXXFLAGS_DEBUG) -fprofile-arcs -ftest-coverage + +CXXFLAGS_PROFILE = $(CXXFLAGS_OPT) -fprofile-generate +CXXFLAGS_PROFILED = $(CXXFLAGS_OPT) -fprofile-use diff --git a/exe_build.mk b/exe_build.mk index 7cc5125..3bdff03 100644 --- a/exe_build.mk +++ b/exe_build.mk @@ -1,5 +1,3 @@ -CXXFLAGS += -g -Wall -std=c++14 -pipe - CXXOBJECTS = $(CXXFILES:.cpp=.o) SOURCES = $(CXXFILES) @@ -7,22 +5,25 @@ OBJECTS = $(CXXOBJECTS) PCH = stdafx.h.gch -.PHONY: all all: opt -.PHONY: opt -opt: CXXFLAGS += -DNDEBUG -march=native -O3 -flto +opt: CXXFLAGS += $(CXXFLAGS_OPT) opt: $(EXE) -.PHONY: debug -debug: CXXFLAGS += -D_DEBUG +debug: CXXFLAGS += $(CXXFLAGS_DEBUG) debug: $(EXE) -.PHONY: coverage -coverage: CXXFLAGS += -D_DEBUG -fprofile-arcs -ftest-coverage +coverage: CXXFLAGS += $(CXXFLAGS_COVERAGE) coverage: LDFLAGS += -lgcov coverage: $(EXE) +profile: CXXFLAGS += $(CXXFLAGS_PROFILE) +profile: LDFLAGS += -lgcov +profile: $(EXE) + +profiled: CXXFLAGS += $(CXXFLAGS_PROFILED) +profiled: $(EXE) + $(PCH): stdafx.h $(CXX) $(CXXFLAGS) -x c++-header $< diff --git a/lib_build.mk b/lib_build.mk index 8806485..ef1978c 100644 --- a/lib_build.mk +++ b/lib_build.mk @@ -1,5 +1,3 @@ -CXXFLAGS += -g -Wall -std=c++14 -pipe - CXXOBJECTS = $(CXXFILES:.cpp=.o) SOURCES = $(CXXFILES) @@ -7,21 +5,23 @@ OBJECTS = $(CXXOBJECTS) PCH = stdafx.h.gch -.PHONY: all all: opt -.PHONY: opt -opt: CXXFLAGS += -DNDEBUG -march=native -O3 -flto +opt: CXXFLAGS += $(CXXFLAGS_OPT) opt: $(LIB) -.PHONY: debug -debug: CXXFLAGS += -D_DEBUG +debug: CXXFLAGS += $(CXXFLAGS_DEBUG) debug: $(LIB) -.PHONY: coverage -coverage: CXXFLAGS += -D_DEBUG -fprofile-arcs -ftest-coverage +coverage: CXXFLAGS += $(CXXFLAGS_COVERAGE) coverage: $(LIB) +profile: CXXFLAGS += $(CXXFLAGS_PROFILE) +profile: $(LIB) + +profiled: CXXFLAGS += $(CXXFLAGS_PROFILED) +profiled: $(LIB) + $(PCH): stdafx.h $(CXX) $(CXXFLAGS) -x c++-header $< diff --git a/src/Makefile b/src/Makefile index a6f8230..09eb00d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -4,4 +4,5 @@ CXXFLAGS = -I ../inc CXXFILES = Bus.cpp EventArgs.cpp InputOutput.cpp IntelProcessor.cpp Memory.cpp Processor.cpp +include ../compile.mk include ../lib_build.mk