Skip to content

Need to add instruction to run: autoreconf -i before running ./autogen.sh #19

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wnm3 opened this issue Apr 25, 2025 · 3 comments
Open

Comments

@wnm3
Copy link

wnm3 commented Apr 25, 2025

Please consider updating the instructions on https://github.com/xiongyihui/python-webrtc-audio-processing for Build option 2 to include running autoreconf -i before running ./autogen.sh

To avoid problems like below when running ./autogen.sh:
./autogen.sh: line 2: libtoolize: command not found
...
configure: error: cannot find required auxiliary files: ltmain.sh

you need to run autoreconf -i
this should copy the ltmain.sh into the current directory.

@wnm3
Copy link
Author

wnm3 commented Apr 25, 2025

I need instructions for building on an M1 (Arm) MacOS because it fails when running make in the src directory:

(prx) src>make
g++ -fPIC -std=c++11 -I. -I../webrtc-audio-processing  -I/opt/homebrew/opt/python@3.11/Frameworks/Python.framework/Versions/3.11/include/python3.11 -I/opt/homebrew/opt/python@3.11/Frameworks/Python.framework/Versions/3.11/include/python3.11 -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk -DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD -DWEBRTC_LINUX -DWEBRTC_POSIX -DWEBRTC_NS_FLOAT -shared -L/opt/homebrew/opt/python@3.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/config-3.11-darwin -ldl -framework CoreFoundation -lpthread -o _webrtc_audio_processing.so webrtc_audio_processing_wrap.o audio_processing_module.o ../webrtc-audio-processing/webrtc/modules/audio_processing/.libs/libwebrtc_audio_processing.a
Undefined symbols for architecture arm64:
  "_PyArg_UnpackTuple", referenced from:
      SwigPyObject_own(_object*, _object*) in webrtc_audio_processing_wrap.o
  "_PyBool_FromLong", referenced from:
      _wrap_AudioProcessingModule_has_echo(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_has_voice(_object*, _object*) in webrtc_audio_processing_wrap.o
      SwigPyObject_richcompare(SwigPyObject*, SwigPyObject*, int) in webrtc_audio_processing_wrap.o
      SwigPyObject_own(_object*, _object*) in webrtc_audio_processing_wrap.o
  "_PyBool_Type", referenced from:
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule__SWIG_0(_object*, long, _object**) in webrtc_audio_processing_wrap.o
  "_PyBytes_AsStringAndSize", referenced from:
      SWIG_AsPtr_std_string(_object*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>**) in webrtc_audio_processing_wrap.o
  "_PyBytes_FromStringAndSize", referenced from:
      _wrap_AudioProcessingModule_process_stream(_object*, _object*) in webrtc_audio_processing_wrap.o
  "_PyCapsule_GetPointer", referenced from:
      SWIG_Python_TypeQuery(char const*) in webrtc_audio_processing_wrap.o
      SWIG_Python_DestroyModule(_object*) in webrtc_audio_processing_wrap.o
  "_PyCapsule_Import", referenced from:
      _PyInit__webrtc_audio_processing in webrtc_audio_processing_wrap.o
      SWIG_Python_TypeQuery(char const*) in webrtc_audio_processing_wrap.o
  "_PyCapsule_New", referenced from:
      _PyInit__webrtc_audio_processing in webrtc_audio_processing_wrap.o
      SWIG_Python_TypeQuery(char const*) in webrtc_audio_processing_wrap.o
  "_PyDict_GetItem", referenced from:
      SWIG_Python_TypeQuery(char const*) in webrtc_audio_processing_wrap.o
  "_PyDict_New", referenced from:
      _PyInit__webrtc_audio_processing in webrtc_audio_processing_wrap.o
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
      SWIG_Python_TypeQuery(char const*) in webrtc_audio_processing_wrap.o
      SWIG_Python_DestroyModule(_object*) in webrtc_audio_processing_wrap.o
  "_PyDict_SetItem", referenced from:
      SWIG_Python_TypeQuery(char const*) in webrtc_audio_processing_wrap.o
  "_PyErr_Clear", referenced from:
      _PyInit__webrtc_audio_processing in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_system_delay(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_stream_format(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_stream_format(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_stream_format(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_stream_format(_object*, _object*) in webrtc_audio_processing_wrap.o
      ...
  "_PyErr_Fetch", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in webrtc_audio_processing_wrap.o
      SwigPyObject_dealloc(_object*) in webrtc_audio_processing_wrap.o
  "_PyErr_Format", referenced from:
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in webrtc_audio_processing_wrap.o
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in webrtc_audio_processing_wrap.o
      swig_varlink_getattr(_object*, char*) in webrtc_audio_processing_wrap.o
      swig_varlink_setattr(_object*, char*, _object*) in webrtc_audio_processing_wrap.o
  "_PyErr_GivenExceptionMatches", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in webrtc_audio_processing_wrap.o
  "_PyErr_Occurred", referenced from:
      _PyInit__webrtc_audio_processing in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      ...
  "_PyErr_Restore", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in webrtc_audio_processing_wrap.o
      SWIG_Python_RaiseOrModifyTypeError(char const*) in webrtc_audio_processing_wrap.o
      SwigPyObject_dealloc(_object*) in webrtc_audio_processing_wrap.o
      SwigPyObject_dealloc(_object*) in webrtc_audio_processing_wrap.o
  "_PyErr_SetString", referenced from:
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_process_stream(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_process_stream(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_process_reverse_stream(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_process_reverse_stream(_object*, _object*) in webrtc_audio_processing_wrap.o
      ...
  "_PyErr_WriteUnraisable", referenced from:
      SwigPyObject_dealloc(_object*) in webrtc_audio_processing_wrap.o
  "_PyExc_AttributeError", referenced from:
      swig_varlink_getattr(_object*, char*) in webrtc_audio_processing_wrap.o
      swig_varlink_setattr(_object*, char*, _object*) in webrtc_audio_processing_wrap.o
  "_PyExc_OverflowError", referenced from:
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_system_delay(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_stream_format(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_stream_format(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_stream_format(_object*, _object*) in webrtc_audio_processing_wrap.o
      ...
  "_PyExc_SystemError", referenced from:
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in webrtc_audio_processing_wrap.o
  "_PyExc_TypeError", referenced from:
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_process_stream(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_process_stream(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_process_reverse_stream(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_process_reverse_stream(_object*, _object*) in webrtc_audio_processing_wrap.o
      ...
  "_PyImport_AddModule", referenced from:
      _PyInit__webrtc_audio_processing in webrtc_audio_processing_wrap.o
  "_PyLong_AsLong", referenced from:
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      ...
  "_PyLong_FromLong", referenced from:
      _wrap_AudioProcessingModule_vad_level(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_ns_level(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_aec_level(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_agc_level(_object*, _object*) in webrtc_audio_processing_wrap.o
  "_PyLong_FromVoidPtr", referenced from:
      SwigPyObject_long(SwigPyObject*) in webrtc_audio_processing_wrap.o
  "_PyModule_AddObject", referenced from:
      _PyInit__webrtc_audio_processing in webrtc_audio_processing_wrap.o
  "_PyModule_Create2", referenced from:
      _PyInit__webrtc_audio_processing in webrtc_audio_processing_wrap.o
  "_PyModule_GetDict", referenced from:
      _PyInit__webrtc_audio_processing in webrtc_audio_processing_wrap.o
  "_PyObject_Call", referenced from:
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
  "_PyObject_CallFunctionObjArgs", referenced from:
      SwigPyObject_dealloc(_object*) in webrtc_audio_processing_wrap.o
  "_PyObject_Free", referenced from:
      SwigPyPacked_dealloc(_object*) in webrtc_audio_processing_wrap.o
      SwigPyObject_dealloc(_object*) in webrtc_audio_processing_wrap.o
  "_PyObject_GenericGetAttr", referenced from:
      l___const._ZL21SwigPyPacked_TypeOncev.slots in webrtc_audio_processing_wrap.o
      l___const._ZL21SwigPyObject_TypeOncev.slots in webrtc_audio_processing_wrap.o
  "_PyObject_GetAttr", referenced from:
      SWIG_Python_GetSwigThis(_object*) in webrtc_audio_processing_wrap.o
  "_PyObject_GetAttrString", referenced from:
      AudioProcessingModule_swigregister(_object*, _object*) in webrtc_audio_processing_wrap.o
      AudioProcessingModule_swigregister(_object*, _object*) in webrtc_audio_processing_wrap.o
  "_PyObject_IsInstance", referenced from:
      AudioProcessingModule_swigregister(_object*, _object*) in webrtc_audio_processing_wrap.o
  "_PyObject_IsTrue", referenced from:
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule__SWIG_0(_object*, long, _object**) in webrtc_audio_processing_wrap.o
      _wrap_new_AudioProcessingModule__SWIG_0(_object*, long, _object**) in webrtc_audio_processing_wrap.o
      ...
  "_PyObject_SetAttr", referenced from:
      AudioProcessingModule_swiginit(_object*, _object*) in webrtc_audio_processing_wrap.o
      AudioProcessingModule_swiginit(_object*, _object*) in webrtc_audio_processing_wrap.o
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
  "_PyTuple_New", referenced from:
      AudioProcessingModule_swigregister(_object*, _object*) in webrtc_audio_processing_wrap.o
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
  "_PyType_FromSpec", referenced from:
      SwigPyPacked_TypeOnce() in webrtc_audio_processing_wrap.o
      SwigPyPacked_dealloc(_object*) in webrtc_audio_processing_wrap.o
      SwigPyObject_TypeOnce() in webrtc_audio_processing_wrap.o
      SWIG_Python_DestroyModule(_object*) in webrtc_audio_processing_wrap.o
  "_PyType_Modified", referenced from:
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
  "_PyType_Type", referenced from:
      AudioProcessingModule_swigregister(_object*, _object*) in webrtc_audio_processing_wrap.o
  "_PyUnicode_Concat", referenced from:
      SwigPyObject_repr(SwigPyObject*) in webrtc_audio_processing_wrap.o
      swig_varlink_str(_object*) in webrtc_audio_processing_wrap.o
      swig_varlink_str(_object*) in webrtc_audio_processing_wrap.o
      swig_varlink_str(_object*) in webrtc_audio_processing_wrap.o
  "_PyUnicode_FromFormat", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in webrtc_audio_processing_wrap.o
      SwigPyPacked_repr(SwigPyPacked*) in webrtc_audio_processing_wrap.o
      SwigPyPacked_str(SwigPyPacked*) in webrtc_audio_processing_wrap.o
      SwigPyObject_repr(SwigPyObject*) in webrtc_audio_processing_wrap.o
  "_PyUnicode_FromString", referenced from:
      _PyInit__webrtc_audio_processing in webrtc_audio_processing_wrap.o
      AudioProcessingModule_swiginit(_object*, _object*) in webrtc_audio_processing_wrap.o
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
      SWIG_Python_GetSwigThis(_object*) in webrtc_audio_processing_wrap.o
      SWIG_Python_TypeQuery(char const*) in webrtc_audio_processing_wrap.o
      SwigPyPacked_str(SwigPyPacked*) in webrtc_audio_processing_wrap.o
      ...
  "_PyUnicode_InternFromString", referenced from:
      swig_varlink_repr(_object*) in webrtc_audio_processing_wrap.o
      swig_varlink_str(_object*) in webrtc_audio_processing_wrap.o
      swig_varlink_str(_object*) in webrtc_audio_processing_wrap.o
      swig_varlink_str(_object*) in webrtc_audio_processing_wrap.o
  "__PyObject_New", referenced from:
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
      SwigPyObject_dealloc(_object*) in webrtc_audio_processing_wrap.o
      SWIG_Python_DestroyModule(_object*) in webrtc_audio_processing_wrap.o
  "__Py_Dealloc", referenced from:
      _PyInit__webrtc_audio_processing in webrtc_audio_processing_wrap.o
      AudioProcessingModule_swigregister(_object*, _object*) in webrtc_audio_processing_wrap.o
      AudioProcessingModule_swigregister(_object*, _object*) in webrtc_audio_processing_wrap.o
      AudioProcessingModule_swiginit(_object*, _object*) in webrtc_audio_processing_wrap.o
      SWIG_Python_RaiseOrModifyTypeError(char const*) in webrtc_audio_processing_wrap.o
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in webrtc_audio_processing_wrap.o
      ...
  "__Py_NoneStruct", referenced from:
      _wrap_AudioProcessingModule_process_stream(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_process_reverse_stream(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_process_reverse_stream(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_system_delay(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_stream_format(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_reverse_stream_format(_object*, _object*) in webrtc_audio_processing_wrap.o
      _wrap_AudioProcessingModule_set_vad_level(_object*, _object*) in webrtc_audio_processing_wrap.o
      ...
  "__Py_NotImplementedStruct", referenced from:
      SwigPyObject_richcompare(SwigPyObject*, SwigPyObject*, int) in webrtc_audio_processing_wrap.o
ld: symbol(s) not found for architecture arm64
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [_webrtc_audio_processing.so] Error 1

@wnm3
Copy link
Author

wnm3 commented Apr 25, 2025

I actually can't get past the python setup.py build command:

clang++ -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /Users/wnm3/miniforge3/envs/prx/include -arch arm64 -fPIC -O2 -isystem /Users/wnm3/miniforge3/envs/prx/include -arch arm64 -I/usr/local/opt/openssl/include:/usr/local/opt/sqlite/include -DWEBRTC_LINUX -DWEBRTC_POSIX -DWEBRTC_NS_FLOAT -DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD -DWEBRTC_HAS_NEON -Isrc -Iwebrtc-audio-processing -I/Users/wnm3/miniforge3/envs/prx/include/python3.11 -c src/audio_processing_module.cpp -o build/temp.macosx-11.0-arm64-cpython-311/src/audio_processing_module.o -std=c++11 -mfloat-abi=hard -mfpu=neon
clang++: error: unsupported option '-mfloat-abi=' for target 'arm64-apple-darwin24.5.0'
clang++: error: unsupported option '-mfpu=' for target 'arm64-apple-darwin24.5.0'
error: command '/usr/bin/clang++' failed with exit code 1

@wnm3
Copy link
Author

wnm3 commented Apr 25, 2025

By commenting out the lines in setup.py that add the -mfloat and -mfpu flags it gets further, but dies with this:

Image

webrtc-audio-processing/webrtc/base/platform_thread.cc:18:10: fatal error: 'sys/prctl.h' file not found
   18 | #include <sys/prctl.h>
      |          ^~~~~~~~~~~~~
1 error generated.

I gather MacOS doesn't support prctl.h any longer so it needs an ifdef in the include?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant