summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2020-11-10 23:09:04 +0800
committerruki <[email protected]>2020-11-10 23:09:04 +0800
commit8ff5cc5e71f34af2f6ed538fb33950db7e6196a5 (patch)
tree6efe56057af6f070e998fcfcc570004eed825de1
parentc84a362b39d566dc21160b8171c5ec389dbc5e3b (diff)
switch to external include directories for package
-rw-r--r--xmake/actions/require/fetch.lua2
-rw-r--r--xmake/actions/require/impl/package.lua3
-rw-r--r--xmake/core/package/package.lua8
-rw-r--r--xmake/modules/lib/detect/find_package.lua10
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)