libjack2: fix darwin build
This commit is contained in:
parent
bb02b800a2
commit
7d98316a97
4 changed files with 95 additions and 5 deletions
22
pkgs/misc/jackaudio/clang.patch
Normal file
22
pkgs/misc/jackaudio/clang.patch
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
diff --git a/tests/test.cpp b/tests/test.cpp
|
||||||
|
index 8a8a811..31e8459 100644
|
||||||
|
--- a/tests/test.cpp
|
||||||
|
+++ b/tests/test.cpp
|
||||||
|
@@ -479,7 +479,7 @@ int process4(jack_nframes_t nframes, void *arg)
|
||||||
|
jack_nframes_t delta_time = cur_time - last_time;
|
||||||
|
|
||||||
|
Log("calling process4 callback : jack_frame_time = %ld delta_time = %ld\n", cur_time, delta_time);
|
||||||
|
- if (delta_time > 0 && (jack_nframes_t)abs(delta_time - cur_buffer_size) > tolerance) {
|
||||||
|
+ if (delta_time > 0 && (jack_nframes_t)fabs(delta_time - cur_buffer_size) > tolerance) {
|
||||||
|
printf("!!! ERROR !!! jack_frame_time seems to return incorrect values cur_buffer_size = %d, delta_time = %d tolerance %d\n", cur_buffer_size, delta_time, tolerance);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1064,7 +1064,7 @@ int main (int argc, char *argv[])
|
||||||
|
}
|
||||||
|
jack_sleep(1 * 1000);
|
||||||
|
cur_buffer_size = jack_get_buffer_size(client1);
|
||||||
|
- if (abs((old_buffer_size * factor) - cur_buffer_size) > 5) { // Tolerance needed for dummy driver...
|
||||||
|
+ if (fabs((old_buffer_size * factor) - cur_buffer_size) > 5) { // Tolerance needed for dummy driver...
|
||||||
|
printf("!!! ERROR !!! Buffer size has not been changed !\n");
|
||||||
|
printf("!!! Maybe jack was compiled without the '--enable-resize' flag...\n");
|
||||||
|
} else {
|
49
pkgs/misc/jackaudio/darwin-cf.patch
Normal file
49
pkgs/misc/jackaudio/darwin-cf.patch
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
diff --git a/common/Jackdmp.cpp b/common/Jackdmp.cpp
|
||||||
|
index 7eea281..4b8d75d 100644
|
||||||
|
--- a/common/Jackdmp.cpp
|
||||||
|
+++ b/common/Jackdmp.cpp
|
||||||
|
@@ -50,43 +50,11 @@ are "hard-coded" in the source. A much better approach would be to use the contr
|
||||||
|
- get available drivers and their possible parameters, then prepare to parse them.
|
||||||
|
*/
|
||||||
|
|
||||||
|
-#ifdef __APPLE__
|
||||||
|
-#include <CoreFoundation/CFNotificationCenter.h>
|
||||||
|
-#include <CoreFoundation/CoreFoundation.h>
|
||||||
|
-
|
||||||
|
-static void notify_server_start(const char* server_name)
|
||||||
|
-{
|
||||||
|
- // Send notification to be used in the JackRouter plugin
|
||||||
|
- CFStringRef ref = CFStringCreateWithCString(NULL, server_name, kCFStringEncodingMacRoman);
|
||||||
|
- CFNotificationCenterPostNotificationWithOptions(CFNotificationCenterGetDistributedCenter(),
|
||||||
|
- CFSTR("com.grame.jackserver.start"),
|
||||||
|
- ref,
|
||||||
|
- NULL,
|
||||||
|
- kCFNotificationDeliverImmediately | kCFNotificationPostToAllSessions);
|
||||||
|
- CFRelease(ref);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static void notify_server_stop(const char* server_name)
|
||||||
|
-{
|
||||||
|
- // Send notification to be used in the JackRouter plugin
|
||||||
|
- CFStringRef ref1 = CFStringCreateWithCString(NULL, server_name, kCFStringEncodingMacRoman);
|
||||||
|
- CFNotificationCenterPostNotificationWithOptions(CFNotificationCenterGetDistributedCenter(),
|
||||||
|
- CFSTR("com.grame.jackserver.stop"),
|
||||||
|
- ref1,
|
||||||
|
- NULL,
|
||||||
|
- kCFNotificationDeliverImmediately | kCFNotificationPostToAllSessions);
|
||||||
|
- CFRelease(ref1);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-#else
|
||||||
|
-
|
||||||
|
static void notify_server_start(const char* server_name)
|
||||||
|
{}
|
||||||
|
static void notify_server_stop(const char* server_name)
|
||||||
|
{}
|
||||||
|
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
static void copyright(FILE* file)
|
||||||
|
{
|
||||||
|
fprintf(file, "jackdmp " VERSION "\n"
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
{ stdenv, fetchFromGitHub, pkgconfig, python2Packages, makeWrapper
|
{ stdenv, fetchFromGitHub, pkgconfig, python2Packages, makeWrapper
|
||||||
, bash, libsamplerate, libsndfile, readline, eigen, celt
|
, bash, libsamplerate, libsndfile, readline, eigen, celt
|
||||||
|
# Darwin Dependencies
|
||||||
|
, aften, AudioToolbox, CoreAudio, CoreFoundation
|
||||||
|
|
||||||
# Optional Dependencies
|
# Optional Dependencies
|
||||||
, dbus ? null, libffado ? null, alsaLib ? null
|
, dbus ? null, libffado ? null, alsaLib ? null
|
||||||
, libopus ? null
|
, libopus ? null
|
||||||
|
, darwin
|
||||||
|
|
||||||
# Extra options
|
# Extra options
|
||||||
, prefix ? ""
|
, prefix ? ""
|
||||||
|
@ -16,7 +19,7 @@ let
|
||||||
|
|
||||||
libOnly = prefix == "lib";
|
libOnly = prefix == "lib";
|
||||||
|
|
||||||
optDbus = shouldUsePkg dbus;
|
optDbus = if stdenv.isDarwin then null else shouldUsePkg dbus;
|
||||||
optPythonDBus = if libOnly then null else shouldUsePkg dbus-python;
|
optPythonDBus = if libOnly then null else shouldUsePkg dbus-python;
|
||||||
optLibffado = if libOnly then null else shouldUsePkg libffado;
|
optLibffado = if libOnly then null else shouldUsePkg libffado;
|
||||||
optAlsaLib = if libOnly then null else shouldUsePkg alsaLib;
|
optAlsaLib = if libOnly then null else shouldUsePkg alsaLib;
|
||||||
|
@ -34,21 +37,36 @@ stdenv.mkDerivation rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig python makeWrapper ];
|
nativeBuildInputs = [ pkgconfig python makeWrapper ];
|
||||||
buildInputs = [ python libsamplerate libsndfile readline eigen celt
|
buildInputs = [ libsamplerate libsndfile readline eigen celt
|
||||||
optDbus optPythonDBus optLibffado optAlsaLib optLibopus
|
optDbus optPythonDBus optLibffado optAlsaLib optLibopus
|
||||||
];
|
] ++ stdenv.lib.optionals stdenv.isDarwin [ aften AudioToolbox CoreAudio CoreFoundation ];
|
||||||
|
|
||||||
patchPhase = ''
|
# CoreFoundation 10.10 doesn't include CFNotificationCenter.h yet.
|
||||||
substituteInPlace svnversion_regenerate.sh --replace /bin/bash ${bash}/bin/bash
|
patches = stdenv.lib.optionals stdenv.isDarwin [ ./clang.patch ./darwin-cf.patch ];
|
||||||
|
|
||||||
|
prePatch = ''
|
||||||
|
substituteInPlace svnversion_regenerate.sh \
|
||||||
|
--replace /bin/bash ${bash}/bin/bash
|
||||||
|
'';
|
||||||
|
|
||||||
|
# It looks like one of the frameworks depends on <CoreFoundation/CFAttributedString.h>
|
||||||
|
# since frameworks are impure we also have to use the impure CoreFoundation here.
|
||||||
|
# FIXME: remove when CoreFoundation is updated to 10.11
|
||||||
|
preConfigure = stdenv.lib.optionalString stdenv.isDarwin ''
|
||||||
|
export NIX_CFLAGS_COMPILE="-F${CoreFoundation}/Library/Frameworks $NIX_CFLAGS_COMPILE"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
configurePhase = ''
|
configurePhase = ''
|
||||||
|
runHook preConfigure
|
||||||
|
|
||||||
python waf configure --prefix=$out \
|
python waf configure --prefix=$out \
|
||||||
${optionalString (optDbus != null) "--dbus"} \
|
${optionalString (optDbus != null) "--dbus"} \
|
||||||
--classic \
|
--classic \
|
||||||
${optionalString (optLibffado != null) "--firewire"} \
|
${optionalString (optLibffado != null) "--firewire"} \
|
||||||
${optionalString (optAlsaLib != null) "--alsa"} \
|
${optionalString (optAlsaLib != null) "--alsa"} \
|
||||||
--autostart=${if (optDbus != null) then "dbus" else "classic"} \
|
--autostart=${if (optDbus != null) then "dbus" else "classic"} \
|
||||||
|
|
||||||
|
runHook postConfigure
|
||||||
'';
|
'';
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
|
|
|
@ -18886,6 +18886,7 @@ with pkgs;
|
||||||
|
|
||||||
jack2Full = callPackage ../misc/jackaudio {
|
jack2Full = callPackage ../misc/jackaudio {
|
||||||
libopus = libopus.override { withCustomModes = true; };
|
libopus = libopus.override { withCustomModes = true; };
|
||||||
|
inherit (darwin.apple_sdk.frameworks) AudioToolbox CoreAudio CoreFoundation;
|
||||||
};
|
};
|
||||||
libjack2 = jack2Full.override { prefix = "lib"; };
|
libjack2 = jack2Full.override { prefix = "lib"; };
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue