set(adminive_library_include_dir "${CMAKE_CURRENT_LIST_DIR}/include")
add_library(Adminive INTERFACE)
set_target_properties(Adminive PROPERTIES EXPORT_NAME Core)
add_library(Adminive::Adminive ALIAS Adminive)
add_library(Adminive::Core ALIAS Adminive)
add_library(Adminive::Http ALIAS Adminive)
target_include_directories(Adminive INTERFACE "$<BUILD_INTERFACE:${adminive_library_include_dir}>" "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
target_compile_features(Adminive INTERFACE cxx_std_20)
target_link_libraries(Adminive INTERFACE "$<BUILD_INTERFACE:structive::property_core>")
if (MSVC)
    target_compile_options(Adminive INTERFACE /utf-8 /Zc:__cplusplus /bigobj)
    if (ADMINIVE_PROPAGATE_MSVC_STRICT_MODE)
        target_compile_options(Adminive INTERFACE /permissive-)
    endif ()
endif ()
if (BUILD_TESTING)
    add_executable(Adminive_Core_Adapter_Test "${CMAKE_CURRENT_LIST_DIR}/tests/core_adapter_test.cpp")
    target_link_libraries(Adminive_Core_Adapter_Test PRIVATE Adminive::Core)
    adminive_register_test(Adminive_Core_Adapter_Test "unit;core;adapter")
    set(adminive_core_public_headers adapter.hpp adminive.hpp amis.hpp collection.hpp composition.hpp concepts.hpp descriptor.hpp http.hpp json.hpp lock.hpp managed.hpp presentation.hpp status.hpp value.hpp view.hpp view_json.hpp)
    foreach(header IN LISTS adminive_core_public_headers)
        string(REPLACE ".hpp" "" header_name "${header}")
        string(REPLACE "_" "-" header_name "${header_name}")
        adminive_register_header_test("Adminive_Core_Header_${header_name}_Test" "adminive/${header}" Adminive::Core)
    endforeach()
    if(MSVC)
        target_compile_options(Adminive_Core_Adapter_Test PRIVATE /permissive-)
    endif()
endif ()
install(TARGETS Adminive EXPORT AdminiveCoreTargets)
install(DIRECTORY "${adminive_library_include_dir}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
install(DIRECTORY "${ADMINIVE_STRUCTIVE_SOURCE_DIR}/core/include/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
