diff --git a/pkgs/development/libraries/lmdb/bin-ext.patch b/pkgs/development/libraries/lmdb/bin-ext.patch new file mode 100644 index 00000000000..2d5af99772c --- /dev/null +++ b/pkgs/development/libraries/lmdb/bin-ext.patch @@ -0,0 +1,21 @@ +diff --git a/libraries/liblmdb/Makefile b/libraries/liblmdb/Makefile +index 612484e..2e6b562 100644 +--- a/libraries/liblmdb/Makefile ++++ b/libraries/liblmdb/Makefile +@@ -27,6 +27,7 @@ CFLAGS = $(THREADS) $(OPT) $(W) $(XCFLAGS) + LDLIBS = + SOLIBS = + SOEXT = .so ++BINEXT = + prefix = /usr/local + exec_prefix = $(prefix) + bindir = $(exec_prefix)/bin +@@ -49,7 +50,7 @@ install: $(ILIBS) $(IPROGS) $(IHDRS) + mkdir -p $(DESTDIR)$(libdir) + mkdir -p $(DESTDIR)$(includedir) + mkdir -p $(DESTDIR)$(mandir)/man1 +- for f in $(IPROGS); do cp $$f $(DESTDIR)$(bindir); done ++ for f in $(IPROGS); do cp $$f$(BINEXT) $(DESTDIR)$(bindir); done + for f in $(ILIBS); do cp $$f $(DESTDIR)$(libdir); done + for f in $(IHDRS); do cp $$f $(DESTDIR)$(includedir); done + for f in $(IDOCS); do cp $$f $(DESTDIR)$(mandir)/man1; done diff --git a/pkgs/development/libraries/lmdb/default.nix b/pkgs/development/libraries/lmdb/default.nix index 0a3515db262..a8b5da5b56d 100644 --- a/pkgs/development/libraries/lmdb/default.nix +++ b/pkgs/development/libraries/lmdb/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitLab }: +{ lib, stdenv, fetchFromGitLab, windows }: stdenv.mkDerivation rec { pname = "lmdb"; @@ -14,17 +14,20 @@ stdenv.mkDerivation rec { postUnpack = "sourceRoot=\${sourceRoot}/libraries/liblmdb"; - patches = [ ./hardcoded-compiler.patch ]; + patches = [ ./hardcoded-compiler.patch ./bin-ext.patch ]; patchFlags = [ "-p3" ]; 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.optional stdenv.isDarwin "LDFLAGS=-Wl,-install_name,$(out)/lib/liblmdb.so" + ++ lib.optionals stdenv.hostPlatform.isWindows [ "SOEXT=.dll" "BINEXT=.exe" ]; doCheck = true; checkTarget = "test";