diff options
Diffstat (limited to 'src/Makefile')
| -rw-r--r-- | src/Makefile | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/src/Makefile b/src/Makefile index 7be2382..5463c86 100644 --- a/src/Makefile +++ b/src/Makefile | |||
| @@ -2,25 +2,40 @@ CC = gcc | |||
| 2 | SHELL := /usr/bin/env | 2 | SHELL := /usr/bin/env |
| 3 | .SHELLFLAGS := -S bash -c | 3 | .SHELLFLAGS := -S bash -c |
| 4 | 4 | ||
| 5 | # I need to get better at makefiles so I can write this in a way that isn't absolutely insane/stupid | 5 | CFLAGS := -std=c2x $$(pkg-config --cflags libsodium) |
| 6 | # RELEASE_CFLAGS := -O3 -fipa-pta -fipa-cp -fuse-linker-plugin -flto=auto | 6 | DEBUG_CFLAGS := -Wall -Wextra -Wpedantic -fanalyzer -Wanalyzer-too-complex -ggdb -g3 -O0 |
| 7 | # RELEASE_LDFLAGS := -fuse-linker-plugin -flto=auto | 7 | RELEASE_CFLAGS := -O3 -fipa-pta -fipa-cp -fuse-linker-plugin -flto=auto |
| 8 | 8 | ||
| 9 | CFLAGS = -std=c2x -Wall -Wextra -Wpedantic -pedantic-errors -fanalyzer -Wanalyzer-too-complex -ggdb -g3 -O0 | 9 | DEFS := -D_GNU_SOURCE=1 |
| 10 | DEBUG_DEFS := -DDEBUG=1 | ||
| 11 | RELEASE_DEFS := -DRELEASE=1 | ||
| 10 | 12 | ||
| 11 | CFLAGS += $$(pkg-config --cflags libsodium) | 13 | LDLIBS := $$(pkg-config --libs-only-l libsodium) |
| 12 | LDLIBS += $$(pkg-config --libs-only-l libsodium) | 14 | |
| 13 | LDFLAGS += $$(pkg-config --libs-only-L libsodium) | 15 | LDFLAGS := $$(pkg-config --libs-only-L libsodium) |
| 16 | RELEASE_LDFLAGS := -fuse-linker-plugin -flto=auto | ||
| 14 | 17 | ||
| 15 | SOURCES := $(wildcard *.c) | 18 | SOURCES := $(wildcard *.c) |
| 16 | TIMESTAMP_DIR := .timestamps | 19 | TIMESTAMP_DIR := .timestamps |
| 17 | TIMESTAMPS := $(patsubst %.c,$(TIMESTAMP_DIR)/%.t,$(SOURCES)) | 20 | TIMESTAMPS := $(patsubst %.c,$(TIMESTAMP_DIR)/%.t,$(SOURCES)) |
| 18 | 21 | ||
| 19 | .PHONY: all c clean v val t test | 22 | .PHONY: debug release c clean v val t test test |
| 20 | .DELETE_ON_ERROR: | 23 | .DELETE_ON_ERROR: |
| 21 | .ONESHELL: | 24 | .ONESHELL: |
| 22 | 25 | ||
| 23 | all: main | 26 | tests debug: CFLAGS += $(DEBUG_CFLAGS) |
| 27 | tests debug: DEFS += $(DEBUG_DEFS) | ||
| 28 | debug: main | ||
| 29 | |||
| 30 | release: CFLAGS += $(RELEASE_CFLAGS) | ||
| 31 | release: LDFLAGS += $(RELEASE_LDFLAGS) | ||
| 32 | release: DEFS += $(RELEASE_DEFS) | ||
| 33 | release: main | ||
| 34 | |||
| 35 | clay.h: | ||
| 36 | cd .. | ||
| 37 | git submodule update --init --recursive | ||
| 38 | cp -fl clay/clay.h src/ | ||
| 24 | 39 | ||
| 25 | $(TIMESTAMP_DIR): | 40 | $(TIMESTAMP_DIR): |
| 26 | mkdir -p $(TIMESTAMP_DIR) | 41 | mkdir -p $(TIMESTAMP_DIR) |
| @@ -28,8 +43,9 @@ $(TIMESTAMP_DIR): | |||
| 28 | $(TIMESTAMPS): $(TIMESTAMP_DIR)/%.t: %.c | $(TIMESTAMP_DIR) | 43 | $(TIMESTAMPS): $(TIMESTAMP_DIR)/%.t: %.c | $(TIMESTAMP_DIR) |
| 29 | touch $@ | 44 | touch $@ |
| 30 | 45 | ||
| 46 | main: clay.h | ||
| 31 | main tests: %: %.c $(TIMESTAMPS) | 47 | main tests: %: %.c $(TIMESTAMPS) |
| 32 | $(CC) -D_GNU_SOURCE=1 $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@ | 48 | $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@ |
| 33 | 49 | ||
| 34 | 50 | ||
| 35 | # Phony rules | 51 | # Phony rules |
