annotate wscript @ 198:3a76aa26b578 tip master

wscript: check for 64bit using sys.maxsize (closes #3)
author Paul Brossier <piem@piem.org>
date Mon, 04 Dec 2017 01:42:19 +0100
parents be4c729d6549
children
rev   line source
piem@117 1 #! /usr/bin/env python
piem@117 2
piem@117 3 # script to build vamp-aubio-plugin with waf (https://waf.io)
piem@117 4
piem@126 5 import sys, os, platform
piem@117 6
piem@173 7 APPNAME = 'vamp-aubio-plugins'
piem@173 8
piem@173 9 for l in open('VERSION').readlines(): exec (l.strip())
piem@173 10
piem@173 11 VERSION = '.'.join ([str(x) for x in [
piem@173 12 VAMP_AUBIO_MAJOR_VERSION,
piem@173 13 VAMP_AUBIO_MINOR_VERSION,
piem@173 14 VAMP_AUBIO_PATCH_VERSION
piem@173 15 ]]) + VAMP_AUBIO_VERSION_STATUS
piem@173 16
piem@117 17 local_aubio_include = 'contrib/aubio-dist/include'
piem@197 18 local_aubio_lib = 'contrib/aubio-dist/lib'
piem@117 19 local_vamp_include = 'contrib/vamp-plugin-sdk-2.6'
piem@117 20 local_vamp_lib_i686 = 'contrib/vamp-plugin-sdk-2.6-binaries-i686-linux'
piem@117 21 local_vamp_lib_amd64 = 'contrib/vamp-plugin-sdk-2.6-binaries-amd64-linux'
piem@162 22 # using debian/stable (jessie), the stdc++ abi seems broken. recompile it.
piem@162 23 local_vamp_lib_mingw = 'contrib/vamp-plugin-sdk-2.6' #-binaries-win32-mingw'
piem@127 24 local_vamp_lib_osx = 'contrib/vamp-plugin-sdk-2.6-binaries-osx'
piem@127 25 local_vamp_lib_win32 = 'contrib'
piem@127 26
piem@117 27
piem@117 28 def options(opt):
piem@117 29 opt.load('compiler_cxx')
piem@117 30
piem@117 31 def configure(conf):
piem@153 32 if sys.platform.startswith('win'):
piem@153 33 # build same binary version as current vamp-plugin-sdk
piem@153 34 # currently Visual Studio 2013 (x86),
piem@153 35 conf.env.MSVC_VERSIONS = ['msvc 12.0']
piem@153 36 conf.env.MSVC_TARGETS = ['x86']
piem@153 37 conf.load('msvc')
piem@153 38 else:
piem@153 39 conf.load('compiler_cxx')
piem@127 40 local_aubio_stlib = 'libaubio.a'
piem@127 41 local_vamp_stlib = 'libvamp-sdk.a'
piem@117 42
piem@127 43 if sys.platform.startswith('linux'):
piem@162 44 if 'mingw' in conf.env.CXX[0]:
piem@162 45 local_vamp_lib = local_vamp_lib_mingw
piem@198 46 elif sys.maxsize > 2**32:
piem@127 47 local_vamp_lib = local_vamp_lib_amd64
piem@198 48 else:
piem@127 49 local_vamp_lib = local_vamp_lib_i686
piem@127 50 elif sys.platform == 'darwin':
piem@127 51 local_vamp_lib = local_vamp_lib_osx
piem@127 52 elif sys.platform == 'win32':
piem@127 53 local_vamp_lib = local_vamp_lib_win32
piem@127 54 local_vamp_stlib = 'VampPluginSDK.lib'
piem@127 55 local_aubio_stlib = 'aubio.lib'
piem@127 56
piem@127 57 local_aubio_stlib = os.path.join(local_aubio_lib, local_aubio_stlib)
piem@127 58 local_vamp_stlib = os.path.join(local_vamp_lib, local_vamp_stlib)
piem@127 59
piem@127 60 if os.path.isdir(local_aubio_include) and os.path.isfile(local_aubio_stlib):
piem@117 61 conf.env.append_value('CXXFLAGS', '-I../'+local_aubio_include)
piem@127 62 conf.env.append_value('SHLIB_MARKER', os.path.join('..',local_aubio_stlib))
piem@117 63 else:
piem@117 64 conf.check_cfg (package='aubio', uselib_store='AUBIO',
piem@117 65 args=['--cflags', '--libs'], mandatory=True)
piem@117 66
piem@117 67 if os.path.isdir(local_vamp_include):
piem@117 68 conf.env.append_value('CXXFLAGS', '-I../'+local_vamp_include)
piem@126 69 local_vamp_lib = os.path.join(local_vamp_lib, 'libvamp-sdk.a')
piem@129 70 if os.path.isfile(local_vamp_stlib):
piem@129 71 conf.env.append_value('SHLIB_MARKER', os.path.join('..',local_vamp_stlib))
piem@126 72 #conf.check(lib = 'vamp-sdk', mandatory = False)
piem@117 73 else:
piem@117 74 conf.check_cfg (package='vamp-sdk', uselib_store = 'VAMP',
piem@117 75 args=['--cflags','--libs'], mandatory=True)
piem@117 76
piem@165 77 if conf.env.CXX_NAME != 'msvc':
piem@151 78 conf.env.CXXFLAGS += ['-g', '-Wall', '-Wextra']
piem@151 79
piem@117 80 if sys.platform.startswith('linux'):
piem@151 81 conf.env['CXXFLAGS'] += ['-O3', '-msse', '-msse2', '-mfpmath=sse',
piem@151 82 '-ftree-vectorize']
piem@162 83 if 'mingw' in conf.env.CXX[0]:
piem@162 84 conf.env.append_value('LINKFLAGS', '-Wl,--enable-auto-import')
piem@162 85 conf.env.append_value('LINKFLAGS', '-Wl,--retain-symbols-file=../vamp-plugin.list')
piem@162 86 else:
piem@162 87 conf.env.append_value('LINKFLAGS', '-Wl,-z,defs')
piem@162 88 # add plugin.map
piem@162 89 conf.env.append_value('LINKFLAGS', '-Wl,--version-script=../vamp-plugin.map')
piem@130 90 elif sys.platform == 'win32':
piem@166 91 #conf.env.append_value('CXXFLAGS', '/MD')
piem@130 92 conf.env.append_value('CXXFLAGS', '/W4')
piem@130 93 conf.env.append_value('CXXFLAGS', '/EHsc')
piem@130 94 #conf.env.append_value('CXXFLAGS', '/D_CRT_SECURE_NO_WARNINGS')
piem@130 95 #, '/DWIN32', '/D_WINDOWS', '/D_USRDLL', '/D_WINDLL'
piem@130 96 conf.env.append_value('LINKFLAGS', '/EXPORT:vampGetPluginDescriptor')
piem@130 97 conf.env.append_value('LINKFLAGS', '/NODEFAULTLIB:LIBCMT')
piem@165 98 conf.env.append_value('LINKFLAGS', '/NODEFAULTLIB:LIBPCMT')
piem@135 99 elif sys.platform == 'darwin':
piem@135 100 conf.env.FRAMEWORK += ['Accelerate']
piem@117 101
piem@117 102 def build(bld):
piem@117 103 # Host Library
piem@117 104 plugin_sources = bld.path.ant_glob('plugins/*.cpp')
piem@117 105 plugin_sources += bld.path.ant_glob('*.cpp')
piem@117 106
piem@117 107 # rename libvamp-aubio to vamp-plugin binary name
piem@162 108 if 'mingw' in bld.env.CXX[0]:
piem@162 109 bld.env['cxxshlib_PATTERN'] = '%s.dll'
piem@162 110 install_path = None
piem@162 111 elif sys.platform.startswith('linux'):
piem@125 112 bld.env['cxxshlib_PATTERN'] = '%s.so'
piem@150 113 install_path = '${LIBDIR}/vamp'
piem@125 114 elif sys.platform.startswith('darwin'):
piem@125 115 bld.env['cxxshlib_PATTERN'] = '%s.dylib'
piem@150 116 install_path = '/Library/Audio/Plug-Ins/Vamp'
piem@150 117 elif sys.platform.startswith('win32'):
piem@153 118 if platform.machine() == 'AMD64':
piem@153 119 install_path = 'C:\\Program Files (x86)\\Vamp Plugins'
piem@153 120 else:
piem@153 121 install_path = 'C:\\Program Files\\Vamp Plugins'
piem@117 122
piem@117 123 bld.program(source = plugin_sources,
piem@117 124 includes = '.',
piem@117 125 target = 'vamp-aubio',
piem@117 126 name = 'vamp-aubio',
piem@158 127 use = ['VAMP', 'AUBIO', 'CBLAS'],
piem@150 128 features = 'cxx cxxshlib',
piem@150 129 install_path = install_path
piem@117 130 )
piem@117 131
piem@152 132 if install_path:
piem@152 133 bld.install_files( install_path, ['vamp-aubio.cat', 'vamp-aubio.n3'])
piem@150 134
piem@117 135 #for k in bld.env.keys():
piem@117 136 # print ("%s : %s", k, bld.env[k] )
piem@170 137
piem@170 138 def dist(ctx):
piem@170 139 ctx.excl = '**/.waf-1* **/*~ **/*.pyc **/*.swp **/.lock-w* **/.git*'
piem@170 140 ctx.excl += ' **/**.tar.bz2'
piem@183 141 ctx.excl += ' **/**.zip'
piem@177 142 ctx.excl += ' **/**.o **/**.so'
piem@170 143 ctx.excl += ' contrib/**'
piem@170 144 ctx.excl += ' build/**'
piem@174 145 ctx.excl += ' dist/**'
piem@170 146 ctx.excl += ' **/.travis.yml'
piem@170 147 ctx.excl += ' **/.appveyor.yml'