#
# Makefile for CLOP
#

#  Copyright (C) 2005 Bryan Clair
# 
#  This file is part of CLOP.
# 
#  CLOP is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
# 
#  CLOP is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
# 
#  You should have received a copy of the GNU General Public License
#  along with CLOP; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
# 

SHELL = /bin/sh

.PHONY: all
all: basic football tourney

.PHONY: clean
clean: bclean fclean tclean

#
# basic modules
#
bobjects = Normal.o PoolMath.o
normallibs = -lgsl -lgslcblas -lm

.PHONY: basic
basic: $(bobjects)

Normal.o: Normal.h

# PoolMath.o is built from PoolMath.C and a table of binomial
#   coefficients generated by PoolMathBinomBuilder.
PoolMath.o: PoolMathBinom.C PoolMath.h

PoolMathBinom.C: PoolMathBinomBuilder
	./PoolMathBinomBuilder > PoolMathBinom.C

PoolMathBinomBuilder: PoolMathBinomBuilder.C PoolMath.h
	$(CXX) $(CXXFLAGS) PoolMathBinomBuilder.C -o PoolMathBinomBuilder

.PHONY: bclean
bclean:
	rm -f $(bobjects) PoolMathBinomBuilder PoolMathBinom.C

#
# tourney modules
#
tobjects = TourneyBasics.o TourneyPack.o TourneyPicks.o\
	TourneyH2H.o TourneyWinround.o TourneyPool.o TourneyFile.o

tapps = tseek tstats tsim tcanon topponents tscore trandom pix2tex dumph2h dumpwinround

tutils = pcalc

.PHONY: tourney
tourney: $(tobjects) $(tapps) $(tutils)

$(tapps): % : %.C $(bobjects) $(tobjects)
	$(CXX) $(CXXFLAGS) $^ -o $@ $(normallibs)

$(tutils): % : %.C TourneyBasics.o
	$(CXX) $(CXXFLAGS) $^ -o $@

$(tobjects): TourneyBasics.h
TourneyPicks.o:    TourneyPicks.h TourneyNames.h
TourneyH2H.o:      TourneyH2H.h
TourneyWinround.o: TourneyH2H.h TourneyWinround.h
TourneyPack.o:     TourneyPicks.h TourneyH2H.h TourneyWinround.h TourneyPack.h PoolMath.h
TourneyPool.o:     TourneyPicks.h TourneyH2H.h TourneyWinround.h TourneyPack.h TourneyPool.h PoolMath.h
TourneyFile.o:     TourneyPicks.h TourneyPack.h TourneyFile.h TourneyNames.h

.PHONY: tclean
tclean:
	rm -f $(tobjects) $(tapps) $(tutils)

#
# football modules
#
fobjects = FootballPool.o FootballPack.o Normal.o PoolMath.o
fapps = fall fseek fstats fsmooth fcanon

.PHONY: football
football: $(fobjects) $(fapps)

$(fapps): % : %.C $(fobjects)
	$(CXX) $(CXXFLAGS) $^ -o $@ -lpthread $(normallibs)

FootballPool.o: FootballPack.h FootballPool.h
FootballPack.o: FootballPack.h PoolMath.h

.PHONY: fclean
fclean:
	rm -f $(fobjects) $(fapps)
