build(rust): link migrated code into native libraries
Build feature-matched Rust archives for the native Make library path. Flatten their members into libzstd.a so static consumers resolve C-to-Rust and Rust-to-C references in one archive, and whole-archive link shared outputs so every migrated public ABI export remains available. Rust compression and decompression features now mirror the C partial-library switches. This prevents compression-only artifacts from retaining DDict references to decompression-only C helpers. Add a C archive smoke test that round-trips data and exercises the DDict lifecycle through lib/libzstd.a, rather than direct test-object links. Test Plan: - cargo fmt, strict Clippy, cargo test --all-targets, release build - Rust checks with compression-only, decompression-only, and no features - full, partial, forced-HUF, and 32-bit static/shared Make library probes - test-rust-lib-smoke, fuzzer, zstreamtest, and invalidDictionaries Refs: rust/README.md
This commit is contained in:
+12
-1
@@ -308,6 +308,13 @@ largeDictionary: $(ZSTDMT_OBJECTS) $(PRGDIR)/datagen.c largeDictionary.c
|
||||
CLEAN += invalidDictionaries
|
||||
invalidDictionaries : $(ZSTD_OBJECTS) invalidDictionaries.c
|
||||
|
||||
# Exercise the public static archive as an external C consumer would. This
|
||||
# catches a nested Rust archive or unresolved C/Rust cycle that direct object
|
||||
# links cannot expose.
|
||||
CLEAN += rustLibSmoke
|
||||
rustLibSmoke : $(LIB_BINDIR)/libzstd.a rustLibSmoke.c
|
||||
$(LINK.c) $(filter %.c,$^) $(filter %.a,$^) -o $@$(EXT)
|
||||
|
||||
CLEAN += legacy
|
||||
legacy : CPPFLAGS += -UZSTD_LEGACY_SUPPORT -DZSTD_LEGACY_SUPPORT=4
|
||||
legacy : $(ZSTD_FILES) legacy.c
|
||||
@@ -413,7 +420,7 @@ check: test-zstd
|
||||
fuzztest: test-fuzzer test-zstream test-decodecorpus
|
||||
|
||||
.PHONY: test
|
||||
test: test-zstd test-cli-tests test-fullbench test-fuzzer test-zstream test-invalidDictionaries test-legacy test-decodecorpus
|
||||
test: test-zstd test-cli-tests test-fullbench test-fuzzer test-zstream test-invalidDictionaries test-rust-lib-smoke test-legacy test-decodecorpus
|
||||
ifeq ($(QEMU_SYS),)
|
||||
test: test-pool
|
||||
endif
|
||||
@@ -491,6 +498,10 @@ test-largeDictionary: largeDictionary
|
||||
test-invalidDictionaries: invalidDictionaries
|
||||
$(QEMU_SYS) ./invalidDictionaries
|
||||
|
||||
.PHONY: test-rust-lib-smoke
|
||||
test-rust-lib-smoke: rustLibSmoke
|
||||
$(QEMU_SYS) ./rustLibSmoke
|
||||
|
||||
test-legacy: legacy
|
||||
$(QEMU_SYS) ./legacy
|
||||
|
||||
|
||||
Reference in New Issue
Block a user