1 ###########################################################
2 ### SMB Build System ###
3 ### - create output for smb_build.h ###
5 ### Copyright (C) Stefan (metze) Metzmacher 2004 ###
6 ### Released under the GNU GPL ###
7 ###########################################################
9 sub _add_define_section($)
15 /* $DEFINE->{COMMENT} */
16 #define $DEFINE->{KEY} $DEFINE->{VAL}
22 sub _prepare_smb_build_h($)
28 # loop over all subsystems
30 foreach my $key (sort keys %{$CTX->{DEPEND}{SUBSYSTEMS}}) {
31 my $NAME = $CTX->{INPUT}{SUBSYSTEMS}{$key}{NAME};
38 $DEFINE->{COMMENT} = "SUBSYSTEM $NAME INIT";
39 $DEFINE->{KEY} = "static_init_$name";
40 $DEFINE->{VAL} = "do { \\\n";
41 foreach my $subkey (@{$CTX->{DEPEND}{SUBSYSTEMS}{$key}{STATIC_MODULES_LIST}}) {
42 $DEFINE->{VAL} .= "\t\t$subkey\_init(); \\\n";
44 $DEFINE->{VAL} .= "\t} while(0)";
46 push(@{$CTX->{OUTPUT}{SMB_BUILD_H}},$DEFINE);
53 foreach my $key (sort keys %{$CTX->{INPUT}{MODULES}}) {
54 next if ($CTX->{INPUT}{MODULES}{$key}{BUILD} ne "SHARED");
56 my $name = $CTX->{INPUT}{MODULES}{$key}{NAME};
59 $DEFINE->{COMMENT} = "$name is built shared";
60 $DEFINE->{KEY} = "$name\_init";
61 $DEFINE->{VAL} = "init_module";
63 push(@{$CTX->{OUTPUT}{SMB_BUILD_H}},$DEFINE);
67 # loop over all SMB_BUILD_H define sections
69 foreach my $key (@{$CTX->{OUTPUT}{SMB_BUILD_H}}) {
70 $output .= _add_define_section($key);
76 ###########################################################
77 # This function creates include/smb_build.h from the SMB_BUILD
80 # create_smb_build_h($SMB_BUILD_CTX)
82 # $SMB_BUILD_CTX - the global SMB_BUILD context
84 # $output - the resulting output buffer
85 sub create_smb_build_h($)
88 my $output = "/* autogenerated by config.smb_build.pl */\n";
90 $output .= _prepare_smb_build_h($CTX);
93 # TODO: check if directory include/ exists
96 open(SMB_BUILD_H,"> include/smb_build.h") || die ("Can't open include/smb_build.h\n");
98 print SMB_BUILD_H $output;
102 print "config.smb_build.pl: creating include/smb_build.h\n";