diff --git a/pymeos_cffi/pymeos_cffi/builder/build_header.py b/pymeos_cffi/pymeos_cffi/builder/build_header.py index 776c155b..c7885a9a 100644 --- a/pymeos_cffi/pymeos_cffi/builder/build_header.py +++ b/pymeos_cffi/pymeos_cffi/builder/build_header.py @@ -1,4 +1,5 @@ import os.path +import platform import re import subprocess import sys @@ -36,7 +37,7 @@ def remove_if_not_defined(m): def remove_repeated_functions( - content: str, seen_functions: set + content: str, seen_functions: set ) -> Tuple[str, Set[str]]: def remove_if_repeated(m): function = m.group(0).replace("\n", "").strip() @@ -101,4 +102,10 @@ def main(include_dir, so_path=None, destination_path="pymeos_cffi/builder/meos.h if len(sys.argv) > 1: main(*sys.argv[1:]) else: - main("/usr/local/include", "/usr/local/lib/libmeos.so") + if sys.platform == "linux": + main("/usr/local/include", "/usr/local/lib/libmeos.so") + elif sys.platform == "darwin": + if platform.processor() == 'arm': + main("/opt/homebrew/include", "/opt/homebrew/lib/libmeos.dylib") + else: + main("/usr/local/include", "/usr/local/lib/libmeos.dylib") diff --git a/pymeos_cffi/pymeos_cffi/builder/build_pymeos.py b/pymeos_cffi/pymeos_cffi/builder/build_pymeos.py index 249f6117..9757b22a 100644 --- a/pymeos_cffi/pymeos_cffi/builder/build_pymeos.py +++ b/pymeos_cffi/pymeos_cffi/builder/build_pymeos.py @@ -1,3 +1,6 @@ +import platform +import sys + from cffi import FFI ffibuilder = FFI() @@ -7,11 +10,24 @@ ffibuilder.cdef(content) + +def get_library_dirs(): + if sys.platform == "linux": + return ["/usr/local/lib"] + elif sys.platform == "darwin": + if platform.processor() == "arm": + return ["/opt/homebrew/lib"] + else: + return ["/usr/local/lib"] + else: + raise NotImplementedError("Unsupported platform") + + ffibuilder.set_source( "_meos_cffi", '#include "meos.h"\n' '#include "meos_catalog.h"\n' '#include "meos_internal.h"', libraries=["meos"], - library_dirs=["/usr/local/lib"], + library_dirs=get_library_dirs(), ) # library name, for the linker if __name__ == "__main__": # not when running with setuptools