wscript: refactor opus wscript files, now it builds only if system package wasn't found

This commit is contained in:
Alibek Omarov 2021-06-14 21:19:52 +03:00
parent 9242a0a510
commit 44cd03f464
6 changed files with 56 additions and 47 deletions

1
3rdparty/opus vendored

@ -1 +0,0 @@
Subproject commit dfd6c88aaa54a03a61434c413e30c217eb98f1d5

1
3rdparty/opus/opus vendored Submodule

@ -0,0 +1 @@
Subproject commit 1639592368fc2dadc82d63f3be6f17ed0b554d71

52
3rdparty/opus/wscript vendored Normal file
View File

@ -0,0 +1,52 @@
#! /usr/bin/env python
# encoding: utf-8
import os
OPUS_CHECK='''#include <opus.h>
#include <stddef.h>
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'
])
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/']
)

View File

@ -166,7 +166,7 @@ def build(bld):
'client/vgui/*.c',
'client/avi/*.c'])
libs.append('OPUS')
libs.append('opus')
includes = ['common', 'server', 'client', 'client/vgui', 'tests', '.', '../public', '../common', '../filesystem', '../pm_shared' ]

View File

@ -1,42 +0,0 @@
# encoding: utf-8
import os
def options(opt):
pass
def configure(conf):
path = conf.path.find_dir('3rdparty/opus')
conf.env.LIB_OPUS = ['opus']
conf.env.INCLUDES_OPUS = [path.find_dir('include/').abspath()]
def build(bld):
path = bld.path.find_dir('3rdparty/opus')
sources = path.ant_glob([
'src/*.c',
'celt/*.c',
'silk/*.c',
'silk/float/*.c'])
includes = [
path.find_dir('include/'),
path.find_dir('celt/'),
path.find_dir('silk/'),
path.find_dir('silk/float/')
]
defines = [
'USE_ALLOCA',
'OPUS_BUILD',
'PACKAGE_VERSION="1.3.1"'
]
bld.stlib(
source = sources,
target = 'opus',
features = 'c',
includes = includes,
defines = defines,
subsystem = bld.env.MSVC_SUBSYSTEM
)

View File

@ -54,6 +54,7 @@ class Subproject:
return True
SUBDIRS = [
Subproject('3rdparty/opus'),
Subproject('public', dedicated=False, mandatory = True),
Subproject('filesystem', dedicated=False, mandatory = True),
Subproject('game_launch', singlebin=True),
@ -353,11 +354,9 @@ int main(int argc, char **argv) { strcasestr(argv[1], argv[2]); return 0; }'''
continue
conf.add_subproject(i.name)
conf.load('opus')
def build(bld):
bld.load('opus xshlib')
bld.load('xshlib')
for i in SUBDIRS:
if not i.is_enabled(bld):