about summary refs log tree commit diff
path: root/perl
diff options
context:
space:
mode:
Diffstat (limited to 'perl')
-rw-r--r--perl/Makefile.am38
-rw-r--r--perl/lib/Nix/Config.pm.in2
-rw-r--r--perl/lib/Nix/GeneratePatches.pm2
-rw-r--r--perl/lib/Nix/Store.xs4
-rw-r--r--perl/local.mk40
5 files changed, 46 insertions, 40 deletions
diff --git a/perl/Makefile.am b/perl/Makefile.am
deleted file mode 100644
index b8e60bc2dc2b..000000000000
--- a/perl/Makefile.am
+++ /dev/null
@@ -1,38 +0,0 @@
-PERL_MODULES = lib/Nix/Store.pm lib/Nix/Manifest.pm lib/Nix/GeneratePatches.pm lib/Nix/SSH.pm lib/Nix/CopyClosure.pm lib/Nix/Config.pm.in lib/Nix/Utils.pm lib/Nix/Crypto.pm
-
-all: $(PERL_MODULES:.in=)
-
-install-exec-local: $(PERL_MODULES:.in=) install-perl-xs
-	$(INSTALL) -d $(DESTDIR)$(perllibdir)/Nix
-	$(INSTALL_DATA) $(PERL_MODULES:.in=) $(DESTDIR)$(perllibdir)/Nix
-
-if PERL_BINDINGS
-install-perl-xs:
-	$(INSTALL) -d $(DESTDIR)$(perllibdir)/auto/Nix/Store
-	ln -sfn $(pkglibdir)/libNixStore$(dynlib_suffix) $(DESTDIR)$(perllibdir)/auto/Nix/Store/Store$(dynlib_suffix)
-
-# Awful hackery to get libtool to build Perl XS bindings.
-pkglib_LTLIBRARIES = libNixStore.la
-
-nodist_libNixStore_la_SOURCES = lib/Nix/Store.cc
-
-CLEANFILES = lib/Nix/Store.cc
-
-libNixStore_la_LIBADD = $(top_builddir)/src/libstore/libstore.la
-
-AM_CXXFLAGS = \
-  -I$(top_srcdir)/src -I$(top_srcdir)/src/libutil -I$(top_srcdir)/src/libstore \
-  -I$(shell $(perl) -e 'use Config; print $$Config{archlibexp};')/CORE \
-  -D_FILE_OFFSET_BITS=64
-
-lib/Nix/Store.cc: lib/Nix/Store.xs
-	$(INSTALL) -d lib/Nix
-	xsubpp $^ -output $@
-
-else
-install-perl-xs:
-endif
-
-EXTRA_DIST = $(PERL_MODULES) lib/Nix/Store.xs
-
-include ../substitute.mk
diff --git a/perl/lib/Nix/Config.pm.in b/perl/lib/Nix/Config.pm.in
index 4f1f38ddd3a9..e07d4c08f13f 100644
--- a/perl/lib/Nix/Config.pm.in
+++ b/perl/lib/Nix/Config.pm.in
@@ -1,6 +1,6 @@
 package Nix::Config;
 
-$version = "@version@";
+$version = "@PACKAGE_VERSION@";
 
 $binDir = $ENV{"NIX_BIN_DIR"} || "@bindir@";
 $libexecDir = $ENV{"NIX_LIBEXEC_DIR"} || "@libexecdir@";
diff --git a/perl/lib/Nix/GeneratePatches.pm b/perl/lib/Nix/GeneratePatches.pm
index f9d83c49c856..612c8a3a15ba 100644
--- a/perl/lib/Nix/GeneratePatches.pm
+++ b/perl/lib/Nix/GeneratePatches.pm
@@ -225,7 +225,7 @@ sub generatePatches {
             }
         
             my $time1 = time();
-            my $res = system("ulimit -t $timeLimit; $Nix::Config::libexecDir/bsdiff $tmpDir/A $tmpDir/B $tmpDir/DIFF");
+            my $res = system("ulimit -t $timeLimit; $Nix::Config::libexecDir/nix/bsdiff $tmpDir/A $tmpDir/B $tmpDir/DIFF");
             my $time2 = time();
             if ($res) {
                 warn "binary diff computation aborted after ", $time2 - $time1, " seconds\n";
diff --git a/perl/lib/Nix/Store.xs b/perl/lib/Nix/Store.xs
index d46af57e64f6..07ccebe62f51 100644
--- a/perl/lib/Nix/Store.xs
+++ b/perl/lib/Nix/Store.xs
@@ -35,6 +35,10 @@ MODULE = Nix::Store PACKAGE = Nix::Store
 PROTOTYPES: ENABLE
 
 
+#undef dNOOP // Hack to work around "error: declaration of 'Perl___notused' has a different language linkage" error message on clang.
+#define dNOOP
+
+
 void init()
     CODE:
         doInit();
diff --git a/perl/local.mk b/perl/local.mk
new file mode 100644
index 000000000000..74c054e7133f
--- /dev/null
+++ b/perl/local.mk
@@ -0,0 +1,40 @@
+nix_perl_sources := \
+  $(d)/lib/Nix/Store.pm \
+  $(d)/lib/Nix/Manifest.pm \
+  $(d)/lib/Nix/GeneratePatches.pm \
+  $(d)/lib/Nix/SSH.pm \
+  $(d)/lib/Nix/CopyClosure.pm \
+  $(d)/lib/Nix/Config.pm.in \
+  $(d)/lib/Nix/Utils.pm \
+  $(d)/lib/Nix/Crypto.pm
+
+nix_perl_modules := $(nix_perl_sources:.in=)
+
+$(foreach x, $(nix_perl_modules), $(eval $(call install-data-in, $(x), $(perllibdir)/Nix)))
+
+ifeq ($(perlbindings), yes)
+
+  $(d)/lib/Nix/Store.cc: $(d)/lib/Nix/Store.xs
+	$(trace-gen) xsubpp $^ -output $@
+
+  libraries += Store
+
+  Store_DIR := $(d)/lib/Nix
+
+  Store_SOURCES := $(Store_DIR)/Store.cc
+
+  Store_LIBS = libstore
+
+  Store_CXXFLAGS = \
+    -I$(shell $(perl) -e 'use Config; print $$Config{archlibexp};')/CORE \
+    -D_FILE_OFFSET_BITS=64
+
+  Store_ALLOW_UNDEFINED = 1
+
+  Store_FORCE_INSTALL = 1
+
+  Store_INSTALL_DIR = $(perllibdir)/auto/Nix/Store
+
+endif
+
+clean-files += $(d)/lib/Nix/Config.pm $(d)/lib/Nix/Store.cc