# PuLP, Copyright Jean-Sebastien Roy, 2003-2005
# @(#) $Jeannot: Makefile.dist,v 1.11 2005/05/05 09:23:51 js Exp $

# Please adjust the path and options to reflect your installation of Python,
# GLPK, COIN, and your compiler's options

# How to create shared libraries
LDSHARED=-shared
# Under Solaris/Workshop, use:
#LDSHARED=-G
CFLAGS += -fPIC
# Under Solaris/Workshop, use the same flags as used when compiling COIN, for
# example:
#CFLAGS=-fast -xarch=generic

# The C++ compiler
CXX=c++
# Under Solaris/Workshop, use:
#CXX=CC
CXXFLAGS=$(CFLAGS)

# Python
PYTHONLIB=/usr/local/include/python2.5

# GLPK
GLPKINC=/usr/local/include
GLPKLIB=/usr/local/lib

# COIN
COININC=/opt/js/devel/COIN/include
COINLIB=/opt/js/devel/COIN/lib
# You must list the librairies you linked COIN with, for example:
COINLIBS=-lz -lbz2 -llapack -lblas

# Other librairies location (z, bz2, lapack, blas)
LOCALLIB=/usr/local/lib

# CPLEX
CPLEXINC=/logiciels/ilog/cplex90/include
CPLEXLIB=/logiciels/ilog/cplex90/lib/ultrasparc32_8_6.2/static_pic_mt

CFLAGS += -I$(PYTHONLIB)
CFLAGS += -I$(GLPKINC) -I$(COININC) -I$(CPLEXINC)
LDFLAGS += $(LDSHARED) -L$(GLPKLIB) -L$(COINLIB) -L$(LOCALLIB) -L$(CPLEXLIB)
# If COINLIB is not in your LD_LIBRARY_PATH your must add it while linking:
LDFLAGS += -rpath $(COINLIB)
# Under Solaris/Workshop, use:
#LDFLAGS += -R $(COINLIB)
#LDADDLIBS= -lCrun -lCstd

default:
	@echo "Use:"
	@echo "make TARGET"
	@echo "where TARGET is one of:"
	@echo "pulpGLPK.so pulpCOIN.so pulpCPLEX.so"
	@echo "or to build all modules use:"
	@echo "make all"

all: pulpGLPK.so pulpCOIN.so pulpCPLEX.so

clean:
	rm -f test1.lp pulp.pyc *.o

modclean:
	rm -f *.so

pulpGLPK.so: pulpGLPK.o mapkit_vpi.o mapkit_generic.o pulp_generic.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o pulpGLPK.so pulpGLPK.o \
		mapkit_vpi.o mapkit_generic.o pulp_generic.o \
		-lglpk

pulpCOIN.so: pulpCOIN.o mapkit_vpi.o mapkit_generic.o pulp_generic.o
	$(CXX) $(CXXFLAGS) $(LDFLAGS) -o pulpCOIN.so pulpCOIN.o \
		mapkit_vpi.o mapkit_generic.o pulp_generic.o \
		-lCbc -lCoin -lClp -lCgl -lOsi -lOsiClp \
		$(COINLIBS) $(LDADDLIBS)

pulpCPLEX.so: pulpCPLEX.o mapkit_vpi.o mapkit_generic.o pulp_generic.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o pulpCPLEX.so pulpCPLEX.o \
		mapkit_vpi.o mapkit_generic.o pulp_generic.o \
		-lcplex

pulp-test:
	python pulp.py

tests: test1 test2 test3 test4

test1:
	time python test1.py

test2:
	time python test2.py

test3:
	time python test3.py

test4:
	time python test4.py

test5:
	time python test5.py
