@@ -28,6 +28,10 @@ ifneq ($(strip $(RUNC_VERSION)),)
28
28
DOCKER_BUILD_OPTS +=--build-arg=RUNC_VERSION=$(RUNC_VERSION )
29
29
endif
30
30
31
+ ifeq ($(strip $(TARGETPLATFORM ) ) ,)
32
+ TARGETPLATFORM =local
33
+ endif
34
+
31
35
.PHONY : help
32
36
help : # # show make targets
33
37
@awk ' BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST )
@@ -71,11 +75,9 @@ static-linux: static-cli static-engine static-buildx-plugin static-compose-plugi
71
75
done
72
76
tar -C build/linux -c -z -f build/linux/docker-rootless-extras-$(GEN_STATIC_VER).tgz docker-rootless-extras
73
77
74
- # buildx
75
- tar -C $(BUILDX_DIR)/bin -c -z -f build/linux/docker-buildx-plugin-$(DOCKER_BUILDX_REF:v%=%).tgz docker-buildx
76
-
77
- # compose
78
+ # compose, buildx
78
79
tar -C "$(COMPOSE_DIR)"/bin/ -c -z -f build/linux/docker-compose-plugin-"$(DOCKER_COMPOSE_REF:v%=%)".tgz docker-compose
80
+ tar -C "$(BUILDX_DIR)"/bin/ -c -z -f build/linux/docker-buildx-plugin-"$(DOCKER_BUILDX_REF:v%=%)".tgz docker-buildx
79
81
80
82
.PHONY : hash_files
81
83
hash_files :
@@ -87,30 +89,65 @@ buildx:
87
89
docker buildx inspect | grep -q ' Driver: docker-container' || docker buildx create --use
88
90
89
91
.PHONY : cross-mac
90
- cross-mac : TARGETPLATFORM=darwin/amd64
91
- cross-mac : buildx static-buildx-plugin
92
- cd $(CLI_DIR ) && VERSION=$(GEN_STATIC_VER ) docker buildx bake --set binary.platform=darwin/amd64,darwin/arm64 binary
93
- dest=$$ PWD/build/mac; cd $(CLI_DIR ) /build && for platform in * ; do \
94
- arch=$$(echo $$platform | cut -d_ -f2 ) ; \
95
- mkdir -p $$ dest/$$ arch/docker-cli; \
96
- cp $$ platform/docker-darwin-* $$ dest/$$ arch/docker-cli/docker && \
97
- tar -C $$ dest/$$ arch -c -z -f $$ dest/$$ arch/docker-cli-$(GEN_STATIC_VER ) .tgz docker-cli; \
98
- tar -C $(BUILDX_DIR ) /bin -c -z -f $$ dest/$$ arch/docker-buildx-plugin-$(DOCKER_BUILDX_REF:v%=% ) .tgz docker-buildx; \
99
- done
92
+ cross-mac : cross-mac-amd64 cross-mac-arm64
93
+ @echo " Cross-compiling mac binaries"
94
+
95
+ .PHONY : cross-mac-amd64
96
+ cross-mac-amd64 : TARGETPLATFORM=darwin/amd64
97
+ cross-mac-amd64 : buildx
98
+ # Call make again to forward the target platform, otherwise it'd would be reset
99
+ $(MAKE ) TARGETPLATFORM=$(TARGETPLATFORM ) static-cli
100
+ $(MAKE ) TARGETPLATFORM=$(TARGETPLATFORM ) static-buildx-plugin
101
+ $(MAKE ) TARGETPLATFORM=$(TARGETPLATFORM ) static-compose-plugin
102
+
103
+ # cli
104
+ mkdir -p build/mac/amd64/docker-cli
105
+ cp -L $(CLI_DIR)/build/docker build/mac/amd64/docker-cli/docker
106
+ tar -C build/mac/amd64/ -c -z -f build/mac/amd64/docker-cli-$(GEN_STATIC_VER).tgz docker-cli
107
+
108
+ # compose, buildx
109
+ tar -C "$(COMPOSE_DIR)"/bin/ -c -z -f build/mac/amd64/docker-compose-plugin-"$(DOCKER_COMPOSE_REF:v%=%)".tgz docker-compose
110
+ tar -C "$(BUILDX_DIR)"/bin/ -c -z -f build/mac/amd64/docker-buildx-plugin-"$(DOCKER_BUILDX_REF:v%=%)".tgz docker-buildx
111
+
112
+ .PHONY : cross-mac-arm64
113
+ cross-mac-arm64 : TARGETPLATFORM=darwin/arm64
114
+ cross-mac-arm64 : buildx
115
+ # Call make again to forward the target platform, otherwise it'd would be reset
116
+ $(MAKE ) TARGETPLATFORM=$(TARGETPLATFORM ) static-cli
117
+ $(MAKE ) TARGETPLATFORM=$(TARGETPLATFORM ) static-buildx-plugin
118
+ $(MAKE ) TARGETPLATFORM=$(TARGETPLATFORM ) static-compose-plugin
119
+
120
+ # cli
121
+ mkdir -p build/mac/arm64/docker-cli
122
+ cp -L $(CLI_DIR)/build/docker build/mac/arm64/docker-cli/docker
123
+ tar -C build/mac/arm64/ -c -z -f build/mac/arm64/docker-cli-$(GEN_STATIC_VER).tgz docker-cli
124
+
125
+ # compose, buildx
126
+ tar -C "$(COMPOSE_DIR)"/bin/ -c -z -f build/mac/arm64/docker-compose-plugin-"$(DOCKER_COMPOSE_REF:v%=%)".tgz docker-compose
127
+ tar -C "$(BUILDX_DIR)"/bin/ -c -z -f build/mac/arm64/docker-buildx-plugin-"$(DOCKER_BUILDX_REF:v%=%)".tgz docker-buildx
100
128
101
129
.PHONY : cross-win
102
- cross-win : TARGETPLATFORM=windows/amd64
103
- cross-win : EXT=.exe
104
- cross-win : cross-win-engine static-buildx-plugin
105
- cd $(CLI_DIR ) && VERSION=$(GEN_STATIC_VER ) docker buildx bake --set binary.platform=windows/amd64 binary
130
+ cross-win : TARGETPLATFORM=windows/arm64
131
+ cross-win : cross-win-engine
132
+ # Call make again to forward the target platform, otherwise it'd would be reset
133
+ $(MAKE ) TARGETPLATFORM=$(TARGETPLATFORM ) static-cli
134
+ $(MAKE ) TARGETPLATFORM=$(TARGETPLATFORM ) EXT=" .exe" static-buildx-plugin
135
+ $(MAKE ) TARGETPLATFORM=$(TARGETPLATFORM ) static-compose-plugin
106
136
mkdir -p build/win/amd64/docker-cli
107
137
mkdir -p build/win/amd64/docker-engine
108
138
mkdir -p build/win/amd64/docker-buildx
109
- cp $(CLI_DIR ) /build/docker-windows-amd64.exe build/win/amd64/docker-cli/docker.exe
139
+ mkdir -p build/win/amd64/docker-compose
140
+ cp -L $(CLI_DIR ) /build/docker build/win/amd64/docker-cli/docker.exe
110
141
cp $(ENGINE_DIR ) /bundles/cross/windows/amd64-daemon/dockerd.exe build/win/amd64/docker-engine/dockerd.exe
111
142
cp $(ENGINE_DIR ) /bundles/cross/windows/amd64-daemon/docker-proxy.exe build/win/amd64/docker-engine/docker-proxy.exe
112
143
cp $(BUILDX_DIR ) /bin/docker-buildx.exe build/win/amd64/docker-buildx/docker-buildx.exe
113
- docker run --rm -v $(CURDIR ) /build/win/amd64:/v -w /v alpine sh -c ' apk update&&apk add zip && zip -r docker-cli-$(GEN_STATIC_VER).zip docker-cli && zip -r docker-engine-$(GEN_STATIC_VER).zip docker-engine && zip -r docker-buildx-plugin--$(DOCKER_BUILDX_REF:v%=%).zip docker-buildx'
144
+ cp $(COMPOSE_DIR ) /bin/docker-compose/docker-compose.exe build/win/amd64/docker-compose/docker-compose.exe
145
+
146
+ docker run --rm -v $(CURDIR)/build/win/amd64:/v -w /v alpine sh -c 'apk add --no-cache zip \
147
+ && zip -r docker-cli-$(GEN_STATIC_VER).zip docker-cli \
148
+ && zip -r docker-engine-$(GEN_STATIC_VER).zip docker-engine \
149
+ && zip -r docker-buildx-plugin--$(DOCKER_BUILDX_REF:v%=%).zip docker-buildx \
150
+ && zip -r docker-compose-plugin--$(DOCKER_COMPOSE_REF:v%=%).zip docker-compose'
114
151
$(CHOWN) -R $(shell id -u):$(shell id -g) build
115
152
116
153
.PHONY : cross-arm
@@ -133,14 +170,19 @@ static-buildx-plugin:
133
170
134
171
.PHONY : static-compose-plugin
135
172
static-compose-plugin :
136
- # --platform "$(TARGETPLATFORM)" \
137
173
$(RM ) -r " $( COMPOSE_DIR) " /bin
138
174
docker buildx build " $( COMPOSE_DIR) " \
139
175
--target compose-plugin \
140
- --platform local \
176
+ --platform " $( or $( TARGETPLATFORM ) , local) " \
141
177
--build-arg GIT_TAG=" $( DOCKER_COMPOSE_REF) " \
142
178
--output $(COMPOSE_DIR ) /bin/docker-compose/
143
179
180
+ ls -laR $(COMPOSE_DIR)/bin
181
+
182
+ .PHONY : cross-cli
183
+ cross-cli :
184
+ cd $(CLI_DIR ) && VERSION=$(GEN_STATIC_VER ) docker buildx bake --set binary.platform=" $( or $( TARGETPLATFORM) ,local) " binary
185
+
144
186
.PHONY : cross-all-cli
145
187
cross-all-cli :
146
188
$(MAKE ) -C $(CLI_DIR ) -f docker.Makefile VERSION=$(GEN_STATIC_VER ) cross
0 commit comments