CF=-Wall
CC=gcc
AR=ar
LIBDIR=libs/bin
INCDIR=libs/include

all: mloop execloop controlloop utils mserverC clientS

libs: libnodetab libctrlaw2

mloop: mloop/mloop.c
	$(CC) $(CF) -o bin/mloop mloop/mloop.c -L$(LIBDIR) -lctrlaw -lnodetab -pthread -I$(INCDIR)

execloop: execloop/execloop.c
	$(CC) $(CF) -o bin/execloop execloop/execloop.c -L$(LIBDIR) -lctrlaw -lnodetab -pthread -I$(INCDIR)

controlloop: controlloop/controlloop.c
	$(CC) $(CF) -o bin/controlloop controlloop/controlloop.c -L$(LIBDIR) -lctrlaw -lnodetab -pthread -I$(INCDIR)

libnodetab: libs/libnodetab/libnodetab.c libs/libnodetab/libnodetab.h
	$(CC) -c $(CF) libs/libnodetab/libnodetab.c -o libs/libnodetab/libnodetab.o
	$(AR) rcs libs/bin/libnodetab.a libs/libnodetab/libnodetab.o
	rm -fr libs/libnodetab/*.o
	cp libs/libnodetab/libnodetab.h libs/include/libnodetab.h

libctrlaw: libs/libctrlaw/libctrlaw.c libs/libctrlaw/libctrlaw.h
	$(CC) -c $(CF) libs/libctrlaw/libctrlaw.c -o libs/libctrlaw/libctrlaw.o
	$(AR) rcs libs/bin/libctrlaw.a libs/libctrlaw/libctrlaw.o
	rm -fr libs/libctrlaw/*.o
	cp libs/libctrlaw/libctrlaw.h libs/include/libctrlaw.h

libctrlaw2: libs/libctrlaw2/libctrlaw.a libs/libctrlaw2/libctrlaw.h
	cp libs/libctrlaw2/libctrlaw.a libs/bin/libctrlaw.a
	cp libs/libctrlaw2/libctrlaw.h libs/include/libctrlaw.h	

utils: node_on node_off change_disks buffer_on buffer_off eth_switch postman nodetabctl

node_on: utils/node_on/node_on.c
	$(CC) $(CF) -o bin/utils/node_on utils/node_on/node_on.c -L$(LIBDIR) -lctrlaw -lnodetab -pthread -I$(INCDIR)

node_off: utils/node_off/node_off.c
	$(CC) $(CF) -o bin/utils/node_off utils/node_off/node_off.c -L$(LIBDIR) -lctrlaw -lnodetab -pthread -I$(INCDIR)

buffer_on: utils/buffer_on/buffer_on.c
	$(CC) $(CF) -o bin/utils/buffer_on utils/buffer_on/buffer_on.c -L$(LIBDIR) -lctrlaw -lnodetab -pthread -I$(INCDIR)

buffer_off: utils/buffer_off/buffer_off.c
	$(CC) $(CF) -o bin/utils/buffer_off utils/buffer_off/buffer_off.c -L$(LIBDIR) -lctrlaw -lnodetab -pthread -I$(INCDIR)

change_disks: utils/change_disks/change_disks.c
	$(CC) $(CF) -o bin/utils/change_disks utils/change_disks/change_disks.c -L$(LIBDIR) -lctrlaw -lnodetab -pthread -I$(INCDIR)

eth_switch: utils/eth_switch/eth_switch.c
	$(CC) $(CF) -o bin/utils/eth_switch utils/eth_switch/eth_switch.c -L$(LIBDIR) -lctrlaw -lnodetab -pthread -I$(INCDIR)

postman: utils/postman/postman.c
	$(CC) $(CF) -o bin/utils/postman utils/postman/postman.c -L$(LIBDIR) -lctrlaw -lnodetab -pthread -I$(INCDIR)

nodetabctl: utils/nodetabctl/nodetabctl.c
	$(CC) $(CF) -o bin/utils/nodetabctl utils/nodetabctl/nodetabctl.c -L$(LIBDIR) -lnodetab -I$(INCDIR)

mserverC: mserverC/mserverC.c
	$(CC) $(CF) -o bin/mserverC mserverC/mserverC.c

clientS: clientS/clientS.c
	$(CC) $(CF) -o bin/clientS clientS/clientS.c
