python312Packages.mandown: 1.10.0 -> 1.10.1 (#370595)
[NixPkgs.git] / pkgs / development / libraries / libvgm / default.nix
blob09d7ac023648b2da7b9c636a4a3ef46932eac59d
2   stdenv,
3   lib,
4   fetchFromGitHub,
5   unstableGitUpdater,
6   testers,
7   cmake,
8   libiconv,
9   zlib,
10   enableShared ? (!stdenv.hostPlatform.isStatic),
12   enableAudio ? true,
13   withWaveWrite ? true,
14   withWinMM ? stdenv.hostPlatform.isWindows,
15   withDirectSound ? stdenv.hostPlatform.isWindows,
16   withXAudio2 ? stdenv.hostPlatform.isWindows,
17   withWASAPI ? stdenv.hostPlatform.isWindows,
18   withOSS ? stdenv.hostPlatform.isFreeBSD,
19   withSADA ? stdenv.hostPlatform.isSunOS,
20   withALSA ? stdenv.hostPlatform.isLinux,
21   alsa-lib,
22   withPulseAudio ? stdenv.hostPlatform.isLinux,
23   libpulseaudio,
24   withCoreAudio ? stdenv.hostPlatform.isDarwin,
25   CoreAudio,
26   AudioToolbox,
27   withLibao ? true,
28   libao,
30   enableEmulation ? true,
31   withAllEmulators ? true,
32   emulators ? [ ],
34   enableLibplayer ? true,
36   enableTools ? false,
39 assert enableTools -> enableAudio && enableEmulation && enableLibplayer;
41 stdenv.mkDerivation (finalAttrs: {
42   pname = "libvgm";
43   version = "0-unstable-2024-10-17";
45   src = fetchFromGitHub {
46     owner = "ValleyBell";
47     repo = "libvgm";
48     rev = "7b694e53e42a75ce48b846c53d08e4a33f627842";
49     hash = "sha256-u+mBzmEixJT3rwuipITktFI4iVswnXftfF7syBw4t/w=";
50   };
52   outputs = [
53     "out"
54     "dev"
55   ] ++ lib.optionals enableTools [ "bin" ];
57   nativeBuildInputs = [ cmake ];
59   propagatedBuildInputs =
60     [
61       libiconv
62       zlib
63     ]
64     ++ lib.optionals withALSA [ alsa-lib ]
65     ++ lib.optionals withPulseAudio [ libpulseaudio ]
66     ++ lib.optionals withCoreAudio [
67       CoreAudio
68       AudioToolbox
69     ]
70     ++ lib.optionals withLibao [ libao ];
72   cmakeFlags =
73     [
74       (lib.cmakeBool "BUILD_LIBAUDIO" enableAudio)
75       (lib.cmakeBool "BUILD_LIBEMU" enableEmulation)
76       (lib.cmakeBool "BUILD_LIBPLAYER" enableLibplayer)
77       (lib.cmakeBool "BUILD_TESTS" enableTools)
78       (lib.cmakeBool "BUILD_PLAYER" enableTools)
79       (lib.cmakeBool "BUILD_VGM2WAV" enableTools)
80       (lib.cmakeFeature "LIBRARY_TYPE" (if enableShared then "SHARED" else "STATIC"))
81       (lib.cmakeBool "USE_SANITIZERS" true)
82     ]
83     ++ lib.optionals enableAudio [
84       (lib.cmakeBool "AUDIODRV_WAVEWRITE" withWaveWrite)
85       (lib.cmakeBool "AUDIODRV_WINMM" withWinMM)
86       (lib.cmakeBool "AUDIODRV_DSOUND" withDirectSound)
87       (lib.cmakeBool "AUDIODRV_XAUDIO2" withXAudio2)
88       (lib.cmakeBool "AUDIODRV_WASAPI" withWASAPI)
89       (lib.cmakeBool "AUDIODRV_OSS" withOSS)
90       (lib.cmakeBool "AUDIODRV_SADA" withSADA)
91       (lib.cmakeBool "AUDIODRV_ALSA" withALSA)
92       (lib.cmakeBool "AUDIODRV_PULSE" withPulseAudio)
93       (lib.cmakeBool "AUDIODRV_APPLE" withCoreAudio)
94       (lib.cmakeBool "AUDIODRV_LIBAO" withLibao)
95     ]
96     ++ lib.optionals enableEmulation (
97       [ (lib.cmakeBool "SNDEMU__ALL" withAllEmulators) ]
98       ++ lib.optionals (!withAllEmulators) (
99         lib.lists.forEach emulators (x: (lib.cmakeBool "SNDEMU_${x}" true))
100       )
101     )
102     ++ lib.optionals enableTools [
103       (lib.cmakeBool "UTIL_CHARCNV_ICONV" true)
104       (lib.cmakeBool "UTIL_CHARCNV_WINAPI" stdenv.hostPlatform.isWindows)
105     ];
107   passthru = {
108     tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
109     updateScript = unstableGitUpdater { };
110   };
112   meta = {
113     description = "More modular rewrite of most components from VGMPlay";
114     homepage = "https://github.com/ValleyBell/libvgm";
115     license =
116       if
117         (enableEmulation && (withAllEmulators || (lib.lists.any (core: core == "WSWAN_ALL") emulators)))
118       then
119         lib.licenses.unfree # https://github.com/ValleyBell/libvgm/issues/43
120       else
121         lib.licenses.gpl2Only;
122     maintainers = with lib.maintainers; [ OPNA2608 ];
123     platforms = lib.platforms.all;
124     pkgConfigModules =
125       [ "vgm-utils" ]
126       ++ lib.optionals enableAudio [ "vgm-audio" ]
127       ++ lib.optionals enableEmulation [ "vgm-emu" ]
128       ++ lib.optionals enableLibplayer [ "vgm-player" ];
129   };