| # Common Makefile include for Rust `run-make-fulldeps/coverage-* tests. Include this |
| # file with the line: |
| # |
| # -include ../coverage/coverage_tools.mk |
| |
| -include ../tools.mk |
| |
| # ISSUE(76038): When targeting MSVC, Rust binaries built with both `-Z instrument-coverage` and |
| # `-C link-dead-code` typically crash (with a seg-fault) or at best generate an empty `*.profraw` |
| # file, required for coverage reports. |
| # |
| # Enabling `-C link-dead-code` is not necessary when compiling with `-Z instrument-coverage`, |
| # due to improvements in the coverage map generation, to add unreachable functions known to Rust. |
| # Therefore, `-C link-dead-code` is no longer automatically enabled. |
| |
| UNAME = $(shell uname) |
| |
| # Rust option `-Z instrument-coverage` uses LLVM Coverage Mapping Format version 4, |
| # which requires LLVM 11 or greater. |
| LLVM_VERSION_11_PLUS := $(shell \ |
| LLVM_VERSION=$$("$(LLVM_BIN_DIR)"/llvm-config --version) && \ |
| LLVM_VERSION_MAJOR=$${LLVM_VERSION/.*/} && \ |
| [ $$LLVM_VERSION_MAJOR -ge 11 ] && echo true || echo false) |