blob: b04580778d1f450f064763f14dca22542b4a80da (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
CC = gcc
SHELL := /usr/bin/env
.SHELLFLAGS := -S bash -c
# I need to get better at makefiles so I can write this in a way that isn't absolutely insane/stupid
# RELEASE_CFLAGS := -O3 -fipa-pta -fipa-cp -fuse-linker-plugin -flto=auto
# RELEASE_LDFLAGS := -fuse-linker-plugin -flto=auto
CFLAGS = -std=c2x -Wall -Wextra -Wpedantic -pedantic-errors -fanalyzer -Wanalyzer-too-complex -ggdb -g3 -O0 $$(pkg-config --cflags libsodium)
LDLIBS += $$(pkg-config --libs-only-l libsodium)
LDFLAGS += $$(pkg-config --libs-only-L libsodium)
DEPFLAGS = -MT $@ -MMD -MP -MF $*.d
SOURCES := $(wildcard *.c)
OBJECTS := $(patsubst %.c,%.o,$(SOURCES))
DEPS := $(patsubst %.c,%.d,$(SOURCES))
COMPILE.c = $(CC) $(DEPFLAGS) $(CFLAGS) -c
.PHONY: all c clean val
.DELETE_ON_ERROR:
.ONESHELL:
all: main
main: $(OBJECTS)
%.o: %.c %.d
$(COMPILE.c) $<
$(DEPS):
include $(wildcard $(DEPS))
# Adopted from https://make.mad-scientist.net/papers/advanced-auto-dependency-generation/
c clean:
@-rm -rv main $(OBJECTS) $(DEPS) $(wildcard *.test*) $(wildcard *.enc)
val:
$(MAKE) all
valgrind --leak-check=yes ./main
|