Files
nix-custom-sqlite/flake.nix
T

95 lines
2.4 KiB
Nix

{
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
outputs = { self, nixpkgs }:
let
inherit (nixpkgs) lib;
systems = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
forAllSystems = f: lib.genAttrs systems (system: f system nixpkgs.legacyPackages.${system});
in {
mkSqlite = import ./src/mk-sqlite.nix { inherit lib; };
packages = forAllSystems (system: pkgs: let
productVars = {
enableMinimal = [ true false ];
enableDebug = [ true false ];
enableInteractive = [ true false ];
};
in lib.mergeAttrsList (lib.mapCartesianProduct ({
enableMinimal,
enableDebug,
enableInteractive,
}: let
result = self.mkSqlite {
inherit
pkgs
enableMinimal
enableDebug
enableInteractive;
};
in {
"sqlite${result._suffix}" = result.sqlite;
"sqlite-amalgamation${result._suffix}" = result.amalgamation;
"sqlite-cli${result._suffix}" = result.sqlite-cli;
"sqlite-static${result._suffix}" = result.sqlite-static;
}) productVars));
checks = forAllSystems (system: pkgs: let
sqlite-example-exts-static = pkgs.stdenv.mkDerivation {
name = "sqlite-example-exts-static";
src = ./sqlite-example-exts;
env.NIX_CFLAGS_COMPILE = "-DSQLITE_CORE";
buildInputs = with pkgs; [ sqlite.dev ];
buildPhase = ''
runHook preBuild
"$CC" -c addext.c
"$AR" rcs libaddext.a addext.o
"$CC" -c subext.c
"$AR" rcs libsubext.a subext.o
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm444 *.a -t "$out/lib"
runHook postInstall
'';
};
sqlite-with-static-exts = self.mkSqlite {
inherit pkgs;
extensions = [
{
library = "${sqlite-example-exts-static}/lib/libaddext.a";
init = "sqlite3_addext_init";
}
{
library = "${sqlite-example-exts-static}/lib/libsubext.a";
init = "sqlite3_subext_init";
}
];
};
in {
inherit sqlite-example-exts-static;
sqlite-with-static-ext = sqlite-with-static-exts.sqlite;
sqlite-cli-with-static-ext = sqlite-with-static-exts.sqlite-cli;
});
};
}