include $(SOPHYABASE)/include/sophyamake.inc
#include ../BuildMgr/sophyamake.inc

OBJ = ${CMVPROG}/obj/
EXE = ${CMVPROG}/exe/
LIB = ${CMVPROG}/lib/
MACH = $(shell echo `uname`)
ifeq ($(MACH),OSF1)
CXXREP = -ptr $(OBJ)/CmvBAO_cxxrep/
endif

MYEXTINC = ${EXTLIBDIR}/${MACH}/include
MYLIB  = $(SOPHYAEXTSLBLIST) -L$(LIB) -lcmvsimbao -lcmvgenfluc -lfftw3_threads -lfftw3 -lm
MYLIB4 = $(SOPHYAEXTSLBLIST) -L$(LIB) -lcmvsimbao -lcmvgenfluc4 -lfftw3f_threads -lfftw3f -lm

#--------------------------------------------------------------------------
# ---- Les programmes de simulation
PROGS = \
       $(EXE)cmvobserv3d $(EXE)cmvobserv3df \
       $(EXE)cmvtuniv $(EXE)cmvtransf $(EXE)cmvtgrowth $(EXE)cmvtstpk \
       $(EXE)cmvtstsch $(EXE)cmvtstblack $(EXE)cmvtvarspec $(EXE)cmvdefsurv \
       $(EXE)cmvtintfun $(EXE)cmvconcherr $(EXE)cmvtinterp $(EXE)cmvtstagn \
       $(EXE)cmvschdist $(EXE)cmvhshsns
 
PROGSOBJ = \
          $(OBJ)cmvobserv3d.o $(OBJ)cmvobserv3df.o \
          $(OBJ)cmvtuniv.o $(OBJ)cmvtransf.o $(OBJ)cmvtgrowth.o $(OBJ)cmvtstpk.o \
          $(OBJ)cmvtstsch.o $(OBJ)cmvtstblack.o $(OBJ)cmvtvarspec.o $(OBJ)cmvdefsurv.o \
          $(OBJ)cmvtintfun.o $(OBJ)cmvtinterp.o \
          $(OBJ)cmvconcherr.o $(OBJ)cmvtluc.o $(OBJ)cmvtstagn.o $(OBJ)cmvschdist.o \
          $(OBJ)cmvhshsns.o
 
LIBROBJ = \
          $(OBJ)cosmocalc.o $(OBJ)pkspectrum.o $(OBJ)schechter.o \
          $(OBJ)planckspectra.o $(OBJ)geneutils.o $(OBJ)agnjackson.o
LIBGOBJ = $(OBJ)genefluct3d.o
LIBGOBJ4 = $(OBJ)genefluct3df.o

LIBR  = $(LIB)libcmvsimbao.a
LIBG  = $(LIB)libcmvgenfluc.a
LIBG4 = $(LIB)libcmvgenfluc4.a

#--------------------------------------------------------------------------
# ---- Les programmes de test
PROGSTEST = \
        $(EXE)cmvchkwhu $(EXE)hu_sigma8 $(EXE)cmvsinxsx
#$(EXE)cmvtluc

PROGSTESTOBJ = \
        $(OBJ)hu_tf_fit.o $(OBJ)hu_power.o \
        $(OBJ)cmvtluc.o $(OBJ)cmvchkwhu.o $(OBJ)hu_sigma8.o \
        $(OBJ)cmvsinxsx.o

#--------------------------------------------------------------------------
#---- Les programmes utilisant des librairies non standard SOPHYA
SPROGS = \
       $(EXE)cmvfitpk

SPROGSOBJ = \
       $(OBJ)cmvfitpk.o

#----
all: lib prog

lib: $(LIBR) $(LIBG) $(LIBG4)

prog: $(PROGS)

progtest: $(PROGSTEST)

sprog: $(SPROGS)

allprog: all progtest sprog

clean:
	rm -f *.o
	rm -f $(PROGS) $(PROGSOBJ)
	rm -f $(LIBR) $(LIBROBJ)
	rm -f $(LIBG) $(LIBGOBJ)
	rm -f $(LIBG4) $(LIBGOBJ4)
	rm -rf $(OBJ)/CmvBAO_cxxrep/
	rm -f $(PROGSTEST) $(PROGSTESTOBJ)
	rm -f $(SPROGS) $(SPROGSOBJ)

##############################################################################
$(LIB)libcmvsimbao.a : $(LIBROBJ)
	$(AR) $(ARFLAGS) $@ $? 
$(OBJ)cosmocalc.o: cosmocalc.cc cosmocalc.h constcosmo.h
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cosmocalc.cc
$(OBJ)schechter.o: schechter.cc schechter.h constcosmo.h
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ schechter.cc
$(OBJ)planckspectra.o: planckspectra.cc planckspectra.h constcosmo.h
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ planckspectra.cc
$(OBJ)pkspectrum.o: pkspectrum.cc pkspectrum.h constcosmo.h
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ pkspectrum.cc
$(OBJ)geneutils.o: geneutils.cc geneutils.h
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ geneutils.cc
$(OBJ)agnjackson.o: agnjackson.cc agnjackson.h
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ agnjackson.cc

$(LIB)libcmvgenfluc.a : $(LIBGOBJ)
	$(AR) $(ARFLAGS) $@ $? 
$(OBJ)genefluct3d.o: genefluct3d.cc genefluct3d.h
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ genefluct3d.cc

$(LIB)libcmvgenfluc4.a : $(LIBGOBJ4)
	$(AR) $(ARFLAGS) $@ $? 
$(OBJ)genefluct3df.o: genefluct3d.cc genefluct3d.h
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -DGEN3D_FLOAT -o $@ genefluct3d.cc

##############################################################################
cmvtuniv: $(EXE)cmvtuniv
	echo $@ " done"
$(EXE)cmvtuniv: $(OBJ)cmvtuniv.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvtuniv.o $(MYLIB) 
$(OBJ)cmvtuniv.o: cmvtuniv.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtuniv.cc

##############################################################################
cmvtransf: $(EXE)cmvtransf
	echo $@ " done"
$(EXE)cmvtransf: $(OBJ)cmvtransf.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvtransf.o $(MYLIB) 
$(OBJ)cmvtransf.o: cmvtransf.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtransf.cc

##############################################################################
cmvtgrowth: $(EXE)cmvtgrowth
	echo $@ " done"
$(EXE)cmvtgrowth: $(OBJ)cmvtgrowth.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvtgrowth.o $(MYLIB) 
$(OBJ)cmvtgrowth.o: cmvtgrowth.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtgrowth.cc

##############################################################################
cmvtstpk: $(EXE)cmvtstpk
	echo $@ " done"
$(EXE)cmvtstpk: $(OBJ)cmvtstpk.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvtstpk.o $(MYLIB) 
$(OBJ)cmvtstpk.o: cmvtstpk.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtstpk.cc

##############################################################################
cmvtstsch: $(EXE)cmvtstsch
	echo $@ " done"
$(EXE)cmvtstsch: $(OBJ)cmvtstsch.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvtstsch.o $(MYLIB) 
$(OBJ)cmvtstsch.o: cmvtstsch.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtstsch.cc

##############################################################################
cmvtstblack: $(EXE)cmvtstblack
	echo $@ " done"
$(EXE)cmvtstblack: $(OBJ)cmvtstblack.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvtstblack.o $(MYLIB) 
$(OBJ)cmvtstblack.o: cmvtstblack.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtstblack.cc

##############################################################################
cmvtvarspec: $(EXE)cmvtvarspec
	echo $@ " done"
$(EXE)cmvtvarspec: $(OBJ)cmvtvarspec.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvtvarspec.o $(MYLIB) 
$(OBJ)cmvtvarspec.o: cmvtvarspec.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtvarspec.cc

##############################################################################
cmvdefsurv: $(EXE)cmvdefsurv
	echo $@ " done"
$(EXE)cmvdefsurv: $(OBJ)cmvdefsurv.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvdefsurv.o $(MYLIB) 
$(OBJ)cmvdefsurv.o: cmvdefsurv.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvdefsurv.cc

##############################################################################
cmvobserv3d: $(EXE)cmvobserv3d
	echo $@ " done"
$(EXE)cmvobserv3d: $(OBJ)cmvobserv3d.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvobserv3d.o $(MYLIB) 
$(OBJ)cmvobserv3d.o: cmvobserv3d.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvobserv3d.cc

cmvobserv3df: $(EXE)cmvobserv3df
	echo $@ " done"
$(EXE)cmvobserv3df: $(OBJ)cmvobserv3df.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvobserv3df.o $(MYLIB4) 
$(OBJ)cmvobserv3df.o: cmvobserv3d.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -DGEN3D_FLOAT -o $@ cmvobserv3d.cc

##############################################################################
cmvtintfun: $(EXE)cmvtintfun
	echo $@ " done"
$(EXE)cmvtintfun: $(OBJ)cmvtintfun.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvtintfun.o $(MYLIB) 
$(OBJ)cmvtintfun.o: cmvtintfun.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtintfun.cc

##############################################################################
cmvconcherr: $(EXE)cmvconcherr
	echo $@ " done"
$(EXE)cmvconcherr: $(OBJ)cmvconcherr.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvconcherr.o $(MYLIB) 
$(OBJ)cmvconcherr.o: cmvconcherr.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvconcherr.cc

##############################################################################
cmvtinterp: $(EXE)cmvtinterp
	echo $@ " done"
$(EXE)cmvtinterp: $(OBJ)cmvtinterp.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvtinterp.o $(MYLIB) 
$(OBJ)cmvtinterp.o: cmvtinterp.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtinterp.cc

##############################################################################
cmvtstagn: $(EXE)cmvtstagn
	echo $@ " done"
$(EXE)cmvtstagn: $(OBJ)cmvtstagn.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvtstagn.o $(MYLIB) 
$(OBJ)cmvtstagn.o: cmvtstagn.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtstagn.cc

##############################################################################
cmvschdist: $(EXE)cmvschdist
	echo $@ " done"
$(EXE)cmvschdist: $(OBJ)cmvschdist.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvschdist.o $(MYLIB) 
$(OBJ)cmvschdist.o: cmvschdist.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvschdist.cc


##############################################################################
cmvchkwhu: $(EXE)cmvchkwhu
	echo $@ " done"
$(EXE)cmvchkwhu: $(OBJ)cmvchkwhu.o $(OBJ)hu_tf_fit.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvchkwhu.o $(OBJ)hu_tf_fit.o $(MYLIB) 
$(OBJ)cmvchkwhu.o: cmvchkwhu.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvchkwhu.cc
$(OBJ)hu_tf_fit.o: hu_tf_fit.c hu_tf_fit.h
	$(CCOMPILE) -o $@ hu_tf_fit.c

hu_sigma8: $(EXE)hu_sigma8
	echo $@ " done"
$(EXE)hu_sigma8: $(OBJ)hu_sigma8.o $(OBJ)hu_power.o
	$(CLINK) -o $@ $(OBJ)hu_sigma8.o $(OBJ)hu_power.o -lc -lm
$(OBJ)hu_sigma8.o: hu_sigma8.c
	$(CCOMPILE) -o $@ hu_sigma8.c
$(OBJ)hu_power.o: hu_power.c hu_power.h
	$(CCOMPILE) -o $@ hu_power.c

##############################################################################
cmvtluc: $(EXE)cmvtluc
	echo $@ " done"
$(EXE)cmvtluc: $(OBJ)cmvtluc.o
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvtluc.o $(SOPHYASLBLIST) -L$(SOPHYALIBP) -lLUC
$(OBJ)cmvtluc.o: cmvtluc.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvtluc.cc

##############################################################################
cmvfitpk: $(EXE)cmvfitpk
	echo $@ " done"
$(EXE)cmvfitpk: $(OBJ)cmvfitpk.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvfitpk.o $(MYLIB) -lMinuit2
$(OBJ)cmvfitpk.o: cmvfitpk.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvfitpk.cc

##############################################################################
cmvsinxsx: $(EXE)cmvsinxsx
	echo $@ " done"
$(EXE)cmvsinxsx: $(OBJ)cmvsinxsx.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvsinxsx.o $(MYLIB) 
$(OBJ)cmvsinxsx.o: cmvsinxsx.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvsinxsx.cc

##############################################################################
cmvhshsns: $(EXE)cmvhshsns
	echo $@ " done"
$(EXE)cmvhshsns: $(OBJ)cmvhshsns.o $(LIBR)
	$(CXXLINK) $(CXXREP) -o $@ $(OBJ)cmvhshsns.o $(MYLIB) 
$(OBJ)cmvhshsns.o: cmvhshsns.cc
	$(CXXCOMPILE) $(CXXREP) -I$(MYEXTINC) -o $@ cmvhshsns.cc

##############################################################################
