Skip to content

Commit

Permalink
Windows bulding: Make dependency generation not quite as talkative
Browse files Browse the repository at this point in the history
The modified way to generate .d files had an unfortunate side effect,
that it outputs the whole preprocessed file and not just the dependency
lines, at least with MSVC's cl.  That gave util/add-depends.pl a whole
lot more to read through, which impacts greatly on the performance of
dependency treatment.

We modify the process by adding a config target attribute 'make_depend',
which can be any suitable command for generating such lines.  All it
needs is to also accept C flags and macro definitions.

Fixes openssl#14994

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matthias St. Pierre <[email protected]>
(Merged from openssl#15006)
  • Loading branch information
levitte committed Apr 28, 2021
1 parent e9b30d9 commit 0bd138b
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 3 deletions.
2 changes: 1 addition & 1 deletion Configurations/10-main.conf
Original file line number Diff line number Diff line change
Expand Up @@ -1276,9 +1276,9 @@ my %targets = (
template => 1,
CC => "cl",
CPP => '"$(CC)" /EP /C',
make_depend => '"$(CC)" /Zs /showIncludes',
CFLAGS => "/W3 /wd4090 /nologo",
coutflag => "/Fo",
cpp_depend_flags => "/Zs /showIncludes",
LD => "link",
LDFLAGS => "/nologo /debug",
ldoutflag => "/out:",
Expand Down
5 changes: 4 additions & 1 deletion Configurations/50-cppbuilder.conf
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ my %targets = (
thread_scheme => "winthreads",
cc => "bcc32c",
CPP => "cpp32 -oCON -Sc -Sr",
# -Sx isn't documented, but 'cpp32 -H -S' explains it:
#
# -Sx Omit preprocessed text in output
make_depend => "cpp32 -oCON -Sx -Hp",
defines => add("WIN32_LEAN_AND_MEAN", "OPENSSL_SYS_WIN32",
"L_ENDIAN", "DSO_WIN32", "_stricmp=stricmp",
"_strnicmp=strnicmp", "_malloca=malloc",
Expand All @@ -18,7 +22,6 @@ my %targets = (
bin_cflags => "-tWC",
lib_cflags => shared("-tWD -D_WINDLL -D_DLL"),
coutflag => "-o",
cpp_depend_flags => "-Hp",
LD => "ilink32",
LDFLAGS => picker(default => "-x -Gn -q -w-dup",
debug => '-j"$(BDS)\lib\win32c\debug" ' .
Expand Down
2 changes: 1 addition & 1 deletion Configurations/windows-makefile.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -836,7 +836,7 @@ $obj: $deps
\$(CC) $cflags $defs -c \$(COUTFLAG)\$\@ $srcs
EOF
$recipe .= <<"EOF" unless $disabled{makedepend};
cmd /C "\$(CPP) $cflags $defs $target{cpp_depend_flags} $srcs > $dep 2>&1"
cmd /C "$target{make_depend} $cflags $defs $srcs > $dep 2>&1"
EOF
return $recipe;
}
Expand Down

0 comments on commit 0bd138b

Please sign in to comment.