changeset 110:0fdaf082ad1a

Got compiling on M1 mac and Python 3
author Adam Stark <adamstark.uk@gmail.com>
date Sun, 31 Oct 2021 23:34:44 +0000
parents edb071c0cd1f
children 8fb1610c9192
files modules-and-plug-ins/python-module/btrack_python_module.cpp modules-and-plug-ins/python-module/setup.py
diffstat 2 files changed, 32 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/modules-and-plug-ins/python-module/btrack_python_module.cpp	Sat Dec 30 23:48:41 2017 +0000
+++ b/modules-and-plug-ins/python-module/btrack_python_module.cpp	Sun Oct 31 23:34:44 2021 +0000
@@ -292,21 +292,30 @@
 };
 
 //=======================================================================
-PyMODINIT_FUNC initbtrack(void)
+static struct PyModuleDef btrack_definition = {
+    PyModuleDef_HEAD_INIT,
+    "btrack",
+    "Python bindings for the BTrack beat tracker",
+    -1,
+    btrack_methods
+};
+
+//=======================================================================
+PyMODINIT_FUNC PyInit_btrack(void)
 {
-    (void)Py_InitModule("btrack", btrack_methods);
     import_array();
+    return PyModule_Create(&btrack_definition);
 }
 
 //=======================================================================
 int main(int argc, char *argv[])
 {
-    /* Pass argv[0] to the Python interpreter */
-    Py_SetProgramName(argv[0]);
+    wchar_t* program = Py_DecodeLocale (argv[0], NULL);
+    Py_SetProgramName (program);
     
     /* Initialize the Python interpreter.  Required. */
     Py_Initialize();
     
     /* Add a static module */
-    initbtrack();
+    PyInit_btrack();
 }
\ No newline at end of file
--- a/modules-and-plug-ins/python-module/setup.py	Sat Dec 30 23:48:41 2017 +0000
+++ b/modules-and-plug-ins/python-module/setup.py	Sun Oct 31 23:34:44 2021 +0000
@@ -1,21 +1,33 @@
 # setup.py
 # build command : python setup.py build build_ext --inplace
 from numpy.distutils.core import setup, Extension
-import os, numpy
+import os, numpy, platform
+
+if platform.machine() == 'arm64':
+      include_path = '/opt/homebrew/include'
+      library_path = '/opt/homebrew/lib'
+else:
+      include_path = '/usr/local/include'
+      library_path = '/usr/local/lib'
 
 name = 'btrack'
-sources = ['btrack_python_module.cpp','../../src/OnsetDetectionFunction.cpp','../../src/BTrack.cpp']
+sources = [
+      'btrack_python_module.cpp',
+      '../../src/OnsetDetectionFunction.cpp',
+      '../../src/BTrack.cpp'
+      ]
 
 sources.append ('../../libs/kiss_fft130/kiss_fft.c')
 
 include_dirs = [
-                numpy.get_include(),'/usr/local/include'
-                ]
+      numpy.get_include(),
+      include_path
+]
 
 include_dirs.append ('../../libs/kiss_fft130')
 
-setup( name = 'BTrack',
+setup(name = 'BTrack',
       include_dirs = include_dirs,
-      ext_modules = [Extension(name, sources,libraries = ['fftw3','samplerate'],library_dirs = ['/usr/local/lib'],define_macros=[
+      ext_modules = [Extension(name, sources,libraries = ['fftw3','samplerate'],library_dirs = [library_path],define_macros=[
                          ('USE_FFTW', None)])]
       )
\ No newline at end of file