From: Orgad Shaneh Date: Thu, 12 Sep 2024 20:23:46 +0000 (+0300) Subject: Build: Fix circular object deps with old GCC X-Git-Tag: openssl-3.1.8~131 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=95c71868867edd5209ae12989ca65f05f463d4bb;p=thirdparty%2Fopenssl.git Build: Fix circular object deps with old GCC When both -o and -MT are used, GCC 4.1 prints the object file twice in the dependency file. e.g.: foo.o foo.o: foo.c If the file name is long, then the second occurrence moves to the next line. e.g.: ssl/statem/libssl-shlib-statem_dtls.o \ ssl/statem/libssl-shlib-statem_dtls.o: ../ssl/statem/statem_dtls.c \ add-depends script scans one line at a time, so when the first line is processed, the object file becomes a dependency itself. Fix by removing -MT altogether. This also fixes makedepend for nonstop platform. Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/25455) (cherry picked from commit 6288aa440c1ba111eaf52cf79659a25329205022) --- diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 644540397de..d2b0797a7ed 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -1688,7 +1688,7 @@ EOF } elsif ($makedep_scheme eq 'gcc' && !grep /\.rc$/, @srcs) { $recipe .= <<"EOF"; $obj: $deps - $cmd $incs $defs $cmdflags -MMD -MF $dep.tmp -MT \$\@ -c -o \$\@ $srcs + $cmd $incs $defs $cmdflags -MMD -MF $dep.tmp -c -o \$\@ $srcs \@touch $dep.tmp \@if cmp $dep.tmp $dep > /dev/null 2> /dev/null; then \\ rm -f $dep.tmp; \\ diff --git a/NOTES-NONSTOP.md b/NOTES-NONSTOP.md index ab13de7d3a7..9441647604c 100644 --- a/NOTES-NONSTOP.md +++ b/NOTES-NONSTOP.md @@ -119,12 +119,9 @@ correctly, you also need the `COMP_ROOT` set, as in: `COMP_ROOT` needs to be in Windows form. -`Configure` must specify the `no-makedepend` option otherwise errors will -result when running the build because the c99 cross-compiler does not support -the `gcc -MT` option. An example of a `Configure` command to be run from the -OpenSSL directory is: +An example of a `Configure` command to be run from the OpenSSL directory is: - ./Configure nonstop-nsx_64 no-makedepend --with-rand-seed=rdcpu + ./Configure nonstop-nsx_64 --with-rand-seed=rdcpu Do not forget to include any OpenSSL cross-compiling prefix and certificate options when creating your libraries.