## ********************************************************************
# 	Makefile for Mini-Othello
#
#	Compile with GCC (Linux/Cygwin/MinGW).  
#       GCC 4.4.0 or higher is recommended.
#
#	Yunpeng Li 
# *********************************************************************

ifeq ($(MACHTYPE), x86_64)
ARCH=core2
else
ARCH=pentium4
endif

CC = g++

CPPFLAGS = -Wall -O3 -funroll-loops -ffast-math -fomit-frame-pointer
#-march=$(ARCH) -mfpmath=sse
#-foptimize-sibling-calls -frename-registers

PROGRAM_NAME = othello
OBJ = othello.o game.o board.o minimax.o mobility.o liberty.o


$(PROGRAM_NAME): $(OBJ)
	$(CC) $(CPPFLAGS) -static -o $(PROGRAM_NAME) $(OBJ)

#native: $(OBJ)
#	$(CC) $(CPPFLAGS) $(NATIVEFLAGS) -o $(PROGRAM_NAME) $(OBJ)


othello.o: othello.cpp othello.hpp
game.o: game.cpp game.hpp
board.o: board.cpp board.hpp
minimax.o: minimax.cpp minimax.hpp mob_table.hpp adj_table.hpp
mobility.o: mobility.cpp mobility.hpp
liberty.o: liberty.cpp liberty.hpp

clean:
	rm -f *.o *.obj *~ core $(PROGRAM_NAME).tds

ca:
	rm -f *.o *.obj *~ $(PROGRAM_NAME) $(PROGRAM_NAME).exe $(PROGRAM_NAME).tds

cls: 
	del /q *.o *.obj *~ $(PROGRAM_NAME).tds

cleangcc:
	rm -f *.o *~ core

upx:
	upx -9 -q $(PROGRAM_NAME).exe

gccupx:
	make
	upx -9 -q $(PROGRAM_NAME).exe
