#===============================================================================
# CHOLMOD/MATLAB/Makefile
#===============================================================================

default: all

include ../../UFconfig/UFconfig.mk

I = -I. -I../../AMD/Include -I../../COLAMD/Include -I../../CCOLAMD/Include \
    -I../../CAMD/Include -I../Include -I../../UFconfig -I$(METIS_PATH)/Lib

all: mread sdmult ldlsolve resymbol symbfact2 chol2 lchol \
	ldlchol cholmod2 ldlupdate metis bisect nesdis etree2 sparse2 analyze \
	septree spsym mwrite other

MX = $(MEX) $(CHOLMOD_CONFIG) -DDLONG -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE $(I)

distclean: purge

purge: clean
	- $(RM) *.mex* *.dll

clean:
	- $(RM) $(CLEAN)

#===============================================================================

AMD_INC = ../../AMD/Include/amd.h ../../AMD/Include/amd_internal.h

AMD = \
	amd_1.o \
	amd_2.o \
	amd_aat.o \
	amd_control.o \
	amd_defaults.o \
	amd_dump.o \
	amd_global.o \
	amd_info.o \
	amd_order.o \
	amd_postorder.o \
	amd_post_tree.o \
	amd_preprocess.o \
	amd_valid.o

amd_1.o: ../../AMD/Source/amd_1.c $(AMD_INC)
	$(MX) -c $<

amd_2.o: ../../AMD/Source/amd_2.c $(AMD_INC)
	$(MX) -c $<

amd_aat.o: ../../AMD/Source/amd_aat.c $(AMD_INC)
	$(MX) -c $<

amd_control.o: ../../AMD/Source/amd_control.c $(AMD_INC)
	$(MX) -c $<

amd_defaults.o: ../../AMD/Source/amd_defaults.c $(AMD_INC)
	$(MX) -c $<

amd_dump.o: ../../AMD/Source/amd_dump.c $(AMD_INC)
	$(MX) -c $<

amd_global.o: ../../AMD/Source/amd_global.c $(AMD_INC)
	$(MX) -c $<

amd_info.o: ../../AMD/Source/amd_info.c $(AMD_INC)
	$(MX) -c $<

amd_order.o: ../../AMD/Source/amd_order.c $(AMD_INC)
	$(MX) -c $<

amd_postorder.o: ../../AMD/Source/amd_postorder.c $(AMD_INC)
	$(MX) -c $<

amd_post_tree.o: ../../AMD/Source/amd_post_tree.c $(AMD_INC)
	$(MX) -c $<

amd_preprocess.o: ../../AMD/Source/amd_preprocess.c $(AMD_INC)
	$(MX) -c $<

amd_valid.o: ../../AMD/Source/amd_valid.c $(AMD_INC)
	$(MX) -c $<

#===============================================================================

CAMD_INC = ../../CAMD/Include/camd.h ../../CAMD/Include/camd_internal.h

CAMD = \
	camd_1.o \
	camd_2.o \
	camd_aat.o \
	camd_control.o \
	camd_defaults.o \
	camd_dump.o \
	camd_global.o \
	camd_info.o \
	camd_order.o \
	camd_postorder.o \
	camd_preprocess.o \
	camd_valid.o

camd_1.o: ../../CAMD/Source/camd_1.c $(CAMD_INC)
	$(MX) -c $<

camd_2.o: ../../CAMD/Source/camd_2.c $(CAMD_INC)
	$(MX) -c $<

camd_aat.o: ../../CAMD/Source/camd_aat.c $(CAMD_INC)
	$(MX) -c $<

camd_control.o: ../../CAMD/Source/camd_control.c $(CAMD_INC)
	$(MX) -c $<

camd_defaults.o: ../../CAMD/Source/camd_defaults.c $(CAMD_INC)
	$(MX) -c $<

camd_dump.o: ../../CAMD/Source/camd_dump.c $(CAMD_INC)
	$(MX) -c $<

camd_global.o: ../../CAMD/Source/camd_global.c $(CAMD_INC)
	$(MX) -c $<

camd_info.o: ../../CAMD/Source/camd_info.c $(CAMD_INC)
	$(MX) -c $<

camd_order.o: ../../CAMD/Source/camd_order.c $(CAMD_INC)
	$(MX) -c $<

camd_postorder.o: ../../CAMD/Source/camd_postorder.c $(CAMD_INC)
	$(MX) -c $<

camd_post_tree.o: ../../CAMD/Source/camd_post_tree.c $(CAMD_INC)
	$(MX) -c $<

camd_preprocess.o: ../../CAMD/Source/camd_preprocess.c $(CAMD_INC)
	$(MX) -c $<

camd_valid.o: ../../CAMD/Source/camd_valid.c $(CAMD_INC)
	$(MX) -c $<

#===============================================================================

COLAMD_INC = ../../COLAMD/Include/colamd.h

COLAMD = colamd.o colamd_global.o

colamd.o: ../../COLAMD/Source/colamd.c $(COLAMD_INC)
	$(MX) -c $<

colamd_global.o: ../../COLAMD/Source/colamd_global.c $(COLAMD_INC)
	$(MX) -c $<

#===============================================================================

CCOLAMD_INC = ../../CCOLAMD/Include/ccolamd.h

CCOLAMD = ccolamd.o ccolamd_global.o

ccolamd.o: ../../CCOLAMD/Source/ccolamd.c $(CCOLAMD_INC)
	$(MX) -c $<

ccolamd_global.o: ../../CCOLAMD/Source/ccolamd_global.c $(CCOLAMD_INC)
	$(MX) -c $<

#===============================================================================

# patch METIS 4.0.1
rename.h: Makefile $(METIS_PATH)/Lib/rename.h
	echo '/* do not edit this file; generated by CHOLMOD/MATLAB/Makefile */' > rename.h
	echo '#undef log2' >> rename.h
	echo '#include "$(METIS_PATH)/Lib/rename.h"' >> rename.h
	echo '#undef log2' >> rename.h
	echo '#define log2 METIS__log2' >> rename.h
	echo '#include "mex.h"' >> rename.h
	echo '#define malloc mxMalloc' >> rename.h
	echo '#define free mxFree' >> rename.h
	echo '#define calloc mxCalloc' >> rename.h
	echo '#define realloc mxRealloc' >> rename.h

METIS_INC = rename.h \
	$(METIS_PATH)/Lib/defs.h \
	$(METIS_PATH)/Lib/macros.h \
	$(METIS_PATH)/Lib/metis.h \
	$(METIS_PATH)/Lib/proto.h \
	$(METIS_PATH)/Lib/rename.h \
	$(METIS_PATH)/Lib/struct.h 

METIS = \
	balance.o \
	bucketsort.o \
	ccgraph.o \
	coarsen.o \
	compress.o \
	debug.o \
	estmem.o \
	fm.o \
	fortran.o \
	frename.o \
	graph.o \
	initpart.o \
	kmetis.o \
	kvmetis.o \
	kwayfm.o \
	kwayrefine.o \
	kwayvolfm.o \
	kwayvolrefine.o \
	match.o \
	mbalance2.o \
	mbalance.o \
	mcoarsen.o \
	memory.o \
	mesh.o \
	meshpart.o \
	mfm2.o \
	mfm.o \
	mincover.o \
	minitpart2.o \
	minitpart.o \
	mkmetis.o \
	mkwayfmh.o \
	mkwayrefine.o \
	mmatch.o \
	mmd.o \
	mpmetis.o \
	mrefine2.o \
	mrefine.o \
	mutil.o \
	myqsort.o \
	ometis.o \
	parmetis.o \
	pmetis.o \
	pqueue.o \
	refine.o \
	separator.o \
	sfm.o \
	srefine.o \
	stat.o \
	subdomains.o \
	timing.o \
	util.o

balance.o: $(METIS_PATH)/Lib/balance.c $(METIS_INC)
	$(MX) -c $<

bucketsort.o: $(METIS_PATH)/Lib/bucketsort.c $(METIS_INC)
	$(MX) -c $<

ccgraph.o: $(METIS_PATH)/Lib/ccgraph.c $(METIS_INC)
	$(MX) -c $<

coarsen.o: $(METIS_PATH)/Lib/coarsen.c $(METIS_INC)
	$(MX) -c $<

compress.o: $(METIS_PATH)/Lib/compress.c $(METIS_INC)
	$(MX) -c $<

debug.o: $(METIS_PATH)/Lib/debug.c $(METIS_INC)
	$(MX) -c $<

estmem.o: $(METIS_PATH)/Lib/estmem.c $(METIS_INC)
	$(MX) -c $<

fm.o: $(METIS_PATH)/Lib/fm.c $(METIS_INC)
	$(MX) -c $<

fortran.o: $(METIS_PATH)/Lib/fortran.c $(METIS_INC)
	$(MX) -c $<

frename.o: $(METIS_PATH)/Lib/frename.c $(METIS_INC)
	$(MX) -c $<

graph.o: $(METIS_PATH)/Lib/graph.c $(METIS_INC)
	$(MX) -c $<

initpart.o: $(METIS_PATH)/Lib/initpart.c $(METIS_INC)
	$(MX) -c $<

kmetis.o: $(METIS_PATH)/Lib/kmetis.c $(METIS_INC)
	$(MX) -c $<

kvmetis.o: $(METIS_PATH)/Lib/kvmetis.c $(METIS_INC)
	$(MX) -c $<

kwayfm.o: $(METIS_PATH)/Lib/kwayfm.c $(METIS_INC)
	$(MX) -c $<

kwayrefine.o: $(METIS_PATH)/Lib/kwayrefine.c $(METIS_INC)
	$(MX) -c $<

kwayvolfm.o: $(METIS_PATH)/Lib/kwayvolfm.c $(METIS_INC)
	$(MX) -c $<

kwayvolrefine.o: $(METIS_PATH)/Lib/kwayvolrefine.c $(METIS_INC)
	$(MX) -c $<

match.o: $(METIS_PATH)/Lib/match.c $(METIS_INC)
	$(MX) -c $<

mbalance2.o: $(METIS_PATH)/Lib/mbalance2.c $(METIS_INC)
	$(MX) -c $<

mbalance.o: $(METIS_PATH)/Lib/mbalance.c $(METIS_INC)
	$(MX) -c $<

mcoarsen.o: $(METIS_PATH)/Lib/mcoarsen.c $(METIS_INC)
	$(MX) -c $<

memory.o: $(METIS_PATH)/Lib/memory.c $(METIS_INC)
	$(MX) -c $<

mesh.o: $(METIS_PATH)/Lib/mesh.c $(METIS_INC)
	$(MX) -c $<

meshpart.o: $(METIS_PATH)/Lib/meshpart.c $(METIS_INC)
	$(MX) -c $<

mfm2.o: $(METIS_PATH)/Lib/mfm2.c $(METIS_INC)
	$(MX) -c $<

mfm.o: $(METIS_PATH)/Lib/mfm.c $(METIS_INC)
	$(MX) -c $<

mincover.o: $(METIS_PATH)/Lib/mincover.c $(METIS_INC)
	$(MX) -c $<

minitpart2.o: $(METIS_PATH)/Lib/minitpart2.c $(METIS_INC)
	$(MX) -c $<

minitpart.o: $(METIS_PATH)/Lib/minitpart.c $(METIS_INC)
	$(MX) -c $<

mkmetis.o: $(METIS_PATH)/Lib/mkmetis.c $(METIS_INC)
	$(MX) -c $<

mkwayfmh.o: $(METIS_PATH)/Lib/mkwayfmh.c $(METIS_INC)
	$(MX) -c $<

mkwayrefine.o: $(METIS_PATH)/Lib/mkwayrefine.c $(METIS_INC)
	$(MX) -c $<

mmatch.o: $(METIS_PATH)/Lib/mmatch.c $(METIS_INC)
	$(MX) -c $<

mmd.o: $(METIS_PATH)/Lib/mmd.c $(METIS_INC)
	$(MX) -c $<

mpmetis.o: $(METIS_PATH)/Lib/mpmetis.c $(METIS_INC)
	$(MX) -c $<

mrefine2.o: $(METIS_PATH)/Lib/mrefine2.c $(METIS_INC)
	$(MX) -c $<

mrefine.o: $(METIS_PATH)/Lib/mrefine.c $(METIS_INC)
	$(MX) -c $<

mutil.o: $(METIS_PATH)/Lib/mutil.c $(METIS_INC)
	$(MX) -c $<

myqsort.o: $(METIS_PATH)/Lib/myqsort.c $(METIS_INC)
	$(MX) -c $<

ometis.o: $(METIS_PATH)/Lib/ometis.c $(METIS_INC)
	$(MX) -c $<

parmetis.o: $(METIS_PATH)/Lib/parmetis.c $(METIS_INC)
	$(MX) -c $<

pmetis.o: $(METIS_PATH)/Lib/pmetis.c $(METIS_INC)
	$(MX) -c $<

pqueue.o: $(METIS_PATH)/Lib/pqueue.c $(METIS_INC)
	$(MX) -c $<

refine.o: $(METIS_PATH)/Lib/refine.c $(METIS_INC)
	$(MX) -c $<

separator.o: $(METIS_PATH)/Lib/separator.c $(METIS_INC)
	$(MX) -c $<

sfm.o: $(METIS_PATH)/Lib/sfm.c $(METIS_INC)
	$(MX) -c $<

srefine.o: $(METIS_PATH)/Lib/srefine.c $(METIS_INC)
	$(MX) -c $<

stat.o: $(METIS_PATH)/Lib/stat.c $(METIS_INC)
	$(MX) -c $<

subdomains.o: $(METIS_PATH)/Lib/subdomains.c $(METIS_INC)
	$(MX) -c $<

timing.o: $(METIS_PATH)/Lib/timing.c $(METIS_INC)
	$(MX) -c $<

util.o: $(METIS_PATH)/Lib/util.c $(METIS_INC)
	$(MX) -c $<

#===============================================================================

CHOLMOD_INC = \
	cholmod_matlab.h \
	../Include/cholmod_blas.h \
	../Include/cholmod_check.h \
	../Include/cholmod_cholesky.h \
	../Include/cholmod_complexity.h \
	../Include/cholmod_config.h \
	../Include/cholmod_core.h \
	../Include/cholmod.h \
	../Include/cholmod_internal.h \
	../Include/cholmod_io64.h \
	../Include/cholmod_matrixops.h \
	../Include/cholmod_modify.h \
	../Include/cholmod_partition.h \
	../Include/cholmod_supernodal.h \
	../Include/cholmod_template.h

CHOLMOD = \
	cholmod_matlab.o \
	cholmod_check.o \
	cholmod_read.o \
	cholmod_write.o \
	cholmod_amd.o \
	cholmod_analyze.o \
	cholmod_colamd.o \
	cholmod_etree.o \
	cholmod_factorize.o \
	cholmod_postorder.o \
	cholmod_rcond.o \
	cholmod_resymbol.o \
	cholmod_rowcolcounts.o \
	cholmod_rowfac.o \
	cholmod_solve.o \
	cholmod_spsolve.o \
	cholmod_aat.o \
	cholmod_add.o \
	cholmod_band.o \
	cholmod_change_factor.o \
	cholmod_common.o \
	cholmod_complex.o \
	cholmod_copy.o \
	cholmod_dense.o \
	cholmod_error.o \
	cholmod_factor.o \
	cholmod_memory.o \
	cholmod_sparse.o \
	cholmod_transpose.o \
	cholmod_triplet.o \
	cholmod_drop.o \
	cholmod_horzcat.o \
	cholmod_norm.o \
	cholmod_scale.o \
	cholmod_sdmult.o \
	cholmod_ssmult.o \
	cholmod_submatrix.o \
	cholmod_symmetry.o \
	cholmod_vertcat.o \
	cholmod_rowadd.o \
	cholmod_rowdel.o \
	cholmod_updown.o \
	cholmod_camd.o \
	cholmod_ccolamd.o \
	cholmod_csymamd.o \
	cholmod_metis.o \
	cholmod_nesdis.o \
	cholmod_super_numeric.o \
	cholmod_super_solve.o \
	cholmod_super_symbolic.o

cholmod_matlab.o: cholmod_matlab.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_check.o: ../Check/cholmod_check.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_read.o: ../Check/cholmod_read.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_write.o: ../Check/cholmod_write.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_amd.o: ../Cholesky/cholmod_amd.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_analyze.o: ../Cholesky/cholmod_analyze.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_colamd.o: ../Cholesky/cholmod_colamd.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_etree.o: ../Cholesky/cholmod_etree.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_factorize.o: ../Cholesky/cholmod_factorize.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_postorder.o: ../Cholesky/cholmod_postorder.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_rcond.o: ../Cholesky/cholmod_rcond.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_resymbol.o: ../Cholesky/cholmod_resymbol.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_rowcolcounts.o: ../Cholesky/cholmod_rowcolcounts.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_rowfac.o: ../Cholesky/cholmod_rowfac.c \
	../Cholesky/t_cholmod_rowfac.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_solve.o: ../Cholesky/cholmod_solve.c \
	../Cholesky/t_cholmod_lsolve.c \
	../Cholesky/t_cholmod_ltsolve.c \
	../Cholesky/t_cholmod_solve.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_spsolve.o: ../Cholesky/cholmod_spsolve.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_aat.o: ../Core/cholmod_aat.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_add.o: ../Core/cholmod_add.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_band.o: ../Core/cholmod_band.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_change_factor.o: ../Core/cholmod_change_factor.c \
	../Core/t_cholmod_change_factor.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_common.o: ../Core/cholmod_common.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_complex.o: ../Core/cholmod_complex.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_copy.o: ../Core/cholmod_copy.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_dense.o: ../Core/cholmod_dense.c \
	../Core/t_cholmod_dense.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_error.o: ../Core/cholmod_error.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_factor.o: ../Core/cholmod_factor.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_memory.o: ../Core/cholmod_memory.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_sparse.o: ../Core/cholmod_sparse.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_transpose.o: ../Core/cholmod_transpose.c \
	../Core/t_cholmod_transpose.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_triplet.o: ../Core/cholmod_triplet.c \
	../Core/t_cholmod_triplet.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_drop.o: ../MatrixOps/cholmod_drop.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_horzcat.o: ../MatrixOps/cholmod_horzcat.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_norm.o: ../MatrixOps/cholmod_norm.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_scale.o: ../MatrixOps/cholmod_scale.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_sdmult.o: ../MatrixOps/cholmod_sdmult.c \
	../MatrixOps/t_cholmod_sdmult.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_ssmult.o: ../MatrixOps/cholmod_ssmult.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_submatrix.o: ../MatrixOps/cholmod_submatrix.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_symmetry.o: ../MatrixOps/cholmod_symmetry.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_vertcat.o: ../MatrixOps/cholmod_vertcat.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_rowadd.o: ../Modify/cholmod_rowadd.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_rowdel.o: ../Modify/cholmod_rowdel.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_updown.o: ../Modify/cholmod_updown.c \
	../Modify/t_cholmod_updown.c \
	../Modify/t_cholmod_updown_numkr.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_camd.o: ../Partition/cholmod_camd.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_ccolamd.o: ../Partition/cholmod_ccolamd.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_csymamd.o: ../Partition/cholmod_csymamd.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_metis.o: ../Partition/cholmod_metis.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_nesdis.o: ../Partition/cholmod_nesdis.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_super_numeric.o: ../Supernodal/cholmod_super_numeric.c \
	../Supernodal/t_cholmod_super_numeric.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_super_solve.o: ../Supernodal/cholmod_super_solve.c \
	../Supernodal/t_cholmod_super_solve.c $(CHOLMOD_INC)
	$(MX) -c $<

cholmod_super_symbolic.o: ../Supernodal/cholmod_super_symbolic.c $(CHOLMOD_INC)
	$(MX) -c $<


#===============================================================================

OBJ = $(AMD) $(CAMD) $(COLAMD) $(CCOLAMD) $(METIS) $(CHOLMOD)

analyze: analyze.c $(OBJ)
	$(MX) analyze.c $(OBJ)

mread: mread.c $(OBJ)
	$(MX) mread.c $(OBJ)

mwrite: mwrite.c $(OBJ)
	$(MX) mwrite.c $(OBJ)

spsym: spsym.c $(OBJ)
	$(MX) spsym.c $(OBJ)

chol2: chol2.c $(OBJ)
	$(MX) chol2.c $(OBJ)

lchol: lchol.c $(OBJ)
	$(MX) lchol.c $(OBJ)

ldlchol: ldlchol.c $(OBJ)
	$(MX) ldlchol.c $(OBJ)

ldlupdate: ldlupdate.c $(OBJ)
	$(MX) ldlupdate.c $(OBJ)

ldlsolve: ldlsolve.c $(OBJ)
	$(MX) ldlsolve.c $(OBJ)

sdmult: sdmult.c $(OBJ)
	$(MX) sdmult.c $(OBJ)

resymbol: resymbol.c $(OBJ)
	$(MX) resymbol.c $(OBJ)

cholmod2: cholmod2.c $(OBJ)
	$(MX) cholmod2.c $(OBJ)

nesdis: nesdis.c $(OBJ)
	$(MX) nesdis.c $(OBJ)

septree: septree.c $(OBJ)
	$(MX) septree.c $(OBJ)

metis: metis.c $(OBJ)
	$(MX) metis.c $(OBJ)

etree2: etree2.c $(OBJ)
	$(MX) etree2.c $(OBJ)

bisect: bisect.c $(OBJ)
	$(MX) bisect.c $(OBJ)

symbfact2: symbfact2.c $(OBJ) 
	$(MX) symbfact2.c $(OBJ)

sparse2: sparse2.c $(OBJ) 
	$(MX) sparse2.c $(OBJ)

#-------------------------------------------------------------------------------

other:
	( cd ../../AMD ; $(MAKE) mex )
	( cd ../../CAMD ; $(MAKE) mex )
	( cd ../../COLAMD ; $(MAKE) mex )
	( cd ../../CCOLAMD ; $(MAKE) mex )
