set(INTEROP_SOURCES NrtInteropErrorHandling.cpp NrtLoggingService.cpp Ecs/NrtCatalogue.cpp Ecs/NrtConfigurator.cpp Ecs/NrtComponentBufferMemoryContainer.cpp Ecs/NrtComponentCache.cpp Ecs/NrtEntityCache.cpp Ecs/NrtEntityIdVector.cpp Ecs/NrtSparseSetMemoryContainer.cpp Ecs/NrtSystemScheduler.cpp Ecs/NrtUnsafeComponentView.cpp Ecs/Graphics/NrtDefaultRenderingSystem.cpp Graphics/NrtRGBAColour.cpp Graphics/NrtGraphicsProvider.cpp Input/NrtIInputDevice.cpp Input/NrtInputAction.cpp Input/NrtNovelKey.cpp Maths/NrtGeoBounds.cpp Maths/NrtGeoMatrix4x4F.cpp Maths/NrtGeoVector2F.cpp Maths/NrtGeoVector3F.cpp Maths/NrtGeoVector4F.cpp Maths/NrtQuadTree.cpp Maths/NrtQuadTreePoint.cpp ResourceManagement/NrtAudioMetadata.cpp ResourceManagement/NrtBinaryMemberMetadata.cpp ResourceManagement/NrtBinaryPackage.cpp ResourceManagement/NrtFilePathUuidMap.cpp ResourceManagement/NrtShaderMetadata.cpp ResourceManagement/NrtTextureMetadata.cpp ResourceManagement/NrtResourceLoader.cpp ResourceManagement/NrtUint8Vector.cpp ResourceManagement/NrtInt16Vector.cpp ResourceManagement/NrtUuidFilePathMap.cpp PluginManagement/NrtDefaultPluginSelector.cpp PluginManagement/NrtIGraphicsPluginProvider.cpp PluginManagement/NrtIInputPluginProvider.cpp PluginManagement/NrtIResourceManagementPluginProvider.cpp PluginManagement/NrtIWindowingPluginProvider.cpp ResourceManagement/NrtResourceLoader.cpp Timing/NrtStepTimer.cpp Timing/NrtTimestamp.cpp Utilities/NrtMisc.cpp Utilities/NrtEvent.cpp Windowing/NrtIWindowingDevice.cpp ) add_library(Interop SHARED ${INTEROP_SOURCES}) add_library(NovelRT::Interop ALIAS Interop) add_dependencies(Interop Engine) set_property(TARGET Interop PROPERTY VERSION ${PROJECT_VERSION}) if(GENERATOR_IS_MULTI_CONFIG) set_property(TARGET Interop PROPERTY OUTPUT_NAME "$,NovelRT.Interop,NovelRT.Interop-$>") else() if(CMAKE_BUILD_TYPE STREQUAL "Release") set(INTEROP_NAME "NovelRT.Interop") elseif(CMAKE_BUILD_TYPE) set(INTEROP_NAME "NovelRT.Interop-${CMAKE_BUILD_TYPE}") else() set(INTEROP_NAME "NovelRT.Interop-\$") endif() set_target_properties(Interop PROPERTIES OUTPUT_NAME ${INTEROP_NAME}) endif() if(APPLE) get_target_property(INTEROP_NAME_FINAL Interop OUTPUT_NAME) set_target_properties(Interop PROPERTIES SOVERSION ${PROJECT_VERSION} NO_SONAME TRUE ) target_link_options(Interop PRIVATE $<$:-install_name @rpath/lib${INTEROP_NAME_FINAL}.dylib>) endif() target_compile_features(Interop PUBLIC cxx_std_17) target_include_directories(Interop PUBLIC $ $ ) target_compile_options(Interop PRIVATE $<$:/W4> $<$:/WX> $<$:/wd4611> $<$:/MP> $<$:/D_CRT_SECURE_NO_WARNINGS /D_SCL_NO_WARNINGS> $<$:-pedantic> $<$:-pedantic-errors> $<$:-Wall> $<$:-Wextra> $<$:-Werror> $<$:-Wno-float-equal> $<$:-Wno-padded> $<$:-pedantic> $<$:-pedantic-errors> $<$:-Wall> $<$:-Wextra> $<$:-Werror> $<$:-Wno-c++98-compat> $<$:-Wno-c++98-compat-pedantic> $<$:-Wno-float-equal> $<$:-Wno-padded> $<$:-Wno-reserved-id-macro> $<$:-Wno-nullability-extension> $<$,$>:-Wno-unused-but-set-variable> $<$:-pedantic> $<$:-pedantic-errors> $<$:-Wall> $<$:-Wextra> $<$:-Werror> $<$:-Wno-c++98-compat> $<$:-Wno-c++98-compat-pedantic> $<$:-Wno-float-equal> $<$:-Wno-padded> $<$:-Wno-reserved-id-macro> $<$:-Wno-nullability-extension> $<$,$>:-Wno-unused-but-set-variable> ) if(MSVC) set_property(TARGET Interop PROPERTY WINDOWS_EXPORT_ALL_SYMBOLS ON) get_target_property(opts Interop COMPILE_OPTIONS) endif() target_link_libraries(Interop PUBLIC Engine) if(NOVELRT_INSTALL) install( TARGETS Interop EXPORT NovelRT LIBRARY DESTINATION lib ARCHIVE DESTINATION lib RUNTIME DESTINATION bin FRAMEWORK DESTINATION lib ) endif()