From 0aaf0d8ba331acd9db7a7f255da84e113bbae2f5 Mon Sep 17 00:00:00 2001 From: Avril Date: Sun, 15 Nov 2020 00:29:30 +0000 Subject: [PATCH] update makefile --- Makefile | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 7d891b3..a8cd16f 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,16 @@ SRC=$(wildcard src/*.cpp) INCLUDE =include + _HX_FEAT?= -DFIXED_ROW_SIZE=24 -CXXFLAGS?= -pipe -O3 -march=native -CXXFLAGS+= -flto -felide-constructors -fgraphite -fno-strict-aliasing -fno-exceptions -fomit-frame-pointer -fmerge-all-constants -fmodulo-sched -funswitch-loops -fsplit-loops -CXXFLAGS+= -Wall -pedantic --std=gnu++20 $(addprefix -I,$(INCLUDE)) -LDFLAGS?= -O3 -flto -LDFLAGS+= -lfmt +CXXFLAGS_COMMON = -Wall -pedantic --std=gnu++20 $(addprefix -I,$(INCLUDE)) -felide-constructors -fno-strict-aliasing -fno-exceptions +LDFLAGS_COMMON = -lfmt + +CXXFLAGS_DEFAULT = -pipe -O3 -march=native -fgraphite -flto +CXXFLAGS_RELEASE = -fomit-frame-pointer -fmerge-all-constants -fmodulo-sched -funswitch-loops -fsplit-loops +LDFLAGS_DEFAULT = -O3 -flto + +CXXFLAGS_DEBUG = -DDEBUG -O0 -g PROJECT = hexview @@ -43,13 +47,19 @@ obj/%.o: %.cpp profile/%.o: %.cpp $(CXX) -c $< $(_HX_FEAT) $(CXXFLAGS) $(PROF_FLAGS) -o $@ $(LDFLAGS) $(PROF_FLAGS) +$(PROJECT)-release: CXXFLAGS?= $(CXXFLAGS_DEFAULT) +$(PROJECT)-release: LDFLAGS?= $(LDFLAGS_DEFAULT) +$(PROJECT)-release: CXXFLAGS+= $(CXXFLAGS_COMMON) +$(PROJECT)-release: CXXFLAGS+= $(CXXFLAGS_RELEASE) +$(PROJECT)-release: LDFLAGS := $(LDFLAGS_COMMON) $(LDFLAGS) $(PROJECT)-release: $(OBJ) $(CXX) $^ $(CXXFLAGS) -o $@ $(LDFLAGS) strip $@ -$(PROJECT)-debug: CXXFLAGS = -DDEBUG -O0 -g -Wall -pedantic --std=gnu++20 $(addprefix -I,$(INCLUDE)) -fno-exceptions -felide-constructors -$(PROJECT)-debug: LDFLAGS = -lfmt +$(PROJECT)-debug: CXXFLAGS += $(CXXFLAGS_COMMON) +$(PROJECT)-debug: CXXFLAGS += $(CXXFLAGS_DEBUG) +$(PROJECT)-debug: LDFLAGS += $(LDFLAGS_COMMON) $(PROJECT)-debug: $(OBJ) $(CXX) $^ $(CXXFLAGS) -o $@ $(LDFLAGS) @@ -68,11 +78,20 @@ pgo-profile: pgo-generate rm pgo-generate +pgo-use: CXXFLAGS?= $(CXXFLAGS_DEFAULT) +pgo-use: LDFLAGS?= $(LDFLAGS_DEFAULT) +pgo-use: CXXFLAGS+= $(CXXFLAGS_COMMON) +pgo-use: CXXFLAGS+= $(CXXFLAGS_RELEASE) +pgo-use: LDFLAGS := $(LDFLAGS_COMMON) -lgcov $(LDFLAGS) pgo-use: PROF_FLAGS = -fprofile-use -pgo-use: LDFLAGS+= -lgcov pgo-use: $(PGO_OBJ) $(CXX) $^ $(CXXFLAGS) $(PROF_FLAGS) -o $@ $(LDFLAGS) $(PROF_FLAGS) +$(PROJECT)-pgo: CXXFLAGS?= $(CXXFLAGS_DEFAULT) +$(PROJECT)-pgo: LDFLAGS?= $(LDFLAGS_DEFAULT) +$(PROJECT)-pgo: CXXFLAGS+= $(CXXFLAGS_COMMON) +$(PROJECT)-pgo: CXXFLAGS+= $(CXXFLAGS_RELEASE) +$(PROJECT)-pgo: LDFLAGS := $(LDFLAGS_COMMON) $(LDFLAGS) $(PROJECT)-pgo: | dirs pgo-profile find ./profile -name \*.o -exec rm {} + $(MAKE) pgo-use