add_subdirectory(schema_dependent)

file(GLOB SERIALIZERS_H_FILES *.h)
file(GLOB SERIALIZERS_CPP_FILES *.cpp)
set(SERIALIZERS_FILES ${SERIALIZERS_H_FILES} ${SERIALIZERS_CPP_FILES})

add_library(Serializers ${SERIALIZERS_FILES})
set_target_properties(
    Serializers
    PROPERTIES
        COMPILE_FLAGS "-DSERIALIZERS_EXPORTS"
        VERSION "${PROJECT_VERSION}"
        SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"
)
set(SERIALIZER_SCHEMA_LIBRARIES Serializers ${SERIALIZER_SCHEMA_LIBRARIES} PARENT_SCOPE)

if(WITH_PROJ)
    find_package(PROJ REQUIRED)
    target_compile_definitions(Serializers PRIVATE "WITH_PROJ")
    if(PROJ_STATIC)
        target_compile_definitions(Serializers PRIVATE "PROJ_DLL=")
    endif()
    target_link_libraries(Serializers PRIVATE PROJ::proj)
endif()

target_link_libraries(
    Serializers
    PRIVATE
        ${SERIALIZER_SCHEMA_LIBRARIES}
        ${OPENCOLLADA_LIBRARIES}
        ${USD_LIBRARIES}
        ${GLTF_LIBRARIES}
        IfcGeom
        ${OpenCASCADE_LIBRARIES}
        ${kernel_libraries}
        IfcParse
)

install(TARGETS Serializers)

# Can't use `PUBLIC_HEADER` since we need two folders.
install(FILES ${SERIALIZERS_H_FILES} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/serializers/")
install(FILES ${SERIALIZERS_S_H_FILES} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/serializers/schema_dependent")
