diff --git a/src/core-init-ext.nix b/src/core-init-ext.nix index b77b613..3112d63 100644 --- a/src/core-init-ext.nix +++ b/src/core-init-ext.nix @@ -4,6 +4,7 @@ extensions, nameSuffix, version, + headers, stdenv, writeText, @@ -27,13 +28,14 @@ let ${lib.concatMapStringsSep "\n" (sym: "void ${sym}(void);") shutdownSymbols} ''; + # TODO: how should shutdown be handled with use of sqlite3_auto_extension? Is there a separate place for registering these? coreInitImpl = writeText "sqlite-core-init.c" '' #include "${coreInitHeaders}" + #include int core_init(const char *dummy) { - int err = 0; - ${lib.concatMapStringsSep "\n" (sym: "err += ${sym}(dummy);") initSymbols} - return err; + ${lib.concatMapStringsSep "\n" (sym: "sqlite3_auto_extension((void(*)(void))${sym});") initSymbols} + return SQLITE_OK; } void core_shutdown(void) { @@ -47,6 +49,8 @@ in stdenv.mkDerivation (finalAttrs: { src = null; dontUnpack = true; + buildInputs = [ headers ]; + buildPhase = '' runHook preBuild "$CC" -c '${coreInitImpl}' -o sqlite-core-init.o diff --git a/src/mk-sqlite.nix b/src/mk-sqlite.nix index 4dea3c0..09795b9 100644 --- a/src/mk-sqlite.nix +++ b/src/mk-sqlite.nix @@ -76,6 +76,7 @@ let then null else pkgs.callPackage ./core-init-ext.nix ({ inherit version src; + inherit headers; inherit extensions; inherit extraLibraries; nameSuffix = suffix;