@@ -6,6 +6,8 @@ BUILD := $(HERE)/build.py
6
6
NULL :=
7
7
SPACE := $(subst ,, )
8
8
9
+ ALL_PYTHON_VERSIONS := 3.9 3.10 3.11 3.12 3.13
10
+
9
11
ifndef PYBUILD_TARGET_TRIPLE
10
12
$(error PYBUILD_TARGET_TRIPLE not defined)
11
13
endif
@@ -68,7 +70,7 @@ PYTHON_DEP_DEPENDS := \
68
70
$(TOOLCHAIN_DEPENDS ) \
69
71
$(NULL )
70
72
71
- default : $(OUTDIR ) /cpython-$(PYBUILD_PYTHON_VERSION ) -$(PACKAGE_SUFFIX ) .tar
73
+ default : $(OUTDIR ) /cpython-$(CPYTHON_ $( PYTHON_MAJOR_VERSION ) _VERSION ) -$(PACKAGE_SUFFIX ) .tar
72
74
73
75
ifndef PYBUILD_NO_DOCKER
74
76
$(OUTDIR ) /image-% .tar : $(OUTDIR ) /% .Dockerfile
@@ -254,26 +256,15 @@ PYTHON_HOST_DEPENDS := \
254
256
$(OUTDIR ) /m4-$(M4_VERSION ) -$(PACKAGE_SUFFIX ) .tar \
255
257
$(NULL )
256
258
257
- $(OUTDIR ) /cpython-3.9-$(CPYTHON_3.9_VERSION ) -$(HOST_PLATFORM ) .tar : $(PYTHON_HOST_DEPENDS )
258
- $(RUN_BUILD ) --docker-image $(DOCKER_IMAGE_BUILD ) cpython-3.9-host
259
-
260
- $(OUTDIR ) /cpython-3.10-$(CPYTHON_3.10_VERSION ) -$(HOST_PLATFORM ) .tar : $(PYTHON_HOST_DEPENDS )
261
- $(RUN_BUILD ) --docker-image $(DOCKER_IMAGE_BUILD ) cpython-3.10-host
262
-
263
- $(OUTDIR ) /cpython-3.11-$(CPYTHON_3.11_VERSION ) -$(HOST_PLATFORM ) .tar : $(PYTHON_HOST_DEPENDS )
264
- $(RUN_BUILD ) --docker-image $(DOCKER_IMAGE_BUILD ) cpython-3.11-host
265
-
266
- $(OUTDIR ) /cpython-3.12-$(CPYTHON_3.12_VERSION ) -$(HOST_PLATFORM ) .tar : $(PYTHON_HOST_DEPENDS )
267
- $(RUN_BUILD ) --docker-image $(DOCKER_IMAGE_BUILD ) cpython-3.12-host
268
-
269
- $(OUTDIR ) /cpython-3.13-$(CPYTHON_3.13_VERSION ) -$(HOST_PLATFORM ) .tar : $(PYTHON_HOST_DEPENDS )
270
- $(RUN_BUILD ) --docker-image $(DOCKER_IMAGE_BUILD ) cpython-3.13-host
271
-
272
- PYTHON_DEPENDS := \
259
+ # Each X.Y Python version has its own set of variables and targets. This independent
260
+ # definition allows multiple Python versions to be built using the same Makefile
261
+ # invocation.
262
+ define python_version_template =
263
+ PYTHON_DEPENDS_$(1 ) := \
273
264
$(PYTHON_SUPPORT_FILES ) \
274
265
$(OUTDIR ) /versions/VERSION.pip \
275
266
$(OUTDIR ) /versions/VERSION.setuptools \
276
- $(OUTDIR ) /cpython-$(PYTHON_MAJOR_VERSION ) -$( PYBUILD_PYTHON_VERSION ) -$(HOST_PLATFORM ) .tar \
267
+ $(OUTDIR ) /cpython-$(1 ) -$$( CPYTHON_ $( 1 ) _VERSION ) -$(HOST_PLATFORM ) .tar \
277
268
$(if $(NEED_AUTOCONF ) ,$(OUTDIR ) /autoconf-$(AUTOCONF_VERSION ) -$(PACKAGE_SUFFIX ) .tar) \
278
269
$(if $(NEED_BDB ) ,$(OUTDIR ) /bdb-$(BDB_VERSION ) -$(PACKAGE_SUFFIX ) .tar) \
279
270
$(if $(NEED_BZIP2 ) ,$(OUTDIR ) /bzip2-$(BZIP2_VERSION ) -$(PACKAGE_SUFFIX ) .tar) \
@@ -296,23 +287,17 @@ PYTHON_DEPENDS := \
296
287
$(if $(NEED_ZLIB ) ,$(OUTDIR ) /zlib-$(ZLIB_VERSION ) -$(PACKAGE_SUFFIX ) .tar) \
297
288
$(NULL )
298
289
299
- ALL_PYTHON_DEPENDS = \
300
- $(PYTHON_DEP_DEPENDS ) \
301
- $(HERE ) /build-cpython.sh \
302
- $(PYTHON_DEPENDS ) \
303
- $(NULL )
304
-
305
- $(OUTDIR ) /cpython-$(CPYTHON_3.9_VERSION ) -$(PACKAGE_SUFFIX ) .tar : $(ALL_PYTHON_DEPENDS )
306
- $(RUN_BUILD ) --docker-image $(DOCKER_IMAGE_BUILD ) cpython-3.9
307
-
308
- $(OUTDIR ) /cpython-$(CPYTHON_3.10_VERSION ) -$(PACKAGE_SUFFIX ) .tar : $(ALL_PYTHON_DEPENDS )
309
- $(RUN_BUILD ) --docker-image $(DOCKER_IMAGE_BUILD ) cpython-3.10
290
+ ALL_PYTHON_DEPENDS_$(1 ) = \
291
+ $$(PYTHON_DEP_DEPENDS ) \
292
+ $$(HERE ) /build-cpython.sh \
293
+ $$(PYTHON_DEPENDS_$(1 ) ) \
294
+ $$(NULL )
310
295
311
- $(OUTDIR ) /cpython-$(CPYTHON_3.11_VERSION ) -$( PACKAGE_SUFFIX ) .tar : $( ALL_PYTHON_DEPENDS )
312
- $(RUN_BUILD ) --docker-image $(DOCKER_IMAGE_BUILD ) cpython-3.11
296
+ $$ (OUTDIR ) /cpython-$(1 ) -$$( CPYTHON_ $( 1 ) _VERSION ) - $$( HOST_PLATFORM ) .tar: $$( PYTHON_HOST_DEPENDS )
297
+ $$ (RUN_BUILD ) --docker-image $$ (DOCKER_IMAGE_BUILD ) cpython-$( 1 ) -host
313
298
314
- $(OUTDIR ) /cpython-$(CPYTHON_3.12_VERSION ) -$(PACKAGE_SUFFIX ) .tar : $(ALL_PYTHON_DEPENDS )
315
- $(RUN_BUILD ) --docker-image $(DOCKER_IMAGE_BUILD ) cpython-3.12
299
+ $$(OUTDIR ) /cpython-$$(CPYTHON_$(1 ) _VERSION ) -$$(PACKAGE_SUFFIX ) .tar: $$(ALL_PYTHON_DEPENDS_$(1 ) )
300
+ $$(RUN_BUILD ) --docker-image $$(DOCKER_IMAGE_BUILD ) cpython-$(1 )
301
+ endef
316
302
317
- $(OUTDIR ) /cpython-$(CPYTHON_3.13_VERSION ) -$(PACKAGE_SUFFIX ) .tar : $(ALL_PYTHON_DEPENDS )
318
- $(RUN_BUILD ) --docker-image $(DOCKER_IMAGE_BUILD ) cpython-3.13
303
+ $(foreach local_version,$(ALL_PYTHON_VERSIONS),$(eval $(call python_version_template,$(local_version))))
0 commit comments