WORK_DIR = . SRC_DIR = $(WORK_DIR)/src CSH_FLAGS = -O2 -g -Wall -Wextra -Werror -pedantic -I$(SRC_DIR) CC = clang CC_STD = -std=c11 CC_FLAGS = $(CC_STD) $(CSH_FLAGS) CXX = clang++ CXX_STD = -std=c++11 CXX_FLAGS = -fno-rtti -fno-exceptions $(CXX_STD) $(CSH_FLAGS) RM = rm -rf ECHO = echo CMAKE = cmake MI_DIR = $(WORK_DIR)/mimalloc MI_BUILD = $(MI_DIR)/build MI_INCLUDE = $(MI_BUILD)/include MI_OBJECT = $(MI_BUILD)/mimalloc.o MI_FLAGS = \ -DMI_BUILD_STATIC=NO \ -DMI_BUILD_SHARED=NO \ -DMI_BUILD_OBJECT=YES \ -DMI_BUILD_TESTS=NO \ -DMI_USE_CXX=NO \ -DMI_XMALLOC=YES \ -DMI_OVERRIDE=YES CSH_FLAGS += -I$(MI_INCLUDE) MI_GENERATOR = "Unix Makefiles" XDG_SHELL_PROT = $(WORK_DIR)/xdg-shell.xml WAYCLOCK = $(WORK_DIR)/wayclock SOURCES = \ $(SRC_DIR)/wayclock.cc \ $(SRC_DIR)/xdg-shell.c \ $(SRC_DIR)/wlstate.c \ $(SRC_DIR)/vec.c \ $(SRC_DIR)/events.c OBJECTS := $(SOURCES:.cc=.o) OBJECTS := $(OBJECTS:.c=.o) OBJECTS += $(MI_OBJECT) LIBRARIES = -lwayland-client all: $(WAYCLOCK) $(MI_BUILD): @echo " CMAKE $@" @$(CMAKE) $(MI_DIR) -B $@ -G $(MI_GENERATOR) $(MI_FLAGS) $(MI_OBJECT): | $(MI_BUILD) @echo " MAKE $@" @$(MAKE) -C $(MI_BUILD) $(WAYCLOCK): $(OBJECTS) @echo " LD $@" @$(CXX) $(CXX_FLAGS) -o $@ $^ $(LIBRARIES) %.o: %.cc @echo " CXX $<" @$(CXX) $(CXX_FLAGS) -c -o $@ $< %.o: %.c @echo " CC $<" @$(CC) $(CC_FLAGS) -c -o $@ $< .PHONY: clean clean: @$(RM) $(OBJECTS) $(WAYCLOCK) @$(RM) $(MI_BUILD)