Skip to content

Commit

Permalink
Windows: fix echo for nmake
Browse files Browse the repository at this point in the history
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: Andy Polyakov <appro@openssl.org>
Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
(Merged from openssl/openssl#6686)
  • Loading branch information
levitte committed Jul 11, 2018
1 parent c9ecb13 commit 9abce88
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 17 deletions.
36 changes: 19 additions & 17 deletions Configurations/windows-makefile.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,8 @@ ASFLAGS={- join(' ', @{$config{ASFLAGS}}) -}

RC={- $config{RC} -}

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

##### Special command flags ##########################################

COUTFLAG={- $target{coutflag} -}$(OSSL_EMPTY)
Expand Down Expand Up @@ -320,9 +322,9 @@ build_apps build_tests: build_programs
# ones
build_all_generated: $(GENERATED_MANDATORY) $(GENERATED)
@rem {- output_off() if $disabled{makedepend}; "" -}
@echo "Warning: consider configuring with no-makedepend, because if"
@echo " target system doesn't have $(PERL),"
@echo " then make will fail..."
@$(ECHO) "Warning: consider configuring with no-makedepend, because if"
@$(ECHO) " target system doesn't have $(PERL),"
@$(ECHO) " then make will fail..."
@rem {- output_on() if $disabled{makedepend}; "" -}

test: tests
Expand All @@ -337,15 +339,15 @@ 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:
@rem {- output_off() if $disabled{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
Expand Down Expand Up @@ -405,8 +407,8 @@ install_ssldirs:
"$(OPENSSLDIR)\ct_log_list.cnf"

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" } @{$config{defines}}; "" -}
@"$(PERL)" "$(SRCDIR)\util\copy.pl" "$(SRCDIR)\ms\applink.c" \
Expand All @@ -425,8 +427,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)"
Expand All @@ -436,8 +438,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"
Expand All @@ -462,13 +464,13 @@ 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) "Detected changed: $?"
"$(PERL)" configdata.pm -r
@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

reconfigure reconf:
Expand Down
12 changes: 12 additions & 0 deletions util/echo.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#! /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;

0 comments on commit 9abce88

Please sign in to comment.