# -*- Makefile -*-

PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)


CSRC = auxfcns.c msg.c register_dll.c
FMODSRC = interfaces.f90 msgmc.f90 flogsumexp.f90 lbfgsbmod.f90 \
  covfun.f90 betaprior.f90 pdfy.f90 tcdfder.f90 pdfdz.f90 linkdz.f90 \
  bmargin.f90 linkfcn.f90 modelfcns_link.f90 modelfcns_pdfy.f90 \
  modelfcns.f90 mcmcfcns.f90 cor_fcns.f90 calcbd_fcns.f90
FFSRC = mcsp2.f90 bfsp2.f90 calcb2.f90 calcbd.f90 linkcalc.f90 \
  llik.f90 mcspz0.f90 skelpnts.f90 spcorr.f90 bfse.f90 transformz.f90 \
  seeb.f90 llikderiv.f90 llikmc.f90 mcsp_mala.f90

# Define the order of compilation
OBJECTS = $(CSRC:.c=.o) $(FMODSRC:.f90=.o) $(FFSRC:.f90=.o)

$(SHLIB): $(OBJECTS)

# Setup dependencies for parallel make
bfsp2.o: interfaces.o linkfcn.o flogsumexp.o bmargin.o covfun.o pdfy.o \
  betaprior.o modelfcns.o
bmargin.o: lbfgsbmod.o flogsumexp.o
calcb2.o: modelfcns.o interfaces.o flogsumexp.o covfun.o pdfy.o betaprior.o
calcbd.o: modelfcns.o interfaces.o flogsumexp.o covfun.o pdfy.o betaprior.o \
  calcbd_fcns.o
calcbd_fcns.o: modelfcns.o pdfy.o
covfun.o: interfaces.o cor_fcns.o
cor_fcns.o: interfaces.o
linkfcn.o: interfaces.o tcdfder.o
pdfy.o: interfaces.o linkfcn.o
mcsp2.o: msgmc.o mcmcfcns.o modelfcns.o linkfcn.o
llik.o: modelfcns.o covfun.o pdfy.o betaprior.o
llikmc.o: modelfcns.o covfun.o pdfy.o betaprior.o
mcspz0.o: interfaces.o covfun.o pdfy.o modelfcns.o
skelpnts.o: lbfgsbmod.o pdfdz.o linkfcn.o covfun.o betaprior.o pdfy.o \
  modelfcns.o calcbd_fcns.o
pdfdz.o: linkfcn.o linkdz.o interfaces.o
linkdz.o: interfaces.o
spcorr.o: covfun.o
bfse.o: interfaces.o flogsumexp.o bmargin.o
modelfcns.o: modelfcns_link.o modelfcns_pdfy.o
modelfcns_link.o: interfaces.o
modelfcns_pdfy.o: interfaces.o
mcmcfcns.o: modelfcns.o interfaces.o covfun.o betaprior.o linkfcn.o pdfy.o
transformz.o: modelfcns.o
linkcalc.o: mcmcfcns.o
seeb.o: covfun.o modelfcns.o
llikderiv.o: modelfcns.o covfun.o betaprior.o
mcsp_mala.o: msgmc.o mcmcfcns.o modelfcns.o linkfcn.o
