This repository was archived by the owner on Apr 21, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
155 lines (136 loc) · 4.47 KB
/
Makefile
File metadata and controls
155 lines (136 loc) · 4.47 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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# Ditto CoT Makefile
# Builds and cleans all language-specific libraries
# Default target - show help when no command is given
.DEFAULT_GOAL := help
# Build all languages
.PHONY: all
all: rust java csharp
# Rust targets
.PHONY: rust
rust:
@echo "Building Rust library..."
@cd rust && cargo build
.PHONY: clean-rust
clean-rust:
@echo "Cleaning Rust library..."
@cd rust && cargo clean
# Java targets
.PHONY: java
java:
@echo "Cleaning previous build and generated sources..."
@if [ -f "java/build.gradle" ] || [ -f "java/build.gradle.kts" ]; then \
cd java && \
rm -rf build/generated-src build/classes build/resources build/tmp build/libs build/reports build/test-results && \
mkdir -p src/main/java/com/ditto/cot/schema && \
find src/main/java/com/ditto/cot/schema -type f -name '*.java' -delete; \
echo "Generating Java classes from schema..."; \
./gradlew generateSchemaClasses; \
echo "Building Java library..."; \
./gradlew build -x test -x jacocoTestCoverageVerification; \
else \
echo "Java build files not found. Skipping."; \
fi
.PHONY: java-test-client
java-test-client:
@echo "Building Java test client for cross-language tests..."
@if [ -f "java/build.gradle" ] || [ -f "java/build.gradle.kts" ]; then \
cd java && \
echo "Building test client with all dependencies..."; \
./gradlew :ditto_cot:fatJar; \
else \
echo "Java build files not found. Skipping."; \
fi
.PHONY: clean-java
clean-java:
@echo "Cleaning Java library..."
@if [ -f "java/build.gradle" ] || [ -f "java/build.gradle.kts" ]; then \
cd java && ./gradlew clean; \
else \
echo "Java build files not found. Skipping."; \
fi
# C# targets
.PHONY: csharp
csharp:
@echo "Building C# library..."
@if [ -f "csharp/*.sln" ] || [ -f "csharp/*.csproj" ]; then \
cd csharp && dotnet build; \
else \
echo "C# build files not found. Skipping."; \
fi
.PHONY: clean-csharp
clean-csharp:
@echo "Cleaning C# library..."
@if [ -f "csharp/*.sln" ] || [ -f "csharp/*.csproj" ]; then \
cd csharp && dotnet clean; \
else \
echo "C# build files not found. Skipping."; \
fi
# Test targets
.PHONY: test
test: test-rust test-java test-csharp
.PHONY: test-cross-lang
test-cross-lang: java-test-client
@echo "Running cross-language multi-peer test..."
@cd rust && cargo test e2e_cross_lang_multi_peer_test
.PHONY: test-rust
test-rust:
@echo "Testing Rust library..."
@cd rust && cargo nextest run
.PHONY: test-java
test-java:
@echo "Testing Java library and example..."
@if [ -f "java/build.gradle" ] || [ -f "java/build.gradle.kts" ]; then \
cd java && ./gradlew :ditto_cot:test :ditto_cot_example:test --info --console=rich --rerun-tasks; \
else \
echo "Java build files not found. Skipping tests."; \
fi
.PHONY: test-csharp
test-csharp:
@echo "Testing C# library..."
@if [ -f "csharp/*.sln" ] || [ -f "csharp/*.csproj" ]; then \
cd csharp && dotnet test; \
else \
echo "C# build files not found. Skipping tests."; \
fi
# Clean all
.PHONY: clean
clean: clean-rust clean-java clean-csharp
@echo "All libraries cleaned."
# Example targets
.PHONY: example-rust
example-rust:
@echo "Running Rust example..."
@cd rust && cargo run --example integration_client
.PHONY: example-java
example-java:
@echo "Running Java example..."
@cd java && ./gradlew :example:runIntegrationClient
# Integration test target
.PHONY: test-integration
test-integration: example-rust example-java
@echo "Running cross-language integration test..."
@cd rust && cargo test --test integration_test
# Help target
.PHONY: help
help:
@echo "Ditto CoT Makefile"
@echo ""
@echo "Available targets:"
@echo " all - Build all language libraries"
@echo " rust - Build Rust library"
@echo " java - Build Java library"
@echo " csharp - Build C# library"
@echo " test - Run tests for all libraries"
@echo " test-rust - Run tests for Rust library"
@echo " test-java - Run tests for Java library"
@echo " test-csharp - Run tests for C# library"
@echo " test-cross-lang - Run cross-language multi-peer test"
@echo " example-rust - Run Rust example client"
@echo " example-java - Run Java example client"
@echo " test-integration - Run cross-language integration test"
@echo " clean - Clean all libraries"
@echo " clean-rust - Clean Rust library"
@echo " clean-java - Clean Java library"
@echo " clean-csharp - Clean C# library"
@echo " java-test-client - Build Java test client for cross-language tests"
@echo " help - Show this help message"