{ lib, stdenv, fetchFromGitLab, windows }: stdenv.mkDerivation rec { pname = "lmdb"; version = "0.9.32"; src = fetchFromGitLab { domain = "git.openldap.org"; owner = "openldap"; repo = "openldap"; rev = "LMDB_${version}"; sha256 = "sha256-29ZrGIiGqrvX+WsPRs2V25hPmAJSHTHaGo19nMldsb8="; }; postUnpack = "sourceRoot=\${sourceRoot}/libraries/liblmdb"; patches = [ ./hardcoded-compiler.patch ./bin-ext.patch ]; patchFlags = [ "-p3" ]; # Don't attempt the .so if static, as it would fail. postPatch = lib.optionalString stdenv.hostPlatform.isStatic '' sed 's/^ILIBS\>.*/ILIBS = liblmdb.a/' -i Makefile ''; outputs = [ "bin" "out" "dev" ]; buildInputs = lib.optional stdenv.hostPlatform.isWindows windows.pthreads; makeFlags = [ "prefix=$(out)" "CC=${stdenv.cc.targetPrefix}cc" "AR=${stdenv.cc.targetPrefix}ar" ] ++ lib.optional stdenv.isDarwin "LDFLAGS=-Wl,-install_name,$(out)/lib/liblmdb.so" ++ lib.optionals stdenv.hostPlatform.isWindows [ "SOEXT=.dll" "BINEXT=.exe" ]; doCheck = true; checkTarget = "test"; postInstall = '' moveToOutput bin "$bin" '' # add lmdb.pc (dynamic only) + '' mkdir -p "$dev/lib/pkgconfig" cat > "$dev/lib/pkgconfig/lmdb.pc" <