You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
45 lines
1.1 KiB
SRC := src
|
|
CDEBUG := -g -fsanitize=address,undefined
|
|
CXXFLAGS := -Ilib $(CDEBUG)
|
|
CPP := c++
|
|
LIBS := -lvulkan -lglfw
|
|
OUT := ./out
|
|
BIN := $(OUT)/main
|
|
CXXCMD := $(CPP) $(CXXFLAGS) $(LIBS)
|
|
|
|
define linit
|
|
$(wordlist 2,$(words $(1)),x $(1))
|
|
endef
|
|
define llast
|
|
$(lastword $(1))
|
|
endef
|
|
|
|
SRCS=$(wildcard $(SRC)/*)
|
|
|
|
all: $(BIN)
|
|
|
|
|
|
run: all
|
|
VK_ADD_LAYER_PATH=/usr/share/vulkan/explicit_layer.d/VkLayer_khronos_validation.json VK_LOADER_LAYERS_ENABLE=*validation ./out/main
|
|
|
|
clean:
|
|
rm -f out/*
|
|
|
|
cleanlsp:
|
|
rm -f compile_commands.json
|
|
|
|
cleanall: clean cleanlsp
|
|
|
|
lsp: $(SRCS)
|
|
rm -f compile_commands.json # TODO figure out how to depend on cleanlsp
|
|
echo [ >> compile_commands.json
|
|
for src in $(call linit,$^) ; do \
|
|
echo {'"'directory'"': '"'$(PWD)'"', '"'command'"': '"'$(CXXCMD) $^ -o $(BIN)'"', '"'file'"': '"'$$src'"'}, >> compile_commands.json ;\
|
|
done
|
|
echo {'"'directory'"': '"'$(PWD)'"', '"'command'"': '"'$(CXXCMD) $^ -o $(BIN)'"', '"'file'"': '"'$(call llast,$^)'"'} >> compile_commands.json ;\
|
|
echo ] >> compile_commands.json
|
|
|
|
$(BIN): $(SRCS)
|
|
$(CXXCMD) $^ -o $@
|
|
|