#! /usr/bin/env python # encoding: utf-8 import os OPUS_CHECK='''#include #include int main() { OpusEncoder *oe = opus_encoder_create(48000, 2, OPUS_APPLICATION_VOIP, NULL); OpusDecoder *od = opus_decoder_create(48000, 2, NULL); return !oe || !od; } ''' def options(opt): pass def configure(conf): if conf.check_pkg('opus', 'OPUS', OPUS_CHECK, fatal = False): conf.env.HAVE_OPUS = True return if not conf.path.find_dir('opus') or not conf.path.find_dir('opus/src'): conf.fatal('Can\'t find opus submodule. Run `git submodule update --init --recursive`.') return # TODO: ARM/x86 intrinsics detection # TODO: maybe call autotools/cmake/meson instead? def build(bld): if bld.env.HAVE_OPUS: return sources = bld.path.ant_glob([ 'opus/src/*.c', 'opus/celt/*.c', 'opus/silk/*.c', 'opus/silk/float/*.c' ], excl = [ 'opus/src/repacketizer_demo.c', 'opus/src/opus_demo.c', 'opus/src/opus_compare.c', 'opus/celt/opus_custom_demo.c' ]) includes = ['opus/include/', 'opus/celt/', 'opus/silk/', 'opus/silk/float/'] defines = ['USE_ALLOCA', 'OPUS_BUILD', 'FLOAT_APPROX', 'PACKAGE_VERSION="1.3.1"'] bld.stlib( source = sources, target = 'opus', features = 'c', includes = includes, defines = defines, subsystem = bld.env.MSVC_SUBSYSTEM, export_includes = ['opus/include/'] )