CC = gcc
CCFLAGS = 
CCP = g++
CCPFLAGS = -fPIC -I. -I../qubtree -DMAXILL_EXPORTS -O3 -DNDEBUG
LN = g++
LNFLAGS = -shared -fPIC -lm -lgsl -lgslcblas -g
ARCH = $(shell uname -m | sed -e s/i.86/i386/)
OBJ = obj_${ARCH}


OBJS =  ${OBJ}/amp_eval_tree.o \
	${OBJ}/dfp_optimize.o \
	${OBJ}/ExprEval.o \
	${OBJ}/histpdf.o \
	${OBJ}/LoadDataCB_Pager.o \
	${OBJ}/matrixutil.o \
	${OBJ}/mdlrep.o \
	${OBJ}/mil_eval_tree.o \
	${OBJ}/milutil.o \
	${OBJ}/modelTree.o \
	${OBJ}/mpl_eval_tree.o \
	${OBJ}/qmatrixutil.o \
	${OBJ}/qub_dfilter.o \
	${OBJ}/qub_reportstream.o \
	${OBJ}/QUB_UniqueArrays.o \
	${OBJ}/skm_eval_tree.o \
	${OBJ}/sparseutil.o \
	${OBJ}/stat_eval_tree.o \
	${OBJ}/convolve.o \
	${OBJ}/dfpminim.o \
	${OBJ}/eigen.o \
	${OBJ}/ioldt.o \
	${OBJ}/mbaum.o \
	${OBJ}/metamakv.o \
	${OBJ}/mexp.o \
	${OBJ}/mutimakv.o \
	${OBJ}/mvectb.o \
	${OBJ}/qtomutiq.o \
	${OBJ}/qublib.o \
	${OBJ}/svdecomp.o \
	${OBJ}/utility.o \
	${OBJ}/xtoq.o \
	${OBJ}/ztox.o

default: ${ARCH}/libqubopt.so

${ARCH}/libqubopt.so: ${OBJS}
	${LN} -o ${ARCH}/libqubopt.so ${OBJS} ${LNFLAGS}

clean:
	rm -f ${OBJ}/* ${ARCH}/libqubopt.so


install: ${ARCH}/libqubopt.so
	cp ${ARCH}/libqubopt.so /usr/lib


${OBJ}/amp_eval_tree.o: amp_eval_tree.cpp amp_eval_tree.h
	${CCP} ${CCPFLAGS} -c amp_eval_tree.cpp -o ${OBJ}/amp_eval_tree.o

${OBJ}/dfp_optimize.o: dfp_optimize.cpp dfp_optimize.h
	${CCP} ${CCPFLAGS} -c dfp_optimize.cpp -o ${OBJ}/dfp_optimize.o

${OBJ}/ExprEval.o: ExprEval.cpp ExprEval.h
	${CCP} ${CCPFLAGS} -c ExprEval.cpp -o ${OBJ}/ExprEval.o

${OBJ}/histpdf.o: histpdf.cpp histpdf.h
	${CCP} ${CCPFLAGS} -c histpdf.cpp -o ${OBJ}/histpdf.o

${OBJ}/LoadDataCB_Pager.o: LoadDataCB_Pager.cpp LoadDataCB_Pager.h
	${CCP} ${CCPFLAGS} -c LoadDataCB_Pager.cpp -o ${OBJ}/LoadDataCB_Pager.o

${OBJ}/matrixutil.o: matrixutil.cpp matrixutil.h
	${CCP} ${CCPFLAGS} -c matrixutil.cpp -o ${OBJ}/matrixutil.o

${OBJ}/mdlrep.o: mdlrep.cpp mdlrep.h
	${CCP} ${CCPFLAGS} -c mdlrep.cpp -o ${OBJ}/mdlrep.o

${OBJ}/mil_eval_tree.o: mil_eval_tree.cpp mil_eval_tree.h
	${CCP} ${CCPFLAGS} -c mil_eval_tree.cpp -o ${OBJ}/mil_eval_tree.o

${OBJ}/milutil.o: milutil.cpp milutil.h
	${CCP} ${CCPFLAGS} -c milutil.cpp -o ${OBJ}/milutil.o

${OBJ}/modelTree.o: modelTree.cpp modelTree.h
	${CCP} ${CCPFLAGS} -c modelTree.cpp -o ${OBJ}/modelTree.o

${OBJ}/mpl_eval_tree.o: mpl_eval_tree.cpp mpl_eval_tree.h
	${CCP} ${CCPFLAGS} -c mpl_eval_tree.cpp -o ${OBJ}/mpl_eval_tree.o

${OBJ}/qmatrixutil.o: qmatrixutil.cpp qmatrixutil.h
	${CCP} ${CCPFLAGS} -c qmatrixutil.cpp -o ${OBJ}/qmatrixutil.o

${OBJ}/qub_dfilter.o: qub_dfilter.cpp qub_dfilter.h
	${CCP} ${CCPFLAGS} -c qub_dfilter.cpp -o ${OBJ}/qub_dfilter.o

${OBJ}/qub_reportstream.o: qub_reportstream.cpp qub_reportstream.h
	${CCP} ${CCPFLAGS} -c qub_reportstream.cpp -o ${OBJ}/qub_reportstream.o

${OBJ}/QUB_UniqueArrays.o: QUB_UniqueArrays.cpp QUB_UniqueArrays.h
	${CCP} ${CCPFLAGS} -c QUB_UniqueArrays.cpp -o ${OBJ}/QUB_UniqueArrays.o

${OBJ}/skm_eval_tree.o: skm_eval_tree.cpp skm_eval_tree.h
	${CCP} ${CCPFLAGS} -c skm_eval_tree.cpp -o ${OBJ}/skm_eval_tree.o

${OBJ}/sparseutil.o: sparseutil.cpp sparseutil.h
	${CCP} ${CCPFLAGS} -c sparseutil.cpp -o ${OBJ}/sparseutil.o

${OBJ}/stat_eval_tree.o: stat_eval_tree.cpp stat_eval_tree.h
	${CCP} ${CCPFLAGS} -c stat_eval_tree.cpp -o ${OBJ}/stat_eval_tree.o


# former qublib.dll:


${OBJ}/convolve.o: convolve.cpp qublib.h
	${CCP} ${CCPFLAGS} -c convolve.cpp -o ${OBJ}/convolve.o

${OBJ}/dfpminim.o: dfpminim.cpp qublib.h
	${CCP} ${CCPFLAGS} -c dfpminim.cpp -o ${OBJ}/dfpminim.o

${OBJ}/eigen.o: eigen.cpp qublib.h
	${CCP} ${CCPFLAGS} -c eigen.cpp -o ${OBJ}/eigen.o

${OBJ}/ioldt.o: ioldt.cpp qublib.h
	${CCP} ${CCPFLAGS} -c ioldt.cpp -o ${OBJ}/ioldt.o

${OBJ}/mbaum.o: mbaum.cpp qublib.h
	${CCP} ${CCPFLAGS} -c mbaum.cpp -o ${OBJ}/mbaum.o

${OBJ}/metamakv.o: metamakv.cpp qublib.h
	${CCP} ${CCPFLAGS} -c metamakv.cpp -o ${OBJ}/metamakv.o

${OBJ}/mexp.o: mexp.cpp qublib.h
	${CCP} ${CCPFLAGS} -c mexp.cpp -o ${OBJ}/mexp.o

${OBJ}/mutimakv.o: mutimakv.cpp qublib.h
	${CCP} ${CCPFLAGS} -c mutimakv.cpp -o ${OBJ}/mutimakv.o

${OBJ}/mvectb.o: mvectb.cpp qublib.h
	${CCP} ${CCPFLAGS} -c mvectb.cpp -o ${OBJ}/mvectb.o

${OBJ}/qtomutiq.o: qtomutiq.cpp qublib.h
	${CCP} ${CCPFLAGS} -c qtomutiq.cpp -o ${OBJ}/qtomutiq.o

${OBJ}/qublib.o: qublib.cpp qublib.h
	${CCP} ${CCPFLAGS} -c qublib.cpp -o ${OBJ}/qublib.o

${OBJ}/svdecomp.o: svdecomp.cpp qublib.h
	${CCP} ${CCPFLAGS} -c svdecomp.cpp -o ${OBJ}/svdecomp.o

${OBJ}/utility.o: utility.cpp qublib.h
	${CCP} ${CCPFLAGS} -c utility.cpp -o ${OBJ}/utility.o

${OBJ}/xtoq.o: xtoq.cpp qublib.h
	${CCP} ${CCPFLAGS} -c xtoq.cpp -o ${OBJ}/xtoq.o

${OBJ}/ztox.o: ztox.cpp qublib.h
	${CCP} ${CCPFLAGS} -c ztox.cpp -o ${OBJ}/ztox.o


