5
5
# - iOS - build everything for iOS
6
6
# - tvOS - build everything for tvOS
7
7
# - watchOS - build everything for watchOS
8
+ # - visionOS - build everything for visionOS
8
9
9
10
# Current directory
10
11
PROJECT_DIR =$(shell pwd)
@@ -18,41 +19,49 @@ BUILD_NUMBER=custom
18
19
# of a release cycle, as official binaries won't be published.
19
20
# PYTHON_MICRO_VERSION is the full version number, without any alpha/beta/rc suffix. (e.g., 3.10.0)
20
21
# PYTHON_VER is the major/minor version (e.g., 3.10)
21
- PYTHON_VERSION =3.14.0a6
22
+ PYTHON_VERSION =3.14.0a7
22
23
PYTHON_PKG_VERSION =$(PYTHON_VERSION )
23
24
PYTHON_MICRO_VERSION =$(shell echo $(PYTHON_VERSION ) | grep -Eo "\d+\.\d+\.\d+")
24
25
PYTHON_PKG_MICRO_VERSION =$(shell echo $(PYTHON_PKG_VERSION ) | grep -Eo "\d+\.\d+\.\d+")
25
26
PYTHON_VER =$(basename $(PYTHON_VERSION ) )
26
27
27
28
# The binary releases of dependencies, published at:
28
29
# https://github.com/beeware/cpython-apple-source-deps/releases
29
- BZIP2_VERSION =1.0.8-1
30
- LIBFFI_VERSION =3.4.7-1
31
- MPDECIMAL_VERSION =4.0.0-1
32
- OPENSSL_VERSION =3.0.16-1
33
- XZ_VERSION =5.6.4-1
30
+ BZIP2_VERSION =1.0.8-2
31
+ LIBFFI_VERSION =3.4.7-2
32
+ MPDECIMAL_VERSION =4.0.0-2
33
+ OPENSSL_VERSION =3.0.16-2
34
+ XZ_VERSION =5.6.4-2
34
35
35
36
# Supported OS
36
- OS_LIST =macOS iOS tvOS watchOS
37
+ OS_LIST =macOS iOS tvOS watchOS visionOS
37
38
38
39
CURL_FLAGS =--disable --fail --location --create-dirs --progress-bar
39
40
40
41
# macOS targets
41
42
TARGETS-macOS =macosx.x86_64 macosx.arm64
43
+ TRIPLE_OS-macOS =macos
42
44
VERSION_MIN-macOS =11.0
43
45
44
46
# iOS targets
45
47
TARGETS-iOS =iphonesimulator.x86_64 iphonesimulator.arm64 iphoneos.arm64
48
+ TRIPLE_OS-iOS =ios
46
49
VERSION_MIN-iOS =13.0
47
50
48
51
# tvOS targets
49
52
TARGETS-tvOS =appletvsimulator.x86_64 appletvsimulator.arm64 appletvos.arm64
53
+ TRIPLE_OS-tvOS =tvos
50
54
VERSION_MIN-tvOS =12.0
51
55
52
56
# watchOS targets
53
57
TARGETS-watchOS =watchsimulator.x86_64 watchsimulator.arm64 watchos.arm64_32
58
+ TRIPLE_OS-watchOS =watchos
54
59
VERSION_MIN-watchOS =4.0
55
60
61
+ TARGETS-visionOS =xrsimulator.arm64 xros.arm64
62
+ TRIPLE_OS-visionOS =xros
63
+ VERSION_MIN-visionOS =2.0
64
+
56
65
# The architecture of the machine doing the build
57
66
HOST_ARCH =$(shell uname -m)
58
67
HOST_PYTHON =$(shell which python$(PYTHON_VER ) )
@@ -128,10 +137,10 @@ ARCH-$(target)=$$(subst .,,$$(suffix $(target)))
128
137
129
138
ifneq ($(os ) ,macOS)
130
139
ifeq ($$(findstring simulator,$$(SDK-$(target))),)
131
- TARGET_TRIPLE-$(target) =$$(ARCH-$(target ) ) -apple-$$(OS_LOWER -$(target ) )$$(VERSION_MIN-$(os ) )
140
+ TARGET_TRIPLE-$(target) =$$(ARCH-$(target ) ) -apple-$$(TRIPLE_OS -$(os ) )$$(VERSION_MIN-$(os ) )
132
141
IS_SIMULATOR-$(target) =False
133
142
else
134
- TARGET_TRIPLE-$(target) =$$(ARCH-$(target ) ) -apple-$$(OS_LOWER -$(target ) )$$(VERSION_MIN-$(os ) ) -simulator
143
+ TARGET_TRIPLE-$(target) =$$(ARCH-$(target ) ) -apple-$$(TRIPLE_OS -$(os ) )$$(VERSION_MIN-$(os ) ) -simulator
135
144
IS_SIMULATOR-$(target) =True
136
145
endif
137
146
endif
@@ -398,15 +407,13 @@ define build-sdk
398
407
sdk=$1
399
408
os=$2
400
409
401
- OS_LOWER-$(sdk ) =$(shell echo $(os ) | tr '[:upper:]' '[:lower:]')
402
-
403
410
SDK_TARGETS-$(sdk ) =$$(filter $(sdk ) .% ,$$(TARGETS-$(os ) ) )
404
411
SDK_ARCHES-$(sdk ) =$$(sort $$(subst .,,$$(suffix $$(SDK_TARGETS-$(sdk ) ) ) ) )
405
412
406
413
ifeq ($$(findstring simulator,$(sdk ) ) ,)
407
- SDK_SLICE-$(sdk) =$$(OS_LOWER -$(sdk ) ) -$$(shell echo $$(SDK_ARCHES-$(sdk ) ) | sed "s/ /_/g")
414
+ SDK_SLICE-$(sdk) =$$(TRIPLE_OS -$(os ) ) -$$(shell echo $$(SDK_ARCHES-$(sdk ) ) | sed "s/ /_/g")
408
415
else
409
- SDK_SLICE-$(sdk) =$$(OS_LOWER -$(sdk ) ) -$$(shell echo $$(SDK_ARCHES-$(sdk ) ) | sed "s/ /_/g") -simulator
416
+ SDK_SLICE-$(sdk) =$$(TRIPLE_OS -$(os ) ) -$$(shell echo $$(SDK_ARCHES-$(sdk ) ) | sed "s/ /_/g") -simulator
410
417
endif
411
418
412
419
# Expand the build-target macro for target on this OS
@@ -481,11 +488,15 @@ $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h: $$(PYTHON_LIB-$(sdk))
481
488
mkdir -p $$(PYTHON_INSTALL-$(sdk))/include
482
489
ln -si ../Python.framework/Headers $$(PYTHON_INSTALL-$(sdk))/include/python$(PYTHON_VER)
483
490
491
+ ifeq ($(os ) , visionOS)
492
+ echo "Skipping arch-specific header copying for visionOS"
493
+ else
484
494
# Add the individual headers from each target in an arch-specific name
485
495
$$(foreach target,$$(SDK_TARGETS-$(sdk)),cp $$(PYTHON_INCLUDE-$$(target))/pyconfig.h $$(PYTHON_INCLUDE-$(sdk))/pyconfig-$$(ARCH-$$(target)).h; )
486
496
487
497
# Copy the cross-target header from the source folder of the first target in the $(sdk) SDK
488
498
cp $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$(sdk))))/$(os)/Resources/pyconfig.h $$(PYTHON_INCLUDE-$(sdk))/pyconfig.h
499
+ endif
489
500
490
501
491
502
$$(PYTHON_STDLIB-$(sdk ) ) /LICENSE.TXT : $$(PYTHON_LIB-$(sdk ) ) $$(PYTHON_FRAMEWORK-$(sdk ) ) /Info.plist $$(PYTHON_INCLUDE-$(sdk ) ) /pyconfig.h $$(foreach target,$$(SDK_TARGETS-$(sdk ) ) ,$$(PYTHON_PLATFORM_SITECUSTOMIZE-$$(target ) ) )
@@ -650,7 +661,7 @@ $$(PYTHON_XCFRAMEWORK-$(os))/Info.plist: \
650
661
$$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/lib $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
651
662
$$(foreach sdk,$$(SDKS-$(os)),cp -r $$(PYTHON_INSTALL-$$(sdk))/platform-config $$(PYTHON_XCFRAMEWORK-$(os))/$$(SDK_SLICE-$$(sdk)); )
652
663
653
- ifeq ($(os ) ,iOS)
664
+ ifeq ($(filter $( os ) ,iOS visionOS) , $( os ) )
654
665
@echo ">>> Clone testbed project for $(os)"
655
666
$(HOST_PYTHON) $$(PYTHON_SRCDIR-$$(firstword $$(SDK_TARGETS-$$(firstword $$(SDKS-$(os))))))/iOS/testbed clone --framework $$(PYTHON_XCFRAMEWORK-$(os)) support/$(PYTHON_VER)/$(os)/testbed
656
667
endif
0 commit comments