add_library(classes STATIC
    utils.cpp columncollector.cpp serialobjectconverter.cpp
    datagenerator.cpp statistics.cpp logger.cpp applicabilityfinder.cpp
    # datamodel/
    datamodel/rulemodel.cpp datamodel/modificationrule.cpp
    # datamodel/conditions/
    datamodel/conditions/condition.cpp
    datamodel/conditions/conditionelement.cpp datamodel/conditions/atomiccondition.cpp
    datamodel/conditions/transitioncondition.cpp
    datamodel/conditions/abstractvaluecondition.cpp datamodel/conditions/valuecondition.cpp
    datamodel/conditions/lowerboundcondition.cpp datamodel/conditions/upperboundcondition.cpp
    # datamodel/eventlogs/
    datamodel/eventlogs/logvariable.cpp datamodel/eventlogs/categoricalvariable.cpp 
    datamodel/eventlogs/numericalvariable.cpp datamodel/eventlogs/logcolumn.cpp
    datamodel/eventlogs/eventlog.cpp datamodel/eventlogs/abstractlogcolumn.cpp
    datamodel/eventlogs/trace.cpp
    # datamodel/updaterules/
    datamodel/updaterules/updaterule.cpp datamodel/updaterules/valuesetrule.cpp
    datamodel/updaterules/abstractvaluerule.cpp datamodel/updaterules/valuerule.cpp
    datamodel/updaterules/factorrule.cpp datamodel/updaterules/differencerule.cpp
    datamodel/updaterules/abstractrangerule.cpp datamodel/updaterules/valuerangerule.cpp
    datamodel/updaterules/changerangerule.cpp
    # preprocessing/
    preprocessing/accuracyestimator.cpp preprocessing/histogram.cpp
    preprocessing/distributionestimator.cpp preprocessing/nmlhistogramwrapper.cpp
    preprocessing/cycledetector.cpp preprocessing/histogramestimator.cpp
    preprocessing/quantilehistogramestimator.cpp
    # scoring/
    scoring/mdlcalculator.cpp scoring/modelencoder.cpp scoring/conditionmatcher.cpp
    scoring/updaterulematcher.cpp scoring/dataencoder.cpp scoring/rulefinder.cpp
    scoring/dataencodingestimator.cpp
    # search/
    search/modelfinder.cpp search/treeconditiongenerator.cpp
    search/rulegenerator.cpp search/forwardrulegenerator.cpp search/backwardrulegenerator.cpp
)

target_include_directories(classes PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../libraries/mlpack-fork/src)
target_link_libraries(classes nmlhistograms capnproto)
target_compile_options(classes PRIVATE -fopenmp)
target_link_libraries(classes gomp)
add_dependencies(classes RunGenerator)
