Author: jelmer Date: 2005-08-02 18:08:52 +0000 (Tue, 02 Aug 2005) New Revision: 22
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=smb-build&rev=22 Log: See what hosts support incremental linking Modified: trunk/build/smb_build/input.pm trunk/build/smb_build/makefile.pm trunk/build/smb_build/output.pm Changeset: Modified: trunk/build/smb_build/input.pm =================================================================== --- trunk/build/smb_build/input.pm 2005-08-01 19:13:30 UTC (rev 21) +++ trunk/build/smb_build/input.pm 2005-08-02 18:08:52 UTC (rev 22) @@ -10,7 +10,7 @@ use strict; package input; -my $subsystem_default_output_type = "OBJLIST"; +my $subsystem_default_output_type = "MERGEDOBJ"; my $srcdir = "."; sub strtrim($) Modified: trunk/build/smb_build/makefile.pm =================================================================== --- trunk/build/smb_build/makefile.pm 2005-08-01 19:13:30 UTC (rev 21) +++ trunk/build/smb_build/makefile.pm 2005-08-02 18:08:52 UTC (rev 22) @@ -85,7 +85,7 @@ [EMAIL PROTECTED]@ CFLAGS=-Iinclude -I. -I$(srcdir)/include -I$(srcdir) -D_SAMBA_BUILD_ -DHAVE_CONFIG_H -Ilib @CFLAGS@ @CPPFLAGS@ [EMAIL PROTECTED]@ [EMAIL PROTECTED]@ [EMAIL PROTECTED]@ @CFLAGS@ -Lbin STLD=ar @@ -357,6 +357,27 @@ return $output; } +sub _prepare_mergedobj_rule($) +{ + my $ctx = shift; + + if (! $ctx->{TARGET}) { + return ""; + } + + my $output = ""; + my $tmpdepend = array2oneperline($ctx->{DEPEND_LIST}); + + $output = "$ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST = $tmpdepend\n"; + + $output .= "$ctx->{TARGET}: \$($ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST) \$($ctx->{TYPE}_$ctx->{NAME}_OBJS)\n"; + + $output .= "\t\$(LD) -r \$($ctx->{TYPE}_$ctx->{NAME}_OBJS) -o $ctx->{TARGET}\n"; + $output .= "\n"; + + return $output; +} + sub _prepare_objlist_rule($) { my $ctx = shift; @@ -467,7 +488,7 @@ # bin/$ctx->{BINARY}: bin/.dummy \$(BINARY_$ctx->{NAME}_DEPEND_LIST) \$(BINARY_$ctx->{NAME}_OBJS) [EMAIL PROTECTED] Linking \$\@ - [EMAIL PROTECTED](LD) \$(LD_FLAGS) -o \$\@ \\ + [EMAIL PROTECTED](CC) \$(LD_FLAGS) -o \$\@ \\ \$\(BINARY_$ctx->{NAME}_LINK_FLAGS) \\ \$\(BINARY_$ctx->{NAME}_LINK_LIST) \\ \$\(BINARY_$ctx->{NAME}_LINK_FLAGS) @@ -718,6 +739,7 @@ foreach my $key (values %{$depend}) { next if not defined $key->{OUTPUT_TYPE}; + ($output .= _prepare_mergedobj_rule($key)) if $key->{OUTPUT_TYPE} eq "MERGEDOBJ"; ($output .= _prepare_objlist_rule($key)) if $key->{OUTPUT_TYPE} eq "OBJLIST"; ($output .= _prepare_static_library_rule($key)) if $key->{OUTPUT_TYPE} eq "STATIC_LIBRARY"; ($output .= _prepare_shared_library_rule($key)) if $key->{OUTPUT_TYPE} eq "SHARED_LIBRARY"; Modified: trunk/build/smb_build/output.pm =================================================================== --- trunk/build/smb_build/output.pm 2005-08-01 19:13:30 UTC (rev 21) +++ trunk/build/smb_build/output.pm 2005-08-02 18:08:52 UTC (rev 22) @@ -10,6 +10,13 @@ package output; use strict; +sub generate_mergedobj($) +{ + my $subsys = shift; + + $subsys->{OUTPUT} = $subsys->{TARGET} = "bin/$subsys->{TYPE}_$subsys->{NAME}.o"; +} + sub generate_objlist($) { my $subsys = shift; @@ -86,6 +93,7 @@ next if not defined($part->{OUTPUT_TYPE}); generate_binary($part) if $part->{OUTPUT_TYPE} eq "BINARY"; + generate_mergedobj($part) if $part->{OUTPUT_TYPE} eq "MERGEDOBJ"; generate_objlist($part) if $part->{OUTPUT_TYPE} eq "OBJLIST"; generate_shared_library($part) if $part->{OUTPUT_TYPE} eq "SHARED_LIBRARY"; generate_static_library($part) if $part->{OUTPUT_TYPE} eq "STATIC_LIBRARY";
