From c0d91c65c6864dcf63f0d3a1061a2fe85bb310d9 Mon Sep 17 00:00:00 2001 From: Diviloper Date: Sun, 24 Mar 2024 19:08:24 +0100 Subject: [PATCH 1/2] Add paths for building in macOS --- pymeos_cffi/pymeos_cffi/builder/build_header.py | 5 ++++- pymeos_cffi/pymeos_cffi/builder/build_pymeos.py | 14 +++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/pymeos_cffi/pymeos_cffi/builder/build_header.py b/pymeos_cffi/pymeos_cffi/builder/build_header.py index 776c155b..5c67aacc 100644 --- a/pymeos_cffi/pymeos_cffi/builder/build_header.py +++ b/pymeos_cffi/pymeos_cffi/builder/build_header.py @@ -101,4 +101,7 @@ 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": + main("/opt/homebrew/include", "/opt/homebrew/lib/libmeos.so") diff --git a/pymeos_cffi/pymeos_cffi/builder/build_pymeos.py b/pymeos_cffi/pymeos_cffi/builder/build_pymeos.py index 249f6117..8d31fa57 100644 --- a/pymeos_cffi/pymeos_cffi/builder/build_pymeos.py +++ b/pymeos_cffi/pymeos_cffi/builder/build_pymeos.py @@ -1,3 +1,5 @@ +import sys + from cffi import FFI ffibuilder = FFI() @@ -7,11 +9,21 @@ ffibuilder.cdef(content) + +def get_library_dirs(): + if sys.platform == "linux": + return ["/usr/local/lib"] + elif sys.platform == "darwin": + return ["/opt/homebrew/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 From f8e005d59e6801506fb07bc0e04605272a4e4fde Mon Sep 17 00:00:00 2001 From: Diviloper Date: Thu, 28 Mar 2024 16:20:56 +0100 Subject: [PATCH 2/2] Update paths to take into account arm vs intel Mac --- pymeos_cffi/pymeos_cffi/builder/build_header.py | 8 ++++++-- pymeos_cffi/pymeos_cffi/builder/build_pymeos.py | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pymeos_cffi/pymeos_cffi/builder/build_header.py b/pymeos_cffi/pymeos_cffi/builder/build_header.py index 5c67aacc..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() @@ -104,4 +105,7 @@ def main(include_dir, so_path=None, destination_path="pymeos_cffi/builder/meos.h if sys.platform == "linux": main("/usr/local/include", "/usr/local/lib/libmeos.so") elif sys.platform == "darwin": - main("/opt/homebrew/include", "/opt/homebrew/lib/libmeos.so") + 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 8d31fa57..9757b22a 100644 --- a/pymeos_cffi/pymeos_cffi/builder/build_pymeos.py +++ b/pymeos_cffi/pymeos_cffi/builder/build_pymeos.py @@ -1,3 +1,4 @@ +import platform import sys from cffi import FFI @@ -14,7 +15,10 @@ def get_library_dirs(): if sys.platform == "linux": return ["/usr/local/lib"] elif sys.platform == "darwin": - return ["/opt/homebrew/lib"] + if platform.processor() == "arm": + return ["/opt/homebrew/lib"] + else: + return ["/usr/local/lib"] else: raise NotImplementedError("Unsupported platform")