#
# Makefile
# author: Kevin Waugh (waugh@cs.cmu.edu)
#

include Makefile.local

CFLAGS  = -std=c99 -Wall $(GLPK_INCLUDE) $(BLAS_INCLUDE)
LDFLAGS = $(GLPK_LDFLAGS) $(BLAS_LDFLAGS)
LDLIBS  = -lm $(GLPK_LDLIBS) $(BLAS_LDLIBS)

PLAYERS = cfr_player.c chump_player.c strategy_player.c
SRC = abstraction.c args.c best_response.c best_response_main.c ev.c exploitability.c game.c game_info.c lp_eqm.c player.c sequence_form.c solve_eqm_lp.c solve_regret.c strategy.c timer.c verify.c util.c watch.c $(PLAYERS)
LP_TARGETS = $(if $(GLPK_LDLIBS),exploitability solve_eqm_lp,)
TARGETS    = best_response ev game_info solve_regret $(LP_TARGETS)

.PHONY: all clean

all: $(TARGETS)

clean:
	-rm -rf obj $(TARGETS)
	-find . -name '*.pyc' -delete

$(addprefix obj/,$(SRC:.c=.o)): obj/%.o: src/%.c
	@if [ ! -d obj ]; then mkdir obj; fi
	$(CC) -MMD $(OPT) $(CFLAGS) -c $< -o $@

obj/rng.o: src/rng.c
	@if [ ! -d obj ]; then mkdir obj; fi
	$(CC) -MMD $(OPT) $(CFLAGS) -DHAVE_SSE2 -msse2 -c $< -o $@

best_response dealer ev exploitability game_info solve_eqm_lp solve_regret: %:
	$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)

best_response: $(addprefix obj/,abstraction.o best_response.o best_response_main.o game.o sequence_form.o strategy.o util.o verify.o)

ev: $(addprefix obj/,abstraction.o ev.o game.o sequence_form.o strategy.o util.o verify.o)

exploitability: $(addprefix obj/,abstraction.o best_response.o exploitability.o game.o lp_eqm.o sequence_form.o strategy.o util.o verify.o)

game_info: $(addprefix obj/,abstraction.o game.o game_info.o sequence_form.o strategy.o util.o verify.o)

solve_eqm_lp: $(addprefix obj/,abstraction.o game.o lp_eqm.o sequence_form.o solve_eqm_lp.o strategy.o util.o verify.o)

solve_regret: $(addprefix obj/,abstraction.o args.o best_response.o game.o player.o rng.o sequence_form.o solve_regret.o strategy.o timer.o util.o verify.o watch.o $(PLAYERS:.c=.o))

-include $(addprefix obj/,$(SRC:.c=.d))