82 lines
3.4 KiB
Diff
82 lines
3.4 KiB
Diff
--- a/pipcl.py
|
|
+++ b/pipcl.py
|
|
@@ -1568,7 +1568,7 @@ def build_extension(
|
|
|
|
rpath_flag = ''
|
|
else:
|
|
- rpath_flag = "-Wl,-rpath,'$ORIGIN',-z,origin"
|
|
+ rpath_flag = ""
|
|
path_so = f'{outdir}/{path_so_leaf}'
|
|
# Fun fact - on Linux, if the -L and -l options are before '{path_cpp}'
|
|
# they seem to be ignored...
|
|
@@ -1665,7 +1665,7 @@ def build_extension(
|
|
#
|
|
|
|
|
|
-def base_compiler(vs=None, pythonflags=None, cpp=False, use_env=True):
|
|
+def base_compiler(vs=None, pythonflags=None, cpp=False, use_env=False):
|
|
'''
|
|
Returns basic compiler command and PythonFlags.
|
|
|
|
@@ -1829,7 +1829,7 @@ def run( command, capture=False, check=1):
|
|
lines = _command_lines( command)
|
|
nl = '\n'
|
|
log2( f'Running: {nl.join(lines)}')
|
|
- sep = ' ' if windows() else '\\\n'
|
|
+ sep = ' '
|
|
command2 = sep.join( lines)
|
|
cp = subprocess.run(
|
|
command2,
|
|
@@ -1849,7 +1849,7 @@ def darwin():
|
|
return sys.platform.startswith( 'darwin')
|
|
|
|
def windows():
|
|
- return platform.system() == 'Windows'
|
|
+ return platform.system() == 'Windows' and 'MSC' in sys.version
|
|
|
|
def wasm():
|
|
return os.environ.get( 'OS') in ('wasm', 'wasm-mt')
|
|
@@ -1932,10 +1932,10 @@ class PythonFlags:
|
|
python_config = f'{python_exe}-config'
|
|
log1(f'Using {python_config=}.')
|
|
try:
|
|
- self.includes = run( f'{python_config} --includes', capture=1).strip()
|
|
+ self.includes = run( f'sh -c "{python_config} --includes"', capture=1).strip()
|
|
except Exception as e:
|
|
raise Exception('We require python development tools to be installed.') from e
|
|
- self.ldflags = run( f'{python_config} --ldflags', capture=1).strip()
|
|
+ self.ldflags = run( f'sh -c "{python_config} --ldflags"', capture=1).strip()
|
|
if linux():
|
|
# It seems that with python-3.10 on Linux, we can get an
|
|
# incorrect -lcrypt flag that on some systems (e.g. WSL)
|
|
--- a/setup.py
|
|
+++ b/setup.py
|
|
@@ -499,7 +499,7 @@ linux = sys.platform.startswith( 'linux') or 'gnu' in sys.platform
|
|
openbsd = sys.platform.startswith( 'openbsd')
|
|
freebsd = sys.platform.startswith( 'freebsd')
|
|
darwin = sys.platform.startswith( 'darwin')
|
|
-windows = platform.system() == 'Windows' or platform.system().startswith('CYGWIN')
|
|
+windows = platform.system() == 'Windows' and 'MSC' in sys.version
|
|
msys2 = platform.system().startswith('MSYS_NT-')
|
|
pyodide = os.environ.get('OS') == 'pyodide'
|
|
|
|
@@ -1012,7 +1012,7 @@ def _extension_flags( mupdf_local, mupdf_build_dir, build_type):
|
|
libraries = f'{mupdf_local}\\platform\\{infix}\\{wp.cpu.windows_subdir}{build_type_infix}\\{libs}'
|
|
compiler_extra = ''
|
|
else:
|
|
- libs = ['mupdf']
|
|
+ libs = ['mupdf', 'mupdf-third', 'jbig2dec', 'openjp2', 'jpeg', 'png', 'z', 'freetype', 'gumbo', 'harfbuzz']
|
|
defines = None
|
|
compiler_extra += (
|
|
' -Wall'
|
|
@@ -1040,6 +1040,9 @@ def _extension_flags( mupdf_local, mupdf_build_dir, build_type):
|
|
# Use system MuPDF.
|
|
includes = list()
|
|
pi = os.environ.get('PYMUPDF_INCLUDES')
|
|
+ mingw_prefix = os.getenv("MINGW_PREFIX", "/ucrt64")
|
|
+ includes.append(f'{mingw_prefix}/include')
|
|
+ includes.append(f'{mingw_prefix}/include/freetype2')
|
|
if pi:
|
|
includes += pi.split(':')
|
|
pmi = os.environ.get('PYMUPDF_MUPDF_INCLUDE')
|