
# files

EXE = polyglot

OBJS = adapter.o attack.o board.o book.o book_make.o colour.o engine.o epd.o \
       fen.o game.o hash.o io.o line.o list.o main.o move.o move_do.o \
       move_gen.o move_legal.o option.o parse.o pgn.o piece.o posix.o \
       random.o san.o search.o square.o uci.o util.o

# rules

all: $(EXE) .depend

clean:
	$(RM) *.o .depend

# general

CXX       = g++
CXXFLAGS  = -pipe
LDFLAGS   = -lm

# warnings

# CXXFLAGS += -ansi -pedantic -Wall

# CXXFLAGS += -W -Waggregate-return -Wcast-align -Wdisabled-optimization \
#             -Winline -Wno-long-long -Wredundant-decls -Wshadow -Wundef \
#             -Wwrite-strings

# C++

CXXFLAGS += -fno-exceptions -fno-rtti

# optimisation

CXXFLAGS += -O2
CXXFLAGS += -fomit-frame-pointer
# CXXFLAGS += -mcpu=athlon-xp

# debug

CXXFLAGS += -g # -DDEBUG
LDFLAGS  += -g

# profile

# CXXFLAGS += -pg
# LDFLAGS  += -pg

# strip

LDFLAGS  += -s

# dependencies

$(EXE): $(OBJS)
	$(CXX) $(LDFLAGS) -o $@ $(OBJS)

%.s: %.cpp
	$(CXX) -S $(CXXFLAGS) $<

.depend:
	$(CXX) -MM $(OBJS:.o=.cpp) > $@

include .depend

