# Files shared between main library and unit test library
set(MagnumMeshTools_SRCS
    CompressIndices.cpp
    Tipsify.cpp)
set(MagnumMeshTools_HEADERS
    Clean.h
    CombineIndexedArrays.h
    CompressIndices.h
    FlipNormals.h
    GenerateFlatNormals.h
    Interleave.h
    Subdivide.h
    Tipsify.h
    Transform.h

    magnumMeshToolsVisibility.h)
add_library(MagnumMeshToolsObjects OBJECT ${MagnumMeshTools_SRCS})

# Set shared library flags for the objects, as they will be part of shared lib
# TODO: fix when CMake sets target_EXPORTS for OBJECT targets as well
set_target_properties(MagnumMeshToolsObjects PROPERTIES COMPILE_FLAGS "-DMagnumMeshToolsObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")

# Files compiled with different flags for main library and unit test library
set(MagnumMeshTools_GracefulAssert_SRCS
    FlipNormals.cpp
    GenerateFlatNormals.cpp)

# Main library
add_library(MagnumMeshTools SHARED
    $<TARGET_OBJECTS:MagnumMeshToolsObjects>
    ${MagnumMeshTools_GracefulAssert_SRCS})
target_link_libraries(MagnumMeshTools Magnum)

install(TARGETS MagnumMeshTools DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR})
install(FILES ${MagnumMeshTools_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/MeshTools)

if(BUILD_TESTS)
    enable_testing()

    # Library with graceful assert for testing
    add_library(MagnumMeshToolsTestLib SHARED
        $<TARGET_OBJECTS:MagnumMeshToolsObjects>
        ${MagnumMeshTools_GracefulAssert_SRCS})
    set_target_properties(MagnumMeshToolsTestLib PROPERTIES COMPILE_FLAGS -DCORRADE_GRACEFUL_ASSERT)
    target_link_libraries(MagnumMeshToolsTestLib Magnum)

    add_subdirectory(Test)
endif()
