From 247220e946d579666bf8bb4103c4fa46dfb43cbf Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 25 Feb 2008 15:28:55 +0100 Subject: Use addprefix where possible rather than perl expansion of files. (This used to be commit b136ee5d344b1f1b2de697afd6815b8c3cb770ba) --- source4/build/smb_build/makefile.pm | 21 +++++++------------- source4/build/smb_build/output.pm | 38 ++++--------------------------------- 2 files changed, 11 insertions(+), 48 deletions(-) diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm index a6dfc2dee3..5de8519044 100644 --- a/source4/build/smb_build/makefile.pm +++ b/source4/build/smb_build/makefile.pm @@ -263,13 +263,7 @@ sub Header($$) return if ($#{$ctx->{PUBLIC_HEADERS}} == -1); - $self->output("PUBLIC_HEADERS +="); - - foreach (@{$ctx->{PUBLIC_HEADERS}}) { - $self->output(" " . output::add_dir_str($ctx->{BASEDIR}, $_)); - } - - $self->output("\n"); + $self->output("PUBLIC_HEADERS += \$(addprefix $ctx->{BASEDIR}/, " . join(" ", @{$ctx->{PUBLIC_HEADERS}}) . ")\n"); } sub Binary($$) @@ -317,8 +311,7 @@ sub PythonFiles($$) foreach (@{$ctx->{PYTHON_FILES}}) { my $target = "bin/python/".basename($_); - my $source = output::add_dir_str($ctx->{BASEDIR}, $_); - $self->output("$target: $source\n\n"); + $self->output("$target: \$(addprefix $ctx->{BASEDIR}/, $_)\n\n"); $self->output("PYTHON_PYS += $target\n"); } } @@ -327,7 +320,7 @@ sub Manpage($$) { my ($self,$ctx) = @_; - $self->output("MANPAGES += " . output::add_dir_str($ctx->{BASEDIR}, $ctx->{MANPAGE}) . "\n"); + $self->output("MANPAGES += \$(addprefix $ctx->{BASEDIR}/, $ctx->{MANPAGE})\n"); } sub ProtoHeader($$) @@ -341,7 +334,7 @@ sub ProtoHeader($$) my $pub = undef; if (defined($ctx->{PRIVATE_PROTO_HEADER})) { - $priv = output::add_dir_str($ctx->{BASEDIR}, $ctx->{PRIVATE_PROTO_HEADER}); + $priv = "\$(addprefix $ctx->{BASEDIR}/, $ctx->{PRIVATE_PROTO_HEADER})"; $target .= $priv; $comment .= $priv; if (defined($ctx->{PUBLIC_PROTO_HEADER})) { @@ -351,17 +344,17 @@ sub ProtoHeader($$) $self->output("PROTO_HEADERS += $priv\n"); } else { $ctx->{PRIVATE_PROTO_HEADER} = $ctx->{PUBLIC_PROTO_HEADER}; - $priv = output::add_dir_str($ctx->{BASEDIR}, $ctx->{PRIVATE_PROTO_HEADER}); + $priv = "\$(addprefix $ctx->{BASEDIR}/, $ctx->{PRIVATE_PROTO_HEADER})"; } if (defined($ctx->{PUBLIC_PROTO_HEADER})) { - $pub = output::add_dir_str($ctx->{BASEDIR}, $ctx->{PUBLIC_PROTO_HEADER}); + $pub = "\$(addprefix $ctx->{BASEDIR}/, $ctx->{PUBLIC_PROTO_HEADER})"; $comment .= $pub; $target .= $pub; $self->output("PROTO_HEADERS += $pub\n"); } else { $ctx->{PUBLIC_PROTO_HEADER} = $ctx->{PRIVATE_PROTO_HEADER}; - $pub = output::add_dir_str($ctx->{BASEDIR}, $ctx->{PUBLIC_PROTO_HEADER}); + $pub = "\$(addprefix $ctx->{BASEDIR}/, $ctx->{PUBLIC_PROTO_HEADER})"; } $self->output("$pub: $ctx->{MK_FILE} \$($ctx->{NAME}_OBJ_LIST:.o=.c) \$(srcdir)/script/mkproto.pl\n"); diff --git a/source4/build/smb_build/output.pm b/source4/build/smb_build/output.pm index ff9afe8e8c..4a977db731 100644 --- a/source4/build/smb_build/output.pm +++ b/source4/build/smb_build/output.pm @@ -9,38 +9,6 @@ package output; use strict; use smb_build::config; -sub add_dir_str($$) -{ - my ($dir,$file) = @_; - my $dirsep = "/"; - - $dir =~ s/^\.$//g; - $dir =~ s/^\.\///g; - - $dirsep = "" if ($dir eq ""); - - my $ret = $file; - if (substr($ret, 0, 1) ne "\$") { - $ret = "$dir$dirsep$file"; - $ret =~ s/([^\/\.]+)\/\.\.\///g; - $ret =~ s/([^\/\.]+)\/\.\.\///g; - } - - return $ret; -} - -sub add_dir_array($$) -{ - my ($dir,$files) = @_; - my @ret = (); - - foreach (@{$files}) { - push (@ret, add_dir_str($dir, $_)); - } - - return @ret; -} - sub generate_shared_library($) { my $lib = shift; @@ -168,8 +136,10 @@ sub create_output($$) next unless(defined($part->{OUTPUT_TYPE})); # Combine object lists - my @list = add_dir_array($part->{BASEDIR}, $part->{OBJ_FILES}); - push(@{$part->{OBJ_LIST}}, @list) if defined($part->{OBJ_FILES}); + if (defined($part->{OBJ_FILES})) { + my $list = "\$(addprefix $part->{BASEDIR}/, " . join(" ", @{$part->{OBJ_FILES}}) . ")"; + push(@{$part->{OBJ_LIST}}, $list); + } generate_binary($part) if grep(/BINARY/, @{$part->{OUTPUT_TYPE}}); generate_shared_library($part) if grep(/SHARED_LIBRARY/, @{$part->{OUTPUT_TYPE}}); -- cgit