r3726: More simplifications/fixes in the build system
authorJelmer Vernooij <jelmer@samba.org>
Sat, 13 Nov 2004 18:20:33 +0000 (18:20 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:05:47 +0000 (13:05 -0500)
source/build/m4/rewrite.m4
source/build/smb_build/config_mk.pm
source/build/smb_build/core.m4
source/build/smb_build/depend.pm
source/build/smb_build/main.pm
source/build/smb_build/output.pm
source/build/smb_build/public.m4

index 752199e41d487122bd6dac0b56f031ba1caf3378..b0c694b1a0084cf8dc6c42c38864d1e252c21969 100644 (file)
@@ -662,14 +662,6 @@ if test $ac_cv_shlib_works = no; then
 fi
 fi
 
-SMB_INFO_BUILD_ENV="$SMB_INFO_BUILD_ENV
-#############################################
-# Start Tell the Linker to export all symbols
-@{\$SMB_BUILD_CTX->{BUILD_ENV}{LD}{DYNEXP}} = input::str2array(\"$DYNEXP\");
-# End Tell the Linker to export all symbols
-#############################################
-"
-
 #
 # Check if the compiler supports the LL prefix on long long integers.
 # AIX needs this.
index f852e345ac472049e0371bcf81ebb01e5c415cbe..7b8fbd93c39424fe8602a2438ffb480fdd5b0156 100644 (file)
@@ -220,8 +220,8 @@ sub _fetch_array_from_config_mk($$$)
        my $filename = shift;
        my $section = shift;
        my $key = shift;
-       my @val = ();
        my $result;
+       my $val = "";
 
        $result = _get_parse_results($filename);
 
@@ -230,12 +230,12 @@ sub _fetch_array_from_config_mk($$$)
        }
 
        if (defined($result->{$section}{$key})) {
-               @val = input::str2array($result->{$section}{$key}{VAL});
+               $val = $result->{$section}{$key}{VAL};
        } elsif (defined($result->{DEFAULT}{$key})) {
-               @val = input::str2array($result->{DEFAULT}{$key}{VAL});
-       }       
+               $val = $result->{DEFAULT}{$key}{VAL};
+       } 
 
-       return @val;
+       return input::str2array($val);
 }
 
 ###########################################################
index 556c9feb16a1a5c567e812d4acf672d79adccd49..a317a0eea39e1f0e2d0ac6502ff55a113f40a74d 100644 (file)
@@ -22,7 +22,7 @@ AC_DEFUN([_SMB_BUILD_CORE],
 $PERL -I$srcdir/build/smb_build <<\_SMB_ACEOF
 use strict;
 
-my \$SMB_BUILD_CTX;
+my %INPUT;
 
 use main;
 
@@ -58,7 +58,7 @@ $SMB_INFO_BINARIES
 ## End Binaries
 #########################################
 
-smb_build_main(\$SMB_BUILD_CTX);
+smb_build_main(\%INPUT);
 
 _SMB_ACEOF
 
index 53ee5136decb75350b061103a567e18ccff25308..2be9c4bdf2b2f06e36b2633eb8f3effd7906c327 100644 (file)
@@ -411,8 +411,7 @@ sub _do_depend_binaries($)
 
                foreach my $subkey (@SUBSYSTEMS_LIST)
                {
-                       push (@INIT_FUNCTIONS, $CTX->{INPUT}{SUBSYSTEMS}{$subkey}{INIT_FUNCTION}) if $CTX->{INPUT}{SUBSYSTEMS}{$subkey}{INIT_FUNCTION} ne "";
-                       
+                       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 "";
                }
 
                #
index 98b61539c1347088ca0d2a7ddaa613194ebf9a31..a9e755dd6f48752cb85ec19d13688c813452a4aa 100644 (file)
@@ -18,19 +18,22 @@ use strict;
 
 sub smb_build_main($)
 {
-       our $SMB_BUILD_CTX = shift;
+       my $INPUT = shift;
+       my %SMB_BUILD_CTX = (
+               INPUT => $INPUT
+       );
 
-       input::check($SMB_BUILD_CTX);
+       input::check(\%SMB_BUILD_CTX);
        
-       depend::create_depend($SMB_BUILD_CTX);
+       depend::create_depend(\%SMB_BUILD_CTX);
 
-       output::create_output($SMB_BUILD_CTX);
+       output::create_output(\%SMB_BUILD_CTX);
 
-       makefile::create_makefile_in($SMB_BUILD_CTX);
+       makefile::create_makefile_in(\%SMB_BUILD_CTX);
 
-       smb_build_h::create_smb_build_h($SMB_BUILD_CTX);
+       smb_build_h::create_smb_build_h(\%SMB_BUILD_CTX);
 
-       dump::dump_ctx($SMB_BUILD_CTX);
+       dump::dump_ctx(\%SMB_BUILD_CTX);
 
 
        return 0;
index 0b82a2746b8e45159654c65ae503840172ac6e3a..85e060ddce7f391884e09392e06ff1bce86c988d 100644 (file)
@@ -216,9 +216,6 @@ sub _generate_binaries($)
                        push(@LINK_FLAGS,@{$CTX->{DEPEND}{EXT_LIBS}{$elem}{LDFLAGS}});
                }
 
-               # Export all symbols...
-               push(@LINK_FLAGS,@{$CTX->{BUILD_ENV}{LD}{DYNEXP}});
-
                #
                # set the lists
                #
index 9994876dc80b1ee1c99c8fba34ff8afcbcd2ac78..5ac560f0192b9ad830d083a4ab05029bf5e5f32e 100644 (file)
@@ -1,6 +1,8 @@
 dnl SMB Build System
 dnl ----------------
-dnl ----------------
+dnl Copyright (C) 2004 Stefan Metzmacher
+dnl Copyright (C) 2004 Jelmer Vernooij
+dnl Published under the GPL
 dnl
 dnl SMB_MODULE_DEFAULT(
 dnl            1:name,
@@ -174,6 +176,9 @@ dnl #######################################################
 dnl ### And now the implementation                     ###
 dnl #######################################################
 
+AC_DEFUN([STR2ARRAY], [@<:@ input::str2array(\"$1\") @:>@])
+
+
 dnl SMB_MODULE_DEFAULT(
 dnl            1:name,
 dnl            2:default_build
@@ -210,16 +215,20 @@ AC_DEFUN([SMB_MODULE],
 SMB_INFO_MODULES="$SMB_INFO_MODULES
 ###################################
 # Start MODULE $1
-\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{NAME} = \"$1\";
-\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{SUBSYSTEM} = \"$2\";
-\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{DEFAULT_BUILD} = \"$[SMB_MODULE_DEFAULT_][$1]\";
-@{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{INIT_OBJ_FILES}} = input::str2array(\"$4\");
-@{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{ADD_OBJ_FILES}} = input::str2array(\"$5\");
-@{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{REQUIRED_LIBRARIES}} = input::str2array(\"$6\");
-@{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{REQUIRED_SUBSYSTEMS}} = input::str2array(\"$7\");
-\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{INIT_FUNCTION} = \"\";
+
+\$INPUT{MODULES}{$1} = {
+         TYPE => "MODULE",
+         NAME => \"$1\",
+         SUBSYSTEM => \"$2\",
+         DEFAULT_BUILD => \"$[SMB_MODULE_DEFAULT_][$1]\",
+         INIT_OBJ_FILES => ][STR2ARRAY([$4])][,
+         ADD_OBJ_FILES => ][STR2ARRAY([$5])][,
+         REQUIRED_LIBRARIES => ][STR2ARRAY([$6])][,
+         REQUIRED_SUBSYSTEMS => ][STR2ARRAY([$7])][,
+         CHOSEN_BUILD => \"$[SMB_MODULE_][$1]\"
+};
+
 #
-\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{CHOSEN_BUILD} = \"$[SMB_MODULE_][$1]\";
 # End MODULE $1
 ###################################
 "
@@ -249,16 +258,17 @@ AC_DEFUN([SMB_MODULE_MK],
 SMB_INFO_MODULES="$SMB_INFO_MODULES
 ###################################
 # Start MODULE $1
-\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{NAME} = \"$1\";
-\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{SUBSYSTEM} = \"$2\";
-\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{DEFAULT_BUILD} = \"$[SMB_MODULE_DEFAULT_][$1]\";
-@{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{INIT_OBJ_FILES}} = config_mk::module_get_array(\"$4\", \"$1\", \"INIT_OBJ_FILES\");
-@{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{ADD_OBJ_FILES}} = config_mk::module_get_array(\"$4\", \"$1\", \"ADD_OBJ_FILES\");
-@{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{REQUIRED_LIBRARIES}} = config_mk::module_get_array(\"$4\", \"$1\", \"REQUIRED_LIBRARIES\");
-@{\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{REQUIRED_SUBSYSTEMS}} = config_mk::module_get_array(\"$4\", \"$1\", \"REQUIRED_SUBSYSTEMS\");
-\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{INIT_FUNCTION} = config_mk::module_get_var(\"$4\", \"$1\", \"INIT_FUNCTION\");
-#
-\$SMB_BUILD_CTX->{INPUT}{MODULES}{$1}{CHOSEN_BUILD} = \"$[SMB_MODULE_][$1]\";
+\$INPUT{MODULES}{$1} = {
+       NAME => \"$1\",
+       SUBSYSTEM => \"$2\",
+       DEFAULT_BUILD => \"$[SMB_MODULE_DEFAULT_][$1]\",
+       INIT_OBJ_FILES => @<:@ config_mk::module_get_array(\"$4\", \"$1\", \"INIT_OBJ_FILES\") @:>@,
+       ADD_OBJ_FILES => @<:@ config_mk::module_get_array(\"$4\", \"$1\", \"ADD_OBJ_FILES\") @:>@,
+       REQUIRED_LIBRARIES => @<:@ config_mk::module_get_array(\"$4\", \"$1\", \"REQUIRED_LIBRARIES\") @:>@,
+       REQUIRED_SUBSYSTEMS => @<:@ config_mk::module_get_array(\"$4\", \"$1\", \"REQUIRED_SUBSYSTEMS\") @:>@,
+       INIT_FUNCTION => config_mk::module_get_var(\"$4\", \"$1\", \"INIT_FUNCTION\"),
+       CHOSEN_BUILD => \"$[SMB_MODULE_][$1]\"
+};
 # End MODULE $1
 ###################################
 "
@@ -302,15 +312,15 @@ AC_DEFUN([SMB_SUBSYSTEM],
 SMB_INFO_SUBSYSTEMS="$SMB_INFO_SUBSYSTEMS
 ###################################
 # Start Subsystem $1
-\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{NAME} = \"$1\";
-@{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{INIT_OBJ_FILES}} = input::str2array(\"$2\");
-@{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{ADD_OBJ_FILES}} = input::str2array(\"$3\");
-\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{INIT_FUNCTION} = \"\";
-@{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{REQUIRED_LIBRARIES}} = input::str2array(\"$4\");
-@{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{REQUIRED_SUBSYSTEMS}} = input::str2array(\"$5\");
-#
-\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{ENABLE} = \"$[SMB_SUBSYSTEM_ENABLE_][$1]\";
-\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{NOPROTO} = \"$[SMB_SUBSYSTEM_NOPROTO_][$1]\";
+\$INPUT{SUBSYSTEMS}{$1} = {
+       NAME => \"$1\",
+       INIT_OBJ_FILES => ][STR2ARRAY([$2])][,
+       ADD_OBJ_FILES => ][STR2ARRAY([$3])][,
+       REQUIRED_LIBRARIES => ][STR2ARRAY([$4])][,
+       REQUIRED_SUBSYSTEMS => ][STR2ARRAY([$5])][,
+       ENABLE => \"$[SMB_SUBSYSTEM_ENABLE_][$1]\",
+       NOPROTO => \"$[SMB_SUBSYSTEM_NOPROTO_][$1]\"
+};
 # End Subsystem $1
 ###################################
 "
@@ -334,15 +344,16 @@ AC_DEFUN([SMB_SUBSYSTEM_MK],
 SMB_INFO_SUBSYSTEMS="$SMB_INFO_SUBSYSTEMS
 ###################################
 # Start Subsystem $1
-\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{NAME} = \"$1\";
-@{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{INIT_OBJ_FILES}} = config_mk::subsystem_get_array(\"$2\", \"$1\", \"INIT_OBJ_FILES\");
-@{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{ADD_OBJ_FILES}} = config_mk::subsystem_get_array(\"$2\", \"$1\", \"ADD_OBJ_FILES\");
-@{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{REQUIRED_LIBRARIES}} = config_mk::subsystem_get_array(\"$2\", \"$1\", \"REQUIRED_LIBRARIES\");
-@{\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{REQUIRED_SUBSYSTEMS}} = config_mk::subsystem_get_array(\"$2\", \"$1\", \"REQUIRED_SUBSYSTEMS\");
-\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{INIT_FUNCTION} = config_mk::subsystem_get_var(\"$2\", \"$1\", \"INIT_FUNCTION\");
-#
-\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{ENABLE} = \"$[SMB_SUBSYSTEM_ENABLE_][$1]\";
-\$SMB_BUILD_CTX->{INPUT}{SUBSYSTEMS}{$1}{NOPROTO} = \"$[SMB_SUBSYSTEM_NOPROTO_][$1]\";
+\$INPUT{SUBSYSTEMS}{$1} = {
+       NAME => \"$1\",
+       INIT_OBJ_FILES => @<:@ config_mk::subsystem_get_array(\"$2\", \"$1\", \"INIT_OBJ_FILES\") @:>@,
+       ADD_OBJ_FILES => @<:@ config_mk::subsystem_get_array(\"$2\", \"$1\", \"ADD_OBJ_FILES\") @:>@,
+       REQUIRED_LIBRARIES => @<:@ config_mk::subsystem_get_array(\"$2\", \"$1\", \"REQUIRED_LIBRARIES\") @:>@,
+       REQUIRED_SUBSYSTEMS => @<:@ config_mk::subsystem_get_array(\"$2\", \"$1\", \"REQUIRED_SUBSYSTEMS\") @:>@,
+       INIT_FUNCTION => config_mk::subsystem_get_var(\"$2\", \"$1\", \"INIT_FUNCTION\"),
+       ENABLE => \"$[SMB_SUBSYSTEM_ENABLE_][$1]\",
+       NOPROTO => \"$[SMB_SUBSYSTEM_NOPROTO_][$1]\"
+};
 # End Subsystem $1
 ###################################
 "
@@ -422,13 +433,14 @@ AC_DEFUN([SMB_EXT_LIB],
 SMB_INFO_EXT_LIBS="$SMB_INFO_EXT_LIBS
 ###################################
 # Start Ext Lib $1
-\$SMB_BUILD_CTX->{INPUT}{EXT_LIBS}{$1}{NAME} = \"$1\";
-@{\$SMB_BUILD_CTX->{INPUT}{EXT_LIBS}{$1}{LIBS}} = input::str2array(\"$2\");
-@{\$SMB_BUILD_CTX->{INPUT}{EXT_LIBS}{$1}{CFLAGS}} = input::str2array(\"$3\");
-@{\$SMB_BUILD_CTX->{INPUT}{EXT_LIBS}{$1}{CPPFLAGS}} = input::str2array(\"$4\");
-@{\$SMB_BUILD_CTX->{INPUT}{EXT_LIBS}{$1}{LDFLAGS}} = input::str2array(\"$5\");
-#
-\$SMB_BUILD_CTX->{INPUT}{EXT_LIBS}{$1}{ENABLE} = \"$[SMB_EXT_LIB_ENABLE_][$1]\";
+\$INPUT{EXT_LIBS}{$1} = {
+       NAME => \"$1\",
+       LIBS => ][STR2ARRAY([$2])][,
+       CFLAGS => ][STR2ARRAY([$3])][,
+       CPPFLAGS => ][STR2ARRAY([$4])][,
+       LDFLAGS => ][STR2ARRAY([$5])][,
+       ENABLE => \"$[SMB_EXT_LIB_ENABLE_][$1]\"
+};
 # End Ext Lib $1
 ###################################
 "
@@ -463,15 +475,16 @@ AC_DEFUN([SMB_LIBRARY],
 SMB_INFO_LIBRARIES="$SMB_INFO_LIBRARIES
 ###################################
 # Start Library $1
-\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{NAME} = \"$1\";
-\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{MAJOR_VERSION} = \"$2\";
-\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{MINOR_VERSION} = \"$3\";
-\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{RELEASE_VERSION} = \"$4\";
-@{\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{OBJ_FILES}} = input::str2array(\"$5\");
-@{\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{REQUIRED_LIBRARIES}} = input::str2array(\"$6\");
-@{\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{REQUIRED_SUBSYSTEMS}} = input::str2array(\"$7\");
-#
-\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{ENABLE} = \"$[SMB_LIBRARY_ENABLE_][$1]\";
+\$INPUT{LIBRARIES}{$1} = {
+       NAME => \"$1\",
+       MAJOR_VERSION => \"$2\",
+       MINOR_VERSION => \"$3\",
+       RELEASE_VERSION => \"$4\",
+       OBJ_FILES => ][STR2ARRAY([$5])][,
+       REQUIRED_LIBRARIES => ][STR2ARRAY([$6])][,
+       REQUIRED_SUBSYSTEMS => ][STR2ARRAY([$7])][,
+       ENABLE => \"$[SMB_LIBRARY_ENABLE_][$1]\"
+};
 # End Library $1
 ###################################
 "
@@ -491,15 +504,16 @@ AC_DEFUN([SMB_LIBRARY_MK],
 SMB_INFO_LIBRARIES="$SMB_INFO_LIBRARIES
 ###################################
 # Start Library $1
-\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{NAME} = \"$1\";
-\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{MAJOR_VERSION} = config_mk::library_get_var(\"$2\", \"$1\", \"MAJOR_VERSION\");
-\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{MINOR_VERSION} = config_mk::library_get_var(\"$2\", \"$1\", \"MINOR_VERSION\");
-\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{RELEASE_VERSION} = config_mk::library_get_var(\"$2\", \"$1\", \"RELEASE_VERSION\");
-@{\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{OBJ_FILES}} = config_mk::library_get_array(\"$2\", \"$1\", \"OBJ_FILES\");
-@{\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{REQUIRED_LIBRARIES}} = config_mk::library_get_array(\"$2\", \"$1\", \"REQUIRED_LIBRARIES\");
-@{\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{REQUIRED_SUBSYSTEMS}} = config_mk::library_get_array(\"$2\", \"$1\", \"REQUIRED_SUBSYSTEMS\");
-#
-\$SMB_BUILD_CTX->{INPUT}{LIBRARIES}{$1}{ENABLE} = \"$[SMB_LIBRARY_ENABLE_][$1]\";
+\$INPUT{LIBRARIES}{$1} = {
+       NAME => \"$1\",
+       MAJOR_VERSION => config_mk::library_get_var(\"$2\", \"$1\", \"MAJOR_VERSION\"),
+       MINOR_VERSION => config_mk::library_get_var(\"$2\", \"$1\", \"MINOR_VERSION\"),
+       RELEASE_VERSION => config_mk::library_get_var(\"$2\", \"$1\", \"RELEASE_VERSION\"),
+       OBJ_FILES => @<:@ config_mk::library_get_array(\"$2\", \"$1\", \"OBJ_FILES\") @:>@,
+       REQUIRED_LIBRARIES => @<:@ config_mk::library_get_array(\"$2\", \"$1\", \"REQUIRED_LIBRARIES\") @:>@,
+       REQUIRED_SUBSYSTEMS => @<:@ config_mk::library_get_array(\"$2\", \"$1\", \"REQUIRED_SUBSYSTEMS\") @:>@,
+       ENABLE => \"$[SMB_LIBRARY_ENABLE_][$1]\"
+};
 # End Library $1
 ###################################
 "
@@ -532,14 +546,15 @@ AC_DEFUN([SMB_BINARY],
 SMB_INFO_BINARIES="$SMB_INFO_BINARIES
 ###################################
 # Start Binary $1
-\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{NAME} = \"$1\";
-@{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{BUILD_TARGETS}} = input::str2array(\"$2\");
-@{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{INSTALL_PATH}} = input::str2array(\"$3\");
-@{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{OBJ_FILES}} = input::str2array(\"$4\");
-@{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{REQUIRED_LIBRARIES}} = input::str2array(\"$5\");
-@{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{REQUIRED_SUBSYSTEMS}} = input::str2array(\"$6\");
-#
-\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{ENABLE} = \"$[SMB_BINARY_ENABLE_][$1]\";
+\$INPUT{BINARIES}{$1} = {
+       NAME => \"$1\",
+       BUILD_TARGETS => ][STR2ARRAY([$2])][,
+       INSTALL_PATH => ][STR2ARRAY([$3])][,
+       OBJ_FILES => ][STR2ARRAY([$4])][,
+       REQUIRED_LIBRARIES => ][STR2ARRAY([$5])][,
+       REQUIRED_SUBSYSTEMS => ][STR2ARRAY([$6])][,
+       ENABLE => \"$[SMB_BINARY_ENABLE_][$1]\"
+};
 # End Binary $1
 ###################################
 "
@@ -559,14 +574,15 @@ AC_DEFUN([SMB_BINARY_MK],
 SMB_INFO_BINARIES="$SMB_INFO_BINARIES
 ###################################
 # Start Binary $1
-\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{NAME} = \"$1\";
-@{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{BUILD_TARGETS}} = config_mk::binary_get_array(\"$2\", \"$1\", \"BUILD_TARGETS\");
-@{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{INSTALL_PATH}} = config_mk::binary_get_array(\"$2\", \"$1\", \"INSTALL_PATH\");
-@{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{OBJ_FILES}} = config_mk::binary_get_array(\"$2\", \"$1\", \"OBJ_FILES\");
-@{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{REQUIRED_LIBRARIES}} = config_mk::binary_get_array(\"$2\", \"$1\",\"REQUIRED_LIBRARIES\");
-@{\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{REQUIRED_SUBSYSTEMS}} = config_mk::binary_get_array(\"$2\", \"$1\",\"REQUIRED_SUBSYSTEMS\");
-#
-\$SMB_BUILD_CTX->{INPUT}{BINARIES}{$1}{ENABLE} = \"$[SMB_BINARY_ENABLE_][$1]\";
+\$INPUT{BINARIES}{$1} = {
+       NAME => \"$1\",
+       BUILD_TARGETS => @<:@ config_mk::binary_get_array(\"$2\", \"$1\", \"BUILD_TARGETS\") @:>@,
+       INSTALL_PATH => @<:@ config_mk::binary_get_array(\"$2\", \"$1\", \"INSTALL_PATH\") @:>@,
+       OBJ_FILES => @<:@ config_mk::binary_get_array(\"$2\", \"$1\", \"OBJ_FILES\") @:>@,
+       REQUIRED_LIBRARIES => @<:@ config_mk::binary_get_array(\"$2\", \"$1\",\"REQUIRED_LIBRARIES\") @:>@,
+       REQUIRED_SUBSYSTEMS => @<:@ config_mk::binary_get_array(\"$2\", \"$1\",\"REQUIRED_SUBSYSTEMS\") @:>@,
+       ENABLE => \"$[SMB_BINARY_ENABLE_][$1]\"
+};
 # End Binary $1
 ###################################
 "