summaryrefslogtreecommitdiff
path: root/source4/build/smb_build/depend.pm
diff options
context:
space:
mode:
Diffstat (limited to 'source4/build/smb_build/depend.pm')
-rw-r--r--source4/build/smb_build/depend.pm461
1 files changed, 0 insertions, 461 deletions
diff --git a/source4/build/smb_build/depend.pm b/source4/build/smb_build/depend.pm
deleted file mode 100644
index 2be9c4bdf2..0000000000
--- a/source4/build/smb_build/depend.pm
+++ /dev/null
@@ -1,461 +0,0 @@
-###########################################################
-### SMB Build System ###
-### - the dependency calculation functions ###
-### ###
-### Copyright (C) Stefan (metze) Metzmacher 2004 ###
-### Released under the GNU GPL ###
-###########################################################
-
-package depend;
-use strict;
-
-###########################################################
-# This function resolves the dependencies
-# for the SUBSYSTEMS_LIST
-# @SUBSYSTEMS_LIST = _do_calc_subsystem_list($SMB_BUILD_CTX, \@SUBSYSTEMS_LIST);
-#
-# $SMB_BUILD_CTX - the global SMB_BUILD context
-#
-# \@SUBSYSTEMS_LIST - the reference to the SUBSYSTEMS_LIST
-#
-# @SUBSYSTEMS_LIST - the expanded resulting SUBSYSTEMS_LIST
-#
-sub _do_calc_subsystem_list($$)
-{
- my $CTX = shift;
- my $subsys_list = shift;
- my @SUBSYSTEMS_LIST = @$subsys_list;
-
- #
- # now try to resolve the dependencies for the library
- #
- my $i = 0;
- my $count = $#SUBSYSTEMS_LIST;
- for (;$i<=$count;$i++) {
- #
- # see if the current subsystem depends on other not listed subsystems
- #
- foreach my $elem (@{$CTX->{DEPEND}{SUBSYSTEMS}{$SUBSYSTEMS_LIST[$i]}{SUBSYSTEMS_LIST}}) {
- my $seen = 0;
- #
- # check if it's already in the list
- #
- foreach my $elem2 (@SUBSYSTEMS_LIST) {
- #
- # check of the names matche
- #
- if ($elem eq $elem2) {
- #
- # mark it as already in the list
- #
- $seen = 1;
- last;
- }
- }
-
- #
- # if it's already there skip it
- #
- if ($seen == 1) {
- next;
- }
-
- #
- # if it's not there add it
- # and $count++
- #
- push(@SUBSYSTEMS_LIST,$elem);
- $count++;
- }
- }
-
- return @SUBSYSTEMS_LIST;
-}
-
-###########################################################
-# This function resolves the dependencies
-# for the LIBRARIES_LIST based on the SUBSYSTEMS_LIST
-# @LIBRARIES_LIST = _do_calc_libraries_list($SMB_BUILD_CTX, \@SUBSYSTEMS_LIST, \@LIBRARIES_LIST);
-#
-# $SMB_BUILD_CTX - the global SMB_BUILD context
-#
-# \@SUBSYSTEMS_LIST - the reference to the SUBSYSTEMS_LIST
-#
-# \@LIBRARIES_LIST - the reference to the LIBRARIES_LIST
-#
-# @LIBRARIES_LIST - the expanded resulting LIBRARIES_LIST
-#
-sub _do_calc_libraries_list($$$)
-{
- my $CTX = shift;
- my $subsys_list = shift;
- my @SUBSYSTEMS_LIST = @$subsys_list;
- my $libs_list = shift;
- my @LIBRARIES_LIST = @$libs_list;
-
- #
- # add the LIBARARIES of each subsysetm in the @SUBSYSTEMS_LIST
- #
- foreach my $elem (@SUBSYSTEMS_LIST) {
- #
- # see if the subsystem depends on a not listed LIBRARY
- #
- foreach my $elem1 (@{$CTX->{DEPEND}{SUBSYSTEMS}{$elem}{LIBRARIES_LIST}}) {
- my $seen = 0;
- #
- # check if it's already in the list
- #
- foreach my $elem2 (@LIBRARIES_LIST) {
- #
- # check of the names matche
- #
- if ($elem1 eq $elem2) {
- #
- # mark it as already in the list
- #
- $seen = 1;
- last;
- }
- }
-
- #
- # if it's already there skip it
- #
- if ($seen == 1) {
- next;
- }
-
- #
- # if it's not there add it
- #
- push(@LIBRARIES_LIST,$elem1);
- }
- }
-
- return @LIBRARIES_LIST;
-}
-
-###########################################################
-# This function creates the dependencies for subsystems
-# _do_depend_subsystems($SMB_BUILD_CTX)
-#
-# $SMB_BUILD_CTX - the global SMB_BUILD context
-sub _do_depend_subsystems($)
-{
- my $CTX = shift;
-
- #
- # loop on all subsystems
- #
- foreach my $key (sort keys %{$CTX->{INPUT}{SUBSYSTEMS}}) {
- my $name = $CTX->{INPUT}{SUBSYSTEMS}{$key}{NAME};
- my @STATIC_MODULES_LIST = ();
- my @INIT_FUNCTIONS = ();
-
- #
- # skip when the subsystem was disabled
- #
- if ($CTX->{INPUT}{SUBSYSTEMS}{$key}{ENABLE} ne "YES" ) {
- next;
- }
-
- #
- # create the subsystems used OBJ_LIST
- #
- my @OBJ_LIST = ();
- push (@OBJ_LIST, @{$CTX->{INPUT}{SUBSYSTEMS}{$key}{INIT_OBJ_FILES}});
- push (@OBJ_LIST, @{$CTX->{INPUT}{SUBSYSTEMS}{$key}{ADD_OBJ_FILES}});
-
- #
- # create the subsystems used SUBSYSTEMS_LIST
- #
- my @SUBSYSTEMS_LIST = ();
- push (@SUBSYSTEMS_LIST, (@{$CTX->{INPUT}{SUBSYSTEMS}{$key}{REQUIRED_SUBSYSTEMS}}));
- #
- # create the subsystems used LIBRARIES_LIST
- #
- my @LIBRARIES_LIST = ();
- push (@LIBRARIES_LIST, @{$CTX->{INPUT}{SUBSYSTEMS}{$key}{REQUIRED_LIBRARIES}});
-
- #
- # now collect the info from the subsystems static modules
- #
- foreach my $subkey (sort keys %{$CTX->{INPUT}{MODULES}}) {
- #
- # we only want STATIC modules
- #
- if ($CTX->{INPUT}{MODULES}{$subkey}{BUILD} ne "STATIC") {
- next;
- }
-
- #
- # we only want modules which belong to the current subsystem
- #
- if ($CTX->{INPUT}{MODULES}{$subkey}{SUBSYSTEM} ne $name) {
- next;
- }
-
- #
- # add it to the STATIC_MODULES_LIST
- #
- push(@STATIC_MODULES_LIST,$subkey);
- push (@INIT_FUNCTIONS, $CTX->{INPUT}{MODULES}{$subkey}{INIT_FUNCTION}) if $CTX->{INPUT}{MODULES}{$subkey}{INIT_FUNCTION} ne "";
-
- #
- # add OBJS of static modules to the subsystems used OBJ_LIST
- #
- push (@OBJ_LIST, (@{$CTX->{INPUT}{MODULES}{$subkey}{INIT_OBJ_FILES}}));
- push (@OBJ_LIST, (@{$CTX->{INPUT}{MODULES}{$subkey}{ADD_OBJ_FILES}}));
-
- #
- # add SUBSYSTEMS of static modules to the subsystems used SUBSYSTEMS_LIST
- #
- push (@SUBSYSTEMS_LIST, (@{$CTX->{INPUT}{MODULES}{$subkey}{REQUIRED_SUBSYSTEMS}}));
-
- #
- # add LIBRARIES of static modules to the subsystems used LIBRARIES_LIST
- #
- push (@LIBRARIES_LIST, (@{$CTX->{INPUT}{MODULES}{$subkey}{REQUIRED_LIBRARIES}}));
- }
-
- #
- # set the lists
- #
- @{$CTX->{DEPEND}{SUBSYSTEMS}{$key}{INIT_FUNCTIONS}} = @INIT_FUNCTIONS;
- @{$CTX->{DEPEND}{SUBSYSTEMS}{$key}{OBJ_LIST}} = @OBJ_LIST;
- @{$CTX->{DEPEND}{SUBSYSTEMS}{$key}{STATIC_MODULES_LIST}} = @STATIC_MODULES_LIST;
- @{$CTX->{DEPEND}{SUBSYSTEMS}{$key}{SUBSYSTEMS_LIST}} = @SUBSYSTEMS_LIST;
- @{$CTX->{DEPEND}{SUBSYSTEMS}{$key}{LIBRARIES_LIST}} = @LIBRARIES_LIST;
- }
-
- return;
-}
-
-###########################################################
-# This function creates the dependencies for ext libs
-# _do_depend_ext_libs($SMB_BUILD_CTX)
-#
-# $SMB_BUILD_CTX - the global SMB_BUILD context
-sub _do_depend_ext_libs($)
-{
- my $CTX = shift;
-
- #
- # loop over all ext libs
- #
- foreach my $key (sort keys %{$CTX->{INPUT}{EXT_LIBS}}) {
- my $name = $CTX->{INPUT}{EXT_LIBS}{$key}{NAME};
-
- #
- # if it's not a shared module skip it
- #
- if ($CTX->{INPUT}{EXT_LIBS}{$key}{ENABLE} ne "YES") {
- next;
- }
-
- #
- # set the lists
- #
- $CTX->{DEPEND}{EXT_LIBS}{$key}{NAME} = $name;
- @{$CTX->{DEPEND}{EXT_LIBS}{$key}{LIBS}} = @{$CTX->{INPUT}{EXT_LIBS}{$key}{LIBS}};
- @{$CTX->{DEPEND}{EXT_LIBS}{$key}{CFLAGS}} = @{$CTX->{INPUT}{EXT_LIBS}{$key}{CFLAGS}};
- @{$CTX->{DEPEND}{EXT_LIBS}{$key}{CPPFLAGS}} = @{$CTX->{INPUT}{EXT_LIBS}{$key}{CPPFLAGS}};
- @{$CTX->{DEPEND}{EXT_LIBS}{$key}{LDFLAGS}} = @{$CTX->{INPUT}{EXT_LIBS}{$key}{LDFLAGS}};
- }
-
- return;
-}
-
-###########################################################
-# This function creates the dependencies for shared modules
-# _do_depend_shared_modules($SMB_BUILD_CTX)
-#
-# $SMB_BUILD_CTX - the global SMB_BUILD context
-sub _do_depend_shared_modules($)
-{
- my $CTX = shift;
-
- #
- # loop over all shared modules
- #
- foreach my $key (sort keys %{$CTX->{INPUT}{MODULES}}) {
- my $name = $CTX->{INPUT}{MODULES}{$key}{NAME};
-
- #
- # if it's not a shared module skip it
- #
- if ($CTX->{INPUT}{MODULES}{$key}{BUILD} ne "SHARED" ) {
- next;
- }
-
- #
- # create the shared modules used SUBSYSTEMS_LIST
- #
- my @SUBSYSTEMS_LIST = ();
- push (@SUBSYSTEMS_LIST, (@{$CTX->{INPUT}{MODULES}{$key}{REQUIRED_SUBSYSTEMS}}));
-
- #
- # now try to resolve the dependencies for the shared module
- #
- @SUBSYSTEMS_LIST = _do_calc_subsystem_list($CTX, \@SUBSYSTEMS_LIST);
-
- #
- # create the shared modules used LIBRARIES_LIST
- #
- my @LIBRARIES_LIST = ();
- push (@LIBRARIES_LIST, @{$CTX->{INPUT}{MODULES}{$key}{REQUIRED_LIBRARIES}});
-
- #
- # add the LIBARARIES of each subsysetm in the @SUBSYSTEMS_LIST
- #
- @LIBRARIES_LIST = _do_calc_libraries_list($CTX, \@SUBSYSTEMS_LIST, \@LIBRARIES_LIST);
-
- #
- # set the lists
- #
- @{$CTX->{DEPEND}{SHARED_MODULES}{$key}{SUBSYSTEMS_LIST}} = @SUBSYSTEMS_LIST;
- @{$CTX->{DEPEND}{SHARED_MODULES}{$key}{LIBRARIES_LIST}} = @LIBRARIES_LIST;
- }
-
- return;
-}
-
-###########################################################
-# This function creates the dependencies for libraries
-# _do_depend_libraries($SMB_BUILD_CTX)
-#
-# $SMB_BUILD_CTX - the global SMB_BUILD context
-sub _do_depend_libraries($)
-{
- my $CTX = shift;
-
- #
- # loop over all libraries
- #
- foreach my $key (sort keys %{$CTX->{INPUT}{LIBRARIES}}) {
- my $name = $CTX->{INPUT}{LIBRARIES}{$key}{NAME};
-
- #
- # if it's not a library skip it
- #
- if ($CTX->{INPUT}{LIBRARIES}{$key}{ENABLE} ne "YES" ) {
- next;
- }
-
- #
- # create the libraries used SUBSYSTEMS_LIST
- #
- my @SUBSYSTEMS_LIST = ();
- push (@SUBSYSTEMS_LIST, @{$CTX->{INPUT}{LIBRARIES}{$key}{REQUIRED_SUBSYSTEMS}});
-
- #
- # now try to resolve the dependencies for the library
- #
- @SUBSYSTEMS_LIST = _do_calc_subsystem_list($CTX, \@SUBSYSTEMS_LIST);
-
- #
- # create the libraries used LIBRARIES_LIST
- #
- my @LIBRARIES_LIST = ();
- push (@LIBRARIES_LIST, @{$CTX->{INPUT}{LIBRARIES}{$key}{REQUIRED_LIBRARIES}});
-
- #
- # add the LIBARARIES of each subsysetm in the @SUBSYSTEMS_LIST
- #
- @LIBRARIES_LIST = _do_calc_libraries_list($CTX, \@SUBSYSTEMS_LIST, \@LIBRARIES_LIST);
-
- #
- # set the lists
- #
- @{$CTX->{DEPEND}{LIBRARIES}{$key}{SUBSYSTEMS_LIST}} = @SUBSYSTEMS_LIST;
- @{$CTX->{DEPEND}{LIBRARIES}{$key}{LIBRARIES_LIST}} = @LIBRARIES_LIST;
- }
-
- return;
-}
-
-###########################################################
-# This function creates the dependencies for binaries
-# _do_depend_binaries($SMB_BUILD_CTX)
-#
-# $SMB_BUILD_CTX - the global SMB_BUILD context
-sub _do_depend_binaries($)
-{
- my $CTX = shift;
-
- #
- # loop over all binaries
- #
- foreach my $key (sort keys %{$CTX->{INPUT}{BINARIES}}) {
- my $name = $CTX->{INPUT}{BINARIES}{$key}{NAME};
-
- #
- # skip when the binary was disabled
- #
- if ($CTX->{INPUT}{BINARIES}{$key}{ENABLE} ne "YES" ) {
- next;
- }
-
- #
- # create the binaries used SUBSYSTEMS_LIST
- #
- my @SUBSYSTEMS_LIST = ();
- push (@SUBSYSTEMS_LIST, @{$CTX->{INPUT}{BINARIES}{$key}{REQUIRED_SUBSYSTEMS}});
-
- #
- # now try to resolve the dependencies for the binary
- #
- @SUBSYSTEMS_LIST = _do_calc_subsystem_list($CTX, \@SUBSYSTEMS_LIST);
-
- my @INIT_FUNCTIONS = ();
-
- foreach my $subkey (@SUBSYSTEMS_LIST)
- {
- push (@INIT_FUNCTIONS, $CTX->{INPUT}{SUBSYSTEMS}{$subkey}{INIT_FUNCTION}) if defined ($CTX->{INPUT}{SUBSYSTEMS}{$subkey}{INIT_FUNCTION}) and $CTX->{INPUT}{SUBSYSTEMS}{$subkey}{INIT_FUNCTION} ne "";
- }
-
- #
- # create the binaries used LIBRARIES_LIST
- #
- my @LIBRARIES_LIST = ();
- push (@LIBRARIES_LIST, @{$CTX->{INPUT}{BINARIES}{$key}{REQUIRED_LIBRARIES}});
-
- #
- # add the LIBARARIES of each subsysetm in the @SUBSYSTEMS_LIST
- #
- @LIBRARIES_LIST = _do_calc_libraries_list($CTX, \@SUBSYSTEMS_LIST, \@LIBRARIES_LIST);
-
- #
- # set the lists
- #
- @{$CTX->{DEPEND}{BINARIES}{$key}{SUBSYSTEMS_LIST}} = @SUBSYSTEMS_LIST;
- @{$CTX->{DEPEND}{BINARIES}{$key}{LIBRARIES_LIST}} = @LIBRARIES_LIST;
- @{$CTX->{DEPEND}{BINARIES}{$key}{INIT_FUNCTIONS}} = @INIT_FUNCTIONS;
- }
-
- return;
-}
-
-###########################################################
-# This function creates the dependency tree from the SMB_BUILD
-# context
-# create_depend($SMB_BUILD_CTX)
-#
-# $SMB_BUILD_CTX - the global SMB_BUILD context
-sub create_depend($)
-{
- my $CTX = shift;
-
- _do_depend_ext_libs($CTX);
-
- _do_depend_subsystems($CTX);
-
- _do_depend_shared_modules($CTX);
-
- _do_depend_libraries($CTX);
-
- _do_depend_binaries($CTX);
-
- return;
-}
-1;