function(dts_add_spine_runtime target runtime_root) if(NOT EXISTS "${runtime_root}/include/spine/spine.h") message(FATAL_ERROR "Missing spine-cpp source at ${runtime_root}") endif() file(GLOB_RECURSE runtime_sources CONFIGURE_DEPENDS "${runtime_root}/src/*.cpp") file(GLOB_RECURSE runtime_headers CONFIGURE_DEPENDS "${runtime_root}/include/*.h") add_library(${target} STATIC ${runtime_sources} ${runtime_headers}) target_include_directories(${target} PUBLIC "${runtime_root}/include") set_target_properties(${target} PROPERTIES POSITION_INDEPENDENT_CODE ON) if(MSVC) target_compile_options(${target} PRIVATE /W3 /utf-8) else() target_compile_options(${target} PRIVATE -Wno-deprecated-declarations) endif() endfunction() function(dts_add_runtime_adapter suffix version_line source_directory runtime_subdirectory) set(runtime_root "${CMAKE_CURRENT_SOURCE_DIR}/third_party/spine-runtimes/${version_line}/${runtime_subdirectory}") set(runtime_target "dts_spine_cpp_${suffix}") set(adapter_target "dts_runtime_${suffix}") dts_add_spine_runtime(${runtime_target} "${runtime_root}") add_library(${adapter_target} SHARED "${CMAKE_CURRENT_SOURCE_DIR}/runtime-plugins/${source_directory}/RuntimeAdapter.cpp") target_include_directories(${adapter_target} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/runtime-api") target_link_libraries(${adapter_target} PRIVATE ${runtime_target}) set_target_properties(${adapter_target} PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN YES OUTPUT_NAME "dts-runtime-${version_line}") endfunction()