summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-08-04 22:57:53 +0800
committerruki <[email protected]>2022-08-04 22:57:53 +0800
commit86dc716cbc9bf052012383f4448a069aa2a0bcb8 (patch)
tree703d7bf5b6ba15016a22599148babce5f95d9935
parent339c50ca90f0f4fac4c8f3083386eb770f18f06a (diff)
improve has_flags
-rw-r--r--xmake/modules/detect/tools/cl/has_flags.lua3
-rw-r--r--xmake/modules/detect/tools/gcc/has_flags.lua3
-rw-r--r--xmake/rules/c++/modules/modules_support/clang.lua4
3 files changed, 6 insertions, 4 deletions
diff --git a/xmake/modules/detect/tools/cl/has_flags.lua b/xmake/modules/detect/tools/cl/has_flags.lua
index ceb3561d4..fe57e38b0 100644
--- a/xmake/modules/detect/tools/cl/has_flags.lua
+++ b/xmake/modules/detect/tools/cl/has_flags.lua
@@ -83,7 +83,8 @@ end
function main(flags, opt)
-- attempt to check it from the argument list
- if _check_from_arglist(flags, opt) then
+ opt = opt or {}
+ if not opt.tryrun and _check_from_arglist(flags, opt) then
return true
end
diff --git a/xmake/modules/detect/tools/gcc/has_flags.lua b/xmake/modules/detect/tools/gcc/has_flags.lua
index f7cf1d29e..b8e63423a 100644
--- a/xmake/modules/detect/tools/gcc/has_flags.lua
+++ b/xmake/modules/detect/tools/gcc/has_flags.lua
@@ -101,10 +101,11 @@ end
function main(flags, opt)
-- is linker?
+ opt = opt or {}
local islinker = _islinker(flags, opt)
-- attempt to check it from the argument list
- if _check_from_arglist(flags, opt, islinker) then
+ if not opt.tryrun and _check_from_arglist(flags, opt, islinker) then
return true
end
diff --git a/xmake/rules/c++/modules/modules_support/clang.lua b/xmake/rules/c++/modules/modules_support/clang.lua
index 0095444ed..b00d059b9 100644
--- a/xmake/rules/c++/modules/modules_support/clang.lua
+++ b/xmake/rules/c++/modules/modules_support/clang.lua
@@ -371,8 +371,8 @@ function has_headerunitsupport(target)
local support_headerunits = _g.support_headerunits
if support_headerunits == nil then
local compinst = target:compiler("cxx")
- if compinst:has_flags("-x c++-user-header", "cxxflags", {flagskey = "clang_user_header_unit_support"}) and
- compinst:has_flags("-x c++-system-header", "cxxflags", {flagskey = "clang_system_header_unit_support"}) then
+ if compinst:has_flags("-x c++-user-header", "cxxflags", {flagskey = "clang_user_header_unit_support", tryrun = true}) and
+ compinst:has_flags("-x c++-system-header", "cxxflags", {flagskey = "clang_system_header_unit_support", tryrun = true}) then
support_headerunits = true
end
_g.support_headerunits = support_headerunits or false