MTG / essentia

C++ library for audio and music analysis, description and synthesis, including Python bindings
http://essentia.upf.edu
GNU Affero General Public License v3.0
2.86k stars 534 forks source link

using ios_simulator results in an empty lib ! #1284

Open simdax opened 2 years ago

simdax commented 2 years ago

Hello all

I'm on macOs (Ventura 13.0)

I have some difficulties to build essentia for ios-simulator actually I've made all the necessary glue, calling a simple essentia::init() to test the basis.

But XCode is telling me it can find any symbols And indeed, it appears that the resulting lib may be defectuous ?

when doing a ranlib, I've this bad message:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: i386 file: build_ios/src/libessentia.a(essentiautil.cpp.1.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: build_ios/src/libessentia.a(essentiautil.cpp.1.o) has no symbols

I join the lib and the log if it can help

Thank you :)

simdax commented 2 years ago

https://drive.google.com/file/d/1n3TFuigFhOxv2Ye3UF5IY6YcsqplXruk/view?usp=share_link

simdax commented 2 years ago

and the exact cmd:


CC=clang CXX=clang++ python3 waf configure \
-o build_ios --arch=i386        \
--build-static --with-tensorflow --lightweight= --fft=ACCELERATE --cross-compile-ios-sim \
--include-algos="FFT,TriangularBands,Spectrum,Windowing,MelBands,Magnitude,NoiseAdder,UnaryOperator,TensorflowInputMusiCNN,TensorflowPredictEffnetDiscogs,TensorflowPredict,PoolToTensor"

python3 waf
ranlib build_ios/src/libessentia.a

I need the tensorflow binding, as the algorithm which interests me is in it. (but in fact it changed nothing to remove it)

I've tried also with and without arch=i386

which results in

Setting top to                           : /Users/SX/Documents/soundx-ai/vendor/essentia 
Setting out to                           : /Users/SX/Documents/soundx-ai/vendor/essentia/build_ios 
→ configuring the project in /Users/SX/Documents/soundx-ai/vendor/essentia
→ Building in release mode
→ Cross-compiling for iOS Simulator (i386)
Checking for 'clang++' (C++ compiler)    : clang++ 
Checking for 'clang' (C compiler)        : clang 

=======================Lightweight Mode : Ignoring ALL libraries except [''] =======================

Checking for program 'pkg-config'        : /opt/homebrew/bin/pkg-config 
Checking for 'eigen3'                    : yes 
Checking for 'tensorflow'                : yes 

================================ CONFIGURATION SUMMARY ================================
- using Accelerate Framework for FFT

- FFmpeg (or LibAv on debian/ubuntu) seems to be missing.
  The following algorithms will be ignored: ['AudioLoader', 'MonoLoader', 'EqloudLoader', 'EasyLoader', 'MonoWriter', 'AudioWriter']

- libsamplerate seems to be missing.
  The following algorithms will be ignored: ['Resample', 'MonoLoader', 'EqloudLoader', 'EasyLoader']

  Examples requiring FFmpeg / libav and libsamplerate will be ignored

- TagLib seems to be missing.
  The following algorithms will be ignored: ['MetadataReader', 'MusicExtractor', 'FreesoundExtractor']

- libyaml seems to be missing.
  The following algorithms will be ignored: ['YamlInput', 'YamlOutput']

- Essentia is configured without Gaia2.
  The following algorithms will be ignored: ['GaiaTransform', 'MusicExtractorSVM']
  Examples requiring Gaia2 will be ignored

- Essentia is configured without Chromaprint.
  The following algorithms will be ignored: ['Chromaprinter']
- Tensorflow detected!
  The following algorithms will be included: ['TensorflowPredict', 'TensorflowPredictMusiCNN', 'TensorflowPredictVGGish', 'TensorflowPredictTempoCNN', 'TensorflowPredictCREPE', 'PitchCREPE', 'TempoCNN', 'TensorflowPredictEffnetDiscogs', 'TensorflowPredict2D']

Building the following algorithms: FFTA, IFFTA, TriangularBands, Spectrum, Windowing, MelBands, Magnitude, NoiseAdder, UnaryOperator, TensorflowInputMusiCNN, TensorflowPredictEffnetDiscogs, TensorflowPredict, PoolToTensor
Created algorithms registration file

---------------------------------------------------------------------------------------
- Building static library
=======================================================================================
'configure' finished successfully (0.165s)
Waf: Entering directory `/Users/SX/Documents/soundx-ai/vendor/essentia/build_ios'
→ building from /Users/SX/Documents/soundx-ai/vendor/essentia
→ building from /Users/SX/Documents/soundx-ai/vendor/essentia/src
Building the following algorithms: FFTA, IFFTA, TriangularBands, Spectrum, Windowing, MelBands, Magnitude, NoiseAdder, UnaryOperator, TensorflowInputMusiCNN, TensorflowPredictEffnetDiscogs, TensorflowPredict, PoolToTensor
Created algorithms registration file
Waf: Leaving directory `/Users/SX/Documents/soundx-ai/vendor/essentia/build_ios'
'build' finished successfully (0.119s)
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: i386 file: build_ios/src/libessentia.a(essentiautil.cpp.1.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: build_ios/src/libessentia.a(essentiautil.cpp.1.o) has no symbols
➜  essentia git:(wip) ✗ otool -MVv build_ios/src/libessentia.a   
Archive : build_ios/src/libessentia.a (architecture i386)
build_ios/src/libessentia.a(algorithm.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(configurable.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(connector.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(debugging.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(essentia.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(essentiautil.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(parameter.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(pool.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(range.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(network.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(networkparser.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(accumulatoralgorithm.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(devnull.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(poolstorage.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(ringbufferinput.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(ringbufferoutput.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(ringbuffervectoroutput.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(sinkbase.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(sourcebase.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(streamingalgorithm.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(streamingalgorithmcomposite.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(streamingalgorithmwrapper.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(stringutil.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(asciidag.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(asciidagparser.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(FreesoundLowlevelDescriptors.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(FreesoundRhythmDescriptors.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(FreesoundSfxDescriptors.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(FreesoundTonalDescriptors.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(MusicLowlevelDescriptors.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(MusicRhythmDescriptors.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(MusicTonalDescriptors.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(synth_utils.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(essentia_algorithms_reg.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(ffta.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(iffta.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(triangularbands.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(spectrum.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(windowing.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(melbands.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(magnitude.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(noiseadder.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(unaryoperator.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(tensorflowinputmusicnn.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(tensorflowpredicteffnetdiscogs.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(tensorflowpredict.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(pooltotensor.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(splineutil.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(gamma.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(hyperg.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(iv.cpp.1.o) (architecture i386):
Module table (0 entries)
build_ios/src/libessentia.a(polevl.cpp.1.o) (architecture i386):
Module table (0 entries)
Archive : build_ios/src/libessentia.a (architecture x86_64)
build_ios/src/libessentia.a(algorithm.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(configurable.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(connector.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(debugging.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(essentia.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(essentiautil.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(parameter.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(pool.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(range.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(network.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(networkparser.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(accumulatoralgorithm.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(devnull.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(poolstorage.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(ringbufferinput.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(ringbufferoutput.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(ringbuffervectoroutput.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(sinkbase.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(sourcebase.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(streamingalgorithm.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(streamingalgorithmcomposite.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(streamingalgorithmwrapper.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(stringutil.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(asciidag.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(asciidagparser.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(FreesoundLowlevelDescriptors.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(FreesoundRhythmDescriptors.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(FreesoundSfxDescriptors.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(FreesoundTonalDescriptors.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(MusicLowlevelDescriptors.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(MusicRhythmDescriptors.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(MusicTonalDescriptors.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(synth_utils.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(essentia_algorithms_reg.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(ffta.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(iffta.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(triangularbands.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(spectrum.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(windowing.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(melbands.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(magnitude.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(noiseadder.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(unaryoperator.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(tensorflowinputmusicnn.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(tensorflowpredicteffnetdiscogs.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(tensorflowpredict.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(pooltotensor.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(splineutil.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(gamma.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(hyperg.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(iv.cpp.1.o) (architecture x86_64):
Module table (0 entries)
build_ios/src/libessentia.a(polevl.cpp.1.o) (architecture x86_64):
Module table (0 entries)
Archive : build_ios/src/libessentia.a (architecture arm64)
build_ios/src/libessentia.a(nnls.c.1.o) (architecture arm64):
Module table (0 entries)
simdax commented 2 years ago

I've removed TensorFLow , but it does not seem to be the main problem

building without tf create the same problem

python3 waf configure \
-o build_ios         \
--cross-compile-ios-sim \
--lightweight= --fft=ACCELERATE \
--build-static

Can we find a basic xcode exemple with a working ios_simulator essentia linked ???

Capture d’écran 2022-11-01 à 18 03 59 Capture d’écran 2022-11-01 à 18 05 40