# CMake script for Bio++ PhylLib
# Author: Sylvain Gaillard and Julien Dutheil
# Created: 20/08/2009

# File list
set(CPP_FILES
  Bpp/Phyl/App/PhylogeneticsApplicationTools.cpp
  Bpp/Phyl/BipartitionList.cpp
  Bpp/Phyl/BipartitionTools.cpp
  Bpp/Phyl/Distance/AbstractAgglomerativeDistanceMethod.cpp
  Bpp/Phyl/Distance/BioNJ.cpp
  Bpp/Phyl/Distance/DistanceEstimation.cpp
  Bpp/Phyl/Distance/NeighborJoining.cpp
  Bpp/Phyl/Distance/PGMA.cpp
  Bpp/Phyl/Distance/HierarchicalClustering.cpp
  Bpp/Phyl/Graphics/AbstractDendrogramPlot.cpp
  Bpp/Phyl/Graphics/AbstractTreeDrawing.cpp
  Bpp/Phyl/Graphics/CladogramPlot.cpp
  Bpp/Phyl/Graphics/PhylogramPlot.cpp
  Bpp/Phyl/Graphics/TreeDrawingDisplayControler.cpp
  Bpp/Phyl/Graphics/TreeDrawingListener.cpp
  Bpp/Phyl/Io/IoDistanceMatrixFactory.cpp
  Bpp/Phyl/Io/IoTreeFactory.cpp
  Bpp/Phyl/Io/Newick.cpp
  Bpp/Phyl/Io/NexusIoTree.cpp
  Bpp/Phyl/Io/Nhx.cpp
  Bpp/Phyl/Io/PhylipDistanceMatrixFormat.cpp
  Bpp/Phyl/Io/IoPairedSiteLikelihoods.cpp
  Bpp/Phyl/Likelihood/AbstractDiscreteRatesAcrossSitesTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/AbstractHomogeneousTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/AbstractNonHomogeneousTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/AbstractTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/DRASDRTreeLikelihoodData.cpp
  Bpp/Phyl/Likelihood/DRASRTreeLikelihoodData.cpp
  Bpp/Phyl/Likelihood/DRHomogeneousMixedTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/DRHomogeneousTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/DRNonHomogeneousTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/DRTreeLikelihoodTools.cpp
  Bpp/Phyl/Likelihood/MarginalAncestralStateReconstruction.cpp
  Bpp/Phyl/Likelihood/NNIHomogeneousTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/PseudoNewtonOptimizer.cpp
  Bpp/Phyl/Likelihood/RASTools.cpp
  Bpp/Phyl/Likelihood/RHomogeneousClockTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/RHomogeneousMixedTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/RHomogeneousTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/RNonHomogeneousMixedTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/RNonHomogeneousTreeLikelihood.cpp
  Bpp/Phyl/Likelihood/TreeLikelihoodTools.cpp
  Bpp/Phyl/Likelihood/PairedSiteLikelihoods.cpp
  Bpp/Phyl/Mapping/AnalyticalSubstitutionCount.cpp
  Bpp/Phyl/Mapping/OneJumpSubstitutionCount.cpp
  Bpp/Phyl/Mapping/ProbabilisticSubstitutionMapping.cpp
  Bpp/Phyl/Mapping/SimpleSubstitutionCount.cpp
  Bpp/Phyl/Mapping/DecompositionSubstitutionCount.cpp
  Bpp/Phyl/Mapping/UniformizationSubstitutionCount.cpp
  Bpp/Phyl/Mapping/IndexToCount.cpp
  Bpp/Phyl/Mapping/SubstitutionMappingTools.cpp
  Bpp/Phyl/Model/AbstractCodonFrequenciesReversibleSubstitutionModel.cpp
  Bpp/Phyl/Model/AbstractCodonReversibleSubstitutionModel.cpp
  Bpp/Phyl/Model/AbstractSubstitutionModel.cpp
  Bpp/Phyl/Model/AbstractWordReversibleSubstitutionModel.cpp
  Bpp/Phyl/Model/CodonAsynonymousFrequenciesReversibleSubstitutionModel.cpp
  Bpp/Phyl/Model/CodonAsynonymousReversibleSubstitutionModel.cpp
  Bpp/Phyl/Model/CodonNeutralFrequenciesReversibleSubstitutionModel.cpp
  Bpp/Phyl/Model/CodonNeutralReversibleSubstitutionModel.cpp
  Bpp/Phyl/Model/DSO78.cpp
  Bpp/Phyl/Model/F84.cpp
  Bpp/Phyl/Model/FrequenciesSet.cpp
  Bpp/Phyl/Model/GTR.cpp
  Bpp/Phyl/Model/GY94.cpp
  Bpp/Phyl/Model/HKY85.cpp
  Bpp/Phyl/Model/JCnuc.cpp
  Bpp/Phyl/Model/JCprot.cpp
  Bpp/Phyl/Model/JTT92.cpp
  Bpp/Phyl/Model/K80.cpp
  Bpp/Phyl/Model/L95.cpp
  Bpp/Phyl/Model/RN95.cpp
  Bpp/Phyl/Model/RN95s.cpp
  Bpp/Phyl/Model/SSR.cpp
  Bpp/Phyl/Model/LG08.cpp
  Bpp/Phyl/Model/WAG01.cpp
  Bpp/Phyl/Model/LLG08_EHO.cpp
  Bpp/Phyl/Model/LLG08_EX2.cpp
  Bpp/Phyl/Model/LLG08_EX3.cpp
  Bpp/Phyl/Model/LLG08_UL2.cpp
  Bpp/Phyl/Model/LLG08_UL3.cpp
  Bpp/Phyl/Model/MarkovModulatedSubstitutionModel.cpp
  Bpp/Phyl/Model/MG94.cpp
  Bpp/Phyl/Model/AbstractMixedSubstitutionModel.cpp
  Bpp/Phyl/Model/MixtureOfASubstitutionModel.cpp
  Bpp/Phyl/Model/MixtureOfSubstitutionModels.cpp
  Bpp/Phyl/Model/RateDistributionFactory.cpp
  Bpp/Phyl/Model/RE08.cpp
  Bpp/Phyl/Model/SubstitutionModelFactory.cpp
  Bpp/Phyl/Model/SubstitutionModelSet.cpp
  Bpp/Phyl/Model/SubstitutionModelSetTools.cpp
  Bpp/Phyl/Model/T92.cpp
  Bpp/Phyl/Model/TN93.cpp
  Bpp/Phyl/Model/TripletReversibleSubstitutionModel.cpp
  Bpp/Phyl/Model/UserProteinSubstitutionModel.cpp
  Bpp/Phyl/Model/WordReversibleSubstitutionModel.cpp
  Bpp/Phyl/Model/YN98.cpp
  Bpp/Phyl/Model/YNGKP_M1.cpp
  Bpp/Phyl/Model/YNGKP_M2.cpp
  Bpp/Phyl/Model/YNGKP_M3.cpp
  Bpp/Phyl/Model/YNGKP_M7.cpp
  Bpp/Phyl/Model/YNGKP_M8.cpp
  Bpp/Phyl/NNITopologySearch.cpp
  Bpp/Phyl/Node.cpp
  Bpp/Phyl/OptimizationTools.cpp
  Bpp/Phyl/Parsimony/AbstractTreeParsimonyScore.cpp
  Bpp/Phyl/Parsimony/DRTreeParsimonyData.cpp
  Bpp/Phyl/Parsimony/DRTreeParsimonyScore.cpp
  Bpp/Phyl/PatternTools.cpp
  Bpp/Phyl/PhyloStatistics.cpp
  Bpp/Phyl/Simulation/MutationProcess.cpp
  Bpp/Phyl/Simulation/NonHomogeneousSequenceSimulator.cpp
  Bpp/Phyl/Simulation/SequenceSimulationTools.cpp
  Bpp/Phyl/SitePatterns.cpp
  Bpp/Phyl/TreeExceptions.cpp
  Bpp/Phyl/TreeTemplateTools.cpp
  Bpp/Phyl/TreeTools.cpp  
  )
set(H_FILES
  Bpp/Phyl/AncestralStateReconstruction.h
  Bpp/Phyl/App/PhylogeneticsApplicationTools.h
  Bpp/Phyl/BipartitionList.h
  Bpp/Phyl/BipartitionTools.h
  Bpp/Phyl/Distance/AbstractAgglomerativeDistanceMethod.h
  Bpp/Phyl/Distance/AgglomerativeDistanceMethod.h
  Bpp/Phyl/Distance/BioNJ.h
  Bpp/Phyl/Distance/DistanceEstimation.h
  Bpp/Phyl/Distance/NeighborJoining.h
  Bpp/Phyl/Distance/PGMA.h
  Bpp/Phyl/Distance/HierarchicalClustering.h
  Bpp/Phyl/Graphics/AbstractDendrogramPlot.h
  Bpp/Phyl/Graphics/AbstractTreeDrawing.h
  Bpp/Phyl/Graphics/CladogramPlot.h
  Bpp/Phyl/Graphics/PhylogramPlot.h
  Bpp/Phyl/Graphics/TreeDrawingDisplayControler.h
  Bpp/Phyl/Graphics/TreeDrawing.h
  Bpp/Phyl/Graphics/TreeDrawingListener.h
  Bpp/Phyl/Io/IoDistanceMatrixFactory.h
  Bpp/Phyl/Io/IoDistanceMatrix.h
  Bpp/Phyl/Io/IoTreeFactory.h
  Bpp/Phyl/Io/IoTree.h
  Bpp/Phyl/Io/Newick.h
  Bpp/Phyl/Io/Nhx.h
  Bpp/Phyl/Io/NexusIoTree.h
  Bpp/Phyl/Io/PhylipDistanceMatrixFormat.h
  Bpp/Phyl/Io/IoPairedSiteLikelihoods.h
  Bpp/Phyl/Likelihood/AbstractDiscreteRatesAcrossSitesTreeLikelihood.h
  Bpp/Phyl/Likelihood/AbstractHomogeneousTreeLikelihood.h
  Bpp/Phyl/Likelihood/AbstractNonHomogeneousTreeLikelihood.h
  Bpp/Phyl/Likelihood/AbstractTreeLikelihoodData.h
  Bpp/Phyl/Likelihood/AbstractTreeLikelihood.h
  Bpp/Phyl/Likelihood/ClockTreeLikelihood.h
  Bpp/Phyl/Likelihood/DiscreteRatesAcrossSitesTreeLikelihood.h
  Bpp/Phyl/Likelihood/DRASDRTreeLikelihoodData.h
  Bpp/Phyl/Likelihood/DRASRTreeLikelihoodData.h
  Bpp/Phyl/Likelihood/DRHomogeneousMixedTreeLikelihood.h
  Bpp/Phyl/Likelihood/DRHomogeneousTreeLikelihood.h
  Bpp/Phyl/Likelihood/DRNonHomogeneousTreeLikelihood.h
  Bpp/Phyl/Likelihood/DRTreeLikelihood.h
  Bpp/Phyl/Likelihood/DRTreeLikelihoodTools.h
  Bpp/Phyl/Likelihood/HomogeneousTreeLikelihood.h
  Bpp/Phyl/Likelihood/MarginalAncestralStateReconstruction.h
  Bpp/Phyl/Likelihood/NNIHomogeneousTreeLikelihood.h
  Bpp/Phyl/Likelihood/NonHomogeneousTreeLikelihood.h
  Bpp/Phyl/Likelihood/PseudoNewtonOptimizer.h
  Bpp/Phyl/Likelihood/RASTools.h
  Bpp/Phyl/Likelihood/RHomogeneousClockTreeLikelihood.h
  Bpp/Phyl/Likelihood/RHomogeneousMixedTreeLikelihood.h
  Bpp/Phyl/Likelihood/RHomogeneousTreeLikelihood.h
  Bpp/Phyl/Likelihood/RNonHomogeneousMixedTreeLikelihood.h
  Bpp/Phyl/Likelihood/RNonHomogeneousTreeLikelihood.h
  Bpp/Phyl/Likelihood/SitePartitionTreeLikelihood.h
  Bpp/Phyl/Likelihood/TreeLikelihoodData.h
  Bpp/Phyl/Likelihood/TreeLikelihood.h
  Bpp/Phyl/Likelihood/TreeLikelihoodTools.h
  Bpp/Phyl/Likelihood/PairedSiteLikelihoods.h
  Bpp/Phyl/Mapping/AnalyticalSubstitutionCount.h
  Bpp/Phyl/Mapping/IndexToCount.h
  Bpp/Phyl/Mapping/OneJumpSubstitutionCount.h
  Bpp/Phyl/Mapping/ProbabilisticSubstitutionMapping.h
  Bpp/Phyl/Mapping/SimpleSubstitutionCount.h
  Bpp/Phyl/Mapping/DecompositionSubstitutionCount.h
  Bpp/Phyl/Mapping/UniformizationSubstitutionCount.h
  Bpp/Phyl/Mapping/SubstitutionRegister.h
  Bpp/Phyl/Mapping/SubstitutionCount.h
  Bpp/Phyl/Mapping/SubstitutionMapping.h
  Bpp/Phyl/Mapping/SubstitutionMappingTools.h
  Bpp/Phyl/Model/AbstractCodonFrequenciesReversibleSubstitutionModel.h
  Bpp/Phyl/Model/AbstractCodonReversibleSubstitutionModel.h
  Bpp/Phyl/Model/AbstractSubstitutionModel.h
  Bpp/Phyl/Model/AbstractWordReversibleSubstitutionModel.h
  Bpp/Phyl/Model/CodonAsynonymousFrequenciesReversibleSubstitutionModel.h
  Bpp/Phyl/Model/CodonAsynonymousReversibleSubstitutionModel.h
  Bpp/Phyl/Model/CodonNeutralFrequenciesReversibleSubstitutionModel.h
  Bpp/Phyl/Model/CodonNeutralReversibleSubstitutionModel.h
  Bpp/Phyl/Model/DSO78.h
  Bpp/Phyl/Model/F84.h
  Bpp/Phyl/Model/FrequenciesSet.h
  Bpp/Phyl/Model/G2001.h
  Bpp/Phyl/Model/GTR.h
  Bpp/Phyl/Model/GY94.h
  Bpp/Phyl/Model/HKY85.h
  Bpp/Phyl/Model/JCnuc.h
  Bpp/Phyl/Model/JCprot.h
  Bpp/Phyl/Model/JTT92.h
  Bpp/Phyl/Model/K80.h
  Bpp/Phyl/Model/L95.h
  Bpp/Phyl/Model/RN95.h
  Bpp/Phyl/Model/RN95s.h
  Bpp/Phyl/Model/SSR.h
  Bpp/Phyl/Model/LG08.h
  Bpp/Phyl/Model/WAG01.h
  Bpp/Phyl/Model/LLG08_EHO.h
  Bpp/Phyl/Model/LLG08_EX2.h
  Bpp/Phyl/Model/LLG08_EX3.h
  Bpp/Phyl/Model/LLG08_UL2.h
  Bpp/Phyl/Model/LLG08_UL3.h
  Bpp/Phyl/Model/MarkovModulatedSubstitutionModel.h
  Bpp/Phyl/Model/MG94.h
  Bpp/Phyl/Model/MixedSubstitutionModel.h
  Bpp/Phyl/Model/AbstractMixedSubstitutionModel.h
  Bpp/Phyl/Model/MixtureOfASubstitutionModel.h
  Bpp/Phyl/Model/MixtureOfSubstitutionModels.h
  Bpp/Phyl/Model/NucleotideSubstitutionModel.h
  Bpp/Phyl/Model/ProteinSubstitutionModel.h
  Bpp/Phyl/Model/RateDistributionFactory.h
  Bpp/Phyl/Model/RE08.h
  Bpp/Phyl/Model/SubstitutionModelFactory.h
  Bpp/Phyl/Model/SubstitutionModel.h
  Bpp/Phyl/Model/SubstitutionModelSet.h
  Bpp/Phyl/Model/SubstitutionModelSetTools.h
  Bpp/Phyl/Model/T92.h
  Bpp/Phyl/Model/TN93.h
  Bpp/Phyl/Model/TripletReversibleSubstitutionModel.h
  Bpp/Phyl/Model/TS98.h
  Bpp/Phyl/Model/UserProteinSubstitutionModel.h
  Bpp/Phyl/Model/WordReversibleSubstitutionModel.h
  Bpp/Phyl/Model/YN98.h
  Bpp/Phyl/Model/YNGKP_M1.h
  Bpp/Phyl/Model/YNGKP_M2.h
  Bpp/Phyl/Model/YNGKP_M3.h
  Bpp/Phyl/Model/YNGKP_M7.h
  Bpp/Phyl/Model/YNGKP_M8.h
  Bpp/Phyl/NNISearchable.h
  Bpp/Phyl/NNITopologySearch.h
  Bpp/Phyl/Node.h
  Bpp/Phyl/NodeTemplate.h
  Bpp/Phyl/OptimizationTools.h
  Bpp/Phyl/Parsimony/AbstractTreeParsimonyData.h
  Bpp/Phyl/Parsimony/AbstractTreeParsimonyScore.h
  Bpp/Phyl/Parsimony/DRTreeParsimonyData.h
  Bpp/Phyl/Parsimony/DRTreeParsimonyScore.h
  Bpp/Phyl/Parsimony/TreeParsimonyData.h
  Bpp/Phyl/Parsimony/TreeParsimonyScore.h
  Bpp/Phyl/PatternTools.h
  Bpp/Phyl/PhyloStatistics.h
  Bpp/Phyl/Simulation/DetailedSiteSimulator.h
  Bpp/Phyl/Simulation/HomogeneousSequenceSimulator.h
  Bpp/Phyl/Simulation/MutationProcess.h
  Bpp/Phyl/Simulation/NonHomogeneousSequenceSimulator.h
  Bpp/Phyl/Simulation/SequenceSimulationTools.h
  Bpp/Phyl/Simulation/SequenceSimulator.h
  Bpp/Phyl/Simulation/SiteSimulator.h
  Bpp/Phyl/SitePatterns.h
  Bpp/Phyl/TopologySearch.h
  Bpp/Phyl/TreeExceptions.h
  Bpp/Phyl/Tree.h
  Bpp/Phyl/TreeTemplate.h
  Bpp/Phyl/TreeTemplateTools.h
  Bpp/Phyl/TreeTools.h
  )

# Build the static lib
add_library(bppphyl-static STATIC ${CPP_FILES})
set_target_properties(bppphyl-static
  PROPERTIES OUTPUT_NAME bpp-phyl
  CLEAN_DIRECT_OUTPUT 1
  )
target_link_libraries(bppphyl-static ${LIBS})

# Build the shared lib
add_library(bppphyl-shared SHARED ${CPP_FILES})
set_target_properties(bppphyl-shared
  PROPERTIES OUTPUT_NAME bpp-phyl
  CLEAN_DIRECT_OUTPUT 1
  VERSION ${BPPPHYL_VERSION}
  SOVERSION ${BPPPHYL_VERSION_MAJOR}
  )
target_link_libraries(bppphyl-shared ${LIBS})

# Install libs
install(TARGETS bppphyl-static bppphyl-shared DESTINATION lib${LIB_SUFFIX})

# Install headers
install(DIRECTORY Bpp/ DESTINATION include/Bpp FILES_MATCHING PATTERN ".svn" EXCLUDE PATTERN "*.h" PATTERN "*.all")
