SOURCE_GROUP( include/shark/Rng FILES shark/Rng/*.h )

SOURCE_GROUP( include/shark/LinAlg FILES shark/LinAlg/*.h )
SOURCE_GROUP( include/shark/LinAlg/Impl FILES shark/LinAlg/Impl/{*.h,*.inl} )
SOURCE_GROUP( include/shark/LinAlg/BLAS FILES shark/LinAlg/BLAS/*.h )
SOURCE_GROUP( include/shark/LinAlg/BLAS/Impl FILES shark/LinAlg/BLAS/Impl/{*.h,*.inl} )
SOURCE_GROUP( include/shark/LinAlg/BLAS/Impl/numeric_bindings FILES shark/LinAlg/BLAS/Impl/numeric_bindings/*.h )
SOURCE_GROUP( include/shark/LinAlg/BLAS/Impl/numeric_bindings/gotoblas FILES shark/LinAlg/BLAS/Impl/numeric_bindings/gotoblas/*.h )
SOURCE_GROUP( include/shark/LinAlg/BLAS/Impl/numeric_bindings/atlas FILES shark/LinAlg/BLAS/Impl/numeric_bindings/atlas/*.h )
SOURCE_GROUP( include/shark/LinAlg/BLAS/Impl/numeric_bindings/default FILES shark/LinAlg/BLAS/Impl/numeric_bindings/default/*.h )
SOURCE_GROUP( include/shark/LinAlg/BLAS/traits FILES shark/LinAlg/BLAS/traits/*.h )

SOURCE_GROUP( include/shark/Models FILES shark/Models/*.h )
SOURCE_GROUP( include/shark/Models/Clustering FILES shark/Models/Clustering/*.h )
SOURCE_GROUP( include/shark/Models/Trees FILES shark/Models/Trees/*.h )
SOURCE_GROUP( include/shark/Models/Kernels FILES shark/Models/Kernels/*.h )
SOURCE_GROUP( include/shark/Models/Impl FILES shark/Models/Kernels/Impl/{*.h,*.inl} )

SOURCE_GROUP( include/shark/ObjectiveFunctions FILES shark/ObjectiveFunctions/*.h )
SOURCE_GROUP( include/shark/ObjectiveFunctions/Loss FILES shark/ObjectiveFunctions/Loss/*.h )
SOURCE_GROUP( include/shark/ObjectiveFunctions/Benchmarks FILES shark/ObjectiveFunctions/Benchmarks/*.h )
SOURCE_GROUP( include/shark/ObjectiveFunctions/Benchmarks FILES shark/ObjectiveFunctions/Benchmarks/*.h )

SOURCE_GROUP( include/shark/Algorithms FILES shark/Algorithms/*.h )
SOURCE_GROUP( include/shark/Algorithms/Trainers FILES shark/Algorithms/Trainers/*.h )
SOURCE_GROUP( include/shark/Algorithms/LP FILES shark/Algorithms/LP/*.h )
SOURCE_GROUP( include/shark/Algorithms/QP FILES shark/Algorithms/QP/*.h )
SOURCE_GROUP( include/shark/Algorithms/NearestNeighbors FILES shark/Algorithms/NearestNeighbors/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch FILES shark/Algorithms/DirectSearch/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Experiments FILES shark/Algorithms/DirectSearch/Experiments/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Indicators FILES shark/Algorithms/DirectSearch/Indicators/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/CMA FILES shark/Algorithms/DirectSearch/CMA/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Operators FILES shark/Algorithms/DirectSearch/Operators/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Operators/Evaluation FILES shark/Algorithms/DirectSearch/Operators/Evaluation/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Operators/Initializers FILES shark/Algorithms/DirectSearch/Operators/Initializers/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Operators/Mutation FILES shark/Algorithms/DirectSearch/Operators/Mutation/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Operators/Mutation/CMA FILES shark/Algorithms/DirectSearch/Operators/Mutation/CMA/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Operators/Mutation/CMA FILES shark/Algorithms/DirectSearch/Operators/Mutation/CMA/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Operators/ParameterUpdate FILES shark/Algorithms/DirectSearch/Operators/ParameterUpdate/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Operators/ParameterUpdate/CMA FILES shark/Algorithms/DirectSearch/Operators/ParameterUpdate/CMA/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Operators/Recombination FILES shark/Algorithms/DirectSearch/Operators/Recombination/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Operators/Selection FILES shark/Algorithms/DirectSearch/Operators/Selection/*.h )
SOURCE_GROUP( include/shark/Algorithms/DirectSearch/Traits FILES shark/Algorithms/DirectSearch/Traits/*.h )

SOURCE_GROUP( include/shark/Data FILES shark/Data/*.h )
SOURCE_GROUP( include/shark/Data/Impl FILES shark/Data/Impl/*.h )

SOURCE_GROUP( include/shark/Core FILES shark/Core/*.h )
SOURCE_GROUP( include/shark/Core/LogFormatters FILES shark/Core/LogFormatters/*.h )
SOURCE_GROUP( include/shark/Core/LogHandlers FILES shark/Core/LogHandlers/*.h )
SOURCE_GROUP( include/shark/Core/Renderers FILES shark/Core/Renderers/*.h )
SOURCE_GROUP( include/shark/Core/SearchSpaces FILES shark/Core/SearchSpaces/*.h )
SOURCE_GROUP( include/shark/Core/Traits FILES shark/Core/Traits/*.h )
SOURCE_GROUP( include/shark/Core/utility FILES shark/Core/utility/*.h )

SOURCE_GROUP( include/shark/Unsupervised FILES shark/Unsupervised/*.h )
SOURCE_GROUP( include/shark/Unsupervised/RBM/ FILES shark/Unsupervised/RBM/*.h )
SOURCE_GROUP( include/shark/Unsupervised/RBM/Impl FILES shark/Unsupervised/RBM/Impl/*.h )
SOURCE_GROUP( include/shark/Unsupervised/RBM/Problems FILES shark/Unsupervised/RBM/Problems/*.h )
SOURCE_GROUP( include/shark/Unsupervised/RBM/NeuronLayers FILES shark/Unsupervised/RBM/NeuronLayers/*.h )
SOURCE_GROUP( include/shark/Unsupervised/RBM/StateSpaces FILES shark/Unsupervised/RBM/StateSpaces/*.h )
SOURCE_GROUP( include/shark/Unsupervised/RBM/GradientApproximations FILES shark/Unsupervised/RBM/GradientApproximations/*.h )
SOURCE_GROUP( include/shark/Unsupervised/RBM/GradientApproximations/Impl FILES shark/Unsupervised/RBM/GradientApproximations/Impl/*.h )
SOURCE_GROUP( include/shark/Unsupervised/RBM/Sampling FILES shark/Unsupervised/RBM/Sampling/*.h )

#SOURCE_GROUP( include/shark/Fuzzy FILES shark/Fuzzy/*.h )
#SOURCE_GROUP( include/shark/FCL FILES shark/FCL/*.h )
#SOURCE_GROUP( include/shark/FuzzySets FILES shark/FuzzySets/*.h )
#SOURCE_GROUP( include/shark/LinguisticTerms FILES shark/LinguisticTerms/*.h )


INSTALL( DIRECTORY
	 ${CMAKE_CURRENT_SOURCE_DIR}/shark
	 DESTINATION DESTINATION ${SHARK_INSTALL_INCLUDE_DIR}
	 PATTERN ".*" EXCLUDE
)