Files
progettoso/Makefile

160 lines
5.6 KiB
Makefile
Raw Permalink Normal View History

2022-04-16 21:21:04 +02:00
CC = gcc
2022-04-24 13:20:34 +02:00
CFLAGS += -std=c99 -Wall -Werror -pedantic -ggdb3
2022-04-16 21:21:04 +02:00
INCDIR = ./lib/utils ./lib/ini ./lib/threadpool ./src ./lib/log ./lib/api
INCLUDES := $(patsubst %,-I %,$(INCDIR))
2022-04-24 13:01:13 +02:00
LDFLAGS = -L . -lm
OPTFLAGS = #-O3
2022-04-16 21:21:04 +02:00
LIBS = -lpthread
2022-04-27 21:18:25 +02:00
SOCKET = ./socket
2022-03-11 12:03:59 +01:00
2022-04-16 21:21:04 +02:00
BUILD_DIR = ./build
SRC_DIR = ./src
LIB_DIR = ./lib
OBJ_DIR = ./obj
2022-03-11 12:03:59 +01:00
2022-04-16 21:21:04 +02:00
OBJ_SRC_SERVER := $(addprefix $(OBJ_DIR)/,$(patsubst %.c,%.o,$(notdir $(wildcard $(SRC_DIR)/server*.c))))
OBJ_SRC_CLIENT := $(addprefix $(OBJ_DIR)/,$(patsubst %.c,%.o,$(notdir $(wildcard $(SRC_DIR)/client*.c))))
OBJ_LIBS_SERVER := $(addprefix $(OBJ_DIR)/,$(patsubst %.c,%.o,$(notdir $(filter-out $(wildcard $(LIB_DIR)/api/*.c),$(wildcard $(LIB_DIR)/*/*.c)))))
OBJ_LIBS_CLIENT := $(addprefix $(OBJ_DIR)/,$(patsubst %.c,%.o,$(notdir $(filter-out $(wildcard $(LIB_DIR)/threadpool/*.c) $(wildcard $(LIB_DIR)/log/*.c),$(wildcard $(LIB_DIR)/*/*.c)))))
2022-04-16 15:07:25 +02:00
2022-04-16 21:21:04 +02:00
OBJ_SERVER := $(OBJ_SRC_SERVER) $(OBJ_LIBS_SERVER)
OBJ_CLIENT := $(OBJ_SRC_CLIENT) $(OBJ_LIBS_CLIENT)
2022-04-16 15:07:25 +02:00
2022-03-11 12:03:59 +01:00
2022-04-16 21:21:04 +02:00
VPATH := $(SRC_DIR) $(wildcard $(LIB_DIR)/*)
2022-04-04 22:31:14 +02:00
2022-04-16 21:21:04 +02:00
.DEFAULT_GOAL := all
2022-03-11 12:03:59 +01:00
2022-04-25 21:56:13 +02:00
.PHONY: all multi clean cleanall
2022-03-11 12:03:59 +01:00
2022-04-25 21:56:13 +02:00
all:
@$(MAKE) -s -j multi
2022-03-11 12:03:59 +01:00
2022-04-25 21:56:13 +02:00
multi: $(BUILD_DIR)/server $(BUILD_DIR)/client
2022-04-23 17:43:38 +02:00
@echo "Compiled!"
2022-03-11 12:03:59 +01:00
2022-04-16 15:07:25 +02:00
# -SERVER-RULES-----------------------------------------------------------------
$(OBJ_DIR)/fileQueue.o: fileQueue.c fileQueue.h conn.h fileQueue.h util.h
@$(CC) $(CFLAGS) $(OPTFLAGS) $(INCLUDES) -c $< -o $@
2022-04-16 15:07:25 +02:00
@echo $@
2022-04-04 22:31:14 +02:00
$(OBJ_DIR)/apiFile.o: apiFile.c apiFile.h fileQueue.h taglialegna.h conn.h
@$(CC) $(CFLAGS) $(OPTFLAGS) $(INCLUDES) -c $< -o $@
2022-04-16 15:07:25 +02:00
@echo $@
2022-04-04 22:31:14 +02:00
$(OBJ_DIR)/taglialegna.o: taglialegna.c taglialegna.h fileQueue.h
@$(CC) $(CFLAGS) $(OPTFLAGS) $(INCLUDES) -c $< -o $@
2022-04-16 15:07:25 +02:00
@echo $@
2022-04-04 22:31:14 +02:00
$(OBJ_DIR)/threadpool.o: threadpool.c util.h threadpool.h
@$(CC) $(CFLAGS) $(OPTFLAGS) $(INCLUDES) -c $< -o $@
2022-04-16 15:07:25 +02:00
@echo $@
2022-03-11 12:03:59 +01:00
$(OBJ_DIR)/ini.o: ini.c ini.h
@$(CC) $(CFLAGS) $(OPTFLAGS) $(INCLUDES) -c $< -o $@
2022-04-16 15:07:25 +02:00
@echo $@
2022-04-04 22:31:14 +02:00
2022-04-11 18:38:04 +02:00
$(OBJ_DIR)/strsep_gnu.o: strsep_gnu.c strsep_gnu.h
@$(CC) $(CFLAGS) $(OPTFLAGS) $(INCLUDES) -c $< -o $@
2022-04-16 15:07:25 +02:00
@echo $@
2022-04-11 18:38:04 +02:00
$(OBJ_DIR)/serverWorker.o: serverWorker.c serverWorker.h apiFile.h fileQueue.h taglialegna.h threadpool.h conn.h message.h strsep_gnu.h
@$(CC) $(CFLAGS) $(OPTFLAGS) $(INCLUDES) -c $< -o $@
2022-04-16 15:07:25 +02:00
@echo $@
2022-04-04 22:31:14 +02:00
$(OBJ_DIR)/server.o: server.c threadpool.h conn.h util.h serverWorker.h ini.h serverUtil.h fileQueue.h taglialegna.h
@$(CC) $(CFLAGS) $(OPTFLAGS) $(INCLUDES) -c $< -o $@
2022-04-16 15:07:25 +02:00
@echo $@
2022-04-04 22:31:14 +02:00
$(BUILD_DIR)/server: $(OBJ_SERVER)
2022-05-03 00:59:17 +02:00
@$(CC) $(CFLAGS) $(OPTFLAGS) $(OPTFLAGS) $(OBJ_SERVER) $(LDFLAGS) -o $(BUILD_DIR)/server $(LIBS)
2022-04-16 15:07:25 +02:00
@echo $@
2022-03-11 12:03:59 +01:00
2022-04-16 15:07:25 +02:00
# -CLIENT-RULES-----------------------------------------------------------------
2022-04-16 21:21:04 +02:00
$(OBJ_DIR)/api.o: api.c api.h
@$(CC) $(CFLAGS) $(OPTFLAGS) $(INCLUDES) -c $< -o $@
2022-04-16 21:21:04 +02:00
@echo $@
$(OBJ_DIR)/client.o: client.c api.h
@$(CC) $(CFLAGS) $(OPTFLAGS) $(INCLUDES) -c $< -o $@
2022-04-16 15:07:25 +02:00
@echo $@
$(BUILD_DIR)/client: $(OBJ_CLIENT)
2022-05-03 00:59:17 +02:00
@$(CC) $(CFLAGS) $(OPTFLAGS) $(OBJ_CLIENT) $(LDFLAGS) -o $(BUILD_DIR)/client $(LIBS)
2022-04-16 15:07:25 +02:00
@echo $@
# -PHONY------------------------------------------------------------------------
2022-04-23 15:05:31 +02:00
clean:
2022-03-11 12:03:59 +01:00
@rm -rf $(BUILD_DIR)/* logs/*.log
2022-04-23 15:05:31 +02:00
cleanall: clean
2022-03-11 12:03:59 +01:00
@rm -rf $(OBJ_DIR)/*
@rm -f $(SOCKET)
2022-04-16 15:07:25 +02:00
2022-04-23 15:05:31 +02:00
print-%: ; @echo $* = $($*)
# -TESTS------------------------------------------------------------------------
2022-04-23 17:43:38 +02:00
test1: all
2022-05-03 15:34:21 +02:00
@echo "[threadpool]" > $(BUILD_DIR)/config.ini
@echo "quantity = 1" >> $(BUILD_DIR)/config.ini
@echo "pending = 10" >> $(BUILD_DIR)/config.ini
@echo "" >> $(BUILD_DIR)/config.ini
@echo "[files]" >> $(BUILD_DIR)/config.ini
@echo "MaxSize = 128000000" >> $(BUILD_DIR)/config.ini
@echo "MaxFiles = 10000" >> $(BUILD_DIR)/config.ini
@echo "" >> $(BUILD_DIR)/config.ini
@echo "[log]" >> $(BUILD_DIR)/config.ini
@echo "logFile = ./logs/l.log" >> $(BUILD_DIR)/config.ini
@echo "" >> $(BUILD_DIR)/config.ini
@echo "[socket]" >> $(BUILD_DIR)/config.ini
@echo "name = ./socket" >> $(BUILD_DIR)/config.ini
@echo "backlog = 100" >> $(BUILD_DIR)/config.ini
2022-05-03 23:14:39 +02:00
valgrind --leak-check=full $(BUILD_DIR)/server $(BUILD_DIR)/config.ini &
2022-04-23 17:43:38 +02:00
bash scripts/test1.sh
2022-05-01 00:10:28 +02:00
pkill --signal SIGHUP memcheck
2022-04-23 17:43:38 +02:00
test2: all
2022-05-03 15:34:21 +02:00
@echo "[threadpool]" > $(BUILD_DIR)/config.ini
@echo "quantity = 4" >> $(BUILD_DIR)/config.ini
@echo "pending = 100" >> $(BUILD_DIR)/config.ini
@echo "" >> $(BUILD_DIR)/config.ini
@echo "[files]" >> $(BUILD_DIR)/config.ini
@echo "MaxSize = 1000" >> $(BUILD_DIR)/config.ini
@echo "MaxFiles = 10" >> $(BUILD_DIR)/config.ini
@echo "" >> $(BUILD_DIR)/config.ini
@echo "[log]" >> $(BUILD_DIR)/config.ini
@echo "logFile = ./logs/l.log" >> $(BUILD_DIR)/config.ini
@echo "" >> $(BUILD_DIR)/config.ini
@echo "[socket]" >> $(BUILD_DIR)/config.ini
@echo "name = ./socket" >> $(BUILD_DIR)/config.ini
@echo "backlog = 100" >> $(BUILD_DIR)/config.ini
$(BUILD_DIR)/server $(BUILD_DIR)/config.ini &
2022-04-23 17:43:38 +02:00
bash scripts/test2.sh
2022-05-03 23:14:39 +02:00
pkill --signal SIGHUP -f $(BUILD_DIR)/server
test3: all
@echo "[threadpool]" > $(BUILD_DIR)/config.ini
@echo "quantity = 8" >> $(BUILD_DIR)/config.ini
@echo "pending = 100" >> $(BUILD_DIR)/config.ini
@echo "" >> $(BUILD_DIR)/config.ini
@echo "[files]" >> $(BUILD_DIR)/config.ini
@echo "MaxSize = 32000000" >> $(BUILD_DIR)/config.ini
@echo "MaxFiles = 100" >> $(BUILD_DIR)/config.ini
@echo "" >> $(BUILD_DIR)/config.ini
@echo "[log]" >> $(BUILD_DIR)/config.ini
@echo "logFile = ./logs/l.log" >> $(BUILD_DIR)/config.ini
@echo "" >> $(BUILD_DIR)/config.ini
@echo "[socket]" >> $(BUILD_DIR)/config.ini
@echo "name = ./socket" >> $(BUILD_DIR)/config.ini
@echo "backlog = 100" >> $(BUILD_DIR)/config.ini
$(BUILD_DIR)/server $(BUILD_DIR)/config.ini &
bash scripts/test3.sh &
@echo "waiting for 30 seconds"
@sleep 30
pkill --signal SIGINT -f $(BUILD_DIR)/server