From 5730d31289f61338bdb8cbe8a1e1138d3c3665cb Mon Sep 17 00:00:00 2001 From: Emily Date: Sat, 4 Jul 2026 15:47:11 +0100 Subject: [PATCH] ldacbt: use Meson to build --- pkgs/by-name/ld/ldacbt/meson.build | 52 +++++++++++++++++ pkgs/by-name/ld/ldacbt/package.nix | 90 +++++------------------------- 2 files changed, 67 insertions(+), 75 deletions(-) create mode 100644 pkgs/by-name/ld/ldacbt/meson.build diff --git a/pkgs/by-name/ld/ldacbt/meson.build b/pkgs/by-name/ld/ldacbt/meson.build new file mode 100644 index 000000000000..1bd0a8ca2e96 --- /dev/null +++ b/pkgs/by-name/ld/ldacbt/meson.build @@ -0,0 +1,52 @@ +project( + 'ldacbt', + 'c', + meson_version: '>=1.10.0', + version: files('VERSION'), +) + +pkg = import('pkgconfig') + +cc = meson.get_compiler('c') +dep_m = cc.find_library('m') + +lib = library( + 'ldacBT', + 'abr/src/ldacBT_abr.c', + 'src/ldacBT.c', + 'src/ldaclib.c', + include_directories: [ + 'abr/inc', + 'inc', + ], + dependencies: [dep_m], + version: meson.project_version(), + install: true, +) + +install_headers( + 'abr/inc/ldacBT_abr.h', + 'inc/ldacBT.h', + subdir: 'ldac', +) + +pkg.generate( + lib, + name: 'ldacBT-enc', + description: 'LDAC Bluetooth encoder', + subdirs: 'ldac', +) + +pkg.generate( + lib, + name: 'ldacBT-abr', + description: 'LDAC Bluetooth ABR library', + subdirs: 'ldac', +) + +pkg.generate( + lib, + name: 'ldacBT-dec', + description: 'LDAC Bluetooth decoder', + subdirs: 'ldac', +) diff --git a/pkgs/by-name/ld/ldacbt/package.nix b/pkgs/by-name/ld/ldacbt/package.nix index 67f5bc7eb8f8..532babd3cbf5 100644 --- a/pkgs/by-name/ld/ldacbt/package.nix +++ b/pkgs/by-name/ld/ldacbt/package.nix @@ -2,6 +2,8 @@ lib, stdenv, fetchFromGitHub, + meson, + ninja, }: stdenv.mkDerivation (finalAttrs: { @@ -24,87 +26,25 @@ stdenv.mkDerivation (finalAttrs: { ./0001-abr-drop-support-for-dynamic-loading-libldac.patch ]; - env.NIX_CFLAGS_COMPILE = "-O2 -fPIC -fno-merge-constants -Wall -Iinc -Isrc -Iabr/inc"; + nativeBuildInputs = [ + meson + ninja + ]; + + mesonBuildType = "release"; + + # The upstream build system is tied to AOSP, so we use our own Meson + # definitions to replace it. + postPatch = '' + ln -s ${./meson.build} meson.build - # Verify finalAttrs.version matches LDACBT_LIB_VER_* in upstream source. - # Guards against silent version drift when the pinned commit changes. - preBuild = '' awk -v want=${finalAttrs.version} ' /^#define LDACBT_LIB_VER_/ { v = v sep ($3+0); sep = "." } END { if (v != want) { print "version mismatch: package says " want ", source reports " v > "/dev/stderr"; exit 1 } + print v } - ' src/ldacBT_api.c - ''; - - # Upstream ships AOSP build files and a gcc/ makefile that only knows - # about the in-tree layout. Compile and link directly; the entire - # library is two umbrella translation units. - buildPhase = '' - runHook preBuild - - soname=libldacBT.so.${lib.versions.major finalAttrs.version} - sofile=libldacBT.so.${finalAttrs.version} - - $CC -shared -Wl,-soname,$soname src/ldaclib.c src/ldacBT.c abr/src/ldacBT_abr.c -lm -o $sofile - - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - - install -Dm644 -t $out/lib $sofile - ln -s $sofile $out/lib/$soname - ln -s $sofile $out/lib/libldacBT.so - - install -Dm644 inc/ldacBT.h $dev/include/ldac/ldacBT.h - install -Dm644 abr/inc/ldacBT_abr.h $dev/include/ldac/ldacBT_abr.h - - mkdir -p $dev/lib/pkgconfig - cat > $dev/lib/pkgconfig/ldacBT-dec.pc < $dev/lib/pkgconfig/ldacBT-enc.pc < $dev/lib/pkgconfig/ldacBT-abr.pc < VERSION ''; meta = {