Skip to content

Commit 693f2e4

Browse files
authored
Enable parallel compilation by splitting targets per architecture (#2097)
1 parent d788b8e commit 693f2e4

1 file changed

Lines changed: 35 additions & 17 deletions

File tree

Makefile

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ endif
1717

1818
BUILD := $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
1919
LDFLAGS = -s -w
20+
NPROCS := 4
21+
MAKEFLAGS += -j$(NPROCS)
2022
LDFLAGS += -X github.com/aws/amazon-cloudwatch-agent/cfg/agentinfo.VersionStr=${VERSION}
2123
LDFLAGS += -X github.com/aws/amazon-cloudwatch-agent/cfg/agentinfo.BuildStr=${BUILD}
2224
LINUX_AMD64_BUILD = CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -buildmode=${CWAGENT_BUILD_MODE} -ldflags="${LDFLAGS}" -o $(BUILD_SPACE)/bin/linux_amd64
@@ -44,7 +46,9 @@ LINTER = $(TOOLS_BIN_DIR)/golangci-lint
4446
IMPI = $(TOOLS_BIN_DIR)/impi
4547
ADDLICENSE = $(TOOLS_BIN_DIR)/addlicense
4648

47-
prepackage: clean test build
49+
# NOTE: With -j, clean/test/build may race. On Make 4.4+, uncomment to serialize: .NOTPARALLEL: prepackage
50+
test_and_build: test build
51+
prepackage: clean test_and_build
4852
release: prepackage package-rpm package-deb package-win package-darwin
4953
nightly-release: prepackage package-rpm package-deb package-win
5054
nightly-release-mac: prepackage package-darwin
@@ -63,33 +67,47 @@ copy-version-file: create-version-file
6367
mkdir -p build/bin/
6468
cp CWAGENT_VERSION $(BUILD_SPACE)/bin/CWAGENT_VERSION
6569

66-
amazon-cloudwatch-agent-linux: copy-version-file workload-discovery-linux
67-
@echo Building CloudWatchAgent for Linux,Debian with ARM64 and AMD64
70+
amazon-cloudwatch-agent-linux: amazon-cloudwatch-agent-linux-amd64 amazon-cloudwatch-agent-linux-arm64
71+
72+
amazon-cloudwatch-agent-linux-amd64: copy-version-file workload-discovery-linux
73+
@echo Building CloudWatchAgent for Linux AMD64
6874
$(LINUX_AMD64_BUILD)/config-downloader github.com/aws/amazon-cloudwatch-agent/cmd/config-downloader
69-
$(LINUX_ARM64_BUILD)/config-downloader github.com/aws/amazon-cloudwatch-agent/cmd/config-downloader
7075
$(LINUX_AMD64_BUILD)/config-translator github.com/aws/amazon-cloudwatch-agent/cmd/config-translator
71-
$(LINUX_ARM64_BUILD)/config-translator github.com/aws/amazon-cloudwatch-agent/cmd/config-translator
7276
$(LINUX_AMD64_BUILD)/amazon-cloudwatch-agent github.com/aws/amazon-cloudwatch-agent/cmd/amazon-cloudwatch-agent
73-
$(LINUX_ARM64_BUILD)/amazon-cloudwatch-agent github.com/aws/amazon-cloudwatch-agent/cmd/amazon-cloudwatch-agent
7477
$(LINUX_AMD64_BUILD)/start-amazon-cloudwatch-agent github.com/aws/amazon-cloudwatch-agent/cmd/start-amazon-cloudwatch-agent
75-
$(LINUX_ARM64_BUILD)/start-amazon-cloudwatch-agent github.com/aws/amazon-cloudwatch-agent/cmd/start-amazon-cloudwatch-agent
7678
$(LINUX_AMD64_BUILD)/amazon-cloudwatch-agent-config-wizard github.com/aws/amazon-cloudwatch-agent/cmd/amazon-cloudwatch-agent-config-wizard
79+
80+
amazon-cloudwatch-agent-linux-arm64: copy-version-file workload-discovery-linux
81+
@echo Building CloudWatchAgent for Linux ARM64
82+
$(LINUX_ARM64_BUILD)/config-downloader github.com/aws/amazon-cloudwatch-agent/cmd/config-downloader
83+
$(LINUX_ARM64_BUILD)/config-translator github.com/aws/amazon-cloudwatch-agent/cmd/config-translator
84+
$(LINUX_ARM64_BUILD)/amazon-cloudwatch-agent github.com/aws/amazon-cloudwatch-agent/cmd/amazon-cloudwatch-agent
85+
$(LINUX_ARM64_BUILD)/start-amazon-cloudwatch-agent github.com/aws/amazon-cloudwatch-agent/cmd/start-amazon-cloudwatch-agent
7786
$(LINUX_ARM64_BUILD)/amazon-cloudwatch-agent-config-wizard github.com/aws/amazon-cloudwatch-agent/cmd/amazon-cloudwatch-agent-config-wizard
7887

7988

80-
amazon-cloudwatch-agent-darwin: copy-version-file workload-discovery-darwin
89+
amazon-cloudwatch-agent-darwin: amazon-cloudwatch-agent-darwin-amd64 amazon-cloudwatch-agent-darwin-arm64
90+
91+
amazon-cloudwatch-agent-darwin-amd64: copy-version-file workload-discovery-darwin
8192
ifneq ($(OS),Windows_NT)
8293
ifeq ($(shell uname -s),Darwin)
83-
@echo Building CloudWatchAgent for MacOS with ARM64 and AMD64
94+
@echo Building CloudWatchAgent for MacOS AMD64
8495
$(DARWIN_BUILD_AMD64)/config-downloader github.com/aws/amazon-cloudwatch-agent/cmd/config-downloader
85-
$(DARWIN_BUILD_ARM64)/config-downloader github.com/aws/amazon-cloudwatch-agent/cmd/config-downloader
8696
$(DARWIN_BUILD_AMD64)/config-translator github.com/aws/amazon-cloudwatch-agent/cmd/config-translator
87-
$(DARWIN_BUILD_ARM64)/config-translator github.com/aws/amazon-cloudwatch-agent/cmd/config-translator
8897
$(DARWIN_BUILD_AMD64)/amazon-cloudwatch-agent github.com/aws/amazon-cloudwatch-agent/cmd/amazon-cloudwatch-agent
89-
$(DARWIN_BUILD_ARM64)/amazon-cloudwatch-agent github.com/aws/amazon-cloudwatch-agent/cmd/amazon-cloudwatch-agent
9098
$(DARWIN_BUILD_AMD64)/start-amazon-cloudwatch-agent github.com/aws/amazon-cloudwatch-agent/cmd/start-amazon-cloudwatch-agent
91-
$(DARWIN_BUILD_ARM64)/start-amazon-cloudwatch-agent github.com/aws/amazon-cloudwatch-agent/cmd/start-amazon-cloudwatch-agent
9299
$(DARWIN_BUILD_AMD64)/amazon-cloudwatch-agent-config-wizard github.com/aws/amazon-cloudwatch-agent/cmd/amazon-cloudwatch-agent-config-wizard
100+
endif
101+
endif
102+
103+
amazon-cloudwatch-agent-darwin-arm64: copy-version-file workload-discovery-darwin
104+
ifneq ($(OS),Windows_NT)
105+
ifeq ($(shell uname -s),Darwin)
106+
@echo Building CloudWatchAgent for MacOS ARM64
107+
$(DARWIN_BUILD_ARM64)/config-downloader github.com/aws/amazon-cloudwatch-agent/cmd/config-downloader
108+
$(DARWIN_BUILD_ARM64)/config-translator github.com/aws/amazon-cloudwatch-agent/cmd/config-translator
109+
$(DARWIN_BUILD_ARM64)/amazon-cloudwatch-agent github.com/aws/amazon-cloudwatch-agent/cmd/amazon-cloudwatch-agent
110+
$(DARWIN_BUILD_ARM64)/start-amazon-cloudwatch-agent github.com/aws/amazon-cloudwatch-agent/cmd/start-amazon-cloudwatch-agent
93111
$(DARWIN_BUILD_ARM64)/amazon-cloudwatch-agent-config-wizard github.com/aws/amazon-cloudwatch-agent/cmd/amazon-cloudwatch-agent-config-wizard
94112
endif
95113
endif
@@ -235,7 +253,7 @@ clean::
235253
rm -rf release/ build/
236254
rm -f CWAGENT_VERSION
237255

238-
package-prepare-rpm:
256+
package-prepare-rpm: amazon-cloudwatch-agent-linux
239257
# amd64 rpm
240258
mkdir -p $(BUILD_SPACE)/private/linux/amd64/rpm/amazon-cloudwatch-agent-pre-pkg
241259
cp $(BUILD_SPACE)/bin/linux_amd64/* $(BUILD_SPACE)/private/linux/amd64/rpm/amazon-cloudwatch-agent-pre-pkg/
@@ -265,7 +283,7 @@ package-prepare-rpm:
265283
cp $(BASE_SPACE)/packaging/opentelemetry-jmx-metrics.jar $(BUILD_SPACE)/private/linux/arm64/rpm/amazon-cloudwatch-agent-pre-pkg/opentelemetry-jmx-metrics.jar
266284
cp -rf $(BASE_SPACE)/Tools $(BUILD_SPACE)/
267285

268-
package-prepare-deb:
286+
package-prepare-deb: amazon-cloudwatch-agent-linux
269287
# amd64 deb
270288
mkdir -p $(BUILD_SPACE)/private/linux/amd64/deb/amazon-cloudwatch-agent-pre-pkg
271289
cp $(BUILD_SPACE)/bin/linux_amd64/* $(BUILD_SPACE)/private/linux/amd64/deb/amazon-cloudwatch-agent-pre-pkg/
@@ -295,7 +313,7 @@ package-prepare-deb:
295313
cp -rf $(BASE_SPACE)/Tools $(BUILD_SPACE)/
296314
cp -rf $(BASE_SPACE)/packaging $(BUILD_SPACE)/
297315

298-
package-prepare-win-zip:
316+
package-prepare-win-zip: amazon-cloudwatch-agent-windows
299317
# amd64 win
300318
mkdir -p $(BUILD_SPACE)/private/windows/amd64/zip/amazon-cloudwatch-agent-pre-pkg
301319
cp $(BUILD_SPACE)/bin/windows_amd64/* $(BUILD_SPACE)/private/windows/amd64/zip/amazon-cloudwatch-agent-pre-pkg/
@@ -310,7 +328,7 @@ package-prepare-win-zip:
310328
cp $(BASE_SPACE)/packaging/opentelemetry-jmx-metrics.jar $(BUILD_SPACE)/private/windows/amd64/zip/amazon-cloudwatch-agent-pre-pkg/opentelemetry-jmx-metrics.jar
311329
cp -rf $(BASE_SPACE)/Tools $(BUILD_SPACE)/
312330

313-
package-prepare-darwin-tar:
331+
package-prepare-darwin-tar: amazon-cloudwatch-agent-darwin
314332
# amd64 darwin
315333
mkdir -p $(BUILD_SPACE)/private/darwin/amd64/tar/amazon-cloudwatch-agent-pre-pkg
316334
cp $(BUILD_SPACE)/bin/darwin_amd64/* $(BUILD_SPACE)/private/darwin/amd64/tar/amazon-cloudwatch-agent-pre-pkg/

0 commit comments

Comments
 (0)