diff options
| author | Jesper Jensen <jesper@slashwin.dk> | 2021-06-16 21:45:22 +0200 |
|---|---|---|
| committer | Jesper Jensen <jesper@slashwin.dk> | 2021-06-16 21:45:22 +0200 |
| commit | 8ded9142c1514ab04905e623247a84313a773fa7 (patch) | |
| tree | eafe9e97511d141d328f8a5566e2aef3dd860216 /Makefile | |
INITIAL COMMIT
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5e90569 --- /dev/null +++ b/Makefile @@ -0,0 +1,52 @@ +CC ?= gcc + +SRCDIR ?= src +GENDIR ?= gen +OBJDIR ?= obj + +LIBS = -lm +INCS = -Isrc/ -Igen/ -I. + +CFG = -std=gnu11 -fms-extensions -flto + +CFLAGS ?= -O3 -D_FORTIFY_SOURCE=2 +CFLAGS += -Wall + +SOURCES = $(shell find $(SRCDIR) -name "*.c") +DEPS_C = $(OBJS_C:%.o=%.d) +OBJS_C = $(SOURCES:%.c=$(OBJDIR)/%.o) + +FFGEN_SOURCES = $(wildcard ffgen/*.c) +FFGEN_DEPS_C = $(FFGEN_OBJS_C:%.o=%.d) +FFGEN_OBJS_C = $(FFGEN_SOURCES:%.c=$(OBJDIR)/%.o) + +.DEFAULT_GOAL := opz + +print-% : ; @echo $* = $($*) + +src/.clang_complete: Makefile + @(for i in $(filter-out -O% -DNDEBUG, $(CFG) $(CPPFLAGS) $(CFLAGS) $(INCS)); do echo "$$i"; done) > $@ + +opz: $(OBJS_C) + $(CC) $(CFG) $(CPPFLAGS) $(LDFLAGS) $(CFLAGS) -o $@ $(OBJS_C) $(LIBS) + +$(OBJDIR)/ffgen/ffgen: $(FFGEN_OBJS_C) + $(CC) $(CFG) $(CPPFLAGS) $(LDFLAGS) $(CFLAGS) -o $@ $^ + +$(GENDIR)/ffgen/opz.h: $(SRCDIR)/opz.ff $(OBJDIR)/ffgen/ffgen + @mkdir -p $(dir $@) + $(OBJDIR)/ffgen/ffgen <$< >$@ + +-include $(DEPS_C) $(FFGEN_DEPS_C) + +$(OBJDIR)/%.o: %.c + @mkdir -p $(dir $@) + $(CC) $(CFG) $(CPPFLAGS) $(CFLAGS) $(INCS) -MMD -o $@ -c $< + +clean: + @rm -rf $(OBJDIR) + @rm -f opz .clang_complete + +.PHONY: version +version: + @echo "$(COMPTON_VERSION)" |
