-
Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathMakefile
More file actions
76 lines (62 loc) · 3.21 KB
/
Copy pathMakefile
File metadata and controls
76 lines (62 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
.PHONY: xdr-generate xdr-clean-generated xdr-clean-all xdr-update \
xdr-generator-test xdr-generator-update-snapshots \
xdr-generator-validate xdr-generate-tests help
.DEFAULT_GOAL := help
XDRS = xdr/Stellar-SCP.x xdr/Stellar-ledger-entries.x xdr/Stellar-ledger.x \
xdr/Stellar-overlay.x xdr/Stellar-transaction.x xdr/Stellar-types.x \
xdr/Stellar-contract-env-meta.x xdr/Stellar-contract-meta.x \
xdr/Stellar-contract-spec.x xdr/Stellar-contract.x \
xdr/Stellar-internal.x xdr/Stellar-contract-config-setting.x \
xdr/Stellar-exporter.x
XDR_COMMIT = 55a00d96afcf4d85340b071b8d44a4e645f25bc4
RUBY_IMAGE = ruby:3.4
# Use CURDIR (always set by GNU Make) instead of PWD for portability
xdr/%.x: | xdr/
curl -Lsf -o $@.tmp https://raw.githubusercontent.com/stellar/stellar-xdr/$(XDR_COMMIT)/$(@F) && mv $@.tmp $@
xdr/:
mkdir -p xdr
xdr-generate: $(XDRS) ## Download .x files and generate Dart XDR classes
docker run --rm -v $(CURDIR):/wd -w /wd $(RUBY_IMAGE) /bin/bash -c '\
cd tools/xdr-generator && \
bundle config set --local path vendor/bundle && \
bundle install --quiet && \
bundle exec ruby generate.rb'
@command -v dart >/dev/null 2>&1 && dart format lib/src/xdr/ || \
echo "Note: dart not found, skipping format. Run 'dart format lib/src/xdr/' manually."
xdr-clean-generated: ## Remove only generated Dart files (preserves hand-maintained wrappers)
@if grep -rl 'automatically generated by xdrgen' lib/src/xdr/ >/dev/null 2>&1; then \
grep -rl 'automatically generated by xdrgen' lib/src/xdr/ | xargs rm -f; \
else \
echo "WARNING: No files with generated marker found."; \
echo "If this is the first run, use 'make xdr-generate' directly."; \
fi
xdr-clean-all: xdr-clean-generated ## Remove generated files AND downloaded .x definitions
rm -f xdr/*.x
xdr-update: xdr-clean-all xdr-generate ## Re-download .x files and regenerate Dart XDR classes
xdr-generator-test: ## Run snapshot tests via Docker
docker run --rm -v $(CURDIR):/wd -w /wd $(RUBY_IMAGE) /bin/bash -c '\
cd tools/xdr-generator && \
bundle config set --local path vendor/bundle && \
bundle install --quiet && \
bundle exec ruby test/generator_snapshot_test.rb'
xdr-generator-update-snapshots: ## Regenerate golden snapshot files
docker run --rm -v $(CURDIR):/wd -w /wd $(RUBY_IMAGE) /bin/bash -c '\
cd tools/xdr-generator && \
bundle config set --local path vendor/bundle && \
bundle install --quiet && \
bundle exec ruby test/update_snapshots.rb'
xdr-generator-validate: ## Validate generated types against XDR definitions
docker run --rm -v $(CURDIR):/wd -w /wd $(RUBY_IMAGE) /bin/bash -c '\
cd tools/xdr-generator && \
bundle config set --local path vendor/bundle && \
bundle install --quiet && \
bundle exec ruby test/validate_generated_types.rb'
xdr-generate-tests: ## Regenerate XDR unit tests
docker run --rm -v $(CURDIR):/wd -w /wd $(RUBY_IMAGE) /bin/bash -c '\
cd tools/xdr-generator && \
bundle config set --local path vendor/bundle && \
bundle install --quiet && \
bundle exec ruby test/generate_tests.rb'
help: ## Show available targets
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | \
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-35s\033[0m %s\n", $$1, $$2}'