add_library(dlplangenerator STATIC)
target_sources(dlplangenerator
    PRIVATE
        feature_generator.cpp
        generator.cpp
        rules/booleans/empty.cpp
        rules/booleans/inclusion.cpp
        rules/booleans/nullary.cpp
        rules/numericals/concept_distance.cpp
        rules/numericals/count.cpp
        rules/concepts/all.cpp
        rules/concepts/and.cpp
        rules/concepts/bot.cpp
        rules/concepts/diff.cpp
        rules/concepts/equal.cpp
        rules/concepts/not.cpp
        rules/concepts/one_of.cpp
        rules/concepts/or.cpp
        rules/concepts/primitive.cpp
        rules/concepts/projection.cpp
        rules/concepts/some.cpp
        rules/concepts/subset.cpp
        rules/concepts/top.cpp
        rules/roles/and.cpp
        rules/roles/compose.cpp
        rules/roles/diff.cpp
        rules/roles/identity.cpp
        rules/roles/inverse.cpp
        rules/roles/not.cpp
        rules/roles/or.cpp
        rules/roles/primitive.cpp
        rules/roles/restrict.cpp
        rules/roles/top.cpp
        rules/roles/transitive_closure.cpp
        rules/roles/transitive_reflexive_closure.cpp
        ../utils/logging.cpp
        ../utils/countdown_timer.cpp
)
target_link_libraries(dlplangenerator
    PUBLIC
        dlplan::core)

# Create an alias for simpler reference
add_library(dlplan::generator ALIAS dlplangenerator)
# Export component with simple name
set_property(TARGET dlplangenerator PROPERTY EXPORT_NAME generator)

# Use include depending on building or using from installed location
target_include_directories(dlplangenerator
    INTERFACE
        "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
        "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
)

# Install the target and create export-set
install(
    TARGETS dlplangenerator
    EXPORT dlplangeneratorTargets
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
    INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

# Generate and install export file
install(EXPORT dlplangeneratorTargets
    NAMESPACE dlplan::
    COMPONENT generator
    FILE dlplangeneratorTargets.cmake
    DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/dlplan"
)

# Generate build tree export file
export(EXPORT dlplangeneratorTargets
       FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/dlplangeneratorTargets.cmake"
       NAMESPACE dlplan::
)
