Author: jelmer Date: 2005-10-26 23:36:04 +0000 (Wed, 26 Oct 2005) New Revision: 11311
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=11311 Log: Move some more logic to env Modified: branches/SAMBA_4_0/source/build/smb_build/env.pm branches/SAMBA_4_0/source/build/smb_build/main.pl branches/SAMBA_4_0/source/build/smb_build/makefile.pm Changeset: Modified: branches/SAMBA_4_0/source/build/smb_build/env.pm =================================================================== --- branches/SAMBA_4_0/source/build/smb_build/env.pm 2005-10-26 23:34:15 UTC (rev 11310) +++ branches/SAMBA_4_0/source/build/smb_build/env.pm 2005-10-26 23:36:04 UTC (rev 11311) @@ -17,11 +17,16 @@ my ($name, $config) = @_; my $self = { }; bless $self, $name; - $self->set_config($config); + + $self->{items} = {}; + $self->{info} = {}; + + $self->_set_config($config); + return $self; } -sub set_config($$) +sub _set_config($$) { my ($self, $config) = @_; @@ -69,4 +74,28 @@ close(OUT); } +sub Import($$) +{ + my ($self,$items) = @_; + + foreach (keys %$items) { + if (defined($self->{items})) { + print "Warning: Importing $_ twice!\n"; + } + $self->{items}->{$_} = $items->{$_}; + } +} + +sub GetInfo($$) +{ + my ($self,$name) = @_; + + unless (defined($self->{info}->{$name})) + { + $self->{info}->{$name} = $self->{items}->Build($self); + } + + return $self->{info}->{$name}; +} + 1; Modified: branches/SAMBA_4_0/source/build/smb_build/main.pl =================================================================== --- branches/SAMBA_4_0/source/build/smb_build/main.pl 2005-10-26 23:34:15 UTC (rev 11310) +++ branches/SAMBA_4_0/source/build/smb_build/main.pl 2005-10-26 23:36:04 UTC (rev 11311) @@ -38,7 +38,26 @@ my $DEPEND = smb_build::input::check($INPUT, \%config::enabled); my $OUTPUT = output::create_output($DEPEND); -my $mkenv = new smb_build::makefile(\%config::config, $OUTPUT, $mkfile); +my $mkenv = new smb_build::makefile(\%config::config, $mkfile); + +foreach my $key (values %$OUTPUT) { + next unless defined $key->{OUTPUT_TYPE}; + + $mkenv->MergedObj($key) if $key->{OUTPUT_TYPE} eq "MERGEDOBJ"; + $mkenv->ObjList($key) if $key->{OUTPUT_TYPE} eq "OBJLIST"; + $mkenv->StaticLibrary($key) if $key->{OUTPUT_TYPE} eq "STATIC_LIBRARY"; + $mkenv->PkgConfig($key) if ($key->{OUTPUT_TYPE} eq "SHARED_LIBRARY") and + defined($key->{MAJOR_VERSION}); + $mkenv->SharedLibrary($key) if $key->{OUTPUT_TYPE} eq "SHARED_LIBRARY"; + $mkenv->Binary($key) if $key->{OUTPUT_TYPE} eq "BINARY"; + $mkenv->Manpage($key) if defined($key->{MANPAGE}); + $mkenv->Header($key) if defined($key->{PUBLIC_HEADERS}); +} + +# FIXME: These two lines are a hack +$mkenv->ProtoHeader($OUTPUT->{PROTO}); +$mkenv->ProtoHeader($OUTPUT->{ALL_OBJS}); + $mkenv->write("Makefile"); smb_build_h::create_smb_build_h($OUTPUT, "include/smb_build.h"); Modified: branches/SAMBA_4_0/source/build/smb_build/makefile.pm =================================================================== --- branches/SAMBA_4_0/source/build/smb_build/makefile.pm 2005-10-26 23:34:15 UTC (rev 11310) +++ branches/SAMBA_4_0/source/build/smb_build/makefile.pm 2005-10-26 23:36:04 UTC (rev 11311) @@ -13,9 +13,9 @@ use base 'smb_build::env'; -sub new($$$$) +sub new($$$) { - my ($myname, $config, $CTX, $mkfile) = @_; + my ($myname, $config, $mkfile) = @_; my $self = new smb_build::env($config); bless($self, $myname); @@ -44,31 +44,6 @@ $self->_prepare_std_CC_rule("c","o",'$(PICFLAG)',"Compiling","Rule for std objectfiles"); $self->_prepare_std_CC_rule("h","h.gch",'$(PICFLAG)',"Precompiling","Rule for precompiled headerfiles"); - $self->_prepare_mk_files(); - - $self->_prepare_dummy_MAKEDIR($CTX); - - foreach my $key (values %$CTX) { - if (defined($key->{OBJ_LIST})) { - $self->_prepare_obj_list($key->{TYPE}, $key); - $self->_prepare_cflags($key->{TYPE}, $key); - } - } - - foreach my $key (values %$CTX) { - next unless defined $key->{OUTPUT_TYPE}; - - $self->MergedObj($key) if $key->{OUTPUT_TYPE} eq "MERGEDOBJ"; - $self->ObjList($key) if $key->{OUTPUT_TYPE} eq "OBJLIST"; - $self->StaticLibrary($key) if $key->{OUTPUT_TYPE} eq "STATIC_LIBRARY"; - $self->PkgConfig($key) if ($key->{OUTPUT_TYPE} eq "SHARED_LIBRARY") and - defined($key->{MAJOR_VERSION}); - $self->SharedLibrary($key) if $key->{OUTPUT_TYPE} eq "SHARED_LIBRARY"; - $self->Binary($key) if $key->{OUTPUT_TYPE} eq "BINARY"; - $self->Manpage($key) if defined($key->{MANPAGE}); - $self->Header($key) if defined($key->{PUBLIC_HEADERS}); - } - return $self; } @@ -169,9 +144,9 @@ $self->output("MK_FILES = " . array2oneperline([EMAIL PROTECTED]) . "\n"); } -sub _prepare_dummy_MAKEDIR($$) +sub _prepare_dummy_MAKEDIR($) { - my ($self,$ctx) = @_; + my ($self) = @_; $self->output(<< '__EOD__' dynconfig.o: dynconfig.c Makefile @@ -263,6 +238,9 @@ push (@{$self->{shared_libs}}, $ctx->{OUTPUT}); + $self->_prepare_obj_list($ctx->{TYPE}, $ctx); + $self->_prepare_cflags($ctx->{TYPE}, $ctx); + my $tmpdepend = array2oneperline($ctx->{DEPEND_LIST}); my $tmpshlink = array2oneperline($ctx->{LINK_LIST}); my $tmpshflag = array2oneperline($ctx->{LINK_FLAGS}); @@ -307,6 +285,8 @@ my $tmpdepend = array2oneperline($ctx->{DEPEND_LIST}); + $self->_prepare_obj_list($ctx->{TYPE}, $ctx); + $self->_prepare_cflags($ctx->{TYPE}, $ctx); $self->output("$ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST = $tmpdepend\n"); $self->output("$ctx->{TARGET}: \$($ctx->{TYPE}_$ctx->{NAME}_OBJS)\n"); @@ -323,6 +303,8 @@ return unless $ctx->{TARGET}; + $self->_prepare_obj_list($ctx->{TYPE}, $ctx); + $self->_prepare_cflags($ctx->{TYPE}, $ctx); $self->output("$ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST = $tmpdepend\n"); $self->output("$ctx->{TARGET}: "); $self->output("\$($ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST) \$($ctx->{TYPE}_$ctx->{NAME}_OBJS)\n"); @@ -335,6 +317,9 @@ push (@{$self->{static_libs}}, $ctx->{OUTPUT}); + $self->_prepare_obj_list($ctx->{TYPE}, $ctx); + $self->_prepare_cflags($ctx->{TYPE}, $ctx); + my $tmpdepend = array2oneperline($ctx->{DEPEND_LIST}); my $tmpstlink = array2oneperline($ctx->{LINK_LIST}); my $tmpstflag = array2oneperline($ctx->{LINK_FLAGS}); @@ -375,6 +360,8 @@ push (@{$self->{bin_progs}}, $ctx->{TARGET}); } + $self->_prepare_obj_list($ctx->{TYPE}, $ctx); + $self->_prepare_cflags($ctx->{TYPE}, $ctx); my $tmpdepend = array2oneperline($ctx->{DEPEND_LIST}); my $tmplink = array2oneperline($ctx->{LINK_LIST}); my $tmpflag = array2oneperline($ctx->{LINK_FLAGS}); @@ -419,6 +406,13 @@ smb_build::env::PkgConfig($self,$path,$ctx->{NAME},"FIXME",join(' ', @{$ctx->{CFLAGS}}), "$ctx->{MAJOR_VERSION}.$ctx->{MINOR_VERSION}.$ctx->{RELEASE_VERSION}"); } +sub ProtoHeader($$) +{ + my ($self,$ctx) = @_; + + $self->_prepare_obj_list($ctx->{TYPE}, $ctx); +} + sub write($$) { my ($self,$file) = @_; @@ -431,6 +425,9 @@ $self->output("PUBLIC_HEADERS = " . array2oneperline($self->{headers}) . "\n"); $self->output("PC_FILES = " . array2oneperline($self->{pc_files}) . "\n"); + + $self->_prepare_mk_files(); + if ($self->{developer}) { $self->output(<<__EOD__ #-include \$(_ALL_OBJS_OBJS:.o=.d) @@ -442,6 +439,8 @@ ); } + $self->_prepare_dummy_MAKEDIR(); + $self->output($self->{mkfile}); open(MAKEFILE,">$file") || die ("Can't open $file\n");
