CC=gcc
CFLAGS=-Wall -c -fomit-frame-pointer -Wextra -pthread

BINDIR=bin
SRCDIR=src
OBJDIR=obj

OBJTGT=$(OBJDIR)/ae_events.o \
	$(OBJDIR)/alterEgo.o \
	$(SRCDIR)/xmem/$(OBJDIR)/xmem.o \
	$(OBJDIR)/webHandler.o \
	$(OBJDIR)/webFactory.o \
	$(SRCDIR)/mario/$(OBJDIR)/mario.o

all: $(BINDIR)/alterEgo

clean:
	rm -f $(OBJDIR)/*
	rm -f $(BINDIR)/*
	rm -f $(SRCDIR)/mario/$(OBJDIR)/*
	rm -f $(SRCDIR)/mario/$(BINDIR)/*
	rm -f $(SRCDIR)/xmem/$(OBJDIR)/*
	rm -f $(SRCDIR)/xmem/$(BINDIR)/*

$(BINDIR)/alterEgo: $(OBJTGT)
	$(CC) -pthread -fomit-frame-pointer $(OBJTGT) -o $(BINDIR)/alterEgo

$(SRCDIR)/xmem/$(OBJDIR)/xmem.o: $(SRCDIR)/xmem/$(SRCDIR)/xmem.c
	cd $(SRCDIR)/xmem/; make

$(OBJDIR)/ae_events.o: $(SRCDIR)/events/ae_events.c
	$(CC) $(CFLAGS) $(SRCDIR)/events/ae_events.c -o $(OBJDIR)/ae_events.o

$(OBJDIR)/alterEgo.o: $(SRCDIR)/alterEgo.c
	$(CC) $(CFLAGS) $(SRCDIR)/alterEgo.c -o $(OBJDIR)/alterEgo.o	

$(SRCDIR)/mario/$(OBJDIR)/mario.o: $(SRCDIR)/mario/$(SRCDIR)/mario.c
	cd $(SRCDIR)/mario/; make
	
$(OBJDIR)/webHandler.o: $(SRCDIR)/webHandler.c
	$(CC) $(CFLAGS) $(SRCDIR)/webHandler.c -o $(OBJDIR)/webHandler.o
	
$(OBJDIR)/webFactory.o: $(SRCDIR)/webFactory.c
	$(CC) $(CFLAGS) $(SRCDIR)/webFactory.c -o $(OBJDIR)/webFactory.o