configure_file(version.hpp.in version.hpp)

# NOTE: option_parser.cpp needs to appear before all options
# file(GLOB SRCS "*.cpp")
# list(FILTER SRCS EXCLUDE REGEX ".*police\\.cpp$")
set(SRCS
    command_line_options.cpp
    command_line_parser.cpp
    global_arguments.cpp
    option_parser.cpp
    parse_tree.cpp
    action.cpp
    model.cpp
    arguments.cpp
    linear_condition.cpp
    linear_constraint.cpp
    linear_expression.cpp
    utils.cpp
    addtree_policy.cpp
    nn_policy.cpp
    smt.cpp
    lp.cpp
    lp_gurobi.cpp
    lp_z3.cpp
    smt_z3.cpp
    relu_constraint.cpp
    nnlp.cpp
    nnlp_bnb.cpp
    nnlp_smt.cpp
    nnlp_wrapper.cpp
    nnlp_lp.cpp
    nnlp_marabou.cpp
    constraint_factories.cpp
    ffnn_lp_encoder.cpp
    nnlp_encoders.cpp
    nnlp_model_encoding.cpp
    nnlp_policy_encoding.cpp
    smt_model_encoding.cpp
    marabou_preprocessor.cpp
    plan_validation_unit.cpp
    variable_substitution.cpp
    variable_order_chooser.cpp
    var_order_addtree.cpp
    var_order_conditions.cpp
    var_order_default.cpp
    var_order_reverse.cpp
    random_order.cpp
    compute_graph.cpp
    compute_graph_factory.cpp
    layer_bounds.cpp
    cg_policy.cpp
    cg_relaxation.cpp
    cg_pruner.cpp
    cg_constant_compressor.cpp
    static_variable_remover.cpp
)
target_sources(${POLICE_LIB} PRIVATE ${SRCS})

add_subdirectory(storage)
add_subdirectory(utils)
add_subdirectory(expressions)
add_subdirectory(jani)
add_subdirectory(sas)
add_subdirectory(successor_generator)
add_subdirectory(verifiers)
add_subdirectory(_bits)

target_sources(${POLICE_EXE} PRIVATE main.cpp)
