summaryrefslogtreecommitdiffstats
path: root/Configurations
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2018-12-12 21:22:29 +0100
committerRichard Levitte <levitte@openssl.org>2018-12-12 21:47:14 +0100
commit4abca7e9f37c8b6cfc0e5fe1fd7b624e2f14b751 (patch)
tree86603b3d7e619ef4f3eb56fe69a406075ab79681 /Configurations
parentca34e08df999d57d529122b4e9ee9c708e07b9d2 (diff)
VMS build: better treatment of .S -> .obj compilation
It turned out that .S files aren't to be treated as lightly as I thought. They need to go through a preprocessing step, which .s files don't need to. Corrects #7703 Reviewed-by: Tim Hudson <tjh@openssl.org> (Merged from https://github.com/openssl/openssl/pull/7889) (cherry picked from commit e436664828429a23bf210710ede34203bdfdc2b8)
Diffstat (limited to 'Configurations')
-rw-r--r--Configurations/descrip.mms.tmpl48
1 files changed, 33 insertions, 15 deletions
diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl
index 9eefef8199..1f2776a897 100644
--- a/Configurations/descrip.mms.tmpl
+++ b/Configurations/descrip.mms.tmpl
@@ -795,7 +795,7 @@ $target : $args{generator}->[0] $deps
$generator \$\@-S
\@ $incs_on
PIPE \$(CPP) $cppflags \$\@-S | -
- \$(PERL) -ne "/^#(\\s*line)?\\s*[0-9]+\\s+""/ or print" > \$\@-i
+ \$(PERL) -ne "/^#(\\s*line)?\\s*[0-9]+\\s+""/ or print" > \$\@-i
\@ $incs_off
RENAME \$\@-i \$\@
DELETE \$\@-S;
@@ -820,7 +820,7 @@ EOF
sub src2obj {
my %args = @_;
- my @srcs = map { (my $x = $_) =~ s/\.[sS]$/.asm/; $x
+ my @srcs = map { (my $x = $_) =~ s/\.s$/.asm/; $x
} ( @{$args{srcs}} );
(my $obj = $args{obj}) =~ s|\.o$||;
my $deps = join(", -\n\t\t", @srcs, @{$args{deps}});
@@ -840,19 +840,6 @@ EOF
my $before = $unified_info{before}->{$obj.".OBJ"} || "\@ !";
my $after = $unified_info{after}->{$obj.".OBJ"} || "\@ !";
- if ($srcs[0] =~ /\.asm$/) {
- my $asflags = { lib => ' $(LIB_ASFLAGS)',
- dso => ' $(DSO_ASFLAGS)',
- bin => ' $(BIN_ASFLAGS)' } -> {$args{intent}};
- return <<"EOF";
-$obj.OBJ : $deps
- ${before}
- SET DEFAULT $forward
- \$(AS) $asflags \$(ASOUTFLAG)${objd}${objn}.OBJ $srcs
- SET DEFAULT $backward
-EOF
- }
-
my $cflags;
if ($args{installed}) {
$cflags = { lib => '$(LIB_CFLAGS)',
@@ -866,6 +853,9 @@ EOF
$cflags .= { lib => '$(LIB_CPPFLAGS)',
dso => '$(DSO_CPPFLAGS)',
bin => '$(BIN_CPPFLAGS)' } -> {$args{intent}};
+ my $asflags = { lib => ' $(LIB_ASFLAGS)',
+ dso => ' $(DSO_ASFLAGS)',
+ bin => ' $(BIN_ASFLAGS)' } -> {$args{intent}};
my @incs_cmds = includes({ lib => '$(LIB_INCLUDES)',
dso => '$(DSO_INCLUDES)',
@@ -877,6 +867,34 @@ EOF
} @{$args{incs}});
my $incs_on = join("\n\t\@ ", @{$incs_cmds[0]}) || '!';
my $incs_off = join("\n\t\@ ", @{$incs_cmds[1]}) || '!';
+
+ if ($srcs[0] =~ /\.asm$/) {
+ return <<"EOF";
+$obj.OBJ : $deps
+ ${before}
+ SET DEFAULT $forward
+ \$(AS) $asflags \$(ASOUTFLAG)${objd}${objn}.OBJ $srcs
+ SET DEFAULT $backward
+ ${after}
+ - PURGE $obj.OBJ
+EOF
+ } elsif ($srcs[0] =~ /.S$/) {
+ return <<"EOF";
+$obj.OBJ : $deps
+ ${before}
+ SET DEFAULT $forward
+ \@ $incs_on
+ PIPE \$(CPP) ${cflags} $srcs | -
+ \$(PERL) -ne "/^#(\\s*line)?\\s*[0-9]+\\s+""/ or print" -
+ > ${objd}${objn}.asm
+ \@ $incs_off
+ SET DEFAULT $backward
+ ${after}
+ \$(AS) $asflags \$(ASOUTFLAG)$obj.OBJ $obj.asm
+ - PURGE $obj.OBJ
+EOF
+ }
+
my $depbuild = $disabled{makedepend} ? ""
: " /MMS=(FILE=${objd}${objn}.D,TARGET=$obj.OBJ)";