.PHONY: lib-build lib-clean plug-install plug-sync plug-gc plug-clean setup PREFIX = $(HOME)/.cache/nvim CC = ccache clang SRCDIRS = $(filter-out src/testing, $(wildcard src/*)) TARGETS = $(patsubst src/%, lib/%.so, $(SRCDIRS)) CFLAGS := -std=c2y -Wtautological-compare -Wsign-compare -Wall -Wextra -O3 \ -fforce-emit-vtables -ffunction-sections -fdata-sections -fPIC \ -faddrsig -march=native -mtune=native -funroll-loops -fomit-frame-pointer LDFLAGS = -flto=full -fwhole-program-vtables -funroll-loops -fomit-frame-pointer \ -O3 -shared -lm TESTFLAGS := -std=c2y -DTEST_MODE -gfull $(shell pkg-config --cflags luajit) TESTLDFLAGS := -lm $(shell pkg-config --libs luajit) TESTTARGETS := $(addsuffix /test, $(PREFIX)) lib-build: $(TARGETS) $(TARGETS): lib/%.so: src/% $(CC) $</*.c $(CFLAGS) $(LDFLAGS) -o $@ lib-test: $(TESTTARGETS) $(TESTTARGETS): %/test: % $(CC) $</*.c $(wildcard src/testing/*.c) $(TESTFLAGS) $(TESTLDFLAGS) -o $@ ./$@ lib-clean: rm $(TARGETS) LLMFILE ?= llmfile.txt FILES ?= makefile init.lua DIRS ?= lua lua/ftplugin src/fuzpath src/testing make FILES_IN_DIRS := $(wildcard $(addsuffix /*.*, $(DIRS))) LIST_FILES ?= $(FILES) $(FILES_IN_DIRS) $(LLMFILE): $(LIST_FILES) # for the LLM to read echo $^ | sed 's/ /\n/g' > $@ echo >> $@ # newline # `head` automatically inserts the file name at the start of the file head -n 9999 $^ >> $@ llmfile: $(LLMFILE) %/: ; mkdir -p $@