Well managed CMake build environments make use of CMAKE_TOOLCHAIN_FILE
to configure build environment such as include/lib search paths,
system libraries, build flags, etc.
This change introduces QUIC_EXTERNAL_TOOLCHAIN build option, which
when enabled stops MSQuic CMake scripts from attempting to
do CMake toolchain job.
QUIC_EXTERNAL_TOOLCHAIN defaults to OFF to preserve original behaviour.
The `find_program()` command is now executed during the configuration
phase to locate `mc.exe` in predefined locations. This approach allows
the CMake toolchain to influence the search without modifying the `%PATH%`.
If user sets CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH=FALSE, then
honor it and fail at configuration time if not found. Otherwise
expect %PATH% to contain mc.exe at build time, which is the case
when VS generator is used.
* Test on Ubuntu 24.04 GitHub Images
* Dockerfile
* more ubuntu24.04 on yml files
* remove Dockerfile
* update reuse image
* Remove misc-include-cleaner build warnings
* More codecheck ignores
* Missed one
* Fix potential buffer overflow
* rollback fix and ignore the error
* Windows to avoid touching GCC pragma
* the warning should be from gcc13
* static_assert expects its string to be normal
* Revert "static_assert expects its string to be normal"
This reverts commit 73ac2579d1.
* add supress option for clang
* clang version
* fix openssl check issue
* fix yaml
* exclude android
* remove Sanitize for xdp
* support azure pipeline
---------
Co-authored-by: ami-GS <1991.daiki@gmail.com>
* built on Linux
* ne files
* renaming
* split socket funcs
* refactor from win
* build from linux
* more on linux
* rename and generate
* use libbpf
* oops
* rebase and add new member
* unify CxPlatTryAddSocket
* pass datapath tests
* integrate Ubuntu 22.04 default libbpf v0.5.0
* temporally
* multithread. all test passed
* secnetperf works
* update build scripts
* nit update
* add duonic installer script for linux
* add xdp-tools directory
* cleanup
* fix Windows build
* fix windows xdp build
* add Github action
* nit fix
* fix dependencies for Install-DuoNic
* add udpate
* add linux xdp dependencies to docker file
* fix installation script
* initialize submodules/xdp-tools recursively
* temporal fix
* make XDP optional
* use ShutdownSqe
* fix yaml files
* remove gcc-multilib and include explicitly
* fix tcp socket to allocate raw
* install xdp deps for linux
* libxdp bug workaround
* oops
* fix idempotency and add one more dep
* TODO: remove this
* enable x86_64 and Ubuntu22.04
* fix type mismatch of uint16_t and UINT16
* add aarch64
* fix
* use flag
* change arch check and file copy
* fix static build and android
* update clog
* clog fix
* fix Clang link issue
* fix CodeCheck and prepare-machine for build
* disable ANDROID for xdp
* fix clog
* Support XDP from 'test.ps1 -UseXdp'
* link libxdp from artifact
* fix dependency
* fix dep
* update xdp-tools to v1.4.2
* fix runtime deps
* fix deps
* Fix Umem addressing and make Rx path async to efficiently fill FQ
* fix CodeQL analyze deps
* fix Analyze
* fix analyze
* linux xdp to use sudo
* change 'if' order
* path fix?
* sudo pwsh
* add retry for xsk_socket__create when returns -EBUSY
* cleanup xdp program before running
* Fix cargo build --all
* fix cargo test dynamic linking
* remove Sanitize for initial commit
* generate artifact
* fix yml syntax issue
* fix CodeQl Analysys
* forget to add Partition declaration
* Use Rundown to wait for deleting socket before binding next
* fix Rundown for all xdp socket
* Fix EBUSY issue when binding xdp socket
* explictly disable port sharing test
* refactoring and cleanup
* fix pipeline. else for normal linux socket
* Fix cargo linking issue?
* disable xdp for cargo build
* fix codeql
* rollback build.rs
* fix package runtime link and codeql
* wrap packet dump function to DEBUG macro
* check dependency
* another check
* leave only LD_LIBRARY_PATH
* iterate attach mode
* fix codeql
* add IP address check in XDP prog
* break is enough & avoid compiler bug
* fix CodeCheck
* Fix use of RxHeadroom
* fix umem leak when failed to initialize
* use pool alloc for Interface
* fix ipv4 check
* remove workaround
* cleanup. from snake case to pascal case
* fix clog
* try ubuntu20.04 and enable stress test
* few fix of stress test yml
* integrate package libxdp linking
* fix RX parse error case
* disable ubuntu20.04
* remove 2 env variable to run
* add document
* fix ForBuild && clog
* stop installing deps on Ubuntu 20.04
* fix build
* fix libc6-dev-i386 side effect
* Add one more dependency (libzstd) for static build
* new line fix
* always install libc6-dev-i386
* fix install order
* fix CMakeLists.txt to cover qns.Dockerfile case
* remove env var dep, update doc
* fix stress.yml
* add env var for xdp knob and fix stress
* fix stress
* update clog
* update doc
* Fix doc appearance and words
* add UseXdp
* Update docs/BUILD.md
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* Update docs/BUILD.md
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* use SKB mode for now
* move Linux XDP logging to TSG.md
* stop warning print from libxdp/libbpf
* move CxPlat definitions to each plat
* initial commit
* common xdp utilities
* move sudo inside scripts
* fix comments
* fix clog
* fix ifdef syntax
* fix annotations
* all arch to build dataptah_xplat.c
* fix mac build
* fix lisence of ebpf prog
* fix spin.ps1 to propagate parameter
* Ether and IPv6 was not set appropriately
* Update docs/TSG.md
* remove warning supression
* remove BuildLibXdpFromSource
---------
Co-authored-by: ami-GS <azureuser@node1.s4l0gsbs5l2efgb53yvjusshdg.xx.internal.cloudapp.net>
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* Remove QUIC_USE_RAW_DATAPATH (logic only)
* move logic to core side
* remove QUIC_USE_RAW_DATAPATH from test
* fix googletest version and add last line
* replace from flag to function call
* fix build error
* fix build/test issues
* implement CxPlatResolveRoute for normal socket
* add Getter of Datapath feature
* fix build issues
* adopt comments
* adopt comment and fix kernel build error
* fix kernel build error
* more fix for kernel build
* Unify datapath
* DatapathTest partially work
* just unify build of both normal socket and xdp
* SOCKET: RAW{...Socket{BASE{addr}}}, DATAPATH: XDP{RAW{DATAPATH*}} <-> DATAPATH{RAW*, BASE{callbacks}}
* tmp
* add preview_feature flag back
* refactoring CxPlatIsRouteReady
* fix linux code check
* adjust func names
* fix comments
* fix IsRouteReady and clean ifdef for _KERNEL_MODE
* kernel build error
* Set RouteResolved for Rx
* fix more tests
* move global definition in header file
* kernel to avoid calling helper function
* move QuitTestIsFeatureSupported after RegistrationOpen
* supress warning
* remove QuitTestIsFeatureSupported from quic_gtest as it doesn't work as expected by dependency of MsQuicLib.Datapath
* remove raw feature check as much as possible
* ifdef for UseQTIP visibility
* tmp
* tmp
* fix merge side effects
* all tests passed
* fix tests in msquicplatformtest
* fix tcp with duonic
* update clog
* use xdp v1
* WIP cleanup
* refactoring CXPLAT_SEND_DATA
* remove mangling and function pointer
* remove unnecessary change in test
* fix comments
* cleanup
* move logic to _winuser
* use dummy raw datapath for uwp build
* dummy raw
* remove double free
* fix comments
* update dummy func
* fix perf run for TCP
* partially fix comments
* fix build error for uwp and remove duplicate variable in raw socket
* set socket before start receiving
* add dummy to clog
* add clog files for dummy
* fix dependency for cargo on windows
* remove dummy clog files
* remove AuxSocket
* add pwsh for cargo setup
* clog fix
* add include dir for cargo
* [WIP] fix cargo and qtip
* fix clog, qtip, rename private raw functions and cleanup
* experiment to avoid write overflow
* use Config->Route->DatapathType for data allocation
* more strict if conditions
* fix comments
* fix uwp build
* fix clog and artifact name
* fix back xdp dependency
* Simply build automation
* missed one
* apply unification to linux and remove QUIC_USE_XDP flag
* move types to any platform
* add abstruction layer for linux
* add clog
* add clog dependencies
* fix CodeCheck issues
* remove xdp specific artifact dir name and always install xdp deps
* add docs
* More Fixes for XDP in automation (mostly OneBranch)
---------
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* Remove QUIC_USE_RAW_DATAPATH (logic only)
* move logic to core side
* remove QUIC_USE_RAW_DATAPATH from test
* fix googletest version and add last line
* replace from flag to function call
* fix build error
* fix build/test issues
* implement CxPlatResolveRoute for normal socket
* add Getter of Datapath feature
* fix build issues
* adopt comments
* adopt comment and fix kernel build error
* fix kernel build error
* more fix for kernel build
* add preview_feature flag back
* refactoring CxPlatIsRouteReady
* fix linux code check
* fix comments
* fix IsRouteReady and clean ifdef for _KERNEL_MODE
* kernel build error
* Set RouteResolved for Rx
* fix more tests
* move global definition in header file
* kernel to avoid calling helper function
* move QuitTestIsFeatureSupported after RegistrationOpen
* supress warning
* remove QuitTestIsFeatureSupported from quic_gtest as it doesn't work as expected by dependency of MsQuicLib.Datapath
* remove raw feature check as much as possible
* ifdef for UseQTIP visibility
* Couple nits and cleanup
---------
Co-authored-by: Nick Banks <nibanks@microsoft.com>
changed base image to ltsc2019/vse2019
installed additional SDK to the image
added pipeline parameter to specify the target branch
Signed-off-by: Jianye Chen <jianyechen@microsoft.com>
Signed-off-by: Jianye Chen <jianyechen@microsoft.com>
updated min. SDK to 10.0.20348.0 for SetThreadIdealProcessor
Signed-off-by: Jianye Chen <jianyechen@microsoft.com>
Signed-off-by: Jianye Chen <jianyechen@microsoft.com>
* simplify winuser SQE->CQE mapping and remove IO completion keys
* add more diagnostics for XDP io completion
* add some more instrumentation for IO completions
* fix bad cmake syntax
* add stronger IO completion verification
* integrate main with local changes
* Added support for ca certificate file setting in SSL_CTX.
* Moved CaCertificateFile struct element to last in struct for backward compatability, added QUIC_CREDENTIAL_FLAGS to indicate that it is set.
* Code cleanup.
* Updated pulic API, move test to top.
* Added support for creating a CA and issuing client or server certificates from the CA certificate + modified a couple of tests to use root certificate and properly generated client certificate.
* Added const.
* Fixed parameter annotations and renamed helper function.
* Added some more comments.
* Added new flag QUIC_CREDENTIAL_FLAG_SET_CA_CERTIFICATE_FILE to PlatformSpecificFlagsOpenSsl test.
* Comment added to better explain the ca cert swap code.
* Reworked ca cert file setting in parameter.
* Added missing compiler directive.
* Removed comment that caused validation function to complain. Fixed syntax error in code not used by openssl version.
* Fixed memory leak and disabled a couple of tests that cannot run when schannel is used.
* Fixed various minor whitespace issues and an ifdef test.
* Restored original whitespacing.
* Added some docs and defined test macro.
* Only run CA certificate tests when using openssl and not on WIN32
* Added some comment to satisfy code scanning tool part of test chain.
Co-authored-by: Johan Bevemyr <jb@avassa.io>