package("tinymcp") set_homepage("https://github.com/Qihoo360/TinyMCP") set_description("A lightweight C++ SDK for implementing the MCP Server.") set_license("MIT") add_urls("https://github.com/Qihoo360/TinyMCP.git") add_versions("2025.05.16", "be9e806c0d5ad0fef5a14b0af3788acde76e4d64") add_deps("jsoncpp") if is_plat("linux", "bsd") then add_syslinks("pthread") end on_install("!macosx and !iphoneos", function (package) io.writefile("xmake.lua", [[ add_rules("mode.release", "mode.debug") add_requires("jsoncpp") target("tinymcp") set_kind("$(kind)") add_files("Source/Protocol/**.cpp") add_headerfiles("Source/Protocol/(**.h)") add_packages("jsoncpp") if is_plat("windows") and is_kind("shared") then add_rules("utils.symbols.export_all", {export_classes = true}) end if is_plat("linux", "bsd") then add_syslinks("pthread") end ]]) import("package.tools.xmake").install(package) end) on_test(function (package) assert(package:check_cxxsnippets({test = [[ #include namespace Implementation { class CEchoServer : public MCP::CMCPServer { public: int Initialize() override; private: friend class MCP::CMCPServer; CEchoServer() = default; static CEchoServer s_Instance; }; } namespace Implementation { int CEchoServer::Initialize() { MCP::Implementation serverInfo; SetServerInfo(serverInfo); return 0; } CEchoServer CEchoServer::s_Instance; } void test() { auto& server = Implementation::CEchoServer::GetInstance(); int iErrCode = server.Initialize(); } ]]})) end)