summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/Makefile1
-rw-r--r--source4/build/make/python.mk37
-rw-r--r--source4/build/smb_build/makefile.pm6
-rw-r--r--source4/scripting/python/config.mk27
4 files changed, 40 insertions, 31 deletions
diff --git a/source4/Makefile b/source4/Makefile
index 9d4a91d9be..6083ee35b5 100644
--- a/source4/Makefile
+++ b/source4/Makefile
@@ -39,6 +39,7 @@ ALL_PREDEP = proto
endif
include build/make/rules.mk
+include build/make/python.mk
include data.mk
include extra_cflags.txt
diff --git a/source4/build/make/python.mk b/source4/build/make/python.mk
new file mode 100644
index 0000000000..6f54cd6a44
--- /dev/null
+++ b/source4/build/make/python.mk
@@ -0,0 +1,37 @@
+pythonbuilddir = $(builddir)/bin/python
+
+# Install Python
+# Arguments: Module path, source location
+define python_module_template
+
+$$(pythonbuilddir)/$(1): $(2) ;
+ mkdir -p $$(@D)
+ cp $$< $$@
+
+installpython:: $$(pythonbuilddir)/$(1) ;
+ cp $$< $$(DESTDIR)$$(PYTHONDIR)/$(1)
+
+uninstallpython::
+ rm -f $$(DESTDIR)$$(PYTHONDIR)/$(1) ;
+
+pythonmods:: $$(pythonbuilddir)/$(1) ;
+
+endef
+
+# Swig extensions
+swig:: pythonmods
+
+.SUFFIXES: _wrap.c .i
+
+.i_wrap.c:
+ [ "$(SWIG)" == "no" ] || $(SWIG) -O -Wall -I$(srcdir)/scripting/swig -python -keyword $<
+
+realdistclean::
+ @echo "Removing SWIG output files"
+ # FIXME: Remove _wrap.c files
+
+pythonmods::
+
+clean::
+ @echo "Removing python modules"
+ @rm -rf $(pythonbuilddir)
diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm
index 04bef1e160..df34f070c7 100644
--- a/source4/build/smb_build/makefile.pm
+++ b/source4/build/smb_build/makefile.pm
@@ -128,7 +128,7 @@ sub SharedModule($$)
$sane_subsystem =~ s/^lib//;
if ($ctx->{TYPE} eq "PYTHON") {
- $self->output("PYTHON_DSOS += $ctx->{SHAREDDIR}/$ctx->{LIBRARY_REALNAME}\n");
+ $self->output("\$(call python_module_template," . basename($ctx->{NAME}) . ",$ctx->{SHAREDDIR}/$ctx->{LIBRARY_REALNAME})\n");
} else {
$self->output("PLUGINS += $ctx->{SHAREDDIR}/$ctx->{LIBRARY_REALNAME}\n");
$self->output("installplugins:: $ctx->{SHAREDDIR}/$ctx->{LIBRARY_REALNAME}\n");
@@ -295,9 +295,7 @@ sub PythonFiles($$)
my ($self,$ctx) = @_;
foreach (@{$ctx->{PYTHON_FILES}}) {
- my $target = "bin/python/".basename($_);
- $self->output("$target: \$(addprefix $ctx->{BASEDIR}/, $_)\n\n");
- $self->output("PYTHON_PYS += $target\n");
+ $self->output("\$(call python_module_template," . basename($_) . ",\$(addprefix $ctx->{BASEDIR}/, $_))\n");
}
}
diff --git a/source4/scripting/python/config.mk b/source4/scripting/python/config.mk
index 16cd301aad..cafbea6b6e 100644
--- a/source4/scripting/python/config.mk
+++ b/source4/scripting/python/config.mk
@@ -15,36 +15,9 @@ OBJ_FILES = uuidmodule.o
PRIVATE_DEPENDENCIES = LIBNDR LIBLDB SAMDB CREDENTIALS
SWIG_FILE = misc.i
-# Swig extensions
-swig:: pythonmods
-
-.SUFFIXES: _wrap.c .i
-
-.i_wrap.c:
- [ "$(SWIG)" == "no" ] || $(SWIG) -O -Wall -I$(srcdir)/scripting/swig -python -keyword $<
-
-realdistclean::
- @echo "Removing SWIG output files"
- @-rm -f bin/python/*
- # FIXME: Remove _wrap.c files
-
-pythonmods:: $(PYTHON_DSOS) $(PYTHON_PYS)
-
PYDOCTOR_MODULES=bin/python/ldb.py bin/python/auth.py bin/python/credentials.py bin/python/registry.py bin/python/tdb.py bin/python/security.py bin/python/events.py bin/python/net.py
pydoctor:: pythonmods
LD_LIBRARY_PATH=bin/shared PYTHONPATH=bin/python pydoctor --project-name=Samba --make-html --docformat=restructuredtext --add-package scripting/python/samba/ $(addprefix --add-module , $(PYDOCTOR_MODULES))
-bin/python/%.py:
- mkdir -p $(@D)
- cp $< $@
-
-installpython:: pythonmods
- @$(SHELL) $(srcdir)/script/installpython.sh \
- $(INSTALLPERMS) \
- $(DESTDIR)$(PYTHONDIR) \
- scripting/python bin/python
-clean::
- @echo "Removing python modules"
- @rm -f bin/python/*