## Use the R_HOME indirection to support installations of multiple R version
PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"`

## As an alternative, one can also add this code in a file 'configure'
##
##    PKG_LIBS=`${R_HOME}/bin/Rscript -e "Rcpp:::LdFlags()"`
##
##    sed -e "s|@PKG_LIBS@|${PKG_LIBS}|" \
##        src/Makevars.in > src/Makevars
##
## which together with the following file 'src/Makevars.in'
##
##    PKG_LIBS = @PKG_LIBS@
##
## can be used to create src/Makevars dynamically. This scheme is more
## powerful and can be expanded to also check for and link with other
## libraries.  It should be complemented by a file 'cleanup'
##
##    rm src/Makevars
##
## which removes the autogenerated file src/Makevars.
##
## Of course, autoconf can also be used to write configure files. This is
## done by a number of packages, but recommended only for more advanced users
## comfortable with autoconf and its related tools.

CXX_STD = CXX11

PKG_CPPFLAGS = -I. -Icyclops -DR_BUILD -DDOUBLE_PRECISION
PKG_CXXFLAGS = -g1

OBJECTS.cyclops = \
    cyclops/CcdInterface.o \
    cyclops/CompressedDataMatrix.o \
    cyclops/CyclicCoordinateDescent.o \
    cyclops/ModelData.o \
    cyclops/Timer.o

OBJECTS.drivers = \
    cyclops/drivers/AbstractCrossValidationDriver.o \
    cyclops/drivers/AbstractDriver.o \
    cyclops/drivers/AbstractSelector.o \
    cyclops/drivers/AutoSearchCrossValidationDriver.o \
    cyclops/drivers/BootstrapDriver.o \
    cyclops/drivers/BootstrapSelector.o \
    cyclops/drivers/CrossValidationSelector.o \
    cyclops/drivers/GridSearchCrossValidationDriver.o \
    cyclops/drivers/HierarchyAutoSearchCrossValidationDriver.o \
    cyclops/drivers/HierarchyGridSearchCrossValidationDriver.o \
    cyclops/drivers/ProportionSelector.o

OBJECTS.priors = \
    cyclops/priors/CovariatePrior.o

OBJECTS.io = \
    cyclops/io/InputReader.o

OBJECTS.engine = \
    cyclops/engine/AbstractModelSpecifics.o

OBJECTS.utils = \
    utils/HParSearch.o

OBJECTS.thread = \
    tinythread/tinythread.o

OBJECTS.R = \
    IsSorted.o \
    RcppExports.o \
    RcppModelData.o \
    RcppCyclopsInterface.o \
    RcppIsSorted.o

OBJECTS = $(OBJECTS.cyclops) $(OBJECTS.drivers) \
          $(OBJECTS.engine) $(OBJECTS.utils) \
          $(OBJECTS.threads) $(OBJECTS.R) \
          $(OBJECTS.priors) $(OBJECTS.io)
