#! /usr/bin/python
+
# build puredata external
-srcdir = '.'
-blddir = 'build'
+top = '.'
+out = 'build'
+APPNAME = 'pd-aubio'
+
+# source VERSION
+for l in open('VERSION').readlines(): exec (l.strip())
+VERSION = '.'.join ([str(x) for x in [
+ PD_AUBIO_MAJOR_VERSION,
+ PD_AUBIO_MINOR_VERSION,
+ ]]) + PD_AUBIO_VERSION_STATUS
+
+def options(ctx):
+ ctx.load('compiler_c')
-def set_options(opt):
- opt.tool_options('compiler_cc')
+def configure(ctx):
+ ctx.load('compiler_c')
+
+ if ctx.env['DEST_OS'] == 'linux':
+ ctx.env.cshlib_PATTERN = '%s.pd_linux'
+ elif ctx.env['DEST_OS'] == 'darwin':
+ ctx.env.cshlib_PATTERN = '%s.pd_darwin'
+ # add default include path for both pd and pd-extended
+ # set CFLAGS for custom location
+ ctx.env.CFLAGS += ['-I/Applications/Pd-0.47-1.app/Contents/Resources/src']
+ ctx.env.CFLAGS += ['-I/Applications/Pd-extended.app/Contents/Resources/include']
+ ctx.env.CFLAGS += ['-arch', 'i386', '-arch', 'x86_64']
+ ctx.env.LINKFLAGS += ['-arch', 'i386', '-arch', 'x86_64']
+ ctx.env.LINKFLAGS_cshlib = ['-bundle', '-undefined', 'suppress', '-flat_namespace']
+ elif ctx.env['DEST_OS'] in ['win32', 'win64']:
+ ctx.env.cshlib_PATTERN = '%s.dll'
+ # do not use -fPIC -DPIC on windows
+ ctx.env.CFLAGS_cshlib = []
+ ctx.env.LINKFLAGS_cshlib += ['-export_dynamic', '-lpd']
+ else:
+ ctx.start_msg("Checking for platform")
+ ctx.end_msg("no idea how to build for %s yet, assuming linux"
+ % ctx.env['DEST_OS'], 'YELLOW')
+ ctx.env.cshlib_PATTERN = '%s.pd_linux'
+ ctx.env.LINKFLAGS_cshlib += ['--export_dynamic']
-def configure(conf):
- conf.check_tool('compiler_cc')
- # required dependancies
- conf.check_cfg(package = 'aubio', atleast_version = '0.4.0',
- args = '--cflags --libs')
+ # check for puredata header
+ ctx.check(header_name='m_pd.h')
+
+ # required dependencies
+ ctx.check_cfg(package = 'aubio', atleast_version = '0.4.0',
+ args = '--cflags --libs')
def build(bld):
- aubio_pd = bld.new_task_gen(
- features = 'cc cshlib',
+
+ bld(features = 'c cshlib',
+ source = bld.path.ant_glob('src/*.c'),
uselib = ['AUBIO'],
- defines = ['PD'],
- install_path = '${PREFIX}/lib/pd/extra')
+ target = 'aubio',
+ defines = ['PD', 'PACKAGE_VERSION=\"'+repr(VERSION)+"\""],
+ install_path = '${PREFIX}/lib/pd/extra/aubio')
- if bld.env['DEST_OS'] == 'win32':
- aubio_pd.target = 'aubio.dll'
- # do not use -fPIC -DPIC on windows
- aubio_pd.env.shlib_CCFLAGS.remove('-fPIC')
- aubio_pd.env.shlib_CCFLAGS.remove('-DPIC')
- aubio_pd.env.append_unique('shlib_LINKFLAGS', ['-export_dynamic', '-lpd'])
- elif bld.env['DEST_OS'] == 'darwin':
- aubio_pd.target = 'aubio.pd_darwin'
- aubio_pd.env.append_unique('shlib_LINKFLAGS',
- ['-bundle', '-undefined suppres', '-flat_namespace'])
- else: #if bld.env['DEST_OS'] == 'linux':
- aubio_pd.target = 'aubio.pd_linux'
- aubio_pd.env.append_unique('shlib_LINKFLAGS', ['--export_dynamic'])
-
- # do not rename the shlib at all
- aubio_pd.env.shlib_PATTERN = '%s'
- # get the source files
- aubio_pd.find_sources_in_dirs('.')
-
- bld.install_files('${PREFIX}/lib/pd/doc/5.reference', 'help/*.pd')
-
- bld.install_files('${PREFIX}/lib/pd/doc/aubio', 'examples/*.pd')
+ bld.install_files('${PREFIX}/lib/pd/extra/aubio',
+ bld.path.ant_glob('help/**.pd'))
+
+ bld.install_files('${PREFIX}/lib/pd/extra/aubio/examples',
+ bld.path.ant_glob('examples/**.pd'))