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@153: if sys.platform.startswith('win'): piem@153: # build same binary version as current vamp-plugin-sdk piem@153: # currently Visual Studio 2013 (x86), piem@153: conf.env.MSVC_VERSIONS = ['msvc 12.0'] piem@153: conf.env.MSVC_TARGETS = ['x86'] piem@153: conf.load('msvc') piem@153: else: piem@153: 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@158: conf.check(lib='cblas', uselib_store='CBLAS', mandatory=False) 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@151: if conf.env.CC_NAME != 'msvc': piem@151: conf.env.CXXFLAGS += ['-g', '-Wall', '-Wextra'] piem@151: piem@117: if sys.platform.startswith('linux'): piem@151: conf.env['CXXFLAGS'] += ['-O3', '-msse', '-msse2', '-mfpmath=sse', piem@151: '-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@153: if platform.machine() == 'AMD64': piem@153: install_path = 'C:\\Program Files (x86)\\Vamp Plugins' piem@153: else: piem@153: install_path = 'C:\\Program Files\\Vamp Plugins' piem@117: piem@117: bld.program(source = plugin_sources, piem@117: includes = '.', piem@117: target = 'vamp-aubio', piem@117: name = 'vamp-aubio', piem@158: use = ['VAMP', 'AUBIO', 'CBLAS'], piem@150: features = 'cxx cxxshlib', piem@150: install_path = install_path piem@117: ) piem@117: piem@152: if install_path: piem@152: 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] )