48 lines
1.9 KiB
Python
48 lines
1.9 KiB
Python
import os, shutil
|
|
import re
|
|
|
|
from .project import Project
|
|
|
|
# This class installs just the public headers and a fake pkg-config
|
|
# file which defines the macro "DYNAMIC_JACK". This tells MPD's JACK
|
|
# output plugin to load the libjack64.dll dynamically using
|
|
# LoadLibrary(). This kludge avoids the runtime DLL dependency for
|
|
# users who don't use JACK, but still allows using the system JACK
|
|
# client library.
|
|
#
|
|
# The problem with JACK is that it uses an extremely fragile shared
|
|
# memory protocol to communicate with the daemon. One needs to use
|
|
# daemon and client library from the same build. That's why we don't
|
|
# build libjack statically here; it would probably not be compatible
|
|
# with the user's JACK daemon.
|
|
|
|
class JackProject(Project):
|
|
def __init__(self, url, md5, installed,
|
|
**kwargs):
|
|
m = re.match(r'.*/v([\d.]+)\.tar\.gz$', url)
|
|
self.version = m.group(1)
|
|
Project.__init__(self, url, md5, installed,
|
|
name='jack2', version=self.version,
|
|
base='jack2-' + self.version,
|
|
**kwargs)
|
|
|
|
def build(self, toolchain):
|
|
src = self.unpack(toolchain)
|
|
|
|
includes = ['jack.h', 'ringbuffer.h', 'systemdeps.h', 'transport.h', 'types.h', 'weakmacros.h']
|
|
includedir = os.path.join(toolchain.install_prefix, 'include', 'jack')
|
|
os.makedirs(includedir, exist_ok=True)
|
|
|
|
for i in includes:
|
|
shutil.copyfile(os.path.join(src, 'common', 'jack', i),
|
|
os.path.join(includedir, i))
|
|
|
|
with open(os.path.join(toolchain.install_prefix, 'lib', 'pkgconfig', 'jack.pc'), 'w') as f:
|
|
print("prefix=" + toolchain.install_prefix, file=f)
|
|
print("", file=f)
|
|
print("Name: jack", file=f)
|
|
print("Description: dummy", file=f)
|
|
print("Version: " + self.version, file=f)
|
|
print("Libs: ", file=f)
|
|
print("Cflags: -DDYNAMIC_JACK", file=f)
|