47 lines
893 B
Makefile
47 lines
893 B
Makefile
CC=gcc
|
|
EXT=.c
|
|
FLAGS=-O0 -g
|
|
DEBUG_FLAGS=-DDEBUG -fsanitize=undefined -fsanitize=address
|
|
DEPFLAGS=-MD -MP
|
|
LIBS=$(shell pkg-config --libs xcb x11 xinerama json-c)
|
|
EXEC_NAME=wm
|
|
|
|
OBJDIR=obj
|
|
SRCDIR=src
|
|
|
|
SRC=$(wildcard $(SRCDIR)/*$(EXT))
|
|
OBJS=$(patsubst %,$(OBJDIR)/%.o, $(basename $(notdir $(SRC))))
|
|
|
|
$(shell mkdir -p $(dir $(OBJS)) > /dev/null)
|
|
|
|
$(EXEC_NAME): filter $(OBJS)
|
|
$(CC) $(FLAGS) $(LIBS) $(OBJS) -o $(EXEC_NAME)
|
|
|
|
debug: debug_flag $(EXEC_NAME)
|
|
|
|
test: compile_test run_test
|
|
|
|
compile_test: filter_test $(OBJS)
|
|
$(CC) $(DEBUG_FLAGS) $(LIBS) -lcmocka $(OBJS) -o test
|
|
|
|
run_test:
|
|
./test
|
|
|
|
$(OBJDIR)/%.o: $(SRCDIR)/%$(EXT)
|
|
$(CC) $(FLAGS) $(DEPFLAGS) -c -o $@ $<
|
|
|
|
debug_flag:
|
|
$(eval FLAGS+=$(DEBUG_FLAGS))
|
|
|
|
filter:
|
|
$(eval OBJS=$(filter-out obj/tests.o, $(OBJS)))
|
|
|
|
filter_test:
|
|
$(eval OBJS=$(filter-out obj/main.o, $(OBJS)))
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf $(OBJDIR)
|
|
|
|
-include $(SRC:$(EXT)=.d)
|