CC = gcc

CFLAGS += -g -Wall -mpopcnt
CFLAGS += -O3 -flto
CFLAGS += -D_DEBUG -mbmi2
#CFLAGS += -fno-inline
#CFLAGS += -pg
#CFLAGS += -fprofile-arcs -ftest-coverage

VPATH = .:../core

# core files:
CSRCS = book.c end.c eval.c move.c tt.c util.c
COBJS = $(CSRCS:.c=.o)
CHDRS = $(CSRCS:.c=.h) core.h

# test files:
SRCS = bookdump.c bookgen.c endver.c fen2dxp.c  mm.c movegen.c perft.c perftval.c sizes.c val.c
OBJS = $(SRCS:.c=.o)
HDRS = test.h

lin: $(OBJS:.o=)
win: $(OBJS:.o=.exe)

$(COBJS): $(CHDRS) Makefile
$(OBJS): $(HDRS) $(CHDRS) Makefile

%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

%: %.o $(COBJS)
	$(CC) $(CFLAGS) -o $@ $+ -lm

%.exe: %.o $(COBJS)
	$(CC) $(CFLAGS) -o $@ $+ -lws2_32 -lwinmm

clean:
	rm -f $(OBJS:.o=)
	rm -f *.o *.exe *.gcda *.gcno gmon.out
