cmake_minimum_required(VERSION 2.8.12)
project(opennn)

FILE(GLOB PYBIND_SRC
opennn/pybind.cpp
)

FILE(GLOB OPENNN_SRC 
opennn/opennn.h
opennn/variables.cpp 
opennn/instances.cpp 
opennn/missing_values.cpp 
opennn/data_set.cpp 
opennn/inputs.cpp 
opennn/outputs.cpp 
opennn/unscaling_layer.cpp 
opennn/scaling_layer.cpp 
opennn/inputs_trending_layer.cpp 
opennn/outputs_trending_layer.cpp 
opennn/probabilistic_layer.cpp 
opennn/perceptron_layer.cpp 
opennn/neural_network.cpp 
opennn/multilayer_perceptron.cpp  
opennn/bounding_layer.cpp 
opennn/sum_squared_error.cpp 
opennn/loss_index.cpp 
opennn/normalized_squared_error.cpp 
opennn/minkowski_error.cpp 
opennn/mean_squared_error.cpp 
opennn/weighted_squared_error.cpp 
opennn/cross_entropy_error.cpp 
opennn/training_strategy.cpp 
opennn/quasi_newton_method.cpp 
opennn/stochastic_gradient_descent.cpp 
opennn/levenberg_marquardt_algorithm.cpp 
opennn/gradient_descent.cpp 
opennn/conjugate_gradient.cpp 
opennn/model_selection.cpp 
opennn/order_selection_algorithm.cpp 
opennn/incremental_order.cpp 
opennn/golden_section_order.cpp 
opennn/simulated_annealing_order.cpp 
opennn/inputs_selection_algorithm.cpp 
opennn/growing_inputs.cpp 
opennn/pruning_inputs.cpp 
opennn/genetic_algorithm.cpp 
opennn/testing_analysis.cpp  
opennn/numerical_integration.cpp 
opennn/numerical_differentiation.cpp 
opennn/principal_components_layer.cpp 
opennn/selective_pruning.cpp 
opennn/file_utilities.cpp 
opennn/association_rules.cpp 
opennn/text_analytics.cpp 
opennn/tinyxml2.cpp 
opennn/correlation_analysis.cpp
opennn/optimization_algorithm.cpp
opennn/learning_rate_algorithm.cpp
opennn/adaptive_moment_estimation.cpp
)

FILE(GLOB EIGEN
eigen/Core
eigen/SparseCore
)

add_subdirectory(pybind11)
pybind11_add_module(opennn
${PYBIND_SRC}
${OPENNN_SRC}
${EIGEN}
)