diff options
author | mrfoxygmfr <mrfoxygmfr@sch9.ru> | 2025-05-22 20:14:21 +0300 |
---|---|---|
committer | mrfoxygmfr <mrfoxygmfr@sch9.ru> | 2025-05-22 20:14:21 +0300 |
commit | 067de7c721ad27d36500668dfb374fead08bc0d2 (patch) | |
tree | a4d7c23ab7982dc5a7ea897ee48a4db109787b50 | |
parent | ac6f8f6de98ab5fe672a47a37441b729150fe629 (diff) |
build: rebuild after any of param variables change
-rw-r--r-- | Makefile | 32 |
1 files changed, 25 insertions, 7 deletions
@@ -1,7 +1,9 @@ ifeq ($(LLVM),1) + LLVM = 1 CC = clang LD = ld.lld else + LLVM = 0 CC = gcc LD = ld endif @@ -16,15 +18,18 @@ CFLAGS = \ LDFLAGS = -pthread -lrt ifeq ($(DEBUG),1) + DEBUG = 1 CFLAGS += -g -fsanitize=address,leak,undefined else + DEBUG = 0 CFLAGS += -flto LDFLAGS += -flto endif ifeq ($(SECURITY),1) + SECURITY = 1 CFLAGS += \ - -fwrapv -fwrapv-pointer \ + -fwrapv \ -fno-strict-aliasing \ -fno-delete-null-pointer-checks \ -D_FORTIFY_SOURCE=2 \ @@ -41,14 +46,21 @@ ifeq ($(SECURITY),1) -fno-builtin-scwcpy -fno-builtin-wcsncat \ -fno-builtin-wcsncpy -fno-builtin-wmemcpy \ -fno-builtin-wmemmove -fno-builtin-wmemset \ - -Wclobbered \ -Warray-bounds \ -Wdiv-by-zero \ -Wshift-count-negative -Wshift-count-overflow \ -fstack-protector + ifeq ($(LLVM),0) + CFLAGS += -fwrapv-pointer \ + -Wclobbered + endif +else + SECURITY = 0 endif -.PHONY: all clean controller worker test analyze +ARGS = $(LLVM) $(DEBUG) $(SECURITY) + +.PHONY: all clean controller worker test analyze phony all: build/controller build/worker @@ -59,15 +71,21 @@ controller: build/controller worker: build/worker -build/%.o: %.c +build/%.o: %.c build/ARGS @mkdir -p $(@D) - @$(CC) $(CFLAGS) -c $^ -o $@ + @$(CC) $(CFLAGS) -c $(patsubst build/ARGS,,$^) -o $@ -build/%: %.c build/lib.o +build/%: %.c build/lib.o build/ARGS @mkdir -p $(@D) - @$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ + @$(CC) $(CFLAGS) $(LDFLAGS) $(patsubst build/ARGS,,$^) -o $@ build/lib.o: $(patsubst %.c,build/%.o,$(shell find lib -type f -name '*.c' -print)) @mkdir -p $(@D) @$(LD) -r $^ -o $@ +build/ARGS: phony + @mkdir -p $(@D) + @if [[ `cat build/ARGS 2>&1` != '$(ARGS)' ]]; then \ + echo -n $(ARGS) >build/ARGS; \ + echo hi; \ + fi |