diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2007-11-21 11:10:45 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2007-12-21 05:45:50 +0100 |
commit | 5256d93a458d0f653afa788bb8f8d894dd1a25b2 (patch) | |
tree | 8a618f3a269e57e59af73f77a71c58bbfc380865 /source4/build/smb_build/input.pm | |
parent | 6b62805ce7db000420752f56b0544d2aecc51833 (diff) | |
download | samba-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.pm | 49 |
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) { |