From b0379bcadce0b66fa5d3e5fc45d85a8ba365c92b Mon Sep 17 00:00:00 2001 From: ruki Date: Sat, 6 Aug 2022 00:10:00 +0800 Subject: cache module deps --- xmake/rules/c++/modules/modules_support/common.lua | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'xmake/rules/c++/modules/modules_support/common.lua') diff --git a/xmake/rules/c++/modules/modules_support/common.lua b/xmake/rules/c++/modules/modules_support/common.lua index 5d5c625ec..c91f52a9b 100644 --- a/xmake/rules/c++/modules/modules_support/common.lua +++ b/xmake/rules/c++/modules/modules_support/common.lua @@ -24,13 +24,19 @@ import("core.base.hashset") import("core.project.config") import("core.tool.compiler") import("core.cache.memcache", {alias = "_memcache"}) +import("core.cache.localcache", {alias = "_localcache"}) import("core.project.project") import("lib.detect.find_file") import("stl_headers") -- get memcache function memcache() - return _memcache.cache("rule.cxx.modules") + return _memcache.cache("cxxmodules") +end + +-- get localcache +function localcache() + return _localcache.cache("cxxmodules") end -- get stl modules cache directory @@ -407,9 +413,15 @@ end -- generate dependencies function generate_dependencies(target, sourcebatch, opt) - modules_support(target).generate_dependencies(target, sourcebatch, opt) - local moduleinfos = load_moduleinfos(target, sourcebatch) - return parse_dependency_data(target, moduleinfos) + local modules = localcache():get("modules") + local changed = modules_support(target).generate_dependencies(target, sourcebatch, opt) + if changed or modules == nil then + local moduleinfos = load_moduleinfos(target, sourcebatch) + modules = parse_dependency_data(target, moduleinfos) + localcache():set("modules", modules) + localcache():save() + end + return modules end -- generate headerunits for batchjobs, TODO -- cgit v1.3.1