diff options
| author | ruki <[email protected]> | 2020-11-10 23:09:04 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-11-10 23:09:04 +0800 |
| commit | 8ff5cc5e71f34af2f6ed538fb33950db7e6196a5 (patch) | |
| tree | 6efe56057af6f070e998fcfcc570004eed825de1 | |
| parent | c84a362b39d566dc21160b8171c5ec389dbc5e3b (diff) | |
switch to external include directories for package
| -rw-r--r-- | xmake/actions/require/fetch.lua | 2 | ||||
| -rw-r--r-- | xmake/actions/require/impl/package.lua | 3 | ||||
| -rw-r--r-- | xmake/core/package/package.lua | 8 | ||||
| -rw-r--r-- | xmake/modules/lib/detect/find_package.lua | 10 |
4 files changed, 22 insertions, 1 deletions
diff --git a/xmake/actions/require/fetch.lua b/xmake/actions/require/fetch.lua index d4e1a4182..657d53fa7 100644 --- a/xmake/actions/require/fetch.lua +++ b/xmake/actions/require/fetch.lua @@ -62,6 +62,7 @@ function main(requires_raw) for _, fetchinfo in ipairs(fetchinfos) do table.join2(flags, compiler.map_flags("cxx", "define", fetchinfo.defines)) table.join2(flags, compiler.map_flags("cxx", "includedir", fetchinfo.includedirs)) + table.join2(flags, compiler.map_flags("cxx", "sysincludedir", fetchinfo.sysincludedirs)) for _, cflag in ipairs(fetchinfo.cflags) do table.insert(flags, cflag) end @@ -77,6 +78,7 @@ function main(requires_raw) for _, fetchinfo in ipairs(fetchinfos) do table.join2(flags, linker.map_flags("binary", {"cxx"}, "linkdir", fetchinfo.linkdirs)) table.join2(flags, linker.map_flags("binary", {"cxx"}, "link", fetchinfo.links)) + table.join2(flags, linker.map_flags("binary", {"cxx"}, "syslink", fetchinfo.syslinks)) for _, ldflag in ipairs(fetchinfo.ldflags) do table.insert(flags, ldflags) end diff --git a/xmake/actions/require/impl/package.lua b/xmake/actions/require/impl/package.lua index 0782b50c9..599d076c1 100644 --- a/xmake/actions/require/impl/package.lua +++ b/xmake/actions/require/impl/package.lua @@ -168,7 +168,8 @@ function _parse_require(require_str, requires_extra, parentinfo) configs = require_build_configs, -- the required building configurations default = require_extra.default, -- default: true, we can set it to disable package manually optional = parentinfo.optional or require_extra.optional, -- default: false, inherit parentinfo.optional - verify = require_extra.verify -- default: true, we can set false to ignore sha256sum and select any version + verify = require_extra.verify, -- default: true, we can set false to ignore sha256sum and select any version + external = require_extra.external -- default: true, we use sysincludedirs/-isystem instead of -I/xxx } -- save this required item to cache diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua index b6494e637..232bfc23c 100644 --- a/xmake/core/package/package.lua +++ b/xmake/core/package/package.lua @@ -869,6 +869,12 @@ function _instance:fetch(opt) system = nil end + -- use sysincludedirs/-isystem instead of -I? + local external = self:requireinfo().external + if external == nil then + external = true + end + -- fetch binary tool? fetchinfo = nil local isSys = nil @@ -913,6 +919,7 @@ function _instance:fetch(opt) cachekey = "fetch_package_xmake", buildhash = self:buildhash(), pkgconfigs = self:configs(), + external = external, force = opt.force}) if fetchinfo then isSys = self._isSys @@ -927,6 +934,7 @@ function _instance:fetch(opt) pkgconfigs = self:configs(), buildhash = self:is3rd() and self:buildhash(), -- only for 3rd package manager, e.g. go:: .. cachekey = "fetch_package_system", + external = external, system = true}) if fetchinfo then isSys = true diff --git a/xmake/modules/lib/detect/find_package.lua b/xmake/modules/lib/detect/find_package.lua index df54397fa..24abcb8ad 100644 --- a/xmake/modules/lib/detect/find_package.lua +++ b/xmake/modules/lib/detect/find_package.lua @@ -30,6 +30,7 @@ import("package.manager.find_package") -- e.g. zlib 1.12.x (try all), xmake::zlib 1.12.x, brew::zlib, brew::pcre/libpcre16, vcpkg::zlib, conan::OpenSSL/1.0.2n@conan/stable -- @param opt the options -- e.g. { verbose = false, force = false, plat = "iphoneos", arch = "arm64", mode = "debug", version = "1.0.x", +-- external = true, -- we use sysincludedirs instead of includedirs as results -- linkdirs = {"/usr/lib"}, includedirs = "/usr/include", links = {"ssl"}, includes = {"ssl.h"} -- packagedirs = {"/tmp/packages"}, system = true, cachekey = "xxxx" -- pkgconfigs = {..}} @@ -65,6 +66,9 @@ function main(name, opt) if opt.mode then key = key .. "_" .. opt.mode end + if opt.isystem then + key = key .. "_isystem" + end -- attempt to get result from cache first local cacheinfo = cache.load(key) @@ -77,6 +81,12 @@ function main(name, opt) local found_manager_name, package_name result, found_manager_name, package_name = find_package(name, opt) + -- use isystem? + if result and result.includedirs and opt.external then + result.sysincludedirs = result.includedirs + result.includedirs = nil + end + -- cache result cacheinfo[name] = result and result or false cache.save(key, cacheinfo) |
