piem@117: #! /usr/bin/env python piem@117: piem@117: # script to build vamp-aubio-plugin with waf (https://waf.io) piem@117: piem@126: import sys, os, platform piem@117: piem@117: local_aubio_include = 'contrib/aubio-dist/include' piem@127: local_aubio_lib = 'contrib/aubio/build/src' piem@117: local_vamp_include = 'contrib/vamp-plugin-sdk-2.6' piem@117: local_vamp_lib_i686 = 'contrib/vamp-plugin-sdk-2.6-binaries-i686-linux' piem@117: local_vamp_lib_amd64 = 'contrib/vamp-plugin-sdk-2.6-binaries-amd64-linux' piem@127: local_vamp_lib_osx = 'contrib/vamp-plugin-sdk-2.6-binaries-osx' piem@127: local_vamp_lib_win32 = 'contrib' piem@127: piem@117: piem@117: def options(opt): piem@117: opt.load('compiler_cxx') piem@117: piem@117: def configure(conf): piem@117: conf.load('compiler_cxx') piem@127: local_aubio_stlib = 'libaubio.a' piem@127: local_vamp_stlib = 'libvamp-sdk.a' piem@117: piem@127: if sys.platform.startswith('linux'): piem@127: if platform.machine() == 'x86_64': piem@127: local_vamp_lib = local_vamp_lib_amd64 piem@127: elif platform.machine() == 'x86_64': piem@127: local_vamp_lib = local_vamp_lib_i686 piem@127: elif sys.platform == 'darwin': piem@127: local_vamp_lib = local_vamp_lib_osx piem@127: elif sys.platform == 'win32': piem@127: local_vamp_lib = local_vamp_lib_win32 piem@127: local_vamp_stlib = 'VampPluginSDK.lib' piem@127: local_aubio_stlib = 'aubio.lib' piem@127: piem@127: local_aubio_stlib = os.path.join(local_aubio_lib, local_aubio_stlib) piem@127: local_vamp_stlib = os.path.join(local_vamp_lib, local_vamp_stlib) piem@127: piem@127: if os.path.isdir(local_aubio_include) and os.path.isfile(local_aubio_stlib): piem@117: conf.env.append_value('CXXFLAGS', '-I../'+local_aubio_include) piem@127: conf.env.append_value('SHLIB_MARKER', os.path.join('..',local_aubio_stlib)) piem@117: else: piem@117: conf.check_cfg (package='aubio', uselib_store='AUBIO', piem@117: args=['--cflags', '--libs'], mandatory=True) piem@117: piem@117: if os.path.isdir(local_vamp_include): piem@117: conf.env.append_value('CXXFLAGS', '-I../'+local_vamp_include) piem@126: local_vamp_lib = os.path.join(local_vamp_lib, 'libvamp-sdk.a') piem@129: if os.path.isfile(local_vamp_stlib): piem@129: conf.env.append_value('SHLIB_MARKER', os.path.join('..',local_vamp_stlib)) piem@126: #conf.check(lib = 'vamp-sdk', mandatory = False) piem@117: else: piem@117: conf.check_cfg (package='vamp-sdk', uselib_store = 'VAMP', piem@117: args=['--cflags','--libs'], mandatory=True) piem@117: piem@117: if sys.platform.startswith('linux'): piem@117: conf.env['CXXFLAGS'] += ['-Wall', '-Wextra', '-O3', '-msse', '-msse2', piem@117: '-mfpmath=sse', '-ftree-vectorize'] piem@117: conf.env.append_value('LINKFLAGS', '-Wl,-z,defs') piem@117: # add plugin.map piem@117: conf.env.append_value('LINKFLAGS', '-Wl,--version-script=../vamp-plugin.map') piem@130: elif sys.platform == 'win32': piem@130: conf.env.append_value('CXXFLAGS', '/W4') piem@130: conf.env.append_value('CXXFLAGS', '/EHsc') piem@130: #conf.env.append_value('CXXFLAGS', '/D_CRT_SECURE_NO_WARNINGS') piem@130: #, '/DWIN32', '/D_WINDOWS', '/D_USRDLL', '/D_WINDLL' piem@130: conf.env.append_value('LINKFLAGS', '/EXPORT:vampGetPluginDescriptor') piem@130: conf.env.append_value('LINKFLAGS', '/NODEFAULTLIB:LIBCMT') piem@135: elif sys.platform == 'darwin': piem@135: conf.env.FRAMEWORK += ['Accelerate'] piem@117: piem@117: def build(bld): piem@117: # Host Library piem@117: plugin_sources = bld.path.ant_glob('plugins/*.cpp') piem@117: plugin_sources += bld.path.ant_glob('*.cpp') piem@117: piem@117: # rename libvamp-aubio to vamp-plugin binary name piem@125: if sys.platform.startswith('linux'): piem@125: bld.env['cxxshlib_PATTERN'] = '%s.so' piem@150: install_path = '${LIBDIR}/vamp' piem@125: elif sys.platform.startswith('darwin'): piem@125: bld.env['cxxshlib_PATTERN'] = '%s.dylib' piem@150: install_path = '/Library/Audio/Plug-Ins/Vamp' piem@150: elif sys.platform.startswith('win32'): piem@150: install_path = None piem@117: piem@117: bld.program(source = plugin_sources, piem@117: includes = '.', piem@117: target = 'vamp-aubio', piem@117: name = 'vamp-aubio', piem@117: use = ['VAMP', 'AUBIO'], piem@150: features = 'cxx cxxshlib', piem@150: install_path = install_path piem@117: ) piem@117: piem@150: bld.install_files( install_path, ['vamp-aubio.cat', 'vamp-aubio.n3']) piem@150: piem@117: #for k in bld.env.keys(): piem@117: # print ("%s : %s", k, bld.env[k] )