Commit 566e333e authored by Richard Levitte's avatar Richard Levitte
Browse files

Windows: fix echo for nmake



It seems that nmake first tries to run executables on its own, and
only pass commands to cmd if that fails.  That means it's possible to
have nmake run something like 'echo.exe' when the builtin 'echo'
command was expected, which might give us unexpected results.

To get around this, we create our own echoing script and call it
explicitly from the nmake makefile.

Fixes #6670

Reviewed-by: default avatarAndy Polyakov <appro@openssl.org>
Reviewed-by: default avatarBernd Edlinger <bernd.edlinger@hotmail.de>
(Merged from https://github.com/openssl/openssl/pull/6686)

(cherry picked from commit 9abce88b)
parent 356d6345
Loading
Loading
Loading
Loading
+18 −15
Original line number Diff line number Diff line
@@ -182,6 +182,9 @@ MTOUTFLAG={- $target{mtoutflag} || "-outputresource:" -}$(OSSL_EMPTY)
AS={- $target{as} -}
ASFLAGS={- $target{asflags} -}
ASOUTFLAG={- $target{asoutflag} -}$(OSSL_EMPTY)

ECHO="$(PERL)" "$(SRCDIR)\util\echo.pl"

PERLASM_SCHEME= {- $target{perlasm_scheme} -}

PROCESSOR= {- $config{processor} -}
@@ -217,7 +220,7 @@ test: tests
	set OPENSSL_DEBUG_MEMORY=on
	"$(PERL)" "$(SRCDIR)\test\run_tests.pl" $(TESTS)
	@rem {- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -}
	@echo "Tests are not supported with your chosen Configure options"
	@$(ECHO) "Tests are not supported with your chosen Configure options"
	@rem {- output_on() if !$disabled{tests}; "" -}

list-tests:
@@ -225,7 +228,7 @@ list-tests:
	@set SRCTOP=$(SRCDIR)
	@"$(PERL)" "$(SRCDIR)\test\run_tests.pl" list
	@rem {- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -}
	@echo "Tests are not supported with your chosen Configure options"
	@$(ECHO) "Tests are not supported with your chosen Configure options"
	@rem {- output_on() if !$disabled{tests}; "" -}

install: install_sw install_ssldirs install_docs
@@ -285,8 +288,8 @@ install_ssldirs:
                                        "$(OPENSSLDIR)\misc"

install_dev:
	@if "$(INSTALLTOP)"=="" ( echo INSTALLTOP should not be empty & exit 1 )
	@echo *** Installing development files
	@if "$(INSTALLTOP)"=="" ( $(ECHO) "INSTALLTOP should not be empty" & exit 1 )
	@$(ECHO) "*** Installing development files"
	@"$(PERL)" "$(SRCDIR)\util\mkdir-p.pl" "$(INSTALLTOP)\include\openssl"
	@rem {- output_off() unless grep { $_ eq "OPENSSL_USE_APPLINK" } @{$target{defines}}; "" -}
	@"$(PERL)" "$(SRCDIR)\util\copy.pl" "$(SRCDIR)\ms\applink.c" \
@@ -307,8 +310,8 @@ install_dev:
uninstall_dev:

install_engines:
	@if "$(INSTALLTOP)"=="" ( echo INSTALLTOP should not be empty & exit 1 )
	@echo *** Installing engines
	@if "$(INSTALLTOP)"=="" ( $(ECHO) "INSTALLTOP should not be empty" & exit 1 )
	@$(ECHO) "*** Installing engines"
	@"$(PERL)" "$(SRCDIR)\util\mkdir-p.pl" "$(ENGINESDIR)"
	@if not "$(ENGINES)"=="" \
	 "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_ENGINES) "$(ENGINESDIR)"
@@ -318,8 +321,8 @@ install_engines:
uninstall_engines:

install_runtime:
	@if "$(INSTALLTOP)"=="" ( echo INSTALLTOP should not be empty & exit 1 )
	@echo *** Installing runtime files
	@if "$(INSTALLTOP)"=="" ( $(ECHO) "INSTALLTOP should not be empty" & exit 1 )
	@$(ECHO) "*** Installing runtime files"
	@"$(PERL)" "$(SRCDIR)\util\mkdir-p.pl" "$(INSTALLTOP)\bin"
	@if not "$(SHLIBS)"=="" \
	 "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_SHLIBS) "$(INSTALLTOP)\bin"
@@ -344,14 +347,14 @@ uninstall_html_docs:
# Building targets ###################################################

configdata.pm: "$(SRCDIR)\Configure" {- join(" ", map { '"'.$_.'"' } @{$config{build_file_templates}}, @{$config{build_infos}}, @{$config{conf_files}}) -}
	@echo "Detected changed: $?"
	@echo "Reconfiguring..."
	@$(ECHO) "Detected changed: $?"
	@$(ECHO) "Reconfiguring..."
	"$(PERL)" "$(SRCDIR)\Configure" reconf
	@echo "**************************************************"
	@echo "***                                            ***"
	@echo "***   Please run the same make command again   ***"
	@echo "***                                            ***"
	@echo "**************************************************"
	@$(ECHO) "**************************************************"
	@$(ECHO) "***                                            ***"
	@$(ECHO) "***   Please run the same make command again   ***"
	@$(ECHO) "***                                            ***"
	@$(ECHO) "**************************************************"
	@exit 1

{-

util/echo.pl

0 → 100644
+12 −0
Original line number Diff line number Diff line
#! /usr/bin/perl

use strict;
use warnings;
use Getopt::Std;

our $opt_n = 0;

getopts('n') or die "Invalid option: $!\n";

print join(' ', @ARGV);
print "\n" unless $opt_n;