tinycdb: add support for static build

This commit is contained in:
Dmitry Bogatov 2020-09-07 15:06:00 -04:00
parent 77cdb1f64f
commit 88b0840f73

View File

@ -1,18 +1,37 @@
{ stdenv, lib, fetchurl }: { stdenv, lib, fetchurl }:
let
isCross = stdenv.buildPlatform != stdenv.hostPlatform;
cross = "${stdenv.hostPlatform.config}";
static = stdenv.hostPlatform.isStatic;
stdenv.mkDerivation rec { cc = if !isCross then "cc" else "${cross}-cc";
ar = if !isCross then "ar" else "${cross}-ar";
ranlib = if !isCross then "ranlib" else "${cross}-ranlib";
in stdenv.mkDerivation rec {
postPatch = ''
sed -i 's,set --, set -x; set --,' Makefile
'';
pname = "tinycdb"; pname = "tinycdb";
version = "0.78"; version = "0.78";
outputs = [ "out" "dev" "lib" "man" ]; # In general, static library (.a) goes to "dev", shared (.so) to
# "lib". In case of static build, there is no .so library, so "lib"
# output is useless and empty.
outputs = [ "out" "dev" "man" ] ++ lib.optional (!static) "lib";
separateDebugInfo = true; separateDebugInfo = true;
makeFlags = [ "prefix=$(out)" "staticlib" "sharedlib" "cdb-shared" ]; makeFlags =
[ "prefix=$(out)" "CC=${cc}" "AR=${ar}" "RANLIB=${ranlib}" "static"
] ++ lib.optional (!static) "shared";
postInstall = '' postInstall = ''
mkdir -p $lib/lib $dev/lib $out/bin mkdir -p $dev/lib $out/bin
cp libcdb.so* $lib/lib
cp cdb-shared $out/bin/cdb
mv $out/lib/libcdb.a $dev/lib mv $out/lib/libcdb.a $dev/lib
rmdir $out/lib rmdir $out/lib
''; '' + (if static then ''
cp cdb $out/bin/cdb
'' else ''
mkdir -p $lib/lib
cp libcdb.so* $lib/lib
cp cdb-shared $out/bin/cdb
'');
src = fetchurl { src = fetchurl {
url = "http://www.corpit.ru/mjt/tinycdb/${pname}-${version}.tar.gz"; url = "http://www.corpit.ru/mjt/tinycdb/${pname}-${version}.tar.gz";