summaryrefslogtreecommitdiff
path: root/source4/build/smb_build/input.pm
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2007-11-21 11:10:45 +0100
committerStefan Metzmacher <metze@samba.org>2007-12-21 05:45:50 +0100
commit5256d93a458d0f653afa788bb8f8d894dd1a25b2 (patch)
tree8a618f3a269e57e59af73f77a71c58bbfc380865 /source4/build/smb_build/input.pm
parent6b62805ce7db000420752f56b0544d2aecc51833 (diff)
downloadsamba-5256d93a458d0f653afa788bb8f8d894dd1a25b2.tar.gz
samba-5256d93a458d0f653afa788bb8f8d894dd1a25b2.tar.bz2
samba-5256d93a458d0f653afa788bb8f8d894dd1a25b2.zip
r26067: Merge improvements building Python modules.
(This used to be commit 11a2cbbac51781e72ae1288c8e30f175526b01a8)
Diffstat (limited to 'source4/build/smb_build/input.pm')
-rw-r--r--source4/build/smb_build/input.pm49
1 files changed, 43 insertions, 6 deletions
diff --git a/source4/build/smb_build/input.pm b/source4/build/smb_build/input.pm
index ca61499fd4..2d1aaedb13 100644
--- a/source4/build/smb_build/input.pm
+++ b/source4/build/smb_build/input.pm
@@ -8,6 +8,7 @@
use smb_build::config;
use strict;
package smb_build::input;
+use File::Basename;
my $srcdir = $config::config{srcdir};
@@ -115,7 +116,9 @@ sub check_library($$$)
return if ($lib->{ENABLE} ne "YES");
- $lib->{OUTPUT_TYPE} = $default_ot;
+ unless (defined($lib->{OUTPUT_TYPE})) {
+ $lib->{OUTPUT_TYPE} = $default_ot;
+ }
if (defined($lib->{VERSION}) and not defined($lib->{SO_VERSION})) {
print "$lib->{NAME}: Please specify SO_VERSION when specifying VERSION\n";
@@ -131,10 +134,34 @@ sub check_library($$$)
$lib->{INIT_FUNCTION_TYPE} = "NTSTATUS (*) (void)";
}
- $lib->{INSTALLDIR} = "LIBDIR";
+ unless(defined($lib->{INSTALLDIR})) {
+ $lib->{INSTALLDIR} = "LIBDIR";
+ }
add_libreplace($lib);
}
+sub check_python($$)
+{
+ my ($INPUT, $python) = @_;
+
+ $python->{INSTALLDIR} = "PYTHONDIR";
+ push (@{$python->{PUBLIC_DEPENDENCIES}}, "LIBPYTHON");
+ if (defined($python->{SWIG_FILE})) {
+ my $dirname = dirname($python->{SWIG_FILE});
+ my $basename = basename($python->{SWIG_FILE}, ".i");
+
+ $python->{OBJ_FILES} = ["$dirname/$basename\_wrap.o"];
+ $python->{LIBRARY_REALNAME} = "_$basename.\$(SHLIBEXT)";
+ $python->{PYTHON_FILES} = ["$dirname/$basename.py"];
+ } else {
+ my $basename = $python->{NAME};
+ $basename =~ s/^python_//g;
+ $python->{LIBRARY_REALNAME} = "$basename.\$(SHLIBEXT)";
+ }
+
+ check_library($INPUT, $python, ["SHARED_LIBRARY"]);
+}
+
sub check_binary($$)
{
my ($INPUT, $bin) = @_;
@@ -235,10 +262,20 @@ sub check($$$$$)
$part->{LINK_FLAGS} = [];
$part->{FULL_OBJ_LIST} = ["\$($part->{TYPE}_$part->{NAME}_OBJ_LIST)"];
- check_subsystem($INPUT, $part, $subsys_ot) if ($part->{TYPE} eq "SUBSYSTEM");
- check_module($INPUT, $part, $module_ot) if ($part->{TYPE} eq "MODULE");
- check_library($INPUT, $part, $lib_ot) if ($part->{TYPE} eq "LIBRARY");
- check_binary($INPUT, $part) if ($part->{TYPE} eq "BINARY");
+ if ($part->{TYPE} eq "SUBSYSTEM") {
+ check_subsystem($INPUT, $part, $subsys_ot);
+ } elsif ($part->{TYPE} eq "MODULE") {
+ check_module($INPUT, $part, $module_ot);
+ } elsif ($part->{TYPE} eq "LIBRARY") {
+ check_library($INPUT, $part, $lib_ot);
+ } elsif ($part->{TYPE} eq "BINARY") {
+ check_binary($INPUT, $part);
+ } elsif ($part->{TYPE} eq "PYTHON") {
+ check_python($INPUT, $part);
+ } elsif ($part->{TYPE} eq "EXT_LIB") {
+ } else {
+ die("Unknown type $part->{TYPE}");
+ }
}
foreach my $part (values %$INPUT) {