diff options
| author | ruki <[email protected]> | 2021-12-23 22:37:46 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-12-23 22:37:46 +0800 |
| commit | 95b63301dd11e16b5039aa9c10cda77e8ddc1036 (patch) | |
| tree | 369d853039549d1548b577dcec1155bcdda1c69d /xmake/rules | |
| parent | 65e93fa30d57ad5823cbfbb7b70df621a5cce4fa (diff) | |
add soabi for swig.python
Diffstat (limited to 'xmake/rules')
| -rw-r--r-- | xmake/rules/swig/xmake.lua | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/xmake/rules/swig/xmake.lua b/xmake/rules/swig/xmake.lua index 29b2673a2..c0387a940 100644 --- a/xmake/rules/swig/xmake.lua +++ b/xmake/rules/swig/xmake.lua @@ -30,8 +30,21 @@ rule("swig.base") local moduletype = target:extraconf("rules", "swig.c", "moduletype") or target:extraconf("rules", "swig.cpp", "moduletype") if moduletype == "python" then target:set("prefixname", "_") - if target:is_plat("windows") then - target:set("extension", ".pyd") + local soabi = target:extraconf("rules", "swig.c", "soabi") or target:extraconf("rules", "swig.cpp", "soabi") + if soabi then + import("lib.detect.find_tool") + local python = assert(find_tool("python3"), "python not found!") + local result = try { function() return os.iorunv(python.program, {"-c", "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))"}) end} + if result then + result = result:trim() + if result ~= "None" then + target:set("extension", result) + end + end + else + if target:is_plat("windows") then + target:set("extension", ".pyd") + end end elseif moduletype == "lua" then target:set("prefixname", "") |
