Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions scripts/wdev.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,12 @@ def __init__(self, name=None):
self.windows_name = 'x64'
self.windows_config = 'x64'
self.windows_suffix = '64'
elif name in ('arm64', 'ARM64'):
self.bits = 64
self.windows_subdir = 'ARM64/'
self.windows_name = 'ARM64'
self.windows_config = 'ARM64'
self.windows_suffix = '64'
else:
assert 0, f'Unrecognised cpu name: {name}'

Expand Down Expand Up @@ -356,10 +362,15 @@ def __repr__(self):

def _cpu_name():
'''
Returns `x32` or `x64` depending on Python build.
Returns `x32`, `x64` or `ARM64` depending on Python build.
'''
#log(f'sys.maxsize={hex(sys.maxsize)}')
return f'x{32 if sys.maxsize == 2**31 - 1 else 64}'
# Check platform architecture
machine = platform.machine().lower()
if machine in ('arm64', 'aarch64'):
return 'arm64'
else:
#log(f'sys.maxsize={hex(sys.maxsize)}')
return f'x{32 if sys.maxsize == 2**31 - 1 else 64}'



Expand Down
10 changes: 7 additions & 3 deletions scripts/wrap/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1870,12 +1870,16 @@ def fn(name):
if state.state_.windows:

libdir = f'{build_dirs.dir_mupdf}/platform/win32/'
mupdfcpp_lib = f'{build_dirs.dir_mupdf}/platform/win32/'
if build_dirs.cpu.bits == 64:
if build_dirs.cpu.name == 'arm64':
libdir += 'ARM64/'
elif build_dirs.cpu.bits == 64:
libdir += 'x64/'
libdir += 'Debug/' if debug else 'Memento/' if memento else 'Release/'
libs = list()
libs.append(libdir + ('mupdfcpp64.lib' if build_dirs.cpu.bits == 64 else 'mupdfcpp.lib'))
if build_dirs.cpu.name in ('arm64', 'x64'):
libs.append(libdir + f'mupdfcpp{build_dirs.cpu.windows_suffix}.lib')
else:
libs.append(libdir + 'mupdfcpp.lib')
if memento:
libs.append(libdir + 'libmupdf.lib')

Expand Down
17 changes: 14 additions & 3 deletions scripts/wrap/state.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,12 @@ def __init__(self, name=None):
self.windows_name = 'x64'
self.windows_config = 'x64'
self.windows_suffix = '64'
elif name in ('arm64', 'ARM64'):
self.bits = 64
self.windows_subdir = 'ARM64/'
self.windows_name = 'ARM64'
self.windows_config = 'ARM64'
self.windows_suffix = '64'
else:
assert 0, f'Unrecognised cpu name: {name}'

Expand All @@ -239,9 +245,14 @@ def python_version():

def cpu_name():
'''
Returns 'x32' or 'x64' depending on Python build.
Returns 'x32', 'x64' or 'ARM64' depending on Python build.
'''
ret = f'x{32 if sys.maxsize == 2**31 - 1 else 64}'
machine = platform.machine().lower()
if machine in ('arm64', 'aarch64'):
ret = 'arm64'
else:
#log(f'sys.maxsize={hex(sys.maxsize)}')
ret = f'x{32 if sys.maxsize == 2**31 - 1 else 64}'
#jlib.log(f'returning ret={ret!r}')
return ret

Expand Down Expand Up @@ -335,7 +346,7 @@ def set_dir_so( self, dir_so):
self.cpu = None
self.python_version = None
for flag in flags:
if flag in ('x32', 'x64'):
if flag in ('x32', 'x64', 'arm64', 'ARM64'):
self.cpu = Cpu(flag)
if flag.startswith('py'):
self.python_version = flag[2:]
Expand Down
8 changes: 8 additions & 0 deletions source/fitz/hyphen.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,21 @@ extern const unsigned char _binary_resources_hyphen_hyph_all_zip_end;

#else

#ifdef _M_ARM64
// Disable embedded hyphen data on ARM64 to avoid linker alignment errors
#define HYPH_STD NULL, 0
#define HYPH_ALL NULL, 0

#else

extern const unsigned char _binary_hyph_std_zip[];
extern const unsigned int _binary_hyph_std_zip_size;
#define HYPH_STD _binary_hyph_std_zip, _binary_hyph_std_zip_size

extern const unsigned char _binary_hyph_all_zip[];
extern const unsigned int _binary_hyph_all_zip_size;
#define HYPH_ALL _binary_hyph_all_zip, _binary_hyph_all_zip_size
#endif

#endif

Expand Down