# Use C++11
CXX_STD = CXX11
# PATHS
INCPATH=../inst/include
BUILDPATH = ../inst/include
PKG_CPPFLAGS = $(CPICFLAGS) -I$(INCPATH) $(R_XTRA_CPPFLAGS)
PKG_CXXFLAGS = $(CXXFLAGS) $(SHLIB_OPENMP_CXXFLAGS) `$(R_HOME)/bin/Rscript -e 'Rcpp:::CxxFlags()'` `$(R_HOME)/bin/Rscript -e 'writeLines(paste("-I",system.file(package="BH"),"/include",sep = ""))'`
PKG_LIBS = $(SHLIB_OPENMP_CXXFLAGS) -L$(INCPATH) -lfull $(LIBM)
LIBS =-L./ -L/../inst
# -L Path to lib
# -l Path to lib implmentation
# -I Path to header

DME=$(INCPATH)/dichotomous/estimation
DMM=$(INCPATH)/dichotomous/model
DMT=$(INCPATH)/dichotomous/type

PME=$(INCPATH)/polytomous/estimation
PMM=$(INCPATH)/polytomous/model
PMT=$(INCPATH)/polytomous/type

PTEST=test
PUTIL=$(INCPATH)/util

# SOURCES
## DME
DMESOURCES=estep.cpp estimation.cpp mstep.cpp
## DMM
DMMSOURCES=model.cpp onepl.cpp twopl.cpp threepl.cpp bayesian.cpp
## DMT
DMTSOURCES=estimationdata.cpp
## PME
PMESOURCES=estep.cpp estimation.cpp mstep.cpp
## PMM
PMMSOURCES=model.cpp onepl.cpp twopl.cpp
## PMT
PMTSOURCES=estimationdata.cpp
## PUTIL
UTILSOURCES=initial_values.cpp quadraturepoints.cpp ramsay.cpp

DMPATH=dichotomous
PMPATH=polytomous
## Targets

.PHONY: all mylibs
# All
all:$(SHLIB) mylibs
$(SHLIB): mylibs

mylibs:
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o dichotomous/estimation/mstep.o dichotomous/estimation/mstep.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o util/quadraturepoints.o util/quadraturepoints.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o dichotomous/model/model.o dichotomous/model/model.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o dichotomous/model/onepl.o dichotomous/model/onepl.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o dichotomous/model/twopl.o dichotomous/model/twopl.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o dichotomous/model/threepl.o dichotomous/model/threepl.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o dichotomous/model/bayesian.o dichotomous/model/bayesian.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o dichotomous/type/estimationdata.o dichotomous/type/estimationdata.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o dichotomous/estimation/estimation.o dichotomous/estimation/estimation.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o polytomous/type/estimationdata.o polytomous/type/estimationdata.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o polytomous/estimation/mstep.o polytomous/estimation/mstep.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o dichotomous/estimation/estep.o dichotomous/estimation/estep.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o polytomous/estimation/estimation.o polytomous/estimation/estimation.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o polytomous/estimation/estep.o polytomous/estimation/estep.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o polytomous/model/model.o polytomous/model/model.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o polytomous/model/onepl.o polytomous/model/onepl.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o polytomous/model/twopl.o polytomous/model/twopl.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o util/initial_values.o util/initial_values.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o util/ramsay.o util/ramsay.cpp
	$(CXX) $(PKG_CPPFLAGS) -c $(PKG_CXXFLAGS) -o util/directories.o util/directories.cpp
	$(AR) rcs $(INCPATH)/libfull.a dichotomous/estimation/estep.o dichotomous/estimation/estimation.o dichotomous/estimation/mstep.o dichotomous/model/model.o dichotomous/model/onepl.o dichotomous/model/twopl.o dichotomous/model/threepl.o dichotomous/model/bayesian.o dichotomous/type/estimationdata.o polytomous/estimation/estep.o polytomous/estimation/estimation.o polytomous/estimation/mstep.o polytomous/model/model.o polytomous/model/onepl.o polytomous/model/twopl.o polytomous/type/estimationdata.o util/initial_values.o util/quadraturepoints.o util/ramsay.o util/directories.o
	$(RANLIB) $(INCPATH)/libfull.a

clean:
	rm -rf polytomous/type/estimationdata.o polytomous/type/estimationdata.d MIRTcpp util/ramsay.d util/ramsay.o polytomous/estimation/mstep.o polytomous/estimation/mstep.d dichotomous/model/model.o dichotomous/model/model.d dichotomous/model/onepl.o dichotomous/model/onepl.d dichotomous/model/twopl.o dichotomous/model/twopl.d dichotomous/model/threepl.o dichotomous/model/threepl.d dichotomous/model/bayesian.o dichotomous/model/bayesian.d dichotomous/type/estimationdata.o dichotomous/type/estimationdata.d polytomous/estimation/estep.o polytomous/estimation/estep.d polytomous/estimation/estimation.d dichotomous/estimation/estimation.o dichotomous/estimation/estimation.d polytomous/estimation/estimation.o latentregpp.o latentregpp.d util/initial_values.d util/initial_values.o polytomous/model/model.d polytomous/model/model.o polytomous/model/onepl.d polytomous/model/onepl.o polytomous/model/twopl.d polytomous/model/twopl.o dichotomous/estimation/mstep.d dichotomous/estimation/mstep.o  dichotomous/estimation/estep.d dichotomous/estimation/estep.o util/quadraturepoints.o util/quadraturepoints.d util/directories.o util/directories.d $(INCPATH)/libfull.a
