1{
2 stdenv,
3 lib,
4 config,
5 fetchFromGitHub,
6 testers,
7 cmake,
8 pkg-config,
9 alsaSupport ? stdenv.hostPlatform.isLinux,
10 alsa-lib,
11 pulseaudioSupport ? config.pulseaudio or stdenv.hostPlatform.isLinux,
12 libpulseaudio,
13 jackSupport ? true,
14 libjack2,
15 coreaudioSupport ? stdenv.hostPlatform.isDarwin,
16 validatePkgConfig,
17}:
18
19stdenv.mkDerivation (finalAttrs: {
20 pname = "rtaudio";
21 version = "6.0.1";
22
23 src = fetchFromGitHub {
24 owner = "thestk";
25 repo = "rtaudio";
26 tag = finalAttrs.version;
27 hash = "sha256-Acsxbnl+V+Y4mKC1gD11n0m03E96HMK+oEY/YV7rlIY=";
28 };
29
30 strictDeps = true;
31
32 nativeBuildInputs = [
33 cmake
34 pkg-config
35 validatePkgConfig
36 ];
37
38 buildInputs =
39 lib.optionals alsaSupport [
40 alsa-lib
41 ]
42 ++ lib.optionals pulseaudioSupport [
43 libpulseaudio
44 ]
45 ++ lib.optionals jackSupport [
46 libjack2
47 ];
48
49 cmakeFlags = [
50 (lib.cmakeBool "RTAUDIO_API_ALSA" alsaSupport)
51 (lib.cmakeBool "RTAUDIO_API_PULSE" pulseaudioSupport)
52 (lib.cmakeBool "RTAUDIO_API_JACK" jackSupport)
53 (lib.cmakeBool "RTAUDIO_API_CORE" coreaudioSupport)
54 ];
55
56 passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
57
58 meta = {
59 description = "Set of C++ classes that provide a cross platform API for realtime audio input/output";
60 homepage = "https://www.music.mcgill.ca/~gary/rtaudio/";
61 changelog = "https://github.com/thestk/rtaudio/releases/tag/${finalAttrs.version}";
62 license = lib.licenses.mit;
63 maintainers = with lib.maintainers; [ magnetophon ];
64 platforms = lib.platforms.unix;
65 pkgConfigModules = [
66 "rtaudio"
67 ];
68 };
69})