#
# Ȃ̂miniɂƂNANOHAMINI=1̑O#A
# Ȃ̂nanoɂƂNANOHAMINI=1̑O#tANANOHANANO=1̑O#
# nanoperyɂƂNANOPERY=1̑O#
#
#NANOHAMINI=1
#NANOHANANO=1

EVAL_TYPE=EVAL_APERY
EVAL_OBJ=evaluate_apery.o
EXE = usapyon2dashAVX
PGD = usapyon2dashAVX.pgd
PGOLOG = usapyon2dashAVX_prof.txt

OBJS = mate1ply.o misc.o timeman.o $(EVAL_OBJ) position.o \
	 tt.o main.o move.o \
	 movegen.o search.o uci.o movepick.o thread.o ucioption.o \
	 benchmark.o book.o \
	 shogi.o mate.o problem.o

CC=g++
LD=link



# Compile Options
#
# -DEVAL_MINI      Ȃ̂mini(2֌W(KP+PP)̕]֐)
# -DEVAL_NANO      Ȃ̂nano(2֌W(KP̂)̕]֐)
# -DEVAL_APERY     nanopery(Apery̕]֐)
#
# -DTWIG           Apery(̎})̕]֐g
# -DUSE_AVX2_EVAL  ]֐̌vZAVX߂g
#
# Visual C++IvV
#
# /D_CRT_SECURE_NO_WARNINGS
#                   secureȊ֐gĂȂƂ̌xoȂ
# /Zc:forScope      XR[v [vɕW C++ Kp
# /Wall             xׂėLɂ
# /GS[-]            ZLeB `FbNLɂ
# /favor:<blend|AMD64|EM64T> œKvZbT
# /GL[-]            ÑR[hs
# /RTCs             X^bN t[ ^C `FbN
# /RTCu             ĂȂ[Jϐ̃`FbN

FLAGS = -DNDEBUG -D$(EVAL_TYPE) -DUSAPYON2 -DNANOHA -DCHK_PERFORM -DTWIG -DUSE_AVX2_EVAL\
	-DOLD_LOCKS \
	 
#CXXFLAGS=$(FLAGS) /MT /W4 /Wall /nologo /Od /GS /RTCsu
CXXFLAGS=$(FLAGS) -O3 -DIS_64BIT -msse -std=c++11 -mavx2 -Wa,-q -c
LDFLAGS=-lpthread -o$(EXE)
PGOLDFLAGS1=/NOLOGO /STACK:16777216,32768 /out:$(EXE) /LTCG:PGI
PGOLDFLAGS2=/NOLOGO /STACK:16777216,32768 /out:$(EXE) /LTCG:PGO


all: $(EXE)

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

.cpp.o :
	$(CC) $(CXXFLAGS) $*.cpp

clean :
	rm -f *.o
	rm -f    $(EXE)

