Whitelist bit32 Lua library for session rt-scripts
[ardour.git] / libs / qm-dsp / wscript
index 232f01023507211b09ee7af47295d08f3fd1f393..92dc9502b17ffff4db002fcbf7bd53dfcd7d27a4 100644 (file)
@@ -1,59 +1,86 @@
 #!/usr/bin/env python
-import autowaf
+from waflib.extras import autowaf as autowaf
 import os
 
 # Version of this package (even if built as a child)
-QM_DSP_VERSION = '0.0.0'
+QM_DSP_VERSION = '1.7.1'
 
 # Library version (UNIX style major, minor, micro)
 # major increment <=> incompatible changes
 # minor increment <=> compatible changes (additions)
 # micro increment <=> no interface changes
-QM_DSP_LIB_VERSION = '0.0.0'
+QM_DSP_LIB_VERSION = '1.7.1'
 
 # Variables for 'waf dist'
 APPNAME = 'qm-dsp'
 VERSION = QM_DSP_VERSION
 
 # Mandatory variables
-srcdir = '.'
-blddir = 'build'
+top = '.'
+out = 'build'
 
-def set_options(opt):
-        autowaf.set_options(opt)
+def options(opt):
+    autowaf.set_options(opt)
 
 def configure(conf):
+    if conf.is_defined('USE_EXTERNAL_LIBS'):
+        conf.check_cxx(header_name="base/Pitch.h", mandatory=True)
+        conf.check_cxx(lib="qm-dsp", uselib_store="QMDSP", mandatory=True)
+    else:
+        conf.load('compiler_cxx')
         autowaf.configure(conf)
-        conf.check_tool('compiler_cxx')
 
 def build(bld):
-        # Host Library
-        obj = bld.new_task_gen('cxx', 'shlib')
-        obj.source = '''
-               dsp/onsets/DetectionFunction.cpp
-               dsp/onsets/PeakPicking.cpp
-               dsp/phasevocoder/PhaseVocoder.cpp
-               dsp/rateconversion/Decimator.cpp
-               dsp/rhythm/BeatSpectrum.cpp
-               dsp/signalconditioning/DFProcess.cpp
-               dsp/signalconditioning/Filter.cpp
-               dsp/signalconditioning/FiltFilt.cpp
-               dsp/signalconditioning/Framer.cpp
-               dsp/transforms/FFT.cpp
-               dsp/wavelet/Wavelet.cpp
-               maths/Correlation.cpp
-               maths/CosineDistance.cpp
-               maths/KLDivergence.cpp
-               maths/MathUtilities.cpp
-               base/Pitch.cpp
-        '''
-        obj.export_incdirs = ['.']
-        obj.includes     = ['.']
-        obj.name         = 'libqmdsp'
-        obj.target       = 'qmdsp'
-        obj.vnum         = QM_DSP_VERSION
-        obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
+    if bld.is_defined('USE_EXTERNAL_LIBS'):
+        return
 
-def shutdown():
-        autowaf.shutdown()
+    # Host Library
+    obj = bld(features = 'c cxx cxxstlib')
+    obj.source = '''
+            base/Pitch.cpp
+            base/KaiserWindow.cpp
+            base/SincWindow.cpp
+            dsp/chromagram/Chromagram.cpp
+            dsp/chromagram/ConstantQ.cpp
+            dsp/keydetection/GetKeyMode.cpp
+            dsp/mfcc/MFCC.cpp
+            dsp/onsets/DetectionFunction.cpp
+            dsp/onsets/PeakPicking.cpp
+            dsp/phasevocoder/PhaseVocoder.cpp
+            dsp/rateconversion/Decimator.cpp
+            dsp/rateconversion/DecimatorB.cpp
+            dsp/rhythm/BeatSpectrum.cpp
+            dsp/signalconditioning/DFProcess.cpp
+            dsp/signalconditioning/Filter.cpp
+            dsp/signalconditioning/FiltFilt.cpp
+            dsp/signalconditioning/Framer.cpp
+            dsp/tempotracking/DownBeat.cpp
+            dsp/tempotracking/TempoTrack.cpp
+            dsp/tempotracking/TempoTrackV2.cpp
+            dsp/tonal/ChangeDetectionFunction.cpp
+            dsp/tonal/TCSgram.cpp
+            dsp/tonal/TonalEstimator.cpp
+            dsp/transforms/FFT.cpp
+            dsp/wavelet/Wavelet.cpp
+            maths/Correlation.cpp
+            maths/CosineDistance.cpp
+            maths/KLDivergence.cpp
+            maths/MathUtilities.cpp
+            maths/pca/pca.c
+            ext/kissfft/kiss_fft.c
+            ext/kissfft/tools/kiss_fftr.c
+    '''
+    autowaf.ensure_visible_symbols (obj, False)
+    obj.export_includes = ['.']
+    obj.includes     = ['.', 'ext/kissfft', 'ext/kissfft/tools/']
+    obj.defines      = ['kiss_fft_scalar=double']
+    obj.name         = 'libqm-dsp'
+    obj.target       = 'qm-dsp'
+    obj.vnum         = QM_DSP_VERSION
+    obj.install_path = bld.env['LIBDIR']
+    if bld.env['build_target'] != 'mingw':
+        obj.cxxflags += [ '-fPIC' ]
+        obj.cflags   += [ '-fPIC' ]
 
+def shutdown():
+    autowaf.shutdown()