#===============================================================================
# PASA/Demo/Makefile: For compiling the PASA demo
#===============================================================================

default: ccode

include ../../SuiteOPTconfig/SuiteOPTconfig.mk

# C code only:
ccode: demoHS demoRB demoOC demoQP

I = -I$(SUITESPARSE)/include \
	-I$(SUITEOPT)/SuiteOPTconfig \
	-I$(SUITEOPT)/PASA/Include \
	-I$(SUITEOPT)/PPROJ/Include \
	-I$(SUITEOPT)/CGDESCENT/Include \
	-I$(SUITEOPT)/NAPHEAP/Include

C = $(CC) $(CF) $(I)

LIB = $(SUITEOPT)/ldlibs/libpasa.a \
	$(SUITEOPT)/ldlibs/libsuiteoptconfig.a \
	$(SUITEOPT)/ldlibs/libpproj.a \
	$(SUITEOPT)/ldlibs/libnapheap.a \
	$(SUITEOPT)/ldlibs/libcg_descent.a \
	$(SUITEOPT)/ldlibs/libcholmod.a \
	$(SUITEOPT)/ldlibs/libamd.a \
	$(SUITEOPT)/ldlibs/libcamd.a \
	$(SUITEOPT)/ldlibs/libccolamd.a \
	$(SUITEOPT)/ldlibs/libcolamd.a \
	$(SUITEOPT)/ldlibs/libsuitesparseconfig.a \
	$(SUITESPARSE)/lib/libmetis.so \
	$(LAPACK) $(BLAS) $(XERBLA) -lm

#-------------------------------------------------------------------------------
# SuiteOPT/include directory contains all include files:
#-------------------------------------------------------------------------------
INCLUDE = Makefile \
	$(SUITEOPT)/SuiteOPTconfig/Userconfig.mk \
	$(SUITEOPT)/SuiteOPTconfig/SuiteOPTconfig.mk \
	$(SUITEOPT)/SuiteOPTconfig/sopt.h \
	$(SUITEOPT)/PASA/Include/pasa.h \
	$(SUITEOPT)/PPROJ/Include/pproj.h \
	$(SUITEOPT)/PPROJ/Include/pproj_check.h \
	$(SUITEOPT)/CGDESCENT/Include/cg_descent.h \
	$(SUITEOPT)/NAPHEAP/Include/napheap.h \
	$(SUITESPARSE)/include/cholmod_blas.h \
	$(SUITESPARSE)/include/cholmod_check.h \
	$(SUITESPARSE)/include/cholmod_cholesky.h \
	$(SUITESPARSE)/include/cholmod_complexity.h \
	$(SUITESPARSE)/include/cholmod_config.h \
	$(SUITESPARSE)/include/cholmod_core.h \
	$(SUITESPARSE)/include/cholmod.h \
	$(SUITESPARSE)/include/cholmod_matrixops.h \
	$(SUITESPARSE)/include/cholmod_modify.h \
	$(SUITESPARSE)/include/cholmod_partition.h \
	$(SUITESPARSE)/include/cholmod_supernodal.h \
	$(SUITESPARSE)/include/cholmod_template.h \
	$(SUITESPARSE)/include/amd.h \
	$(SUITESPARSE)/include/ccolamd.h \
	$(SUITESPARSE)/include/SuiteSparse_config.h \
	$(SUITESPARSE)/include/colamd.h \
	$(SUITESPARSE)/include/metis.h

#-------------------------------------
# demoHS
#-------------------------------------

demoHS: lib $(INCLUDE) demoHS.c
	$(C) -g -o demoHS demoHS.c $(LDLIBS) $(LIB) 

#-------------------------------------
# demoRB
#-------------------------------------

demoRB: lib $(INCLUDE) demoRB.c
	$(C) -g -o demoRB demoRB.c $(LDLIBS) $(LIB) 

#-------------------------------------
# demoOC
#-------------------------------------

demoOC: lib $(INCLUDE) demoOC.c
	$(C) -g -o demoOC demoOC.c $(LDLIBS) $(LIB) 

#-------------------------------------
# demoQP
#-------------------------------------

demoQP: lib $(INCLUDE) demoQP.c
	$(C) -g -o demoQP demoQP.c $(LDLIBS) $(LIB) 

#-------------------------------------
# Purge
#-------------------------------------

purge:
	- $(RM) run_pasa

#-------------------------------------
# Lib
#-------------------------------------
lib:
	( cd ../../SuiteOPTconfig ; $(MAKE) )
	( cd ../../PPROJ/Lib ; $(MAKE) )
	( cd ../../CGDESCENT/Lib ; $(MAKE) )
	( cd ../../NAPHEAP/Lib ; $(MAKE) )
	( cd ../Lib ; $(MAKE) )
