hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile50
1 files changed, 50 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..0a5bc8d
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,50 @@
+CC := clang
+STD := c17
+
+DEBUG ?= 1
+SANITIZE ?= 1
+
+CFLAGS := -std=$(STD) \
+ -Wall \
+ -Wextra \
+ -Wshadow \
+ -Wpedantic \
+ -Wconversion \
+ -Wstrict-prototypes \
+ -Wsign-conversion \
+ -Wmissing-prototypes
+
+ifeq ($(DEBUG),1)
+CFLAGS += -g -fno-omit-frame-pointer
+else
+CFLAGS += -O2
+endif
+
+ifeq ($(SANITIZE),1)
+CFLAGS += -fsanitize=address,undefined
+LDFLAGS += -fsanitize=address,undefined
+endif
+
+TARGET := todo
+SRC := todo.c
+
+PREFIX ?= /usr/local
+bindir := $(DESTDIR)$(PREFIX)/bin
+
+all: $(TARGET)
+
+$(TARGET): $(SRC)
+ $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
+
+clean:
+ rm -rf $(TARGET) $(TARGET).dSYM
+
+install:
+ make DEBUG=0 SANITIZE=0 clean all
+ install -d $(bindir)
+ install -m 755 $(TARGET) $(bindir)/$(TARGET)
+
+uninstall:
+ rm -f $(bindir)/$(TARGET)
+
+.PHONY: all clean install uninstall