openssl: nmake install stuck in first step in windows
Greetings.
I tried to compile openssl 3.0.0-alpha.15 in Windows, nmake compiled everything fine, but nmake install stucked at the first step, which is nmake depend, which is running a perl command: "perl.exe" ".\util\add-depends.pl" "VC".
I should also note alpha.14 was fine.
config data:
$ perl configdata.pm --dump
Command line (with current working directory = .):
D:\linux\perl\bin\perl.exe Configure VC-WIN64A no-asm --prefix=d:\linux\openssl3 --openssldir=d:\linux\openssl3\conf
Perl information:
D:\linux\perl\bin\perl.exe
5.24.3 for MSWin32-x64-multi-thread
Enabled features:
acvp_tests
aria
async
autoalginit
autoerrinit
autoload-config
bf
blake2
bulk
cached-fetch
camellia
capieng
cast
chacha
cmac
cmp
cms
comp
ct
deprecated
des
dgram
dh
dsa
dso
dtls
dynamic-engine
ec
ec2m
ecdh
ecdsa
engine
err
filenames
fips
fips-securitychecks
gost
idea
legacy
makedepend
md4
mdc2
module
multiblock
nextprotoneg
pinshared
ocb
ocsp
padlockeng
pic
poly1305
posix-io
psk
rc2
rc4
rdrand
rfc3779
rmd160
scrypt
secure-memory
seed
shared
siphash
siv
sm2
sm3
sm4
sock
srp
srtp
sse2
ssl
static-engine
stdio
tests
threads
tls
ts
ui-console
uplink
whirlpool
tls1
tls1-method
tls1_1
tls1_1-method
tls1_2
tls1_2-method
tls1_3
dtls1
dtls1-method
dtls1_2
dtls1_2-method
Disabled features:
afalgeng [not-linux] OPENSSL_NO_AFALGENG
asan [default] OPENSSL_NO_ASAN
asm [option] OPENSSL_NO_ASM
buildtest-c++ [default]
crypto-mdebug [default] OPENSSL_NO_CRYPTO_MDEBUG
devcryptoeng [default] OPENSSL_NO_DEVCRYPTOENG
ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128
egd [default] OPENSSL_NO_EGD
external-tests [default] OPENSSL_NO_EXTERNAL_TESTS
fuzz-libfuzzer [default] OPENSSL_NO_FUZZ_LIBFUZZER
fuzz-afl [default] OPENSSL_NO_FUZZ_AFL
ktls [default] OPENSSL_NO_KTLS
md2 [default] OPENSSL_NO_MD2 (skip crypto\md2)
msan [default] OPENSSL_NO_MSAN
rc5 [default] OPENSSL_NO_RC5 (skip crypto\rc5)
sctp [default] OPENSSL_NO_SCTP
ssl-trace [default] OPENSSL_NO_SSL_TRACE
trace [default] OPENSSL_NO_TRACE
ubsan [default] OPENSSL_NO_UBSAN
unit-test [default] OPENSSL_NO_UNIT_TEST
weak-ssl-ciphers [default] OPENSSL_NO_WEAK_SSL_CIPHERS
zlib [default]
zlib-dynamic [default]
ssl3 [default] OPENSSL_NO_SSL3
ssl3-method [default] OPENSSL_NO_SSL3_METHOD
Config target attributes:
AR => "lib",
ARFLAGS => "/nologo",
AS => "ml64",
ASFLAGS => "/nologo /Zi",
CC => "cl",
CFLAGS => "/W3 /wd4090 /nologo /O2",
CPP => "\"\$(CC)\" /EP /C",
HASHBANGPERL => "/usr/bin/env perl",
LD => "link",
LDFLAGS => "/nologo /debug",
MT => "mt",
MTFLAGS => "-nologo",
RANLIB => "CODE(0x25cf490)",
RC => "rc",
ar_resp_delim => "
",
aroutflag => "/out:",
asflags => "/c /Cp /Cx",
asm_arch => "x86_64",
asoutflag => "/Fo",
bin_cflags => "/Zi /Fdapp.pdb",
bin_lflags => "setargv.obj /subsystem:console /opt:ref",
bn_ops => "SIXTY_FOUR_BIT",
build_file => "makefile",
build_scheme => [ "unified", "windows", "VC-common" ],
cflags => "/Gs0 /GF /Gy /MD",
coutflag => "/Fo",
cpp_depend_flags => "/Zs /showIncludes",
cppflags => "",
defines => [ "OPENSSL_BUILDING_OPENSSL", "OPENSSL_SYS_WIN32", "WIN32_LEAN_AND_MEAN", "UNICODE", "_UNICODE", "_CRT_SECURE_NO_DEPRECATE", "_WINSOCK_DEPRECATED_NO_WARNINGS" ],
disable => [ ],
dso_cflags => "/Zi /Fddso.pdb",
dso_scheme => "win32",
enable => [ ],
ex_libs => "ws2_32.lib gdi32.lib advapi32.lib crypt32.lib user32.lib",
includes => [ ],
ld_implib_flag => "/implib:",
ld_resp_delim => "
",
lddefflag => "/def:",
ldoutflag => "/out:",
ldpostoutflag => "",
ldresflag => " ",
lflags => "",
lib_cflags => "/Zi /Fdossl_static.pdb",
lib_cppflags => "",
lib_defines => [ "L_ENDIAN" ],
module_cflags => "",
module_cxxflags => undef,
module_ldflags => "/dll",
mtinflag => "-manifest ",
mtoutflag => "-outputresource:",
multilib => "-x64",
perl_platform => "Windows::MSVC",
perlasm_scheme => "auto",
rcoutflag => "/fo",
shared_cflag => "",
shared_defflag => "",
shared_defines => [ ],
shared_ldflag => "/dll",
shared_rcflag => "",
shared_target => "win-shared",
sys_id => "WIN64A",
thread_defines => [ ],
thread_scheme => "winthreads",
unistd => "<unistd.h>",
uplink_arch => "x86_64",
Recorded environment:
AR =
ARFLAGS =
AS =
ASFLAGS =
BUILDFILE =
CC =
CFLAGS =
CPP =
CPPDEFINES =
CPPFLAGS =
CPPINCLUDES =
CROSS_COMPILE =
CXX =
CXXFLAGS =
HASHBANGPERL =
LD =
LDFLAGS =
LDLIBS =
MT =
MTFLAGS =
OPENSSL_LOCAL_CONFIG_DIR =
PERL =
RANLIB =
RC =
RCFLAGS =
RM =
WINDRES =
__CNF_CFLAGS =
__CNF_CPPDEFINES =
__CNF_CPPFLAGS =
__CNF_CPPINCLUDES =
__CNF_CXXFLAGS =
__CNF_LDFLAGS =
__CNF_LDLIBS =
Makevars:
AR = lib
ARFLAGS = /nologo
AS = ml64
ASFLAGS = /nologo /Zi
CC = cl
CFLAGS = /W3 /wd4090 /nologo /O2
CPP = "$(CC)" /EP /C
CPPDEFINES =
CPPFLAGS =
CPPINCLUDES =
CXXFLAGS =
HASHBANGPERL = /usr/bin/env perl
LD = link
LDFLAGS = /nologo /debug
LDLIBS =
MT = mt
MTFLAGS = -nologo
PERL = D:\linux\perl\bin\perl.exe
RC = rc
RCFLAGS =
NOTE: These variables only represent the configuration view. The build file
template may have processed these variables further, please have a look at the
build file for more exact data:
makefile
build file:
makefile
build file templates:
Configurations\common0.tmpl
Configurations\windows-makefile.tmpl
Configurations\common.tmpl
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 19 (18 by maintainers)
Commits related to this issue
- Windows bulding: Make dependency generation not quite as talkative The modified way to generate .d files had an unfortunate side effect, that it outputs the whole preprocessed file and not just the d... — committed to levitte/openssl by levitte 3 years ago
- util/add-depends.pl: Adapt to localized /showIncludes output It was discovered that MSVC has localized /showIncludes output. Fortunately, it still seems to follow the same generic format, so we can a... — committed to levitte/openssl by levitte 3 years ago
- util/add-depends.pl: Adapt to localized /showIncludes output It was discovered that MSVC has localized /showIncludes output. Fortunately, it still seems to follow the same generic format, so we can a... — committed to openssl/openssl by levitte 3 years ago
I’m reworking #15006 to accomodate for language variance for VC, among others.
Ok, it turns that on my computer only the german language pack was enabled.
I don’t recall deselecting the english language pack explicitly, I guess that VS simply installs only one language pack, the one for the language which you get to choose during the initial setup.
The consequence is that you can’t rely on being able to switch to english output.
Fun fact for @tanzislam and @levitte: I just happened to look into
libcrypto-lib-bio_enc.dand this is what I found:It seems like the
add-depends.plscript doesn’t work anyway if the compiler emits localized messages (which is the default in Visual Studio):https://github.com/openssl/openssl/blob/d830526c711074fdcd82c70c24c31444366a1ed8/util/add-depends.pl#L191
There is a configuration option to turn them off:
no-makedepend/showIncludesprints on stderr, alongside all the error messages, warnings, … there’s no way to get it to a separate file that I know of. Yeah, that’s a royal pain 😕 .They are generated during build (it doesn’t really matter which of the two commands come first in the same rule). The idea is that with a pristine checkout, everything will be built anyway, so knowing all the dependencies isn’t really necessary. On the next build, you should have a full set of
.dfiles, which are integrated into the Makefile. Most of the times, this just works… occasionally, when you move stuff around and add another include, or remove one, you need to run nmake twice… The basic idea is thatmake dependshouldn’t be a manual step, it should be as automated as possible.Windows always surprises me.
Oh! The command to create the dependency files has changed from
$(CC)to$(CPP)… the latter has the flag/EP, which is “Preprocess to stdout Without #line Directives”… that’s a sudden [censor]load of text to process!It might be wise to have a separate config target command attribute specifically for generating dependency data…