diff options
Diffstat (limited to 'source4/build/smb_build/smb_build_h.pl')
-rw-r--r-- | source4/build/smb_build/smb_build_h.pl | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/source4/build/smb_build/smb_build_h.pl b/source4/build/smb_build/smb_build_h.pl index 59e96574bd..cd6cb29525 100644 --- a/source4/build/smb_build/smb_build_h.pl +++ b/source4/build/smb_build/smb_build_h.pl @@ -36,15 +36,40 @@ sub _prepare_smb_build_h($) # Static modules # $DEFINE->{COMMENT} = "SUBSYSTEM $NAME INIT"; - $DEFINE->{KEY} = "static_init_$name"; + $DEFINE->{KEY} = $name . "_init_static_modules"; $DEFINE->{VAL} = "do { \\\n"; - foreach my $subkey (@{$CTX->{DEPEND}{SUBSYSTEMS}{$key}{STATIC_MODULES_LIST}}) { - $DEFINE->{VAL} .= "\t\t$subkey\_init(); \\\n"; + foreach my $subkey (@{$CTX->{DEPEND}{SUBSYSTEMS}{$key}{INIT_FUNCTIONS}}) { + $DEFINE->{VAL} .= "\t\textern NTSTATUS $subkey(void); \\\n"; + } + + foreach my $subkey (@{$CTX->{DEPEND}{SUBSYSTEMS}{$key}{INIT_FUNCTIONS}}) { + $DEFINE->{VAL} .= "\t\t$subkey(); \\\n"; } $DEFINE->{VAL} .= "\t} while(0)"; push(@{$CTX->{OUTPUT}{SMB_BUILD_H}},$DEFINE); + } + # + # loop over all binaries + # + foreach my $key (sort keys %{$CTX->{DEPEND}{BINARIES}}) { + my $NAME = $CTX->{INPUT}{BINARIES}{$key}{NAME}; + my $DEFINE = (); + my $name = lc($NAME); + + # + # Static modules + # + $DEFINE->{COMMENT} = "BINARY $NAME INIT"; + $DEFINE->{KEY} = $name . "_init_subsystems"; + $DEFINE->{VAL} = "do { \\\n"; + foreach my $subkey (@{$CTX->{DEPEND}{BINARIES}{$key}{INIT_FUNCTIONS}}) { + $DEFINE->{VAL} .= "\t\tif (NT_STATUS_IS_ERR($subkey())) exit(1); \\\n"; + } + $DEFINE->{VAL} .= "\t} while(0)"; + + push(@{$CTX->{OUTPUT}{SMB_BUILD_H}},$DEFINE); } # @@ -54,10 +79,13 @@ sub _prepare_smb_build_h($) next if ($CTX->{INPUT}{MODULES}{$key}{BUILD} ne "SHARED"); my $name = $CTX->{INPUT}{MODULES}{$key}{NAME}; + my $func = $CTX->{INPUT}{MODULES}{$key}{INIT_FUNCTION}; + next if $func eq ""; + my $DEFINE = (); $DEFINE->{COMMENT} = "$name is built shared"; - $DEFINE->{KEY} = "$name\_init"; + $DEFINE->{KEY} = $func; $DEFINE->{VAL} = "init_module"; push(@{$CTX->{OUTPUT}{SMB_BUILD_H}},$DEFINE); |