diff options
| -rw-r--r-- | miasm/jitter/jitcore_cc_base.py | 7 | ||||
| -rw-r--r-- | miasm/jitter/jitcore_gcc.py | 3 | ||||
| -rw-r--r-- | setup.py | 4 |
3 files changed, 12 insertions, 2 deletions
diff --git a/miasm/jitter/jitcore_cc_base.py b/miasm/jitter/jitcore_cc_base.py index 995c458b..5c9f1cdb 100644 --- a/miasm/jitter/jitcore_cc_base.py +++ b/miasm/jitter/jitcore_cc_base.py @@ -1,5 +1,6 @@ #-*- coding:utf-8 -*- +import glob import os import tempfile import platform @@ -76,6 +77,12 @@ class JitCore_Cc_Base(JitCore): ext = sysconfig.get_config_var('EXT_SUFFIX') if ext is None: ext = ".so" if not is_win else ".lib" + if is_win: + # sysconfig.get_config_var('EXT_SUFFIX') is .pyd on Windows and need to be forced to .lib + # Additionaly windows built libraries may have a name like VmMngr.cp38-win_amd64.lib + ext_files = glob.glob(os.path.join(lib_dir, "VmMngr.*lib")) + if len(ext_files) == 1: + ext = os.path.basename(ext_files[0]).replace("VmMngr", "") libs = [ os.path.join(lib_dir, "VmMngr" + ext), diff --git a/miasm/jitter/jitcore_gcc.py b/miasm/jitter/jitcore_gcc.py index 1520cf38..7ffef69e 100644 --- a/miasm/jitter/jitcore_gcc.py +++ b/miasm/jitter/jitcore_gcc.py @@ -1,5 +1,6 @@ #-*- coding:utf-8 -*- +import sys import os import tempfile import ctypes @@ -70,7 +71,7 @@ class JitCore_Gcc(JitCore_Cc_Base): get_python_inc(), "..", "libs", - "python27.lib" + "python%d%d.lib" % (sys.version_info.major, sys.version_info.minor) ) ) cl = [ diff --git a/setup.py b/setup.py index 4b149772..c85841e4 100644 --- a/setup.py +++ b/setup.py @@ -7,6 +7,7 @@ from distutils.sysconfig import get_python_lib, get_config_vars from distutils.dist import DistributionMetadata from distutils.command.install_data import install_data from tempfile import TemporaryFile +import fnmatch import io import os import platform @@ -248,7 +249,8 @@ def buil_all(): for lib in libs: filename = os.path.basename(lib) dst = os.path.join(build_base, lib_dirname, "miasm", "jitter") - if filename not in ["VmMngr.lib", "Jitgcc.lib", "Jitllvm.lib"]: + # Windows built libraries may have a name like VmMngr.cp38-win_amd64.lib + if not any([fnmatch.fnmatch(filename, pattern) for pattern in ["VmMngr.*lib", "Jitgcc.*lib", "Jitllvm.*lib"]]): dst = os.path.join(dst, "arch") dst = os.path.join(dst, filename) if not os.path.isfile(dst): |