summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-05-21 00:46:25 +0800
committerruki <[email protected]>2024-05-21 00:46:25 +0800
commite642997ba82a99e067bbca0ad292a07b08d81fc9 (patch)
tree2630ca421caf7ed87850ede6136339dd3228deb2
parent782baf43d356e96ba8eb001e3218e625d5f1e44d (diff)
improve export_all
-rw-r--r--xmake/rules/utils/symbols/export_all/export_all.lua17
1 files changed, 10 insertions, 7 deletions
diff --git a/xmake/rules/utils/symbols/export_all/export_all.lua b/xmake/rules/utils/symbols/export_all/export_all.lua
index 9376e557e..c188d8386 100644
--- a/xmake/rules/utils/symbols/export_all/export_all.lua
+++ b/xmake/rules/utils/symbols/export_all/export_all.lua
@@ -135,18 +135,21 @@ function main(target, opt)
-- get all symbols
local allsymbols
- local msvc = toolchain.load("msvc", {plat = target:plat(), arch = target:arch()})
- if msvc:check() then
- local dumpbin = assert(find_tool("dumpbin", {envs = msvc:runenvs()}), "dumpbin not found!")
- allsymbols = _get_allsymbols_by_dumpbin(target, dumpbin.program, {
- export_classes = export_classes,
- export_filter = export_filter})
- elseif target:has_tool("cc", "clang", "clang_cl", "clangxx", "gcc", "gxx") then
+ if target:has_tool("cc", "clang", "clang_cl", "clangxx", "gcc", "gxx") then
local objdump = assert(find_tool("llvm-objdump") or find_tool("objdump"), "objdump not found!")
allsymbols = _get_allsymbols_by_objdump(target, objdump.program, {
export_classes = export_classes,
export_filter = export_filter})
end
+ if not allsymbols then
+ local msvc = toolchain.load("msvc", {plat = target:plat(), arch = target:arch()})
+ if msvc:check() then
+ local dumpbin = assert(find_tool("dumpbin", {envs = msvc:runenvs()}), "dumpbin not found!")
+ allsymbols = _get_allsymbols_by_dumpbin(target, dumpbin.program, {
+ export_classes = export_classes,
+ export_filter = export_filter})
+ end
+ end
-- export all symbols
if allsymbols and allsymbols:size() > 0 then