configure_file(${CMAKE_SOURCE_DIR}/src/defaults.hpp.in ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/defaults.hpp)

target_sources(cecxx 
  PRIVATE
    ${CMAKE_SOURCE_DIR}/src/benchmark/cec_2013/problem_evaluation_mappings.cpp
    ${CMAKE_SOURCE_DIR}/src/benchmark/cec_2014/problem_evaluation_mappings.cpp
    ${CMAKE_SOURCE_DIR}/src/benchmark/cec_2017/problem_evaluation_mappings.cpp
    ${CMAKE_SOURCE_DIR}/src/benchmark/detail/context.cpp
    ${CMAKE_SOURCE_DIR}/src/benchmark/detail/evaluate.cpp
    ${CMAKE_SOURCE_DIR}/src/benchmark/detail/legacy/functions/multimodal/bi_rastrigin.cpp
    ${CMAKE_SOURCE_DIR}/src/benchmark/detail/legacy/functions/multimodal/bi_rastrigin2017.cpp
    ${CMAKE_SOURCE_DIR}/src/benchmark/evaluator.cpp
    ${CMAKE_SOURCE_DIR}/src/benchmark/helpers.cpp
    ${CMAKE_SOURCE_DIR}/src/benchmark/table_io.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/ackley.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/diff_powers.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/discus.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/escaffer.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/grie_rosen.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/griewank.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/happycat.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/hgbat.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/katsuura.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/levy.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/rastrigin.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/rosenbrock.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/schaffer.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/schwefel.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/step_rastrigin.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/weierstrass.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/multimodal/zakharov.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/unimodal/bent_cigar.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/unimodal/ellips.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/unimodal/sphere.cpp
    ${CMAKE_SOURCE_DIR}/src/functions/unimodal/sum_diff_pow.cpp
    ${CMAKE_SOURCE_DIR}/src/legacy/affine_transformation.cpp
  PUBLIC
    FILE_SET HEADERS
    BASE_DIRS ${CMAKE_SOURCE_DIR}/include
    FILES 
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p2630_bits/submdspan_mapping.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p2630_bits/strided_slice.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p2630_bits/submdspan_extents.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p2630_bits/submdspan.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/mdspan.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/extents.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/layout_left.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/type_list.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/layout_right.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/layout_stride.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/default_accessor.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/trait_backports.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/mdspan.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/full_extent_t.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/macros.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/config.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/no_unique_address.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/dynamic_extent.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p0009_bits/compressed_pair.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/__p1684_bits/mdarray.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/mdspan.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/mdspan/mdarray.hpp

      ${CMAKE_SOURCE_DIR}/include/cecxx/mdspan.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/benchmark/evaluator.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/evaluate.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/concepts.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/defaults.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/context.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/helpers.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/types.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/func_types.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/legacy/functions/multimodal/bi_rastrigin2017.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/legacy/functions/multimodal/bi_rastrigin.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/legacy/affine_transformation.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/problem_invokers/affine_transformations.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/problem_invokers/decorators.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/problem_invokers/complex_problem_invoker.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/problem_invokers/hybrid_problem_invoker.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/problem_invokers/basic_problem_invoker.hpp

      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2014/consts.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2014/problem_evaluation_mappings.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2014/basic_problems.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2014/hybrid_problems.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2014/complex_problems.hpp


      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2017/consts.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2017/problem_evaluation_mappings.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2017/basic_problems.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2017/hybrid_problems.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2017/complex_problems.hpp

      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2013/consts.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2013/problem_evaluation_mappings.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2013/basic_problems.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/detail/benchmark/evaluator/cec_2013/complex_problems.hpp

      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/schwefel.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/ackley.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/grie_rosen.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/katsuura.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/diff_powers.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/escaffer.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/rosenbrock.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/weierstrass.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/rastrigin.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/hgbat.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/happycat.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/griewank.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/levy.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/step_rastrigin.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/discus.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/schaffer.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal/zakharov.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/multimodal.hpp

      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/unimodal/sum_diff_pow.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/unimodal/ellips.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/unimodal/sphere.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/unimodal/bent_cigar.hpp
      ${CMAKE_SOURCE_DIR}/include/cecxx/functions/unimodal.hpp
)
