aboutsummaryrefslogtreecommitdiff
path: root/makefile
diff options
context:
space:
mode:
Diffstat (limited to 'makefile')
-rw-r--r--makefile13
1 files changed, 9 insertions, 4 deletions
diff --git a/makefile b/makefile
index 0431d3c..d870433 100644
--- a/makefile
+++ b/makefile
@@ -7,10 +7,10 @@ TG = ctags
BUILD = ${CURDIR}/build
SRC = ${CURDIR}/src
INC = ${CURDIR}/inc
-SRCS = $(wildcard $(SRC)/*.c)
+SRCS = $(wildcard $(SRC)/*.c) $(SRC)/cmdline.c
OBJS = $(patsubst $(SRC)/%.c, $(BUILD)/%.o, $(SRCS))
-CFLAGS_DEBUG = -fsanitize=leak
+CFLAGS_DEBUG = -fsanitize=address,leak,undefined -g -O0
CFLAGS_WARNINGS = -Wall -Wextra -Wshadow -Wpointer-arith -Wwrite-strings -Wredundant-decls -Wnested-externs -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual -Wswitch-default -Wswitch-enum -Wunreachable-code -Wundef -Wold-style-definition -pedantic -Wno-switch-enum
CFLAGS = $(CFLAGS_WARNINGS) -std=c99 -Ofast -I$(INC)
@@ -22,7 +22,7 @@ ifeq ($(PREFIX),)
PREFIX := /usr/local
endif
-all: genopts compile
+all: compile
full: all sync
@@ -41,7 +41,12 @@ sync: # Ugly hack
@$(MAKE) $(BUILD)/bloc --always-make --dry-run | grep -wE 'gcc|g\+\+' | grep -w '\-c' | jq -nR '[inputs|{directory:".", command:., file: match(" [^ ]+$$").string[1:]}]' >compile_commands.json
@$(TG) -R --exclude=.git --exclude=build .
-$(BUILD)/%.o: $(SRC)/%.c
+$(SRC)/cmdline.c:
+ @gengetopt -i ${CURDIR}/options.ggo -G --output-dir=$(BUILD)
+ @printf '%s\n%s\n%s\n%s' '#pragma GCC diagnostic push' '#pragma GCC diagnostic ignored "-Wcast-qual"' "$$(cat $(BUILD)/cmdline.c)" '#pragma GCC diagnostic pop' >$(SRC)/cmdline.c
+ @cp $(BUILD)/cmdline.h $(SRC)/cmdline.h
+
+$(BUILD)/%.o: $(SRC)/%.c | $(SRC)/cmdline.c
@$(CC) -c -o $@ $(CFLAGS) $<
$(BUILD)/bloc: $(OBJS)