Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding support for iOS #1742

Open
holzschu opened this issue Aug 20, 2023 · 17 comments
Open

Adding support for iOS #1742

holzschu opened this issue Aug 20, 2023 · 17 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@holzschu
Copy link

Hi,
I'm maintaining a Python distribution that runs on iOS (iPhones and iPads). Some of the packages in that distribution use maturin for building (as one does). Currently, my setup breaks with the following error:

💥 maturin failed
  Caused by: The operating system Ios is not supported

Compiling for iOS is very similar to compiling for OSX; I'd like to expand maturin to add support for iOS.

  • is there any documentation on how to add support for a new platform?
  • is there an interest for this in the project (as in, assuming it works, should I make a PR?)
@holzschu holzschu added the enhancement New feature or request label Aug 20, 2023
@messense
Copy link
Member

  • is there any documentation on how to add support for a new platform?

See https://maturin.rs/platform_support.

  • is there an interest for this in the project (as in, assuming it works, should I make a PR?)

Sure, pull requests are welcome.

Could you paste a python3 -m sysconfig output for iOS here or make a PR to put it in https://github.com/PyO3/maturin/tree/main/sysconfig first?

@holzschu
Copy link
Author

holzschu commented Aug 21, 2023

Here you go. The UUID bits (e.g. E7065B62-29FB-465A-A6BC-8FA675DD351A) will be different for another device or installation. There are two of them, one for where the app is located, one for where the user files are located.

Platform: "macosx-13.4-arm64"
Python version: "3.11"
Current installation scheme: "posix_prefix"

Paths: 
	data = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library"
	include = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/include/python3.11"
	platinclude = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/include/python3.11"
	platlib = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/lib/python3.11/site-packages"
	platstdlib = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/lib/python3.11"
	purelib = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/lib/python3.11/site-packages"
	scripts = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/bin"
	stdlib = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/lib/python3.11"

Variables: 
	ABIFLAGS = ""
	AC_APPLE_UNIVERSAL_BUILD = "0"
	AIX_BUILDDATE = "0"
	AIX_GENUINE_CPLUSPLUS = "0"
	ALIGNOF_LONG = "8"
	ALIGNOF_SIZE_T = "8"
	ALT_SOABI = "0"
	ANDROID_API_LEVEL = "0"
	AR = "ar"
	ARFLAGS = "rcs"
	BASECFLAGS = "-Wsign-compare -Wunreachable-code"
	BASECPPFLAGS = ""
	BASEMODLIBS = ""
	BINDIR = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/bin"
	BINLIBDEST = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11"
	BLDLIBRARY = "-L. -lpython3.11"
	BLDSHARED = "clang -v -undefined error -dynamiclib   -lz -L. -lpython3.11  -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib  -miphoneos-version-min=14.0   -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	BOOTSTRAP_HEADERS = "\"
	BUILDEXE = ".exe"
	BUILDPYTHON = "python.exe"
	BUILD_GNU_TYPE = "x86_64-apple-darwin"
	BYTESTR_DEPS = "\"
	CC = "clang"
	CCSHARED = ""
	CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall  -miphoneos-version-min=14.0   -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	CFLAGSFORSHARED = ""
	CFLAGS_ALIASING = ""
	CFLAGS_NODIST = ""
	CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in"
	CONFIGURE_CFLAGS = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	CONFIGURE_CFLAGS_NODIST = "-std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden"
	CONFIGURE_CPPFLAGS = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	CONFIGURE_LDFLAGS = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	CONFIGURE_LDFLAGS_NODIST = ""
	CONFIGURE_LDFLAGS_NOLTO = ""
	CONFIG_ARGS = "'--prefix=/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library' '--enable-shared' '--host' 'arm-apple-darwin' '--build' 'x86_64-apple-darwin' '--enable-ipv6' '--with-openssl=/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos' '--with-build-python=/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11' '--without-computed-gotos' 'with_system_ffi=yes' 'ac_cv_file__dev_ptmx=no' 'ac_cv_file__dev_ptc=no' 'ac_cv_func_getentropy=no' 'ac_cv_func_sendfile=no' 'ac_cv_func_setregid=no' 'ac_cv_func_setreuid=no' 'ac_cv_func_setsid=no' 'ac_cv_func_setpgid=no' 'ac_cv_func_setpgrp=no' 'ac_cv_func_setuid=no' 'ac_cv_func_forkpty=no' 'ac_cv_func_openpty=no' 'ac_cv_func_clock_settime=no' 'build_alias=x86_64-apple-darwin' 'host_alias=arm-apple-darwin' 'CC=clang' 'CFLAGS=-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include' 'LDFLAGS=-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib' 'CPPFLAGS=-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include'"
	CONFINCLUDEDIR = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include"
	CONFINCLUDEPY = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include/python3.11"
	COREPYTHONPATH = ""
	COVERAGE_INFO = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/coverage.info"
	COVERAGE_LCOV_OPTIONS = "--rc lcov_branch_coverage=1"
	COVERAGE_REPORT = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/lcov-report"
	COVERAGE_REPORT_OPTIONS = "--rc lcov_branch_coverage=1 --branch-coverage --title "CPython 3.11 LCOV report [commit $(shell git --git-dir ./.git rev-parse --short HEAD)]""
	CPPFLAGS = "-I. -I./Include  -miphoneos-version-min=14.0   -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	CXX = "clang++"
	DECIMAL_CFLAGS = "-I./Modules/_decimal/libmpdec -DUNIVERSAL=1"
	DECIMAL_LDFLAGS = "-lm Modules/_decimal/libmpdec/libmpdec.a"
	DEEPFREEZE_DEPS = "./Tools/scripts/deepfreeze.py ./Programs/_freeze_module.py \"
	DEEPFREEZE_OBJS = "Python/deepfreeze/deepfreeze.o"
	DESTDIRS = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11 /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11/lib-dynload"
	DESTLIB = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11"
	DESTPATH = ""
	DESTSHARED = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11/lib-dynload"
	DFLAGS = ""
	DIRMODE = "755"
	DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy"
	DISTDIRS = "Include Lib Misc Ext-dummy"
	DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in"
	DLINCLDIR = "."
	DLLLIBRARY = ""
	DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0"
	DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0"
	DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1"
	DTRACE = ""
	DTRACE_DEPS = "\"
	DTRACE_HEADERS = ""
	DTRACE_OBJS = ""
	DYNLOADFILE = "dynload_shlib.o"
	ENABLE_IPV6 = "1"
	ENSUREPIP = "upgrade"
	EXE = ""
	EXEMODE = "755"
	EXPAT_CFLAGS = "-I./Modules/expat"
	EXPAT_LDFLAGS = "-lm Modules/expat/libexpat.a"
	EXPORTSFROM = ""
	EXPORTSYMS = ""
	EXTRATESTOPTS = ""
	EXTRA_CFLAGS = ""
	EXT_SUFFIX = ".cpython-311-darwin.so"
	FILEMODE = "644"
	FLOAT_WORDS_BIGENDIAN = "0"
	FREEZE_MODULE = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11 ./Programs/_freeze_module.py"
	FREEZE_MODULE_BOOTSTRAP = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11 ./Programs/_freeze_module.py"
	FREEZE_MODULE_BOOTSTRAP_DEPS = "./Programs/_freeze_module.py"
	FREEZE_MODULE_DEPS = "./Programs/_freeze_module.py"
	FROZEN_FILES_IN = "\"
	FROZEN_FILES_OUT = "\"
	GETPGRP_HAVE_ARG = "0"
	GITBRANCH = "git --git-dir ./.git name-rev --name-only HEAD"
	GITTAG = "git --git-dir ./.git describe --all --always --dirty"
	GITVERSION = "git --git-dir ./.git rev-parse --short HEAD"
	GNULD = "no"
	HAVE_ACCEPT = "1"
	HAVE_ACCEPT4 = "0"
	HAVE_ACOSH = "1"
	HAVE_ADDRINFO = "1"
	HAVE_ALARM = "1"
	HAVE_ALIGNED_REQUIRED = "1"
	HAVE_ALLOCA_H = "1"
	HAVE_ALTZONE = "0"
	HAVE_ASINH = "1"
	HAVE_ASM_TYPES_H = "0"
	HAVE_ATANH = "1"
	HAVE_BIND = "1"
	HAVE_BIND_TEXTDOMAIN_CODESET = "0"
	HAVE_BLUETOOTH_BLUETOOTH_H = "0"
	HAVE_BLUETOOTH_H = "0"
	HAVE_BROKEN_MBSTOWCS = "0"
	HAVE_BROKEN_NICE = "0"
	HAVE_BROKEN_PIPE_BUF = "0"
	HAVE_BROKEN_POLL = "0"
	HAVE_BROKEN_POSIX_SEMAPHORES = "0"
	HAVE_BROKEN_PTHREAD_SIGMASK = "0"
	HAVE_BROKEN_SEM_GETVALUE = "1"
	HAVE_BROKEN_UNSETENV = "0"
	HAVE_BUILTIN_ATOMIC = "1"
	HAVE_BZLIB_H = "1"
	HAVE_CHFLAGS = "1"
	HAVE_CHMOD = "1"
	HAVE_CHOWN = "1"
	HAVE_CHROOT = "0"
	HAVE_CLOCK = "1"
	HAVE_CLOCK_GETRES = "1"
	HAVE_CLOCK_GETTIME = "1"
	HAVE_CLOCK_NANOSLEEP = "0"
	HAVE_CLOCK_SETTIME = "0"
	HAVE_CLOSE_RANGE = "0"
	HAVE_COMPUTED_GOTOS = "0"
	HAVE_CONFSTR = "1"
	HAVE_CONIO_H = "0"
	HAVE_CONNECT = "1"
	HAVE_COPY_FILE_RANGE = "0"
	HAVE_CRYPT_H = "0"
	HAVE_CRYPT_R = "0"
	HAVE_CTERMID = "1"
	HAVE_CTERMID_R = "1"
	HAVE_CURSES_FILTER = "1"
	HAVE_CURSES_H = "1"
	HAVE_CURSES_HAS_KEY = "1"
	HAVE_CURSES_IMMEDOK = "1"
	HAVE_CURSES_IS_PAD = "0"
	HAVE_CURSES_IS_TERM_RESIZED = "1"
	HAVE_CURSES_RESIZETERM = "1"
	HAVE_CURSES_RESIZE_TERM = "1"
	HAVE_CURSES_SYNCOK = "1"
	HAVE_CURSES_TYPEAHEAD = "1"
	HAVE_CURSES_USE_ENV = "1"
	HAVE_CURSES_WCHGAT = "1"
	HAVE_DB_H = "1"
	HAVE_DECL_RTLD_DEEPBIND = "0"
	HAVE_DECL_RTLD_GLOBAL = "1"
	HAVE_DECL_RTLD_LAZY = "1"
	HAVE_DECL_RTLD_LOCAL = "1"
	HAVE_DECL_RTLD_MEMBER = "0"
	HAVE_DECL_RTLD_NODELETE = "1"
	HAVE_DECL_RTLD_NOLOAD = "1"
	HAVE_DECL_RTLD_NOW = "1"
	HAVE_DECL_TZNAME = "0"
	HAVE_DEVICE_MACROS = "1"
	HAVE_DEV_PTC = "0"
	HAVE_DEV_PTMX = "0"
	HAVE_DIRECT_H = "0"
	HAVE_DIRENT_D_TYPE = "1"
	HAVE_DIRENT_H = "1"
	HAVE_DIRFD = "1"
	HAVE_DLFCN_H = "1"
	HAVE_DLOPEN = "1"
	HAVE_DUP = "1"
	HAVE_DUP2 = "1"
	HAVE_DUP3 = "0"
	HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "1"
	HAVE_DYNAMIC_LOADING = "1"
	HAVE_ENDIAN_H = "1"
	HAVE_EPOLL = "0"
	HAVE_EPOLL_CREATE1 = "0"
	HAVE_ERF = "1"
	HAVE_ERFC = "1"
	HAVE_ERRNO_H = "1"
	HAVE_EVENTFD = "0"
	HAVE_EXECV = "1"
	HAVE_EXPLICIT_BZERO = "0"
	HAVE_EXPLICIT_MEMSET = "0"
	HAVE_EXPM1 = "1"
	HAVE_FACCESSAT = "1"
	HAVE_FCHDIR = "1"
	HAVE_FCHMOD = "1"
	HAVE_FCHMODAT = "1"
	HAVE_FCHOWN = "1"
	HAVE_FCHOWNAT = "1"
	HAVE_FCNTL_H = "1"
	HAVE_FDATASYNC = "0"
	HAVE_FDOPENDIR = "1"
	HAVE_FDWALK = "0"
	HAVE_FEXECVE = "0"
	HAVE_FLOCK = "1"
	HAVE_FORK = "1"
	HAVE_FORK1 = "0"
	HAVE_FORKPTY = "1"
	HAVE_FPATHCONF = "1"
	HAVE_FSEEK64 = "0"
	HAVE_FSEEKO = "1"
	HAVE_FSTATAT = "1"
	HAVE_FSTATVFS = "1"
	HAVE_FSYNC = "1"
	HAVE_FTELL64 = "0"
	HAVE_FTELLO = "1"
	HAVE_FTIME = "1"
	HAVE_FTRUNCATE = "1"
	HAVE_FUTIMENS = "1"
	HAVE_FUTIMES = "1"
	HAVE_FUTIMESAT = "0"
	HAVE_GAI_STRERROR = "1"
	HAVE_GCC_ASM_FOR_MC68881 = "0"
	HAVE_GCC_ASM_FOR_X64 = "0"
	HAVE_GCC_ASM_FOR_X87 = "0"
	HAVE_GCC_UINT128_T = "1"
	HAVE_GDBM_DASH_NDBM_H = "0"
	HAVE_GDBM_H = "0"
	HAVE_GDBM_NDBM_H = "0"
	HAVE_GETADDRINFO = "1"
	HAVE_GETC_UNLOCKED = "1"
	HAVE_GETEGID = "1"
	HAVE_GETENTROPY = "0"
	HAVE_GETEUID = "1"
	HAVE_GETGID = "1"
	HAVE_GETGRGID = "1"
	HAVE_GETGRGID_R = "1"
	HAVE_GETGRNAM_R = "1"
	HAVE_GETGROUPLIST = "1"
	HAVE_GETGROUPS = "1"
	HAVE_GETHOSTBYADDR = "1"
	HAVE_GETHOSTBYNAME = "1"
	HAVE_GETHOSTBYNAME_R = "0"
	HAVE_GETHOSTBYNAME_R_3_ARG = "0"
	HAVE_GETHOSTBYNAME_R_5_ARG = "0"
	HAVE_GETHOSTBYNAME_R_6_ARG = "0"
	HAVE_GETHOSTNAME = "1"
	HAVE_GETITIMER = "1"
	HAVE_GETLOADAVG = "1"
	HAVE_GETLOGIN = "1"
	HAVE_GETNAMEINFO = "1"
	HAVE_GETPAGESIZE = "0"
	HAVE_GETPEERNAME = "1"
	HAVE_GETPGID = "1"
	HAVE_GETPGRP = "1"
	HAVE_GETPID = "1"
	HAVE_GETPPID = "1"
	HAVE_GETPRIORITY = "1"
	HAVE_GETPROTOBYNAME = "1"
	HAVE_GETPWENT = "1"
	HAVE_GETPWNAM_R = "1"
	HAVE_GETPWUID = "1"
	HAVE_GETPWUID_R = "1"
	HAVE_GETRANDOM = "0"
	HAVE_GETRANDOM_SYSCALL = "0"
	HAVE_GETRESGID = "0"
	HAVE_GETRESUID = "0"
	HAVE_GETRUSAGE = "1"
	HAVE_GETSERVBYNAME = "1"
	HAVE_GETSERVBYPORT = "1"
	HAVE_GETSID = "1"
	HAVE_GETSOCKNAME = "1"
	HAVE_GETSPENT = "0"
	HAVE_GETSPNAM = "0"
	HAVE_GETUID = "1"
	HAVE_GETWD = "1"
	HAVE_GLIBC_MEMMOVE_BUG = "0"
	HAVE_GRP_H = "1"
	HAVE_HSTRERROR = "1"
	HAVE_HTOLE64 = "0"
	HAVE_IEEEFP_H = "0"
	HAVE_IF_NAMEINDEX = "1"
	HAVE_INET_ATON = "1"
	HAVE_INET_NTOA = "1"
	HAVE_INET_PTON = "1"
	HAVE_INITGROUPS = "1"
	HAVE_INTTYPES_H = "1"
	HAVE_IO_H = "0"
	HAVE_IPA_PURE_CONST_BUG = "0"
	HAVE_KILL = "1"
	HAVE_KILLPG = "1"
	HAVE_KQUEUE = "1"
	HAVE_LANGINFO_H = "1"
	HAVE_LARGEFILE_SUPPORT = "0"
	HAVE_LCHFLAGS = "1"
	HAVE_LCHMOD = "1"
	HAVE_LCHOWN = "1"
	HAVE_LIBB2 = "0"
	HAVE_LIBDB = "0"
	HAVE_LIBDL = "1"
	HAVE_LIBDLD = "0"
	HAVE_LIBGDBM_COMPAT = "0"
	HAVE_LIBIEEE = "0"
	HAVE_LIBINTL_H = "0"
	HAVE_LIBNDBM = "0"
	HAVE_LIBREADLINE = "1"
	HAVE_LIBRESOLV = "0"
	HAVE_LIBSENDFILE = "0"
	HAVE_LIBSQLITE3 = "1"
	HAVE_LIBUTIL_H = "0"
	HAVE_LINK = "1"
	HAVE_LINKAT = "1"
	HAVE_LINUX_AUXVEC_H = "0"
	HAVE_LINUX_CAN_BCM_H = "0"
	HAVE_LINUX_CAN_H = "0"
	HAVE_LINUX_CAN_J1939_H = "0"
	HAVE_LINUX_CAN_RAW_FD_FRAMES = "0"
	HAVE_LINUX_CAN_RAW_H = "0"
	HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "0"
	HAVE_LINUX_MEMFD_H = "0"
	HAVE_LINUX_NETLINK_H = "0"
	HAVE_LINUX_QRTR_H = "0"
	HAVE_LINUX_RANDOM_H = "0"
	HAVE_LINUX_SOUNDCARD_H = "0"
	HAVE_LINUX_TIPC_H = "0"
	HAVE_LINUX_VM_SOCKETS_H = "0"
	HAVE_LINUX_WAIT_H = "0"
	HAVE_LISTEN = "1"
	HAVE_LOCKF = "1"
	HAVE_LOG1P = "1"
	HAVE_LOG2 = "1"
	HAVE_LOGIN_TTY = "1"
	HAVE_LONG_DOUBLE = "1"
	HAVE_LSTAT = "1"
	HAVE_LUTIMES = "1"
	HAVE_LZMA_H = "0"
	HAVE_MADVISE = "1"
	HAVE_MAKEDEV = "1"
	HAVE_MBRTOWC = "1"
	HAVE_MEMFD_CREATE = "0"
	HAVE_MEMORY_H = "1"
	HAVE_MEMRCHR = "0"
	HAVE_MKDIRAT = "1"
	HAVE_MKFIFO = "1"
	HAVE_MKFIFOAT = "1"
	HAVE_MKNOD = "1"
	HAVE_MKNODAT = "1"
	HAVE_MKTIME = "1"
	HAVE_MMAP = "1"
	HAVE_MREMAP = "0"
	HAVE_NANOSLEEP = "1"
	HAVE_NCURSES_H = "0"
	HAVE_NDBM_H = "1"
	HAVE_NDIR_H = "0"
	HAVE_NETCAN_CAN_H = "0"
	HAVE_NETDB_H = "1"
	HAVE_NETINET_IN_H = "1"
	HAVE_NETPACKET_PACKET_H = "0"
	HAVE_NET_IF_H = "1"
	HAVE_NICE = "1"
	HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0"
	HAVE_OPENAT = "1"
	HAVE_OPENDIR = "1"
	HAVE_OPENPTY = "1"
	HAVE_PATHCONF = "1"
	HAVE_PAUSE = "1"
	HAVE_PIPE = "1"
	HAVE_PIPE2 = "0"
	HAVE_PLOCK = "0"
	HAVE_POLL = "1"
	HAVE_POLL_H = "1"
	HAVE_POSIX_FADVISE = "0"
	HAVE_POSIX_FALLOCATE = "0"
	HAVE_POSIX_SPAWN = "1"
	HAVE_POSIX_SPAWNP = "1"
	HAVE_PREAD = "1"
	HAVE_PREADV = "1"
	HAVE_PREADV2 = "0"
	HAVE_PRLIMIT = "0"
	HAVE_PROCESS_H = "0"
	HAVE_PROTOTYPES = "1"
	HAVE_PTHREAD_CONDATTR_SETCLOCK = "0"
	HAVE_PTHREAD_DESTRUCTOR = "0"
	HAVE_PTHREAD_GETCPUCLOCKID = "0"
	HAVE_PTHREAD_H = "1"
	HAVE_PTHREAD_INIT = "0"
	HAVE_PTHREAD_KILL = "1"
	HAVE_PTHREAD_SIGMASK = "1"
	HAVE_PTHREAD_STUBS = "0"
	HAVE_PTY_H = "0"
	HAVE_PWRITE = "1"
	HAVE_PWRITEV = "1"
	HAVE_PWRITEV2 = "0"
	HAVE_READLINK = "1"
	HAVE_READLINKAT = "1"
	HAVE_READV = "1"
	HAVE_REALPATH = "1"
	HAVE_RECVFROM = "1"
	HAVE_RENAMEAT = "1"
	HAVE_RL_APPEND_HISTORY = "0"
	HAVE_RL_CATCH_SIGNAL = "0"
	HAVE_RL_COMPLETION_APPEND_CHARACTER = "0"
	HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1"
	HAVE_RL_COMPLETION_MATCHES = "1"
	HAVE_RL_COMPLETION_SUPPRESS_APPEND = "0"
	HAVE_RL_PRE_INPUT_HOOK = "1"
	HAVE_RL_RESIZE_TERMINAL = "0"
	HAVE_RPC_RPC_H = "1"
	HAVE_RTPSPAWN = "0"
	HAVE_SCHED_GET_PRIORITY_MAX = "1"
	HAVE_SCHED_H = "1"
	HAVE_SCHED_RR_GET_INTERVAL = "0"
	HAVE_SCHED_SETAFFINITY = "0"
	HAVE_SCHED_SETPARAM = "0"
	HAVE_SCHED_SETSCHEDULER = "0"
	HAVE_SEM_CLOCKWAIT = "0"
	HAVE_SEM_GETVALUE = "1"
	HAVE_SEM_OPEN = "1"
	HAVE_SEM_TIMEDWAIT = "0"
	HAVE_SEM_UNLINK = "1"
	HAVE_SENDFILE = "0"
	HAVE_SENDTO = "1"
	HAVE_SETEGID = "1"
	HAVE_SETEUID = "1"
	HAVE_SETGID = "1"
	HAVE_SETGROUPS = "1"
	HAVE_SETHOSTNAME = "1"
	HAVE_SETITIMER = "1"
	HAVE_SETJMP_H = "1"
	HAVE_SETLOCALE = "1"
	HAVE_SETPGID = "0"
	HAVE_SETPGRP = "0"
	HAVE_SETPRIORITY = "1"
	HAVE_SETREGID = "0"
	HAVE_SETRESGID = "0"
	HAVE_SETRESUID = "0"
	HAVE_SETREUID = "0"
	HAVE_SETSID = "0"
	HAVE_SETSOCKOPT = "1"
	HAVE_SETUID = "0"
	HAVE_SETVBUF = "1"
	HAVE_SHADOW_H = "0"
	HAVE_SHM_OPEN = "1"
	HAVE_SHM_UNLINK = "1"
	HAVE_SHUTDOWN = "1"
	HAVE_SIGACTION = "1"
	HAVE_SIGALTSTACK = "1"
	HAVE_SIGFILLSET = "1"
	HAVE_SIGINFO_T_SI_BAND = "1"
	HAVE_SIGINTERRUPT = "1"
	HAVE_SIGNAL_H = "1"
	HAVE_SIGPENDING = "1"
	HAVE_SIGRELSE = "1"
	HAVE_SIGTIMEDWAIT = "0"
	HAVE_SIGWAIT = "1"
	HAVE_SIGWAITINFO = "0"
	HAVE_SNPRINTF = "1"
	HAVE_SOCKADDR_ALG = "0"
	HAVE_SOCKADDR_SA_LEN = "1"
	HAVE_SOCKADDR_STORAGE = "1"
	HAVE_SOCKET = "1"
	HAVE_SOCKETPAIR = "1"
	HAVE_SPAWN_H = "1"
	HAVE_SPLICE = "0"
	HAVE_SSIZE_T = "1"
	HAVE_STATVFS = "1"
	HAVE_STAT_TV_NSEC = "0"
	HAVE_STAT_TV_NSEC2 = "1"
	HAVE_STDARG_PROTOTYPES = "1"
	HAVE_STDINT_H = "1"
	HAVE_STDLIB_H = "1"
	HAVE_STD_ATOMIC = "1"
	HAVE_STRFTIME = "1"
	HAVE_STRINGS_H = "1"
	HAVE_STRING_H = "1"
	HAVE_STRLCPY = "1"
	HAVE_STROPTS_H = "0"
	HAVE_STRSIGNAL = "1"
	HAVE_STRUCT_PASSWD_PW_GECOS = "1"
	HAVE_STRUCT_PASSWD_PW_PASSWD = "1"
	HAVE_STRUCT_STAT_ST_BIRTHTIME = "1"
	HAVE_STRUCT_STAT_ST_BLKSIZE = "1"
	HAVE_STRUCT_STAT_ST_BLOCKS = "1"
	HAVE_STRUCT_STAT_ST_FLAGS = "1"
	HAVE_STRUCT_STAT_ST_GEN = "1"
	HAVE_STRUCT_STAT_ST_RDEV = "1"
	HAVE_STRUCT_TM_TM_ZONE = "1"
	HAVE_SYMLINK = "1"
	HAVE_SYMLINKAT = "1"
	HAVE_SYNC = "1"
	HAVE_SYSCONF = "1"
	HAVE_SYSEXITS_H = "1"
	HAVE_SYSLOG_H = "1"
	HAVE_SYSTEM = "1"
	HAVE_SYS_AUDIOIO_H = "0"
	HAVE_SYS_AUXV_H = "0"
	HAVE_SYS_BSDTTY_H = "0"
	HAVE_SYS_DEVPOLL_H = "0"
	HAVE_SYS_DIR_H = "0"
	HAVE_SYS_ENDIAN_H = "0"
	HAVE_SYS_EPOLL_H = "0"
	HAVE_SYS_EVENTFD_H = "0"
	HAVE_SYS_EVENT_H = "1"
	HAVE_SYS_FILE_H = "1"
	HAVE_SYS_IOCTL_H = "1"
	HAVE_SYS_KERN_CONTROL_H = "0"
	HAVE_SYS_LOADAVG_H = "0"
	HAVE_SYS_LOCK_H = "1"
	HAVE_SYS_MEMFD_H = "0"
	HAVE_SYS_MKDEV_H = "0"
	HAVE_SYS_MMAN_H = "1"
	HAVE_SYS_MODEM_H = "0"
	HAVE_SYS_NDIR_H = "0"
	HAVE_SYS_PARAM_H = "1"
	HAVE_SYS_POLL_H = "1"
	HAVE_SYS_RANDOM_H = "0"
	HAVE_SYS_RESOURCE_H = "1"
	HAVE_SYS_SELECT_H = "1"
	HAVE_SYS_SENDFILE_H = "0"
	HAVE_SYS_SOCKET_H = "1"
	HAVE_SYS_SOUNDCARD_H = "0"
	HAVE_SYS_STATVFS_H = "1"
	HAVE_SYS_STAT_H = "1"
	HAVE_SYS_SYSCALL_H = "1"
	HAVE_SYS_SYSMACROS_H = "0"
	HAVE_SYS_SYS_DOMAIN_H = "0"
	HAVE_SYS_TERMIO_H = "0"
	HAVE_SYS_TIMES_H = "1"
	HAVE_SYS_TIME_H = "1"
	HAVE_SYS_TYPES_H = "1"
	HAVE_SYS_UIO_H = "1"
	HAVE_SYS_UN_H = "1"
	HAVE_SYS_UTSNAME_H = "1"
	HAVE_SYS_WAIT_H = "1"
	HAVE_SYS_XATTR_H = "1"
	HAVE_TCGETPGRP = "1"
	HAVE_TCSETPGRP = "1"
	HAVE_TEMPNAM = "1"
	HAVE_TERMIOS_H = "1"
	HAVE_TERM_H = "0"
	HAVE_TIMEGM = "1"
	HAVE_TIMES = "1"
	HAVE_TMPFILE = "1"
	HAVE_TMPNAM = "1"
	HAVE_TMPNAM_R = "0"
	HAVE_TM_ZONE = "1"
	HAVE_TRUNCATE = "1"
	HAVE_TTYNAME = "1"
	HAVE_TZNAME = "0"
	HAVE_UMASK = "1"
	HAVE_UNAME = "1"
	HAVE_UNISTD_H = "1"
	HAVE_UNLINKAT = "1"
	HAVE_USABLE_WCHAR_T = "0"
	HAVE_UTIL_H = "1"
	HAVE_UTIMENSAT = "1"
	HAVE_UTIMES = "1"
	HAVE_UTIME_H = "1"
	HAVE_UTMP_H = "0"
	HAVE_UUID_CREATE = "0"
	HAVE_UUID_ENC_BE = "0"
	HAVE_UUID_GENERATE_TIME_SAFE = "0"
	HAVE_UUID_H = "0"
	HAVE_UUID_UUID_H = "1"
	HAVE_VFORK = "1"
	HAVE_WAIT = "1"
	HAVE_WAIT3 = "1"
	HAVE_WAIT4 = "1"
	HAVE_WAITID = "1"
	HAVE_WAITPID = "1"
	HAVE_WCHAR_H = "1"
	HAVE_WCSCOLL = "1"
	HAVE_WCSFTIME = "1"
	HAVE_WCSXFRM = "1"
	HAVE_WMEMCMP = "1"
	HAVE_WORKING_TZSET = "0"
	HAVE_WRITEV = "1"
	HAVE_ZLIB_COPY = "1"
	HAVE_ZLIB_H = "1"
	HAVE__GETPTY = "0"
	HOSTRUNNER = ""
	HOST_GNU_TYPE = "arm-apple-darwin"
	INCLDIRSTOMAKE = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include/python3.11 /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include/python3.11"
	INCLUDEDIR = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include"
	INCLUDEPY = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include/python3.11"
	INSTALL = "/usr/bin/install -c"
	INSTALL_DATA = "/usr/bin/install -c -m 644"
	INSTALL_PROGRAM = "/usr/bin/install -c"
	INSTALL_SCRIPT = "/usr/bin/install -c"
	INSTALL_SHARED = "/usr/bin/install -c -m 755"
	INSTSONAME = "libpython3.11.dylib"
	IO_H = "Modules/_io/_iomodule.h"
	IO_OBJS = "\"
	LDCXXSHARED = "clang -v -undefined error -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -L. -lpython3.11  -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	LDFLAGS = " -miphoneos-version-min=14.0   -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	LDFLAGS_NODIST = ""
	LDLIBRARY = "libpython3.11.dylib"
	LDLIBRARYDIR = ""
	LDSHARED = "clang -v -undefined error -dynamiclib   -lz -L. -lpython3.11  -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib  -miphoneos-version-min=14.0   -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	LDVERSION = "3.11"
	LIBC = ""
	LIBDEST = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11"
	LIBDIR = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib"
	LIBEXPAT_A = "Modules/expat/libexpat.a"
	LIBEXPAT_CFLAGS = "-I./Modules/expat -Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal -I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	LIBEXPAT_HEADERS = "\"
	LIBEXPAT_OBJS = "\"
	LIBFFI_INCLUDEDIR = "./Frameworks_iphoneos/include/ffi/"
	LIBM = ""
	LIBMPDEC_A = "Modules/_decimal/libmpdec/libmpdec.a"
	LIBMPDEC_CFLAGS = "-I./Modules/_decimal/libmpdec -DUNIVERSAL=1 -Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal -I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	LIBMPDEC_HEADERS = "\"
	LIBMPDEC_OBJS = "\"
	LIBOBJDIR = "Python/"
	LIBOBJS = ""
	LIBPC = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/pkgconfig"
	LIBPL = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11/config-3.11-darwin"
	LIBPYTHON = ""
	LIBRARY = "libpython3.11.a"
	LIBRARY_DEPS = "libpython3.11.a libpython3.11.dylib"
	LIBRARY_OBJS = "\"
	LIBRARY_OBJS_OMIT_FROZEN = "\"
	LIBS = "-ldl  -lutil -lutil -framework CoreFoundation"
	LIBSUBDIRS = "asyncio \"
	LINKCC = "clang"
	LINKFORSHARED = "-Wl,-stack_size,1000000  -framework CoreFoundation"
	LINK_PYTHON_DEPS = "libpython3.11.a libpython3.11.dylib"
	LINK_PYTHON_OBJS = "-L. -lpython3.11"
	LIPO_32BIT_FLAGS = ""
	LIPO_INTEL64_FLAGS = ""
	LLVM_PROF_ERR = "no"
	LLVM_PROF_FILE = "LLVM_PROFILE_FILE="code-%p.profclangr""
	LLVM_PROF_MERGER = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin//llvm-profdata merge -output=code.profclangd *.profclangr"
	LN = "ln"
	LOCALMODLIBS = "-lz                           -lz"
	MACHDEP = "darwin"
	MACHDEP_OBJS = ""
	MACHDESTLIB = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11"
	MACOSX_DEPLOYMENT_TARGET = "13.4"
	MAINCC = "clang"
	MAJOR_IN_MKDEV = "0"
	MAJOR_IN_SYSMACROS = "0"
	MAKESETUP = "./Modules/makesetup"
	MANDIR = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/share/man"
	MKDIR_P = "./install-sh -c -d"
	MODBUILT_NAMES = "atexit  faulthandler  posix  _signal  _tracemalloc  _codecs  _collections  errno  _io  itertools  _sre  _thread  time  _weakref  _abc  _functools  _locale  _operator  _stat  _symtable  pwd  _asyncio  _bisect  _contextvars  _csv  _datetime  _heapq  _json  _pickle  _random  _socket  _statistics  _struct  _zoneinfo  array  audioop  binascii  cmath  math  mmap  select  _elementtree  pyexpat  _blake2  _md5  _sha1  _sha256  _sha512  _sha3  _codecs_cn  _codecs_hk  _codecs_iso2022  _codecs_jp  _codecs_kr  _codecs_tw  _multibytecodec  unicodedata  _posixsubprocess  fcntl  grp  resource  termios  zlib  xxsubtype"
	MODDISABLED_NAMES = ""
	MODLIBS = "-lz                           -lz"
	MODOBJS = "Modules/atexitmodule.o  Modules/faulthandler.o  Modules/posixmodule.o  Modules/signalmodule.o  Modules/_tracemalloc.o  Modules/_codecsmodule.o  Modules/_collectionsmodule.o  Modules/errnomodule.o  Modules/_io/_iomodule.o Modules/_io/iobase.o Modules/_io/fileio.o Modules/_io/bytesio.o Modules/_io/bufferedio.o Modules/_io/textio.o Modules/_io/stringio.o  Modules/itertoolsmodule.o  Modules/_sre/sre.o  Modules/_threadmodule.o  Modules/timemodule.o  Modules/_weakref.o  Modules/_abc.o  Modules/_functoolsmodule.o  Modules/_localemodule.o  Modules/_operator.o  Modules/_stat.o  Modules/symtablemodule.o  Modules/pwdmodule.o  Modules/_asynciomodule.o  Modules/_bisectmodule.o  Modules/_contextvarsmodule.o  Modules/_csv.o  Modules/_datetimemodule.o  Modules/_heapqmodule.o  Modules/_json.o  Modules/_pickle.o  Modules/_randommodule.o  Modules/socketmodule.o  Modules/_statisticsmodule.o  Modules/_struct.o  Modules/_zoneinfo.o  Modules/arraymodule.o  Modules/audioop.o  Modules/binascii.o  Modules/cmathmodule.o  Modules/mathmodule.o  Modules/mmapmodule.o  Modules/selectmodule.o  Modules/_elementtree.o  Modules/expat/xmlparse.o Modules/expat/xmlrole.o Modules/expat/xmltok.o Modules/pyexpat.o  Modules/_blake2/blake2module.o Modules/_blake2/blake2b_impl.o Modules/_blake2/blake2s_impl.o  Modules/md5module.o  Modules/sha1module.o  Modules/sha256module.o  Modules/sha512module.o  Modules/_sha3/sha3module.o  Modules/cjkcodecs/_codecs_cn.o  Modules/cjkcodecs/_codecs_hk.o  Modules/cjkcodecs/_codecs_iso2022.o  Modules/cjkcodecs/_codecs_jp.o  Modules/cjkcodecs/_codecs_kr.o  Modules/cjkcodecs/_codecs_tw.o  Modules/cjkcodecs/multibytecodec.o  Modules/unicodedata.o  Modules/_posixsubprocess.o  Modules/fcntlmodule.o  Modules/grpmodule.o  Modules/resource.o  Modules/termios.o  Modules/zlibmodule.o  Modules/xxsubtype.o"
	MODSHARED_NAMES = ""
	MODULE_ARRAY_LDFLAGS = ""
	MODULE_ARRAY_STATE = "yes"
	MODULE_ATEXIT_LDFLAGS = ""
	MODULE_AUDIOOP_LDFLAGS = ""
	MODULE_AUDIOOP_STATE = "yes"
	MODULE_BINASCII_CFLAGS = "-DUSE_ZLIB_CRC32"
	MODULE_BINASCII_LDFLAGS = "-lz"
	MODULE_BINASCII_STATE = "yes"
	MODULE_CMATH_DEPS = "./Modules/_math.h"
	MODULE_CMATH_LDFLAGS = ""
	MODULE_CMATH_STATE = "yes"
	MODULE_ERRNO_LDFLAGS = ""
	MODULE_FAULTHANDLER_LDFLAGS = ""
	MODULE_FCNTL_LDFLAGS = ""
	MODULE_FCNTL_STATE = "yes"
	MODULE_GRP_LDFLAGS = ""
	MODULE_GRP_STATE = "yes"
	MODULE_ITERTOOLS_LDFLAGS = ""
	MODULE_MATH_DEPS = "./Modules/_math.h"
	MODULE_MATH_LDFLAGS = ""
	MODULE_MATH_STATE = "yes"
	MODULE_MMAP_LDFLAGS = ""
	MODULE_MMAP_STATE = "yes"
	MODULE_NIS_CFLAGS = ""
	MODULE_NIS_LDFLAGS = ""
	MODULE_NIS_STATE = "yes"
	MODULE_OBJS = "\"
	MODULE_OSSAUDIODEV_STATE = "n/a"
	MODULE_POSIX_LDFLAGS = ""
	MODULE_PWD_LDFLAGS = ""
	MODULE_PWD_STATE = "yes"
	MODULE_PYEXPAT_CFLAGS = "-I./Modules/expat"
	MODULE_PYEXPAT_DEPS = "\ Modules/expat/libexpat.a"
	MODULE_PYEXPAT_LDFLAGS = "-lm Modules/expat/libexpat.a"
	MODULE_PYEXPAT_STATE = "yes"
	MODULE_RESOURCE_LDFLAGS = ""
	MODULE_RESOURCE_STATE = "yes"
	MODULE_SELECT_LDFLAGS = ""
	MODULE_SELECT_STATE = "yes"
	MODULE_SPWD_STATE = "n/a"
	MODULE_SYSLOG_STATE = "yes"
	MODULE_TERMIOS_LDFLAGS = ""
	MODULE_TERMIOS_STATE = "yes"
	MODULE_TIME_LDFLAGS = ""
	MODULE_TIME_STATE = "yes"
	MODULE_UNICODEDATA_DEPS = "./Modules/unicodedata_db.h ./Modules/unicodename_db.h"
	MODULE_UNICODEDATA_LDFLAGS = ""
	MODULE_UNICODEDATA_STATE = "yes"
	MODULE_XXLIMITED_35_STATE = "yes"
	MODULE_XXLIMITED_STATE = "yes"
	MODULE_XXSUBTYPE_LDFLAGS = ""
	MODULE_ZLIB_CFLAGS = ""
	MODULE_ZLIB_LDFLAGS = "-lz"
	MODULE_ZLIB_STATE = "yes"
	MODULE__ABC_LDFLAGS = ""
	MODULE__ASYNCIO_LDFLAGS = ""
	MODULE__ASYNCIO_STATE = "yes"
	MODULE__BISECT_LDFLAGS = ""
	MODULE__BISECT_STATE = "yes"
	MODULE__BLAKE2_CFLAGS = ""
	MODULE__BLAKE2_DEPS = "./Modules/_blake2/impl/blake2-config.h ./Modules/_blake2/impl/blake2-impl.h ./Modules/_blake2/impl/blake2.h ./Modules/_blake2/impl/blake2b-load-sse2.h ./Modules/_blake2/impl/blake2b-load-sse41.h ./Modules/_blake2/impl/blake2b-ref.c ./Modules/_blake2/impl/blake2b-round.h ./Modules/_blake2/impl/blake2b.c ./Modules/_blake2/impl/blake2s-load-sse2.h ./Modules/_blake2/impl/blake2s-load-sse41.h ./Modules/_blake2/impl/blake2s-load-xop.h ./Modules/_blake2/impl/blake2s-ref.c ./Modules/_blake2/impl/blake2s-round.h ./Modules/_blake2/impl/blake2s.c ./Modules/_blake2/blake2module.h ./Modules/hashlib.h"
	MODULE__BLAKE2_LDFLAGS = ""
	MODULE__BLAKE2_STATE = "yes"
	MODULE__BZ2_CFLAGS = ""
	MODULE__BZ2_LDFLAGS = "-lbz2"
	MODULE__BZ2_STATE = "yes"
	MODULE__CODECS_CN_LDFLAGS = ""
	MODULE__CODECS_CN_STATE = "yes"
	MODULE__CODECS_HK_LDFLAGS = ""
	MODULE__CODECS_HK_STATE = "yes"
	MODULE__CODECS_ISO2022_LDFLAGS = ""
	MODULE__CODECS_ISO2022_STATE = "yes"
	MODULE__CODECS_JP_LDFLAGS = ""
	MODULE__CODECS_JP_STATE = "yes"
	MODULE__CODECS_KR_LDFLAGS = ""
	MODULE__CODECS_KR_STATE = "yes"
	MODULE__CODECS_LDFLAGS = ""
	MODULE__CODECS_TW_LDFLAGS = ""
	MODULE__CODECS_TW_STATE = "yes"
	MODULE__COLLECTIONS_LDFLAGS = ""
	MODULE__CONTEXTVARS_LDFLAGS = ""
	MODULE__CONTEXTVARS_STATE = "yes"
	MODULE__CRYPT_CFLAGS = ""
	MODULE__CRYPT_LDFLAGS = ""
	MODULE__CRYPT_STATE = "yes"
	MODULE__CSV_LDFLAGS = ""
	MODULE__CSV_STATE = "yes"
	MODULE__CTYPES_DEPS = "./Modules/_ctypes/ctypes.h"
	MODULE__CTYPES_TEST_LDFLAGS = "-lm"
	MODULE__CTYPES_TEST_STATE = "yes"
	MODULE__DATETIME_LDFLAGS = ""
	MODULE__DATETIME_STATE = "yes"
	MODULE__DECIMAL_CFLAGS = "-I./Modules/_decimal/libmpdec -DUNIVERSAL=1"
	MODULE__DECIMAL_DEPS = "./Modules/_decimal/docstrings.h \ Modules/_decimal/libmpdec/libmpdec.a"
	MODULE__DECIMAL_LDFLAGS = "-lm Modules/_decimal/libmpdec/libmpdec.a"
	MODULE__DECIMAL_STATE = "yes"
	MODULE__ELEMENTTREE_CFLAGS = "-I./Modules/expat"
	MODULE__ELEMENTTREE_DEPS = "./Modules/pyexpat.c \ Modules/expat/libexpat.a"
	MODULE__ELEMENTTREE_LDFLAGS = ""
	MODULE__ELEMENTTREE_STATE = "yes"
	MODULE__FUNCTOOLS_LDFLAGS = ""
	MODULE__GDBM_STATE = "missing"
	MODULE__HASHLIB_CFLAGS = "-I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	MODULE__HASHLIB_DEPS = "./Modules/hashlib.h"
	MODULE__HASHLIB_LDFLAGS = "-L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib   -lcrypto"
	MODULE__HASHLIB_STATE = "yes"
	MODULE__HEAPQ_LDFLAGS = ""
	MODULE__HEAPQ_STATE = "yes"
	MODULE__IO_CFLAGS = "-I./Modules/_io"
	MODULE__IO_DEPS = "./Modules/_io/_iomodule.h"
	MODULE__IO_LDFLAGS = ""
	MODULE__IO_STATE = "yes"
	MODULE__JSON_STATE = "yes"
	MODULE__LOCALE_LDFLAGS = ""
	MODULE__LSPROF_STATE = "yes"
	MODULE__LZMA_CFLAGS = "-I/usr/local/include"
	MODULE__LZMA_LDFLAGS = "-L/usr/local/lib -llzma"
	MODULE__LZMA_STATE = "yes"
	MODULE__MD5_DEPS = "./Modules/hashlib.h"
	MODULE__MD5_LDFLAGS = ""
	MODULE__MD5_STATE = "yes"
	MODULE__MULTIBYTECODEC_LDFLAGS = ""
	MODULE__MULTIBYTECODEC_STATE = "yes"
	MODULE__MULTIPROCESSING_CFLAGS = "-I./Modules/_multiprocessing"
	MODULE__MULTIPROCESSING_STATE = "yes"
	MODULE__OPCODE_STATE = "yes"
	MODULE__OPERATOR_LDFLAGS = ""
	MODULE__PICKLE_LDFLAGS = ""
	MODULE__PICKLE_STATE = "yes"
	MODULE__POSIXSHMEM_CFLAGS = "-I./Modules/_multiprocessing"
	MODULE__POSIXSHMEM_LDFLAGS = ""
	MODULE__POSIXSHMEM_STATE = "yes"
	MODULE__POSIXSUBPROCESS_LDFLAGS = ""
	MODULE__POSIXSUBPROCESS_STATE = "yes"
	MODULE__QUEUE_STATE = "yes"
	MODULE__RANDOM_STATE = "yes"
	MODULE__SCPROXY_LDFLAGS = "-framework SystemConfiguration -framework CoreFoundation"
	MODULE__SCPROXY_STATE = "yes"
	MODULE__SHA1_DEPS = "./Modules/hashlib.h"
	MODULE__SHA1_LDFLAGS = ""
	MODULE__SHA1_STATE = "yes"
	MODULE__SHA256_DEPS = "./Modules/hashlib.h"
	MODULE__SHA256_STATE = "yes"
	MODULE__SHA3_DEPS = "./Modules/_sha3/sha3.c ./Modules/_sha3/sha3.h ./Modules/hashlib.h"
	MODULE__SHA3_LDFLAGS = ""
	MODULE__SHA3_STATE = "yes"
	MODULE__SHA512_DEPS = "./Modules/hashlib.h"
	MODULE__SHA512_STATE = "yes"
	MODULE__SIGNAL_LDFLAGS = ""
	MODULE__SOCKET_DEPS = "./Modules/socketmodule.h ./Modules/addrinfo.h ./Modules/getaddrinfo.c ./Modules/getnameinfo.c"
	MODULE__SOCKET_LDFLAGS = ""
	MODULE__SOCKET_STATE = "yes"
	MODULE__SQLITE3_CFLAGS = "-I./Modules/_sqlite"
	MODULE__SQLITE3_DEPS = "./Modules/_sqlite/connection.h ./Modules/_sqlite/cursor.h ./Modules/_sqlite/microprotocols.h ./Modules/_sqlite/module.h ./Modules/_sqlite/prepare_protocol.h ./Modules/_sqlite/row.h ./Modules/_sqlite/util.h"
	MODULE__SQLITE3_LDFLAGS = "-lsqlite3"
	MODULE__SQLITE3_STATE = "yes"
	MODULE__SRE_LDFLAGS = ""
	MODULE__SSL_CFLAGS = "-I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	MODULE__SSL_DEPS = "./Modules/_ssl.h ./Modules/_ssl/cert.c ./Modules/_ssl/debughelpers.c ./Modules/_ssl/misc.c ./Modules/_ssl_data.h ./Modules/_ssl_data_111.h ./Modules/_ssl_data_300.h ./Modules/socketmodule.h"
	MODULE__SSL_LDFLAGS = "-L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib  -lssl -lcrypto"
	MODULE__SSL_STATE = "yes"
	MODULE__STATISTICS_LDFLAGS = ""
	MODULE__STATISTICS_STATE = "yes"
	MODULE__STAT_LDFLAGS = ""
	MODULE__STRUCT_LDFLAGS = ""
	MODULE__STRUCT_STATE = "yes"
	MODULE__SYMTABLE_LDFLAGS = ""
	MODULE__TESTBUFFER_STATE = "yes"
	MODULE__TESTCAPI_DEPS = "./Modules/testcapi_long.h"
	MODULE__TESTCAPI_STATE = "yes"
	MODULE__TESTIMPORTMULTIPLE_STATE = "yes"
	MODULE__TESTINTERNALCAPI_STATE = "yes"
	MODULE__TESTMULTIPHASE_STATE = "yes"
	MODULE__THREAD_LDFLAGS = ""
	MODULE__TKINTER_STATE = "missing"
	MODULE__TRACEMALLOC_LDFLAGS = ""
	MODULE__TYPING_STATE = "yes"
	MODULE__UUID_CFLAGS = ""
	MODULE__UUID_LDFLAGS = ""
	MODULE__UUID_STATE = "yes"
	MODULE__WEAKREF_LDFLAGS = ""
	MODULE__XXSUBINTERPRETERS_STATE = "yes"
	MODULE__XXTESTFUZZ_STATE = "yes"
	MODULE__ZONEINFO_LDFLAGS = ""
	MODULE__ZONEINFO_STATE = "yes"
	MULTIARCH = "darwin"
	MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"darwin\""
	MVWDELCH_IS_EXPRESSION = "1"
	NO_AS_NEEDED = "-Wl,--no-as-needed"
	OBJECT_OBJS = "\"
	OPENSSL_INCLUDES = "-I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	OPENSSL_LDFLAGS = "-L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	OPENSSL_LIBS = "-lssl -lcrypto"
	OPENSSL_RPATH = ""
	OPT = "-DNDEBUG -O3 -Wall"
	OTHER_LIBTOOL_OPT = ""
	PACKAGE_BUGREPORT = "0"
	PACKAGE_NAME = "0"
	PACKAGE_STRING = "0"
	PACKAGE_TARNAME = "0"
	PACKAGE_URL = "0"
	PACKAGE_VERSION = "0"
	PARSER_HEADERS = "\"
	PARSER_OBJS = "\ \ Parser/myreadline.o Parser/tokenizer.o"
	PEGEN_HEADERS = "\"
	PEGEN_OBJS = "\"
	PGO_PROF_GEN_FLAG = "-fprofile-instr-generate"
	PGO_PROF_USE_FLAG = "-fprofile-instr-use=code.profclangd"
	PLATLIBDIR = "lib"
	POBJS = "\"
	POSIX_SEMAPHORES_NOT_ENABLED = "0"
	PROFILE_TASK = "-m test --pgo --timeout=1200"
	PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "0"
	PTHREAD_SYSTEM_SCHED_SUPPORTED = "0"
	PURIFY = ""
	PY3LIBRARY = ""
	PYLONG_BITS_IN_DIGIT = "0"
	PYTHON = "python"
	PYTHONFRAMEWORK = ""
	PYTHONFRAMEWORKDIR = "no-framework"
	PYTHONFRAMEWORKINSTALLDIR = ""
	PYTHONFRAMEWORKPREFIX = ""
	PYTHONPATH = ""
	PYTHON_FOR_BUILD = "_PYTHON_PROJECT_BASE=/Users/holzschu/src/Xcode_iPad/a-Shell/cpython _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/`cat pybuilddir.txt`:)./Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata__darwin_darwin /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11"
	PYTHON_FOR_BUILD_DEPS = ""
	PYTHON_FOR_FREEZE = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11"
	PYTHON_FOR_REGEN = ""
	PYTHON_HEADERS = "\"
	PYTHON_OBJS = "\"
	PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2""
	PY_BUILTIN_MODULE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal -I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -DPy_BUILD_CORE_BUILTIN"
	PY_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall  -miphoneos-version-min=14.0   -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	PY_CFLAGS_NODIST = "-std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal"
	PY_COERCE_C_LOCALE = "1"
	PY_CORE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall  -miphoneos-version-min=14.0   -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal -I. -I./Include  -miphoneos-version-min=14.0   -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -DPy_BUILD_CORE"
	PY_CORE_LDFLAGS = " -miphoneos-version-min=14.0   -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	PY_CPPFLAGS = "-I. -I./Include  -miphoneos-version-min=14.0   -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	PY_ENABLE_SHARED = "1"
	PY_FORMAT_SIZE_T = ""z""
	PY_LDFLAGS = " -miphoneos-version-min=14.0   -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	PY_LDFLAGS_NODIST = ""
	PY_LDFLAGS_NOLTO = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	PY_SQLITE_ENABLE_LOAD_EXTENSION = "0"
	PY_SQLITE_HAVE_SERIALIZE = "1"
	PY_SSL_DEFAULT_CIPHERS = "1"
	PY_SSL_DEFAULT_CIPHER_STRING = "0"
	PY_STDMODULE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal -I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	PY_SUPPORT_TIER = "0"
	Py_DEBUG = "0"
	Py_ENABLE_SHARED = "1"
	Py_HASH_ALGORITHM = "0"
	Py_STATS = "0"
	Py_TRACE_REFS = "0"
	QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \"
	READELF = ""
	RESSRCDIR = "Mac/Resources/framework"
	RETSIGTYPE = "void"
	RUNSHARED = ""
	SCRIPTDIR = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib"
	SETPGRP_HAVE_ARG = "0"
	SHELL = "/bin/sh"
	SHLIBS = "-ldl  -lutil -lutil -framework CoreFoundation"
	SHLIB_SUFFIX = ".so"
	SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0"
	SITEPATH = ""
	SIZEOF_DOUBLE = "8"
	SIZEOF_FLOAT = "4"
	SIZEOF_FPOS_T = "8"
	SIZEOF_INT = "4"
	SIZEOF_LONG = "8"
	SIZEOF_LONG_DOUBLE = "8"
	SIZEOF_LONG_LONG = "8"
	SIZEOF_OFF_T = "8"
	SIZEOF_PID_T = "4"
	SIZEOF_PTHREAD_KEY_T = "8"
	SIZEOF_PTHREAD_T = "8"
	SIZEOF_SHORT = "2"
	SIZEOF_SIZE_T = "8"
	SIZEOF_TIME_T = "8"
	SIZEOF_UINTPTR_T = "8"
	SIZEOF_VOID_P = "8"
	SIZEOF_WCHAR_T = "4"
	SIZEOF__BOOL = "1"
	SOABI = "cpython-311-darwin"
	SRCDIRS = "Modules   Modules/_blake2   Modules/_ctypes   Modules/_decimal   Modules/_decimal/libmpdec   Modules/_io   Modules/_multiprocessing   Modules/_sha3   Modules/_sqlite   Modules/_sre   Modules/_xxtestfuzz   Modules/cjkcodecs   Modules/expat   Objects   Parser   Programs   Python   Python/frozen_modules   Python/deepfreeze"
	SRC_GDB_HOOKS = "./Tools/gdb/libpython.py"
	STATIC_LIBPYTHON = "1"
	STDC_HEADERS = "1"
	STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */"
	STRIPFLAG = "-s"
	SUBDIRS = ""
	SUBDIRSTOO = "Include Lib Misc"
	SYSLIBS = ""
	SYS_SELECT_WITH_SYS_TIME = "1"
	TESTOPTS = ""
	TESTPATH = ""
	TESTPYTHON = "_PYTHON_PROJECT_BASE=/Users/holzschu/src/Xcode_iPad/a-Shell/cpython _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/`cat pybuilddir.txt`:)./Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata__darwin_darwin /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11"
	TESTPYTHONOPTS = ""
	TESTRUNNER = "_PYTHON_PROJECT_BASE=/Users/holzschu/src/Xcode_iPad/a-Shell/cpython _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/`cat pybuilddir.txt`:)./Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata__darwin_darwin /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11 ./Tools/scripts/run_tests.py"
	TESTSUBDIRS = "ctypes/test \"
	TESTTIMEOUT = "1200"
	TEST_MODULES = "yes"
	THREAD_STACK_SIZE = "0x1000000"
	TIMEMODULE_LIB = "0"
	TIME_WITH_SYS_TIME = "1"
	TM_IN_SYS_TIME = "0"
	TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo"
	UNICODE_DEPS = "\"
	UNIVERSALSDK = ""
	UPDATE_FILE = "./Tools/scripts/update_file.py"
	USE_COMPUTED_GOTOS = "0"
	VERSION = "3.11"
	WASM_ASSETS_DIR = "./Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library"
	WASM_STDLIB = "./Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11/os.py"
	WHEEL_PKG_DIR = ""
	WINDOW_HAS_FLAGS = "1"
	WITH_DECIMAL_CONTEXTVAR = "1"
	WITH_DOC_STRINGS = "1"
	WITH_DTRACE = "0"
	WITH_DYLD = "1"
	WITH_EDITLINE = "0"
	WITH_FREELISTS = "1"
	WITH_LIBINTL = "0"
	WITH_NEXT_FRAMEWORK = "0"
	WITH_PYMALLOC = "1"
	WITH_VALGRIND = "0"
	X87_DOUBLE_ROUNDING = "0"
	XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax"
	_OSX_SUPPORT_INITIAL_BLDSHARED = "clang -v -undefined error -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -L. -lpython3.11  -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	_OSX_SUPPORT_INITIAL_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	_OSX_SUPPORT_INITIAL_CPPFLAGS = "-I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	_OSX_SUPPORT_INITIAL_LDFLAGS = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	_OSX_SUPPORT_INITIAL_LDSHARED = "clang -v -undefined error -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -L. -lpython3.11  -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	_OSX_SUPPORT_INITIAL_PY_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	_OSX_SUPPORT_INITIAL_PY_CORE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal -I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -DPy_BUILD_CORE"
	_OSX_SUPPORT_INITIAL_PY_CORE_LDFLAGS = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	_OSX_SUPPORT_INITIAL_PY_CPPFLAGS = "-I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include"
	_OSX_SUPPORT_INITIAL_PY_LDFLAGS = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib"
	abiflags = ""
	abs_builddir = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython"
	abs_srcdir = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython"
	base = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library"
	datarootdir = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/share"
	exec_prefix = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library"
	installed_base = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library"
	installed_platbase = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library"
	platbase = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library"
	platlibdir = "lib"
	prefix = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library"
	projectbase = "/private/var/mobile/Containers/Data/Application/15CC78FF-42FD-429B-8492-ECAD5665F737/Documents"
	py_version = "3.11.0"
	py_version_nodot = "311"
	py_version_nodot_plat = ""
	py_version_short = "3.11"
	srcdir = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/lib/python3.11/config-3.11-darwin"
	userbase = "/var/mobile/Containers/Data/Application/15CC78FF-42FD-429B-8492-ECAD5665F737/Library"

@holzschu
Copy link
Author

Update: it builds the extension, but the command line is even scarier than usual:

export PREFIX=...
export OSX_SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
export IOS_SDKROOT=$(xcrun --sdk iphoneos --show-sdk-path)
env SDKROOT="$OSX_SDKROOT" \
	PYO3_CROSS_LIB_DIR="$PREFIX/build/lib.darwin-arm64-3.11/" \
	CARGO_BUILD_TARGET="aarch64-apple-ios" \
	CARGO_TARGET_AARCH64_APPLE_IOS_RUSTFLAGS="-C link-arg=-isysroot -C link-arg=$IOS_SDKROOT -C link-arg=-arch -C link-arg=arm64 -C link-arg=-miphoneos-version-min=14.0 -C link-arg=-L -C link-arg=$PREFIX/build/lib.darwin-arm64-3.11/ -C link-arg=-lpython3.11" \
	$PREFIX/Library/bin/maturin build

I'm not sure if there's anything I can do to make it shorter. I'll check that the extension can be loaded and works, then I'll make the PR.

@messense
Copy link
Member

Where can I download a precompiled iOS Python?

@messense
Copy link
Member

I find the wheel tags for iOS is a bit strange. Maybe cp311-cp311-macosx_11_0_iphone15,2 should be normalized to cp311-cp311-macosx_11_0_iphone15_2 or cp311-cp311-iphone_15_2?

$ python3 -m pip debug --verbose
pip version: pip 23.1.1 from /private/var/containers/Bundle/Application/4FD43C4F-DF0E-4BF4-82F1-376AE6CFE10D/a-Shell.app/Library/lib/python3.11/site-packages/pip (python 3.11)
sys.version: 3.11.0 (heads/3.11-dirty:2af28c9018, Apr 23 2023, 19:57:14) [Clang 14.0.3 (clang-1403.0.22.14.1)]
sys.executable: python3
sys.getdefaultencoding: utf-8
sys.getfilesystemencoding: utf-8
locale.getpreferredencoding: UTF-8
sys.platform: darwin
sys.implementation:
  name: cpython
'cert' config value: global
REQUESTS_CA_BUNDLE: None
CURL_CA_BUNDLE: None
pip._vendor.certifi.where(): /private/var/containers/Bundle/Application/4FD43C4F-DF0E-4BF4-82F1-376AE6CFE10D/a-Shell.app/Library/lib/python3.11/site-packages/pip/_vendor/certifi/cacert.pem
pip._vendor.DEBUNDLED: False
vendored library versions:
  CacheControl==0.12.11
  colorama==0.4.6
  distlib==0.3.6
  distro==1.8.0
  msgpack==1.0.5
  packaging==21.3
  platformdirs==3.2.0
  pyparsing==3.0.9
  pyproject-hooks==1.0.0
  requests==2.28.2
  certifi==2022.12.07
  chardet==5.1.0
  idna==3.4
  urllib3==1.26.15
  rich==13.3.3 (Unable to locate actual module version, using vendor.txt specified version)
  pygments==2.14.0
  typing_extensions==4.5.0 (Unable to locate actual module version, using vendor.txt specified version)
  resolvelib==1.0.1
  setuptools==65.6.3 (Unable to locate actual module version, using vendor.txt specified version)
  six==1.16.0
  tenacity==8.2.2 (Unable to locate actual module version, using vendor.txt specified version)
  tomli==2.0.1
  webencodings==0.5.1 (Unable to locate actual module version, using vendor.txt specified version)
Compatible tags: 514
  cp311-cp311-macosx_17_0_iphone15,2
  cp311-cp311-macosx_16_0_iphone15,2
  cp311-cp311-macosx_15_0_iphone15,2
  cp311-cp311-macosx_14_0_iphone15,2
  cp311-cp311-macosx_13_0_iphone15,2
  cp311-cp311-macosx_12_0_iphone15,2
  cp311-cp311-macosx_11_0_iphone15,2
  cp311-cp311-macosx_10_16_universal2
  cp311-cp311-macosx_10_15_universal2
  cp311-cp311-macosx_10_14_universal2
  cp311-cp311-macosx_10_13_universal2
  cp311-cp311-macosx_10_12_universal2
  cp311-cp311-macosx_10_11_universal2
  cp311-cp311-macosx_10_10_universal2
  cp311-cp311-macosx_10_9_universal2
  cp311-cp311-macosx_10_8_universal2
  cp311-cp311-macosx_10_7_universal2
  cp311-cp311-macosx_10_6_universal2
  cp311-cp311-macosx_10_5_universal2
  cp311-cp311-macosx_10_4_universal2
  cp311-abi3-macosx_17_0_iphone15,2
  cp311-abi3-macosx_16_0_iphone15,2
  cp311-abi3-macosx_15_0_iphone15,2
  cp311-abi3-macosx_14_0_iphone15,2
  cp311-abi3-macosx_13_0_iphone15,2
  cp311-abi3-macosx_12_0_iphone15,2
  cp311-abi3-macosx_11_0_iphone15,2
  cp311-abi3-macosx_10_16_universal2
  cp311-abi3-macosx_10_15_universal2
  cp311-abi3-macosx_10_14_universal2
  cp311-abi3-macosx_10_13_universal2
  cp311-abi3-macosx_10_12_universal2
  cp311-abi3-macosx_10_11_universal2
  cp311-abi3-macosx_10_10_universal2
  cp311-abi3-macosx_10_9_universal2
  cp311-abi3-macosx_10_8_universal2
  cp311-abi3-macosx_10_7_universal2
  cp311-abi3-macosx_10_6_universal2
  cp311-abi3-macosx_10_5_universal2
  cp311-abi3-macosx_10_4_universal2
  cp311-none-macosx_17_0_iphone15,2
  cp311-none-macosx_16_0_iphone15,2
  cp311-none-macosx_15_0_iphone15,2
  cp311-none-macosx_14_0_iphone15,2
  cp311-none-macosx_13_0_iphone15,2
  cp311-none-macosx_12_0_iphone15,2
  cp311-none-macosx_11_0_iphone15,2
  cp311-none-macosx_10_16_universal2
  cp311-none-macosx_10_15_universal2
  cp311-none-macosx_10_14_universal2
  cp311-none-macosx_10_13_universal2
  cp311-none-macosx_10_12_universal2
  cp311-none-macosx_10_11_universal2
  cp311-none-macosx_10_10_universal2
  cp311-none-macosx_10_9_universal2
  cp311-none-macosx_10_8_universal2
  cp311-none-macosx_10_7_universal2
  cp311-none-macosx_10_6_universal2
  cp311-none-macosx_10_5_universal2
  cp311-none-macosx_10_4_universal2
  cp310-abi3-macosx_17_0_iphone15,2
  cp310-abi3-macosx_16_0_iphone15,2
  cp310-abi3-macosx_15_0_iphone15,2
  cp310-abi3-macosx_14_0_iphone15,2
  cp310-abi3-macosx_13_0_iphone15,2
  cp310-abi3-macosx_12_0_iphone15,2
  cp310-abi3-macosx_11_0_iphone15,2
  cp310-abi3-macosx_10_16_universal2
  cp310-abi3-macosx_10_15_universal2
  cp310-abi3-macosx_10_14_universal2
  cp310-abi3-macosx_10_13_universal2
  cp310-abi3-macosx_10_12_universal2
  cp310-abi3-macosx_10_11_universal2
  cp310-abi3-macosx_10_10_universal2
  cp310-abi3-macosx_10_9_universal2
  cp310-abi3-macosx_10_8_universal2
  cp310-abi3-macosx_10_7_universal2
  cp310-abi3-macosx_10_6_universal2
  cp310-abi3-macosx_10_5_universal2
  cp310-abi3-macosx_10_4_universal2
  cp39-abi3-macosx_17_0_iphone15,2
  cp39-abi3-macosx_16_0_iphone15,2
  cp39-abi3-macosx_15_0_iphone15,2
  cp39-abi3-macosx_14_0_iphone15,2
  cp39-abi3-macosx_13_0_iphone15,2
  cp39-abi3-macosx_12_0_iphone15,2
  cp39-abi3-macosx_11_0_iphone15,2
  cp39-abi3-macosx_10_16_universal2
  cp39-abi3-macosx_10_15_universal2
  cp39-abi3-macosx_10_14_universal2
  cp39-abi3-macosx_10_13_universal2
  cp39-abi3-macosx_10_12_universal2
  cp39-abi3-macosx_10_11_universal2
  cp39-abi3-macosx_10_10_universal2
  cp39-abi3-macosx_10_9_universal2
  cp39-abi3-macosx_10_8_universal2
  cp39-abi3-macosx_10_7_universal2
  cp39-abi3-macosx_10_6_universal2
  cp39-abi3-macosx_10_5_universal2
  cp39-abi3-macosx_10_4_universal2
  cp38-abi3-macosx_17_0_iphone15,2
  cp38-abi3-macosx_16_0_iphone15,2
  cp38-abi3-macosx_15_0_iphone15,2
  cp38-abi3-macosx_14_0_iphone15,2
  cp38-abi3-macosx_13_0_iphone15,2
  cp38-abi3-macosx_12_0_iphone15,2
  cp38-abi3-macosx_11_0_iphone15,2
  cp38-abi3-macosx_10_16_universal2
  cp38-abi3-macosx_10_15_universal2
  cp38-abi3-macosx_10_14_universal2
  cp38-abi3-macosx_10_13_universal2
  cp38-abi3-macosx_10_12_universal2
  cp38-abi3-macosx_10_11_universal2
  cp38-abi3-macosx_10_10_universal2
  cp38-abi3-macosx_10_9_universal2
  cp38-abi3-macosx_10_8_universal2
  cp38-abi3-macosx_10_7_universal2
  cp38-abi3-macosx_10_6_universal2
  cp38-abi3-macosx_10_5_universal2
  cp38-abi3-macosx_10_4_universal2
  cp37-abi3-macosx_17_0_iphone15,2
  cp37-abi3-macosx_16_0_iphone15,2
  cp37-abi3-macosx_15_0_iphone15,2
  cp37-abi3-macosx_14_0_iphone15,2
  cp37-abi3-macosx_13_0_iphone15,2
  cp37-abi3-macosx_12_0_iphone15,2
  cp37-abi3-macosx_11_0_iphone15,2
  cp37-abi3-macosx_10_16_universal2
  cp37-abi3-macosx_10_15_universal2
  cp37-abi3-macosx_10_14_universal2
  cp37-abi3-macosx_10_13_universal2
  cp37-abi3-macosx_10_12_universal2
  cp37-abi3-macosx_10_11_universal2
  cp37-abi3-macosx_10_10_universal2
  cp37-abi3-macosx_10_9_universal2
  cp37-abi3-macosx_10_8_universal2
  cp37-abi3-macosx_10_7_universal2
  cp37-abi3-macosx_10_6_universal2
  cp37-abi3-macosx_10_5_universal2
  cp37-abi3-macosx_10_4_universal2
  cp36-abi3-macosx_17_0_iphone15,2
  cp36-abi3-macosx_16_0_iphone15,2
  cp36-abi3-macosx_15_0_iphone15,2
  cp36-abi3-macosx_14_0_iphone15,2
  cp36-abi3-macosx_13_0_iphone15,2
  cp36-abi3-macosx_12_0_iphone15,2
  cp36-abi3-macosx_11_0_iphone15,2
  cp36-abi3-macosx_10_16_universal2
  cp36-abi3-macosx_10_15_universal2
  cp36-abi3-macosx_10_14_universal2
  cp36-abi3-macosx_10_13_universal2
  cp36-abi3-macosx_10_12_universal2
  cp36-abi3-macosx_10_11_universal2
  cp36-abi3-macosx_10_10_universal2
  cp36-abi3-macosx_10_9_universal2
  cp36-abi3-macosx_10_8_universal2
  cp36-abi3-macosx_10_7_universal2
  cp36-abi3-macosx_10_6_universal2
  cp36-abi3-macosx_10_5_universal2
  cp36-abi3-macosx_10_4_universal2
  cp35-abi3-macosx_17_0_iphone15,2
  cp35-abi3-macosx_16_0_iphone15,2
  cp35-abi3-macosx_15_0_iphone15,2
  cp35-abi3-macosx_14_0_iphone15,2
  cp35-abi3-macosx_13_0_iphone15,2
  cp35-abi3-macosx_12_0_iphone15,2
  cp35-abi3-macosx_11_0_iphone15,2
  cp35-abi3-macosx_10_16_universal2
  cp35-abi3-macosx_10_15_universal2
  cp35-abi3-macosx_10_14_universal2
  cp35-abi3-macosx_10_13_universal2
  cp35-abi3-macosx_10_12_universal2
  cp35-abi3-macosx_10_11_universal2
  cp35-abi3-macosx_10_10_universal2
  cp35-abi3-macosx_10_9_universal2
  cp35-abi3-macosx_10_8_universal2
  cp35-abi3-macosx_10_7_universal2
  cp35-abi3-macosx_10_6_universal2
  cp35-abi3-macosx_10_5_universal2
  cp35-abi3-macosx_10_4_universal2
  cp34-abi3-macosx_17_0_iphone15,2
  cp34-abi3-macosx_16_0_iphone15,2
  cp34-abi3-macosx_15_0_iphone15,2
  cp34-abi3-macosx_14_0_iphone15,2
  cp34-abi3-macosx_13_0_iphone15,2
  cp34-abi3-macosx_12_0_iphone15,2
  cp34-abi3-macosx_11_0_iphone15,2
  cp34-abi3-macosx_10_16_universal2
  cp34-abi3-macosx_10_15_universal2
  cp34-abi3-macosx_10_14_universal2
  cp34-abi3-macosx_10_13_universal2
  cp34-abi3-macosx_10_12_universal2
  cp34-abi3-macosx_10_11_universal2
  cp34-abi3-macosx_10_10_universal2
  cp34-abi3-macosx_10_9_universal2
  cp34-abi3-macosx_10_8_universal2
  cp34-abi3-macosx_10_7_universal2
  cp34-abi3-macosx_10_6_universal2
  cp34-abi3-macosx_10_5_universal2
  cp34-abi3-macosx_10_4_universal2
  cp33-abi3-macosx_17_0_iphone15,2
  cp33-abi3-macosx_16_0_iphone15,2
  cp33-abi3-macosx_15_0_iphone15,2
  cp33-abi3-macosx_14_0_iphone15,2
  cp33-abi3-macosx_13_0_iphone15,2
  cp33-abi3-macosx_12_0_iphone15,2
  cp33-abi3-macosx_11_0_iphone15,2
  cp33-abi3-macosx_10_16_universal2
  cp33-abi3-macosx_10_15_universal2
  cp33-abi3-macosx_10_14_universal2
  cp33-abi3-macosx_10_13_universal2
  cp33-abi3-macosx_10_12_universal2
  cp33-abi3-macosx_10_11_universal2
  cp33-abi3-macosx_10_10_universal2
  cp33-abi3-macosx_10_9_universal2
  cp33-abi3-macosx_10_8_universal2
  cp33-abi3-macosx_10_7_universal2
  cp33-abi3-macosx_10_6_universal2
  cp33-abi3-macosx_10_5_universal2
  cp33-abi3-macosx_10_4_universal2
  cp32-abi3-macosx_17_0_iphone15,2
  cp32-abi3-macosx_16_0_iphone15,2
  cp32-abi3-macosx_15_0_iphone15,2
  cp32-abi3-macosx_14_0_iphone15,2
  cp32-abi3-macosx_13_0_iphone15,2
  cp32-abi3-macosx_12_0_iphone15,2
  cp32-abi3-macosx_11_0_iphone15,2
  cp32-abi3-macosx_10_16_universal2
  cp32-abi3-macosx_10_15_universal2
  cp32-abi3-macosx_10_14_universal2
  cp32-abi3-macosx_10_13_universal2
  cp32-abi3-macosx_10_12_universal2
  cp32-abi3-macosx_10_11_universal2
  cp32-abi3-macosx_10_10_universal2
  cp32-abi3-macosx_10_9_universal2
  cp32-abi3-macosx_10_8_universal2
  cp32-abi3-macosx_10_7_universal2
  cp32-abi3-macosx_10_6_universal2
  cp32-abi3-macosx_10_5_universal2
  cp32-abi3-macosx_10_4_universal2
  py311-none-macosx_17_0_iphone15,2
  py311-none-macosx_16_0_iphone15,2
  py311-none-macosx_15_0_iphone15,2
  py311-none-macosx_14_0_iphone15,2
  py311-none-macosx_13_0_iphone15,2
  py311-none-macosx_12_0_iphone15,2
  py311-none-macosx_11_0_iphone15,2
  py311-none-macosx_10_16_universal2
  py311-none-macosx_10_15_universal2
  py311-none-macosx_10_14_universal2
  py311-none-macosx_10_13_universal2
  py311-none-macosx_10_12_universal2
  py311-none-macosx_10_11_universal2
  py311-none-macosx_10_10_universal2
  py311-none-macosx_10_9_universal2
  py311-none-macosx_10_8_universal2
  py311-none-macosx_10_7_universal2
  py311-none-macosx_10_6_universal2
  py311-none-macosx_10_5_universal2
  py311-none-macosx_10_4_universal2
  py3-none-macosx_17_0_iphone15,2
  py3-none-macosx_16_0_iphone15,2
  py3-none-macosx_15_0_iphone15,2
  py3-none-macosx_14_0_iphone15,2
  py3-none-macosx_13_0_iphone15,2
  py3-none-macosx_12_0_iphone15,2
  py3-none-macosx_11_0_iphone15,2
  py3-none-macosx_10_16_universal2
  py3-none-macosx_10_15_universal2
  py3-none-macosx_10_14_universal2
  py3-none-macosx_10_13_universal2
  py3-none-macosx_10_12_universal2
  py3-none-macosx_10_11_universal2
  py3-none-macosx_10_10_universal2
  py3-none-macosx_10_9_universal2
  py3-none-macosx_10_8_universal2
  py3-none-macosx_10_7_universal2
  py3-none-macosx_10_6_universal2
  py3-none-macosx_10_5_universal2
  py3-none-macosx_10_4_universal2
  py310-none-macosx_17_0_iphone15,2
  py310-none-macosx_16_0_iphone15,2
  py310-none-macosx_15_0_iphone15,2
  py310-none-macosx_14_0_iphone15,2
  py310-none-macosx_13_0_iphone15,2
  py310-none-macosx_12_0_iphone15,2
  py310-none-macosx_11_0_iphone15,2
  py310-none-macosx_10_16_universal2
  py310-none-macosx_10_15_universal2
  py310-none-macosx_10_14_universal2
  py310-none-macosx_10_13_universal2
  py310-none-macosx_10_12_universal2
  py310-none-macosx_10_11_universal2
  py310-none-macosx_10_10_universal2
  py310-none-macosx_10_9_universal2
  py310-none-macosx_10_8_universal2
  py310-none-macosx_10_7_universal2
  py310-none-macosx_10_6_universal2
  py310-none-macosx_10_5_universal2
  py310-none-macosx_10_4_universal2
  py39-none-macosx_17_0_iphone15,2
  py39-none-macosx_16_0_iphone15,2
  py39-none-macosx_15_0_iphone15,2
  py39-none-macosx_14_0_iphone15,2
  py39-none-macosx_13_0_iphone15,2
  py39-none-macosx_12_0_iphone15,2
  py39-none-macosx_11_0_iphone15,2
  py39-none-macosx_10_16_universal2
  py39-none-macosx_10_15_universal2
  py39-none-macosx_10_14_universal2
  py39-none-macosx_10_13_universal2
  py39-none-macosx_10_12_universal2
  py39-none-macosx_10_11_universal2
  py39-none-macosx_10_10_universal2
  py39-none-macosx_10_9_universal2
  py39-none-macosx_10_8_universal2
  py39-none-macosx_10_7_universal2
  py39-none-macosx_10_6_universal2
  py39-none-macosx_10_5_universal2
  py39-none-macosx_10_4_universal2
  py38-none-macosx_17_0_iphone15,2
  py38-none-macosx_16_0_iphone15,2
  py38-none-macosx_15_0_iphone15,2
  py38-none-macosx_14_0_iphone15,2
  py38-none-macosx_13_0_iphone15,2
  py38-none-macosx_12_0_iphone15,2
  py38-none-macosx_11_0_iphone15,2
  py38-none-macosx_10_16_universal2
  py38-none-macosx_10_15_universal2
  py38-none-macosx_10_14_universal2
  py38-none-macosx_10_13_universal2
  py38-none-macosx_10_12_universal2
  py38-none-macosx_10_11_universal2
  py38-none-macosx_10_10_universal2
  py38-none-macosx_10_9_universal2
  py38-none-macosx_10_8_universal2
  py38-none-macosx_10_7_universal2
  py38-none-macosx_10_6_universal2
  py38-none-macosx_10_5_universal2
  py38-none-macosx_10_4_universal2
  py37-none-macosx_17_0_iphone15,2
  py37-none-macosx_16_0_iphone15,2
  py37-none-macosx_15_0_iphone15,2
  py37-none-macosx_14_0_iphone15,2
  py37-none-macosx_13_0_iphone15,2
  py37-none-macosx_12_0_iphone15,2
  py37-none-macosx_11_0_iphone15,2
  py37-none-macosx_10_16_universal2
  py37-none-macosx_10_15_universal2
  py37-none-macosx_10_14_universal2
  py37-none-macosx_10_13_universal2
  py37-none-macosx_10_12_universal2
  py37-none-macosx_10_11_universal2
  py37-none-macosx_10_10_universal2
  py37-none-macosx_10_9_universal2
  py37-none-macosx_10_8_universal2
  py37-none-macosx_10_7_universal2
  py37-none-macosx_10_6_universal2
  py37-none-macosx_10_5_universal2
  py37-none-macosx_10_4_universal2
  py36-none-macosx_17_0_iphone15,2
  py36-none-macosx_16_0_iphone15,2
  py36-none-macosx_15_0_iphone15,2
  py36-none-macosx_14_0_iphone15,2
  py36-none-macosx_13_0_iphone15,2
  py36-none-macosx_12_0_iphone15,2
  py36-none-macosx_11_0_iphone15,2
  py36-none-macosx_10_16_universal2
  py36-none-macosx_10_15_universal2
  py36-none-macosx_10_14_universal2
  py36-none-macosx_10_13_universal2
  py36-none-macosx_10_12_universal2
  py36-none-macosx_10_11_universal2
  py36-none-macosx_10_10_universal2
  py36-none-macosx_10_9_universal2
  py36-none-macosx_10_8_universal2
  py36-none-macosx_10_7_universal2
  py36-none-macosx_10_6_universal2
  py36-none-macosx_10_5_universal2
  py36-none-macosx_10_4_universal2
  py35-none-macosx_17_0_iphone15,2
  py35-none-macosx_16_0_iphone15,2
  py35-none-macosx_15_0_iphone15,2
  py35-none-macosx_14_0_iphone15,2
  py35-none-macosx_13_0_iphone15,2
  py35-none-macosx_12_0_iphone15,2
  py35-none-macosx_11_0_iphone15,2
  py35-none-macosx_10_16_universal2
  py35-none-macosx_10_15_universal2
  py35-none-macosx_10_14_universal2
  py35-none-macosx_10_13_universal2
  py35-none-macosx_10_12_universal2
  py35-none-macosx_10_11_universal2
  py35-none-macosx_10_10_universal2
  py35-none-macosx_10_9_universal2
  py35-none-macosx_10_8_universal2
  py35-none-macosx_10_7_universal2
  py35-none-macosx_10_6_universal2
  py35-none-macosx_10_5_universal2
  py35-none-macosx_10_4_universal2
  py34-none-macosx_17_0_iphone15,2
  py34-none-macosx_16_0_iphone15,2
  py34-none-macosx_15_0_iphone15,2
  py34-none-macosx_14_0_iphone15,2
  py34-none-macosx_13_0_iphone15,2
  py34-none-macosx_12_0_iphone15,2
  py34-none-macosx_11_0_iphone15,2
  py34-none-macosx_10_16_universal2
  py34-none-macosx_10_15_universal2
  py34-none-macosx_10_14_universal2
  py34-none-macosx_10_13_universal2
  py34-none-macosx_10_12_universal2
  py34-none-macosx_10_11_universal2
  py34-none-macosx_10_10_universal2
  py34-none-macosx_10_9_universal2
  py34-none-macosx_10_8_universal2
  py34-none-macosx_10_7_universal2
  py34-none-macosx_10_6_universal2
  py34-none-macosx_10_5_universal2
  py34-none-macosx_10_4_universal2
  py33-none-macosx_17_0_iphone15,2
  py33-none-macosx_16_0_iphone15,2
  py33-none-macosx_15_0_iphone15,2
  py33-none-macosx_14_0_iphone15,2
  py33-none-macosx_13_0_iphone15,2
  py33-none-macosx_12_0_iphone15,2
  py33-none-macosx_11_0_iphone15,2
  py33-none-macosx_10_16_universal2
  py33-none-macosx_10_15_universal2
  py33-none-macosx_10_14_universal2
  py33-none-macosx_10_13_universal2
  py33-none-macosx_10_12_universal2
  py33-none-macosx_10_11_universal2
  py33-none-macosx_10_10_universal2
  py33-none-macosx_10_9_universal2
  py33-none-macosx_10_8_universal2
  py33-none-macosx_10_7_universal2
  py33-none-macosx_10_6_universal2
  py33-none-macosx_10_5_universal2
  py33-none-macosx_10_4_universal2
  py32-none-macosx_17_0_iphone15,2
  py32-none-macosx_16_0_iphone15,2
  py32-none-macosx_15_0_iphone15,2
  py32-none-macosx_14_0_iphone15,2
  py32-none-macosx_13_0_iphone15,2
  py32-none-macosx_12_0_iphone15,2
  py32-none-macosx_11_0_iphone15,2
  py32-none-macosx_10_16_universal2
  py32-none-macosx_10_15_universal2
  py32-none-macosx_10_14_universal2
  py32-none-macosx_10_13_universal2
  py32-none-macosx_10_12_universal2
  py32-none-macosx_10_11_universal2
  py32-none-macosx_10_10_universal2
  py32-none-macosx_10_9_universal2
  py32-none-macosx_10_8_universal2
  py32-none-macosx_10_7_universal2
  py32-none-macosx_10_6_universal2
  py32-none-macosx_10_5_universal2
  py32-none-macosx_10_4_universal2
  py31-none-macosx_17_0_iphone15,2
  py31-none-macosx_16_0_iphone15,2
  py31-none-macosx_15_0_iphone15,2
  py31-none-macosx_14_0_iphone15,2
  py31-none-macosx_13_0_iphone15,2
  py31-none-macosx_12_0_iphone15,2
  py31-none-macosx_11_0_iphone15,2
  py31-none-macosx_10_16_universal2
  py31-none-macosx_10_15_universal2
  py31-none-macosx_10_14_universal2
  py31-none-macosx_10_13_universal2
  py31-none-macosx_10_12_universal2
  py31-none-macosx_10_11_universal2
  py31-none-macosx_10_10_universal2
  py31-none-macosx_10_9_universal2
  py31-none-macosx_10_8_universal2
  py31-none-macosx_10_7_universal2
  py31-none-macosx_10_6_universal2
  py31-none-macosx_10_5_universal2
  py31-none-macosx_10_4_universal2
  py30-none-macosx_17_0_iphone15,2
  py30-none-macosx_16_0_iphone15,2
  py30-none-macosx_15_0_iphone15,2
  py30-none-macosx_14_0_iphone15,2
  py30-none-macosx_13_0_iphone15,2
  py30-none-macosx_12_0_iphone15,2
  py30-none-macosx_11_0_iphone15,2
  py30-none-macosx_10_16_universal2
  py30-none-macosx_10_15_universal2
  py30-none-macosx_10_14_universal2
  py30-none-macosx_10_13_universal2
  py30-none-macosx_10_12_universal2
  py30-none-macosx_10_11_universal2
  py30-none-macosx_10_10_universal2
  py30-none-macosx_10_9_universal2
  py30-none-macosx_10_8_universal2
  py30-none-macosx_10_7_universal2
  py30-none-macosx_10_6_universal2
  py30-none-macosx_10_5_universal2
  py30-none-macosx_10_4_universal2
  cp311-none-any
  py311-none-any
  py3-none-any
  py310-none-any
  py39-none-any
  py38-none-any
  py37-none-any
  py36-none-any
  py35-none-any
  py34-none-any
  py33-none-any
  py32-none-any
  py31-none-any
  py30-none-any

@holzschu
Copy link
Author

Where can I download a precompiled iOS Python?
Here, if you also want the app around it: https://apps.apple.com/us/app/a-shell/id1473805438?uo=4

If you only want the binaries, you'll have to compiler it from here: https://github.com/holzschu/cpython/

For the tags, that looks like the result of os.uname() (the machine part), which you can also see with uname -m. There might be some side-effects in changing it, I'm not sure.

@konstin
Copy link
Member

konstin commented Aug 21, 2023

While this is surprisingly only documented for replacing - and . with _, imho everything outside [a-zA-Z0-9] should be replaced with an underscore, i'm not sure at which level though.

@holzschu
Copy link
Author

Hi,

  • the public beta version of a-Shell now has rpds-py, compiled with maturin. It's a small step: https://testflight.apple.com/join/WUdKe3f4
    I'm still testing to see if there are hidden issues (if you've never installed a public beta on iOS, you'll need to install the TestFlight app first).
  • the wheels listed by pip are indeed problematic, not just because of the comma, but because it gives a different result for iPhones and iPads, and for different models of iPhones or iPads (it would be better with "iDevice", maybe? or stick with "iPhone" even if it's an iPad?). The good news is that no-one is providing wheels specific for iPhones or iPads, because you cannot add binaries to an existing app. So it's a problem, but it has no consequences for the time being. "universal2" is more of an issue: it installs wheels compiled for MacOSX running on Arm processors, which won't work on iOS (but both are darwin-apple-arm64, so there are no easy way to make the difference).

@messense messense added the help wanted Extra attention is needed label Sep 30, 2023
@messense
Copy link
Member

N.B. PEP 730 – Adding iOS as a supported platform has been accepted.

@marcpabst
Copy link

Hi @holzschu, would you mind providing some context on how you managed to compile for iOS using maturin? I'm trying to do the same but struggle finding a good starting point.

@holzschu
Copy link
Author

holzschu commented May 6, 2024

Hi @marcpabst,
I haven't touched this project since last August (but I will during this summer). But basically:

  • add iOS as a supported platform so compilation works (see this commit: holzschu@c83075b )
  • compile with the right options, to help rust and PyO3 find the right libraries:
export PREFIX=...
export OSX_SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
export IOS_SDKROOT=$(xcrun --sdk iphoneos --show-sdk-path)
env SDKROOT="$OSX_SDKROOT" \
	PYO3_CROSS_LIB_DIR="$PREFIX/build/lib.darwin-arm64-3.11/" \
	CARGO_BUILD_TARGET="aarch64-apple-ios" \
	CARGO_TARGET_AARCH64_APPLE_IOS_RUSTFLAGS="-C link-arg=-isysroot -C link-arg=$IOS_SDKROOT -C link-arg=-arch -C link-arg=arm64 -C link-arg=-miphoneos-version-min=14.0 -C link-arg=-L -C link-arg=$PREFIX/build/lib.darwin-arm64-3.11/ -C link-arg=-lpython3.11" \
	$PREFIX/Library/bin/maturin build

Let me know if this doesn't work for you.

@marcpabst
Copy link

marcpabst commented May 6, 2024

Thank you! I think I almost got it working with the briefcase precompiled python 3.12 lib:

export OSX_SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
export IOS_SDKROOT=$(xcrun --sdk iphoneos --show-sdk-path)
export PYO3_CROSS_PYTHON_VERSION=3.12
export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata__ios_iphoneos-arm64"
env SDKROOT="$OSX_SDKROOT" \
	PYO3_CROSS_LIB_DIR="/Users/user/btest3/build/btest3/ios/xcode/Support/Python.xcframework/ios-arm64" \
	CARGO_BUILD_TARGET="aarch64-apple-ios" \
	CARGO_TARGET_AARCH64_APPLE_IOS_RUSTFLAGS="-C link-arg=-isysroot -C link-arg=$IOS_SDKROOT \
	-C link-arg=-arch -C link-arg=arm64 -C link-arg=-miphoneos-version-min=14.0 -C link-arg=-L \
	-C link-arg=/Users/user/btest3/build/btest3/ios/xcode/Support/Python.xcframework/ios-arm64/ -C link-arg=-lpython3.12" \
	maturin build

but I'm running into this error:

  = note: ld: Undefined symbols:
            ___isPlatformVersionAtLeast, referenced from:
                _os_mkfifo in libPython3.12.a[arm64][127](posixmodule.o)
                _os_mknod in libPython3.12.a[arm64][127](posixmodule.o)
                _posixmodule_exec in libPython3.12.a[arm64][127](posixmodule.o)
                _probe_mkfifoat in libPython3.12.a[arm64][127](posixmodule.o)
                _probe_mknodat in libPython3.12.a[arm64][127](posixmodule.o)
          clang: error: linker command failed with exit code 1 (use -v to see invocation)

@marcpabst
Copy link

marcpabst commented May 7, 2024

Weirdly, the error goes away when compiling in --release mode but I'm still unable to import the generated package on iOS (I'm compiling for --target aarch64-apple-ios and the apps runs on an iPhone with iOS 17.2):

ModuleNotFoundError: No module named 'guessing_game.guessing_game'
Application has crashed!
========================
Traceback (most recent call last):
  File "/private/var/containers/Bundle/Application/4554AC95-7DC3-4E5D-B547-4366F84FEAFE/btest3.app/app/btest3/__main__.py", line 1, in <module>
    from btest3.app import main
  File "/private/var/containers/Bundle/Application/4554AC95-7DC3-4E5D-B547-4366F84FEAFE/btest3.app/app/btest3/app.py", line 8, in <module>
    import guessing_game
  File "/private/var/containers/Bundle/Application/4554AC95-7DC3-4E5D-B547-4366F84FEAFE/btest3.app/app_packages/guessing_game/__init__.py", line 3, in <module>
    from .guessing_game import *
ModuleNotFoundError: No module named 'guessing_game.guessing_game'

@marcpabst
Copy link

marcpabst commented May 7, 2024

Hi @holzschu, one more question: do you remember if you ended up with an *.so or *.dylib library? And did you change anyhing about the way the dynamic lib is loaded?

Looking at https://peps.python.org/pep-0730/, there seem to be lots of limitations on iOS, how do you work them in your app?

@holzschu
Copy link
Author

holzschu commented May 7, 2024

At the end of compiling, you will end up with a dynamic library. How it's named is not important. iOS likes to have its dynamic libraries encapsulated in Frameworks, but that's just a matter of moving things around and changing strings in the binary. I have a script to do that systematically:

echo "Creating: " ${architecture}/Frameworks/${name}.framework
directory=build/${architecture}/Frameworks/
rm -rf $directory/$framework.framework
mkdir -p $directory
mkdir -p $directory/$framework.framework
libraryFile=build/${architecture}/${library}.cpython-311-darwin.so
cp $libraryFile $directory/$framework.framework/$framework
cp plists/basic_Info.plist $directory/$framework.framework/Info.plist
plutil -replace CFBundleExecutable -string $framework $directory/$framework.framework/Info.plist
plutil -replace CFBundleName -string $framework $directory/$framework.framework/Info.plist
# underscore is not allowed in CFBundleIdentifier:
signature=${framework//_/-}
plutil -replace CFBundleIdentifier -string Nicolas-Holzschuch.$signature  $directory/$framework.framework/Info.plist
# change framework id and libpython:
install_name_tool -change $libpython @rpath/${package}.framework/${package} $directory/$framework.framework/$framework
install_name_tool -id @rpath/$framework.framework/$framework  $directory/$framework.framework/$framework
plutil -replace DTPlatformName -string "iphoneos" build/lib.darwin-arm64-3.11/Frameworks/$framework.framework/Info.plist
	plutil -replace DTSDKName -string "iphoneos" build/lib.darwin-arm64-3.11/Frameworks/$framework.framework/Info.plist
	plutil -replace DTPlatformVersion -string "14.0" build/lib.darwin-arm64-3.11/Frameworks/$framework.framework/Info.plist
	plutil -replace MinimumOSVersion -string "14.0" build/lib.darwin-arm64-3.11/Frameworks/$framework.framework/Info.plist

The basic idea is that a framework has the following structure: a directory, containing the dynamic library (renamed with no suffix) and an Info.plist file that describes the content of the framework. The plutil utility lets you change the content of the Info.plist, so you can start with a vanilla Info.plist and edit it.

ls -l ffprobe.framework/
total 52480
drwxr-xr-x  2 holzschu  staff        64 31 Jul  2022 Headers
-rw-r--r--  1 holzschu  staff      1457 26 Apr 03:30 Info.plist
-rwxr-xr-x  1 holzschu  staff  26863680 26 Apr 03:30 ffprobe

I also edited the code in charge of loading dynamic libraries in Python, so that instead of loading dynamicLibrary.so, it insteads loads dynamicLibrary.framework/dynamicLibrary (it's a straightforward change) (that might be already in PEP730, I haven't looked).

@marcpabst
Copy link

Thank you, that's very helpful! I think I'm at a point now where Python checks the right place for the library and loads it - but then immediately fails with EXC_BAD_ACCESS. So there's likely still something wrong with how I compile the rust code.

This is what I use to build my (abi3-py38) wheel:

export OSX_SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
export IOS_SDKROOT=$(xcrun --sdk iphoneos --show-sdk-path)
export PYTHONDIR="/Users/marc/btest3/build/btest3/ios/xcode/Support/Python.xcframework/ios-arm64"
export PYO3_CROSS_PYTHON_VERSION=3.12
env SDKROOT="$OSX_SDKROOT" \
PYO3_CROSS_LIB_DIR="$PYTHONDIR" \
CARGO_TARGET_AARCH64_APPLE_IOS_RUSTFLAGS="-C link-arg=-isysroot -C link-arg=$IOS_SDKROOT \
	-C link-arg=-arch -C link-arg=arm64 -C link-arg=-miphoneos-version-min=14.0 -C link-arg=-L \
	-C link-arg=$PYTHONDIR \
	-C link-arg=-lpython3.12" \
maturin build --target aarch64-apple-ios --release

which succesfully builds:

🔗 Found pyo3 bindings with abi3 support for Python ≥ 3.8
🐍 Not using a specific python interpreter
📡 Using build options features from pyproject.toml
...
    Finished release [optimized] target(s) in 0.01s
📦 Built wheel for abi3 Python ≥ 3.8 to /Users/marc/guessing_game/target/wheels/guessing_game-0.1.0-cp38-abi3-ios_23_2_0_arm64.whl

@marcpabst
Copy link

marcpabst commented May 8, 2024

I made it work!! I think Briefcase is dynamically linking the Pythin intepreter (?), so I had to replace -C link-arg=-lpython3.12 with -C link-arg=-undefined -C link-arg=dynamic_lookup".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants