diff options
| -rw-r--r-- | xmake/rules/utils/symbols/export_all/export_all.lua | 17 |
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 |
