@@ -11,33 +11,36 @@ SRCS := $(shell find $(SRC_DIRS) -not -name 'main.c' -name '*.c')
1111INC_DIRS  := $(shell  find $(SRC_DIRS )  -type d) 
1212INC_FLAGS  := $(addprefix  -I,$(INC_DIRS ) ) 
1313LIBS  := -lpthread -lm
14+ 
1415WARNING_FLAGS  := -pedantic -Wall -Wextra -Wno-missing-declarations -Wstrict-prototypes -Wpointer-arith -Wwrite-strings -Wbad-function-cast -Wformat-security -Wno-discarded-qualifiers -Wno-implicit-fallthrough -Wformat-nonliteral -Wmissing-format-attribute -Wno-unused-variable -Wno-unused-parameter -Wno-unused-function -Wno-ignored-qualifiers -Wno-strict-prototypes -Wno-bad-function-cast -Wno-pointer-sign
1516HARDENING_FLAGS  := -fno-builtin -fvisibility=hidden -fstack-protector -fno-omit-frame-pointer -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-common -ffunction-sections -fdata-sections
1617PERFORMANCE_FLAGS  := -fPIC -fPIE -ffast-math -fassociative-math -fno-signed-zeros -fno-trapping-math -fno-exceptions
1718
18- #  Flags
19- #  Debug
20- #  CFLAGS := $(INC_FLAGS) -g3 -O0 -ggdb $(WARNING_FLAGS)
19+ #  Build type (debug or release)
20+ BUILD_TYPE  ?= release
2121
22- #  Release
23- CFLAGS  := $(INC_FLAGS )  -g0 -O2 $(WARNING_FLAGS )  $(HARDENING_FLAGS )  $(PERFORMANCE_FLAGS ) 
22+ ifeq  ($(BUILD_TYPE ) ,debug)
23+   CFLAGS  := $(INC_FLAGS )  -g3 -O0 -ggdb $(WARNING_FLAGS ) 
24+ else 
25+   CFLAGS  := $(INC_FLAGS )  -g0 -O2 $(WARNING_FLAGS )  $(HARDENING_FLAGS )  $(PERFORMANCE_FLAGS ) 
26+ endif 
2427
2528#  Rules
2629all : $(DEPLOY_DIR ) /$(TARGET_EXEC ) 
2730
2831$(DEPLOY_DIR ) /$(TARGET_EXEC ) $(SRCS )  $(SRC_DIRS ) /main.c | $(DEPLOY_DIR ) 
2932	$(CC )  $(SRCS )  $(SRC_DIRS ) /main.c $(CFLAGS )  $(LIBS )  -o $@ 
30- 	$(STRIP )  -R .comment -R  * .note *  -s -x -X  -v $@ 
33+ 	$(STRIP )  --strip-all  -v $@ 
3134
3235$(DEPLOY_DIR ) 
3336	mkdir -p $(DEPLOY_DIR ) 
3437
3538clean :
36- 	rm  -f $(DEPLOY_DIR ) /$(TARGET_EXEC )  $(DEPLOY_DIR ) /stats_* .log $(DEPLOY_DIR ) /stats_* .raw wdt.log
39+ 	$( RM ) $(DEPLOY_DIR ) /$(TARGET_EXEC )  $(DEPLOY_DIR ) /stats_* .log $(DEPLOY_DIR ) /stats_* .raw wdt.log
3740
3841install : $(DEPLOY_DIR ) /$(TARGET_EXEC ) 
39- 	cp  $(DEPLOY_DIR ) /$(TARGET_EXEC )  ~ /
40- 	cp  run.sh ~ /
41- 	chmod +x ~ $(TARGET_EXEC )  run.sh
42+ 	$( CP ) $(DEPLOY_DIR ) /$(TARGET_EXEC )  ~ /
43+ 	$( CP ) ~ /
44+ 	chmod +x ~ / $(TARGET_EXEC )  ~ / run.sh
4245
4346.PHONY : all clean install
0 commit comments