
CC      = gcc
ENGINE  = engine
WINBOARD= winboard
CFLAGS  = -O2 -Wall -fcommon -I$(ENGINE) -I. -I$(WINBOARD) -std=gnu11
LDFLAGS = -lpthread -lm

OUTD    = ..
GERBIL  = gerbil

OCORE   = $(OUTD)/engine.o $(OUTD)/initcon.o $(OUTD)/debug.o \
          $(OUTD)/static.o $(OUTD)/attack.o $(OUTD)/makemove.o \
          $(OUTD)/hash.o $(OUTD)/prot_e.o $(OUTD)/book.o \
          $(OUTD)/think.o $(OUTD)/gen.o $(OUTD)/winlayer.o

OIFACE  = $(OUTD)/winboard.o $(OUTD)/ethread.o $(OUTD)/prot_i.o

ONORMAL = $(OUTD)/search.o $(OUTD)/eval.o $(OUTD)/pawns.o

OBJ     = $(OCORE) $(OIFACE) $(ONORMAL)

.PHONY: all clean dirs

all: dirs $(OUTD)/$(GERBIL)

dirs:
	@mkdir -p $(OUTD)

$(OUTD)/$(GERBIL): $(OBJ)
	$(CC) $(OBJ) -o $(OUTD)/$(GERBIL) $(LDFLAGS)

$(OUTD)/%.o: $(ENGINE)/%.c
	$(CC) -c $(CFLAGS) $< -o $@

$(OUTD)/%.o: $(WINBOARD)/%.c
	$(CC) -c $(CFLAGS) $< -o $@

clean:
	rm -f $(OUTD)/*.o

distclean: clean
	$(OUTD)/$(GERBIL)
