-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathMakefile
More file actions
188 lines (158 loc) · 6.65 KB
/
Makefile
File metadata and controls
188 lines (158 loc) · 6.65 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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
export AUTOINSTALL ?= false
export RUST_VERSION ?= $(shell sed -n 's/^channel *= *"\?\([^"]*\)"\?/\1/p' rust-toolchain.toml)
.PHONY: fmt
fmt:
@echo "Formatting..."
@cargo fmt
@echo "Done formatting."
.PHONY: clean
clean:
@echo "Cleaning..."
@cargo clean
@echo "Done cleaning."
.PHONY: check
check:
@echo "Checking..."
@cargo check --workspace --all-targets
@echo "Done checking."
.PHONY: clippy
clippy:
@echo "Running clippy..."
@cargo clippy --workspace --all-targets
@echo "Done running clippy."
.PHONY: test
test:
@echo "Testing..."
@cargo test --workspace --lib
@echo "Done testing."
.PHONY: build
build:
@echo "Building..."
@cargo build --no-default-features --features default
@echo "Done building."
.PHONY: build-nextgen
build-nextgen:
@echo "Building nextgen mode..."
@cargo build --no-default-features --features default,nextgen
@echo "Done building nextgen mode."
.PHONY: build-release
build-release:
@echo "Building release..."
@cargo build --release --no-default-features --features default
@echo "Done building release."
.PHONY: build-release-nextgen
build-release-nextgen:
@echo "Building release nextgen mode..."
@cargo build --release --no-default-features --features default,nextgen
@echo "Done building release nextgen mode."
.PHONY: build-x86_64-unknown-linux-gnu
build-x86_64-unknown-linux-gnu: target/x86_64-unknown-linux-gnu/release/vector
@echo "Output to ${<}"
.PHONY: build-x86_64-unknown-linux-gnu-nextgen
build-x86_64-unknown-linux-gnu-nextgen: target/x86_64-unknown-linux-gnu/release/vector-nextgen
@echo "Output to ${<}"
.PHONY: build-aarch64-unknown-linux-gnu
build-aarch64-unknown-linux-gnu: target/aarch64-unknown-linux-gnu/release/vector
@echo "Output to ${<}"
.PHONY: build-aarch64-unknown-linux-gnu-nextgen
build-aarch64-unknown-linux-gnu-nextgen: target/aarch64-unknown-linux-gnu/release/vector-nextgen
@echo "Output to ${<}"
.PHONY: build-armv7-unknown-linux-gnueabihf
build-armv7-unknown-linux-gnueabihf: target/armv7-unknown-linux-gnueabihf/release/vector
@echo "Output to ${<}"
.PHONY: build-armv7-unknown-linux-gnueabihf-nextgen
build-armv7-unknown-linux-gnueabihf-nextgen: target/armv7-unknown-linux-gnueabihf/release/vector-nextgen
@echo "Output to ${<}"
.PHONY: build-x86_64-unknown-linux-musl
build-x86_64-unknown-linux-musl: target/x86_64-unknown-linux-musl/release/vector
@echo "Output to ${<}"
.PHONY: build-x86_64-unknown-linux-musl-nextgen
build-x86_64-unknown-linux-musl-nextgen: target/x86_64-unknown-linux-musl/release/vector-nextgen
@echo "Output to ${<}"
.PHONY: build-aarch64-unknown-linux-musl
build-aarch64-unknown-linux-musl: target/aarch64-unknown-linux-musl/release/vector
@echo "Output to ${<}"
.PHONY: build-aarch64-unknown-linux-musl-nextgen
build-aarch64-unknown-linux-musl-nextgen: target/aarch64-unknown-linux-musl/release/vector-nextgen
@echo "Output to ${<}"
.PHONY: build-armv7-unknown-linux-musleabihf
build-armv7-unknown-linux-musleabihf: target/armv7-unknown-linux-musleabihf/release/vector
@echo "Output to ${<}"
.PHONY: build-armv7-unknown-linux-musleabihf-nextgen
build-armv7-unknown-linux-musleabihf-nextgen: target/armv7-unknown-linux-musleabihf/release/vector-nextgen
@echo "Output to ${<}"
# Auto-detect Docker platform for cross-compilation
#
# macOS on Apple Silicon (Darwin arm64) requires --platform linux/amd64 because:
# 1. macOS runs Darwin kernel, not Linux - containers need Linux environment
# 2. Rosetta 2 provides efficient x86_64->ARM64 translation for Linux containers
# 3. Building linux/arm64 containers would require QEMU emulation, which is slower
#
# Usage:
# Default: Auto-detect platform based on host system
# Override: DOCKER_PLATFORM="--platform linux/amd64" make build-aarch64-unknown-linux-gnu
# Disable: DOCKER_PLATFORM="" make build-aarch64-unknown-linux-gnu
DOCKER_PLATFORM ?= $(shell if [ "$$(uname)" = "Darwin" ] && [ "$$(uname -m)" = "arm64" ]; then echo "--platform linux/amd64"; else echo ""; fi)
.PHONY: cross-image-%
cross-image-%: export TRIPLE =$($(strip @):cross-image-%=%)
cross-image-%:
@echo "Building cross image for ${TRIPLE}..."
@if [ -n "$(DOCKER_PLATFORM)" ]; then \
echo "Using Docker platform: $(DOCKER_PLATFORM)"; \
else \
echo "Using default Docker platform"; \
fi
docker build \
$(DOCKER_PLATFORM) \
--tag vector-cross-env:${TRIPLE} \
--file scripts/cross/${TRIPLE}.dockerfile \
scripts/cross
target/%/vector: export PAIR =$(subst /, ,$(@:target/%/vector=%))
target/%/vector: export TRIPLE ?=$(word 1,${PAIR})
target/%/vector: export PROFILE ?=$(word 2,${PAIR})
target/%/vector: export FEATURES =default
target/%/vector: export CFLAGS += -g0 -O3
target/%/vector: cargo-install-cross
$(MAKE) -k cross-image-${TRIPLE}
cross build \
$(if $(findstring release,$(PROFILE)),--release,) \
--target ${TRIPLE} \
--no-default-features \
--features ${FEATURES}
target/%/vector-nextgen: export PAIR =$(subst /, ,$(@:target/%/vector-nextgen=%))
target/%/vector-nextgen: export TRIPLE ?=$(word 1,${PAIR})
target/%/vector-nextgen: export PROFILE ?=$(word 2,${PAIR})
target/%/vector-nextgen: export FEATURES =default,nextgen
target/%/vector-nextgen: export CFLAGS += -g0 -O3
target/%/vector-nextgen: cargo-install-cross
$(MAKE) -k cross-image-${TRIPLE}
cross build \
$(if $(findstring release,$(PROFILE)),--release,) \
--target ${TRIPLE} \
--no-default-features \
--features ${FEATURES}
.PHONY: cargo-install-%
cargo-install-%: override TOOL = $(@:cargo-install-%=%)
cargo-install-%:
$(if $(findstring true,$(AUTOINSTALL)),cargo install ${TOOL} --quiet; cargo clean,)
.PHONY: release-docker
release-docker: target/x86_64-unknown-linux-gnu/release/vector
release-docker: target/aarch64-unknown-linux-gnu/release/vector
# release-docker: target/armv7-unknown-linux-gnueabihf/release/vector
@echo "Releasing docker image..."
@scripts/release-docker.sh
@echo "Done releasing docker image."
.PHONY: release-docker-nextgen
release-docker-nextgen: target/x86_64-unknown-linux-gnu/release/vector-nextgen
release-docker-nextgen: target/aarch64-unknown-linux-gnu/release/vector-nextgen
# release-docker-nextgen: target/armv7-unknown-linux-gnueabihf/release/vector-nextgen
@echo "Releasing docker image (nextgen mode)..."
@NEXTGEN=true scripts/release-docker.sh
@echo "Done releasing docker image (nextgen mode)."
.PHONY: test-integration
test-integration:
@echo "Running integration tests..."
RUST_VERSION=${RUST_VERSION} CASE=topsql_vm docker-compose -f scripts/integration/docker-compose.yml build
RUST_VERSION=${RUST_VERSION} CASE=topsql_vm docker-compose -f scripts/integration/docker-compose.yml run --rm runner
RUST_VERSION=${RUST_VERSION} CASE=topsql_vm docker-compose -f scripts/integration/docker-compose.yml rm --force --stop -v
@echo "Done running integration tests."