CC = g++
CFLAGS = -m64 -pthread -D__GCC__ -DUNIX -g -D_DEBUG -std=c++17 -Wno-multichar
OBJS = evemon.o exception.o jobsman.o tpool.o mem_manager.o format.o fs.o storage.o type.o resources.o tcp.o

all: net-test pingclient pingserver

net-test: $(OBJS) test-main.o
	$(CC) $(CFLAGS) -o $@ $^

pingclient: $(OBJS) ping-client-main.o ping-common-msg.o
	$(CC) $(CFLAGS) -o $@ $^

pingserver: $(OBJS) ping-server-main.o ping-common-msg.o
	$(CC) $(CFLAGS) -o $@ $^

evemon.o: core/debug/evemon.cpp
	$(CC) $(CFLAGS) -c $^

exception.o: core/debug/exception.cpp
	$(CC) $(CFLAGS) -c $^

jobsman.o: core/jobs/jobsman.cpp
	$(CC) $(CFLAGS) -c $^

tpool.o: core/jobs/tpool.cpp
	$(CC) $(CFLAGS) -c $^

mem_manager.o: core/memory/mem_manager.cpp
	$(CC) $(CFLAGS) -c $^

format.o: core/strings/format.cpp
	$(CC) $(CFLAGS) -c $^

fs.o: core/storage/fs/fs.cpp
	$(CC) $(CFLAGS) -c $^

storage.o: core/storage/storage.cpp
	$(CC) $(CFLAGS) -c $^

type.o: core/types/type.cpp
	$(CC) $(CFLAGS) -c $^

resources.o: core/resources/resources.cpp
	$(CC) $(CFLAGS) -c $^

tcp.o: core/net/tcp/tcp.cpp
	$(CC) $(CFLAGS) -c $^

test-main.o: test/main.cpp
	$(CC) $(CFLAGS) -c $^ -o test-main.o

ping-client-main.o: ping-client/main.cpp
	$(CC) $(CFLAGS) -c $^ -o ping-client-main.o

ping-server-main.o: ping-server/main.cpp
	$(CC) $(CFLAGS) -c $^ -o ping-server-main.o

ping-common-msg.o: ping-common/msg.cpp
	$(CC) $(CFLAGS) -c $^ -o ping-common-msg.o

clean:
	rm -f net-test pingclient pingserver *.o

