Files
nix-custom-sqlite/src/sqlite.nix
T
2026-05-19 22:07:51 +09:00

74 lines
1.5 KiB
Nix

{
lib,
static ? false,
src,
version,
nameSuffix,
stdenv,
unzip,
zlib,
icu,
amalgamate ? true,
coreInitExt ? null,
features ? { },
featureFlags ? [ ],
enableInteractive ? false,
...
}:
stdenv.mkDerivation (finalAttrs: {
pname = "sqlite${nameSuffix}";
inherit version src;
nativeBuildInputs = [
unzip
];
buildInputs = [
zlib
] ++ lib.optional features.ENABLE_ICU [
icu
];
# required for aarch64 but applied for all arches for simplicity
preConfigure = ''
patchShebangs configure
'';
# sqlite relies on autosetup now; so many of the
# previously-understood flags are gone. They should instead be set
# on a per-output basis.
setOutputFlags = false;
configureFlags = [
"--bindir=/tmp"
"--mandir=/tmp"
"--includedir=${placeholder "out"}/include"
"--libdir=${placeholder "out"}/lib"
"--${if static then "disable" else "enable"}-shared"
"--${if static then "enable" else "disable"}-static"
"--${if amalgamate then "enable" else "disable"}-amalgamation"
] ++ lib.optional features.ENABLE_ICU [
"--enable-icu-collations"
"--with-icu-config=${lib.getExe' icu.dev "icu-config"}"
];
makeFlags =
(coreInitExt.passthru.makeFlags or [ ])
++ map (opt: "OPTIONS+=${lib.escapeShellArg opt}") featureFlags
++ [
(if static then "lib" else "so")
];
env.NIX_CFLAGS_LINK = lib.optionalString features.ENABLE_FTS5 "-lm";
env.NIX_LDFLAGS = lib.concatStringsSep " " (coreInitExt.passthru.extraLDFLAGS or [ ]);
})