CC = gcc CFLAGS += -std=c99 -Wall -Werror -pedantic -g INCDIR = ./lib/utils ./lib/ini ./lib/threadpool ./src ./lib/log INCLUDES := $(patsubst %,-I %,$(INCDIR)) LDFLAGS = -L . OPTFLAGS = #-O3 LIBS = -lpthread SOCKET = ./cs_sock BUILD_DIR = ./build SRC_DIR = ./src LIB_DIR = ./lib OBJ_DIR = ./obj OBJ_SRC := $(addprefix $(OBJ_DIR)/,$(patsubst %.c,%.o,$(notdir $(wildcard $(SRC_DIR)/*.c)))) OBJ_LIBS := $(addprefix $(OBJ_DIR)/,$(patsubst %.c,%.o,$(notdir $(wildcard $(LIB_DIR)/*/*.c)))) OBJ_SERVER := $(OBJ_SRC) $(OBJ_LIBS) VPATH := $(SRC_DIR) $(wildcard $(LIB_DIR)/*) .DEFAULT_GOAL := all .PHONY: all clean cleanall all: $(BUILD_DIR)/server @echo "done!" $(OBJ_DIR)/fileQueue.o: fileQueue.c fileQueue.h conn.h fileQueue.h util.h $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ $(OBJ_DIR)/apiFile.o: apiFile.c apiFile.h fileQueue.h taglialegna.h conn.h $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ $(OBJ_DIR)/taglialegna.o: taglialegna.c taglialegna.h fileQueue.h $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ $(OBJ_DIR)/threadpool.o: threadpool.c util.h threadpool.h $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ $(OBJ_DIR)/ini.o: ini.c ini.h $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ $(OBJ_DIR)/serverWorker.o: serverWorker.c serverWorker.h apiFile.h fileQueue.h taglialegna.h threadpool.h conn.h message.h $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ $(OBJ_DIR)/server.o: server.c threadpool.h conn.h util.h serverWorker.h ini.h serverUtil.h fileQueue.h taglialegna.h $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ $(BUILD_DIR)/server: $(OBJ_SERVER) $(CC) $(CFLAGS) $(LIBS) $(OBJ_SERVER) -o $(BUILD_DIR)/server clean : @rm -rf $(BUILD_DIR)/* logs/*.log cleanall : clean @rm -rf $(OBJ_DIR)/* @rm -f $(SOCKET)