diff options
| author | ruki <[email protected]> | 2017-06-20 12:57:35 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-06-20 12:57:35 +0800 |
| commit | 0ef4acaa5f9d78c7fd8941ccbe8d3f237e91268c (patch) | |
| tree | f6f953421cbff144644ab5e6781ad8b187bf12ff /xmake/core | |
| parent | bc5021e091a9e7b962243354c88e0fe11dff563f (diff) | |
improve has_flags for gcc
Diffstat (limited to 'xmake/core')
| -rw-r--r-- | xmake/core/sandbox/modules/import/lib/detect/cache.lua (renamed from xmake/core/sandbox/modules/import/lib/detect/clear_cache.lua) | 51 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/lib/detect/find_package.lua | 15 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/lib/detect/find_program.lua | 12 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/lib/detect/find_programver.lua | 10 |
4 files changed, 58 insertions, 30 deletions
diff --git a/xmake/core/sandbox/modules/import/lib/detect/clear_cache.lua b/xmake/core/sandbox/modules/import/lib/detect/cache.lua index 81cca369e..c3a890de1 100644 --- a/xmake/core/sandbox/modules/import/lib/detect/clear_cache.lua +++ b/xmake/core/sandbox/modules/import/lib/detect/cache.lua @@ -19,11 +19,11 @@ -- Copyright (C) 2015 - 2017, TBOOX Open Source Group. -- -- @author ruki --- @file clear_cache.lua +-- @file cache.lua -- -- define module -local sandbox_lib_detect_clear_cache = sandbox_lib_detect_clear_cache or {} +local sandbox_lib_detect_cache = sandbox_lib_detect_cache or {} -- load modules local os = require("base/os") @@ -36,15 +36,54 @@ local project = require("project/project") local sandbox = require("sandbox/sandbox") local raise = require("sandbox/modules/raise") --- clear detect cache +-- get detect cache instance +function sandbox_lib_detect_cache._instance() + + -- get it + local detectcache = sandbox_lib_detect_cache._INSTANCE or cache(utils.ifelse(os.isfile(project.file()), "local.detect", "memory.detect")) + sandbox_lib_detect_cache._INSTANCE = detectcache + + -- ok? + return detectcache +end + +-- load detect cache -- -- @param name the cache name. .e.g find_program, find_programver, .. -- -function sandbox_lib_detect_clear_cache.main(name) +function sandbox_lib_detect_cache.load(name) -- get detect cache - local detectcache = cache(utils.ifelse(os.isfile(project.file()), "local.detect", "memory.detect")) + local detectcache = sandbox_lib_detect_cache._instance() + -- attempt to get result from cache first + return detectcache:get(name) or {} +end + +-- save detect cache +-- +-- @param name the cache name. .e.g find_program, find_programver, .. +-- @param info the cache info +-- +function sandbox_lib_detect_cache.save(name, info) + + -- get detect cache + local detectcache = sandbox_lib_detect_cache._instance() + + -- save cache info + detectcache:set(name, info) + detectcache:flush() +end + +-- clear detect cache +-- +-- @param name the cache name. .e.g find_program, find_programver, .. +-- +function sandbox_lib_detect_cache.clear(name) + + -- get detect cache + local detectcache = sandbox_lib_detect_cache._instance() + -- clear cache info if name then detectcache:set(name, {}) @@ -55,4 +94,4 @@ function sandbox_lib_detect_clear_cache.main(name) end -- return module -return sandbox_lib_detect_clear_cache +return sandbox_lib_detect_cache diff --git a/xmake/core/sandbox/modules/import/lib/detect/find_package.lua b/xmake/core/sandbox/modules/import/lib/detect/find_package.lua index 460f1b195..626f652cd 100644 --- a/xmake/core/sandbox/modules/import/lib/detect/find_package.lua +++ b/xmake/core/sandbox/modules/import/lib/detect/find_package.lua @@ -31,13 +31,11 @@ local path = require("base/path") local utils = require("base/utils") local table = require("base/table") local option = require("base/option") -local cache = require("project/cache") local config = require("project/config") local project = require("project/project") local raise = require("sandbox/modules/raise") local import = require("sandbox/modules/import") -local find_file = import("lib.detect.find_file") -local find_library = import("lib.detect.find_library") +local cache = require("sandbox/modules/import/lib/detect/cache") local pkg_config = import("lib.detect.pkg_config") -- find package from project package directories @@ -100,6 +98,9 @@ function sandbox_lib_detect_find_package._find_from_systemdirs(name, opt) end end + -- import find_library + local find_library = import("lib.detect.find_library") + -- find library local result = nil for _, link in ipairs(table.wrap(links)) do @@ -175,9 +176,6 @@ end -- function sandbox_lib_detect_find_package.main(name, opt) - -- get detect cache - local detectcache = cache(utils.ifelse(os.isfile(project.file()), "local.detect", "memory.detect")) - -- init options opt = opt or {} opt.plat = opt.plat or config.get("plat") or os.host() @@ -187,7 +185,7 @@ function sandbox_lib_detect_find_package.main(name, opt) local key = "find_package_" .. opt.plat .. "_" .. opt.arch -- attempt to get result from cache first - local cacheinfo = detectcache:get(key) or {} + local cacheinfo = cache.load(key) local result = cacheinfo[name] if result ~= nil then return utils.ifelse(result, result, nil) @@ -200,8 +198,7 @@ function sandbox_lib_detect_find_package.main(name, opt) cacheinfo[name] = utils.ifelse(result, result, false) -- save cache info - detectcache:set(key, cacheinfo) - detectcache:flush() + cache.save(key, cacheinfo) -- trace if option.get("verbose") then diff --git a/xmake/core/sandbox/modules/import/lib/detect/find_program.lua b/xmake/core/sandbox/modules/import/lib/detect/find_program.lua index 2b4b6c4fa..57355780b 100644 --- a/xmake/core/sandbox/modules/import/lib/detect/find_program.lua +++ b/xmake/core/sandbox/modules/import/lib/detect/find_program.lua @@ -31,11 +31,11 @@ local path = require("base/path") local table = require("base/table") local utils = require("base/utils") local option = require("base/option") -local cache = require("project/cache") local project = require("project/project") local sandbox = require("sandbox/sandbox") local raise = require("sandbox/modules/raise") local vformat = require("sandbox/modules/vformat") +local cache = require("sandbox/modules/import/lib/detect/cache") -- check program function sandbox_lib_detect_find_program._check(program, check) @@ -141,11 +141,8 @@ end -- function sandbox_lib_detect_find_program.main(name, pathes, check) - -- get detect cache - local detectcache = cache(utils.ifelse(os.isfile(project.file()), "local.detect", "memory.detect")) - -- attempt to get result from cache first - local cacheinfo = detectcache:get("find_program") or {} + local cacheinfo = cache:load("find_program") local result = cacheinfo[name] if result ~= nil then return utils.ifelse(result, result, nil) @@ -153,7 +150,7 @@ function sandbox_lib_detect_find_program.main(name, pathes, check) -- add default search pathes if os.host() ~= "windows" then - pathes = table.join(table.wrap(pathes), "/usr/local/lib", "/usr/lib") + pathes = table.join(table.wrap(pathes), "/usr/local/bin", "/usr/bin") end -- find executable program @@ -163,8 +160,7 @@ function sandbox_lib_detect_find_program.main(name, pathes, check) cacheinfo[name] = utils.ifelse(result, result, false) -- save cache info - detectcache:set("find_program", cacheinfo) - detectcache:flush() + cache.save("find_program", cacheinfo) -- trace if option.get("verbose") then diff --git a/xmake/core/sandbox/modules/import/lib/detect/find_programver.lua b/xmake/core/sandbox/modules/import/lib/detect/find_programver.lua index 7daec26c8..b54b03899 100644 --- a/xmake/core/sandbox/modules/import/lib/detect/find_programver.lua +++ b/xmake/core/sandbox/modules/import/lib/detect/find_programver.lua @@ -31,10 +31,10 @@ local path = require("base/path") local table = require("base/table") local utils = require("base/utils") local option = require("base/option") -local cache = require("project/cache") local project = require("project/project") local sandbox = require("sandbox/sandbox") local raise = require("sandbox/modules/raise") +local cache = require("sandbox/modules/import/lib/detect/cache") -- find program version -- @@ -54,11 +54,8 @@ local raise = require("sandbox/modules/raise") -- function sandbox_lib_detect_find_programver.main(program, command, parse) - -- get detect cache - local detectcache = cache(utils.ifelse(os.isfile(project.file()), "local.detect", "memory.detect")) - -- attempt to get result from cache first - local cacheinfo = detectcache:get("find_programver") or {} + local cacheinfo = cache.load("find_programver") local result = cacheinfo[program] if result ~= nil then return utils.ifelse(result, result, nil) @@ -93,8 +90,7 @@ function sandbox_lib_detect_find_programver.main(program, command, parse) cacheinfo[program] = utils.ifelse(result, result, false) -- save cache info - detectcache:set("find_programver", cacheinfo) - detectcache:flush() + cache.save("find_programver", cacheinfo) -- ok? return result |
