# CMake script for Bio++ NumCalc
# Author: Sylvain Gaillard
# Created: 20/08/2009

# File list
SET(CPP_FILES
  AbstractDiscreteDistribution.cpp
  AbstractOptimizer.cpp
  AbstractParameterAliasable.cpp
  AbstractParametrizable.cpp
  AutoParameter.cpp
  BrentOneDimension.cpp
  ConjugateGradientMultiDimensions.cpp
  ConstantDistribution.cpp
  DataTable.cpp
  DirectionFunction.cpp
  Domain.cpp
  DownhillSimplexMethod.cpp
  ExponentialDiscreteDistribution.cpp
  TruncatedExponentialDiscreteDistribution.cpp
  FivePointsNumericalDerivative.cpp
  FunctionTools.cpp
  GammaDiscreteDistribution.cpp
  GoldenSectionSearch.cpp
  IntervalData.cpp
  InvariantMixedDiscreteDistribution.cpp
  MetaOptimizer.cpp
  NewtonOneDimension.cpp
  NumCalcApplicationTools.cpp
  NumConstants.cpp
  NumTools.cpp
  OneDimensionOptimizationTools.cpp
  OptimizationStopCondition.cpp
  Parameter.cpp
  ParameterExceptions.cpp
  ParameterList.cpp
  PowellMultiDimensions.cpp
  RandomTools.cpp
  ReparametrizationFunctionWrapper.cpp
  SimpleDiscreteDistribution.cpp
  SimpleMultiDimensions.cpp
  SimpleNewtonMultiDimensions.cpp
  TestUnit.cpp
  ThreePointsNumericalDerivative.cpp
  TwoPointsNumericalDerivative.cpp
  Uniform01K.cpp
  Uniform01QD.cpp
  Uniform01WH.cpp
  VectorTools.cpp
  RescaledHmmLikelihood.cpp
  LogsumHmmLikelihood.cpp
  LowMemoryRescaledHmmLikelihood.cpp
  AdaptiveKernelDensityEstimation.cpp
  )

SET(H_FILES
  AbstractDiscreteDistribution.h
  AbstractNumericalDerivative.h
  AbstractOptimizer.h
  AbstractParameterAliasable.h
  AbstractParametrizable.h
  AutoParameter.h
  BrentOneDimension.h
  ConjugateGradientMultiDimensions.h
  ConstantDistribution.h
  Constraints.h
  DataTable.h
  DataTableExceptions.h
  DirectionFunction.h
  DiscreteDistribution.h
  Domain.h
  DownhillSimplexMethod.h
  EigenValue.h
  ExponentialDiscreteDistribution.h
  TruncatedExponentialDiscreteDistribution.h
  FivePointsNumericalDerivative.h
  FunctionTools.h
  Functions.h
  GammaDiscreteDistribution.h
  GoldenSectionSearch.h
  IntervalData.h
  InvariantMixedDiscreteDistribution.h
  LUDecomposition.h
  Matrix.h
  MatrixTools.h
  MetaOptimizer.h
  NewtonOneDimension.h
  NumCalcApplicationTools.h
  NumConstants.h
  NumTools.h
  OneDimensionOptimizationTools.h
  OptimizationStopCondition.h
  Optimizer.h
  Parameter.h
  ParameterAliasable.h
  ParameterExceptions.h
  ParameterList.h
  Parametrizable.h
  PowellMultiDimensions.h
  RandomFactory.h
  RandomTools.h
  ReparametrizationFunctionWrapper.h
  SimpleDiscreteDistribution.h
  SimpleMultiDimensions.h
  SimpleNewtonMultiDimensions.h
  StatTest.h
  TestUnit.h
  ThreePointsNumericalDerivative.h
  TransformedParameter.h
  TwoPointsNumericalDerivative.h
  Uniform01K.h
  Uniform01QD.h
  Uniform01WH.h
  VectorExceptions.h
  VectorTools.h
  HmmExceptions.h
  HmmStateAlphabet.h
  HmmTransitionMatrix.h
  HmmEmissionProbabilities.h
  HmmLikelihood.h
  RescaledHmmLikelihood.h
  LogsumHmmLikelihood.h
  LowMemoryRescaledHmmLikelihood.h
  AdaptiveKernelDensityEstimation.h
  distributions
  functions
  matrix
  optimizers
  parameters
  random
  vectors
  )

# Build the static lib
ADD_LIBRARY(bppnumcalc-static STATIC ${CPP_FILES})
SET_TARGET_PROPERTIES(bppnumcalc-static
  PROPERTIES OUTPUT_NAME bpp-numcalc
  CLEAN_DIRECT_OUTPUT 1
  )
TARGET_LINK_LIBRARIES(bppnumcalc-static ${LIBS})

# Build the shared lib
ADD_LIBRARY(bppnumcalc-shared SHARED ${CPP_FILES})
SET_TARGET_PROPERTIES(bppnumcalc-shared
  PROPERTIES OUTPUT_NAME bpp-numcalc
  CLEAN_DIRECT_OUTPUT 1
  VERSION ${BPPNUMCALC_VERSION}
  SOVERSION ${BPPNUMCALC_VERSION_MAJOR}
  )
TARGET_LINK_LIBRARIES(bppnumcalc-shared ${LIBS})

# Install libs
INSTALL(TARGETS bppnumcalc-static bppnumcalc-shared DESTINATION lib)

# Install headers
INSTALL(FILES ${H_FILES} DESTINATION include/NumCalc)
