microsoft / msquic

Cross-platform, C implementation of the IETF QUIC protocol, exposed to C, C++, C# and Rust.
MIT License
4.03k stars 530 forks source link

libmsquic.a is not generated with three Disable... build options #3111

Open ami-GS opened 1 year ago

ami-GS commented 1 year ago

Describe the bug

Tested on Ubuntu 20.04 pwsh ./scripts/build.ps1 -Static -DisableTest -DisableTools -DisablePerf Doesn't generate libmsquic.a

pwsh ./scripts/build.ps1 -DisableTest -DisableTools -DisablePerf can generate libmsquic.so

Affected OS

Additional OS information

Ubuntu20.04 on WSL (and docker on WSL)

MsQuic version

main

Steps taken to reproduce bug

# need cmake version 3.2X
pwsh ./scripts/build.ps1 -Static -DisableTest -DisableTools -DisablePerf

Expected behavior

artifacts/bin/linux/x64_Debug_openssl/libmsquic.a is not generated

Actual outcome

artifacts/bin/linux/x64_Debug_openssl/libmsquic.a need to be generated

Additional details

No response

nibanks commented 1 year ago

@ami-GS is this still repo'ing or did you figure it out?

ami-GS commented 1 year ago

Still reproing. I did not touch yet

wfurt commented 1 year ago

It seems like the library is generated but not copied to the artifact dirs.

pwsh scripts/build.ps1 -Static -DisableTest -DisableTools -DisablePerf
furt@ubu20:~/github/wfurt-msquic$ find . -name *.a
./build/linux/x64_openssl/obj/Debug/libcore.a
./build/linux/x64_openssl/obj/Debug/libplatform.a
./build/linux/x64_openssl/obj/Debug/liblogging.a
./build/linux/x64_openssl/obj/Debug/libmsquic_static.a
./build/linux/x64_openssl/_deps/opensslquic-build/openssl/lib/libcrypto.a
./build/linux/x64_openssl/_deps/opensslquic-build/openssl/lib/libssl.a
./build/linux/x64_openssl/_deps/opensslquic-build/submodules/openssl/libcrypto.a
./build/linux/x64_openssl/_deps/opensslquic-build/submodules/openssl/apps/libapps.a
./build/linux/x64_openssl/_deps/opensslquic-build/submodules/openssl/libssl.a

However, the workaround is to build any executable binary like

pwsh scripts/build.ps1 -Static -DisableTest -DisablePerf
furt@ubu20:~/github/wfurt-msquic$ find . -name *.a
./build/linux/x64_openssl/obj/Debug/libcore.a
./build/linux/x64_openssl/obj/Debug/libplatform.a
./build/linux/x64_openssl/obj/Debug/liblogging.a
./build/linux/x64_openssl/obj/Debug/libmsquic_static.a
./build/linux/x64_openssl/_deps/opensslquic-build/openssl/lib/libcrypto.a
./build/linux/x64_openssl/_deps/opensslquic-build/openssl/lib/libssl.a
./build/linux/x64_openssl/_deps/opensslquic-build/submodules/openssl/libcrypto.a
./build/linux/x64_openssl/_deps/opensslquic-build/submodules/openssl/apps/libapps.a
./build/linux/x64_openssl/_deps/opensslquic-build/submodules/openssl/libssl.a
./artifacts/bin/linux/x64_Debug_openssl/libmsquic.a

(or tests)

It seems like when not used for linking cmake simply does not invoke target to copy that over.