CFLAGS = -I/usr/ucbinclude
LDFLAGS = -L/usr/ucblib -lsocket -lnsl -lucb
TREE = ls -lR
KILLSERVER = echo (Uccidere il processo "./server")
CC = gcc
SERVER_OBJS = server.o functions.o
CLIENT_OBJS = client.o functions.o
SERVER_COMMON_DIR = server_common_dir
CLIENT_COMMON_DIR = client_common_dir
COMMON_DIRS = $(SERVER_COMMON_DIR) $(CLIENT_COMMON_DIR)


all: server client

server: $(SERVER_OBJS)
	$(CC) $(CFLAGS) $(LDFLAGS) $(SERVER_OBJS) -o server

client: $(CLIENT_OBJS)
	$(CC) $(CFLAGS) $(LDFLAGS) $(CLIENT_OBJS) -o client

$(SERVER_OBJS) $(CLIENT_OBJS): defs.h

clean:
	rm -f client server $(SERVER_OBJS) $(CLIENT_OBJS)

clean_common_dirs:
	rm -fr $(COMMON_DIRS)

distclean: clean clean_common_dirs

test: server client clean_common_dirs
	mkdir -p $(COMMON_DIRS)
	cp -a server.c $(SERVER_COMMON_DIR)/0_file.c
	cp -a server.c $(CLIENT_COMMON_DIR)/0_file.c
	cp client.c $(SERVER_COMMON_DIR)/1_file.c
	mkdir $(SERVER_COMMON_DIR)/2_both
	mkdir $(CLIENT_COMMON_DIR)/2_both
	mkdir $(SERVER_COMMON_DIR)/2_both/3_common-name
	cp -a Makefile $(SERVER_COMMON_DIR)/2_both/3_common-name/4_file.c
	cp functions.c $(CLIENT_COMMON_DIR)/2_both/3_common-name
	mkdir $(CLIENT_COMMON_DIR)/5_dir
	cp -a defs.h $(CLIENT_COMMON_DIR)/5_dir/6_file.c
	$(TREE) $(COMMON_DIRS)
	./server $(SERVER_COMMON_DIR) &
	sleep 1
	./client localhost $(CLIENT_COMMON_DIR)
	$(TREE) $(COMMON_DIRS)
