A private, improved fork of Leeksov/theos-windows.
The base installer is unchanged (tag upstream-baseline for diffing); everything
below is additive.
After the base install.sh, add everything with:
bash setup-extras.sh --all # multi-SDK + Swift toolchain + RootHide
bash setup-extras.sh --sdks all # or pick pieces: --sdks 18.6,26.5 --roothide --swiftProven on real devices (iOS 17.6.1 + iOS 27.0). Pure Swift + @_cdecl called from
ObjC works and runs on device. Full import Foundation/UIKit from Swift is not
achievable on native Windows — exhaustively tested: swift.org swiftc 6.1.2 & 6.3.3
vs SDK 16.5 & 18.6 all fail (overlay ABI on old SDKs; "error extracting version" on
Apple's core Swift.swiftinterface on matching SDKs), and even the ObjC-bridging-header
workaround fails (UIKit clang module OOM/blocked). It needs Apple's own swiftc
(Xcode/macOS). Ceiling = Swift logic + ObjC frameworks via @_cdecl.
- Recipe + full test matrix:
docs/Swift.md - Wrapper:
tools/swiftc-ios - Working example → installable
.ipa:examples/swift-demo/
Adds the roothide package scheme (from roothide/theos)
so you can build tweaks for RootHide-jailbroken devices. Ported as an additive
overlay that does not disturb the Windows patches (roothide only adds
vendor/mod/roothide + a 3-line rules.mk change).
- Apply:
tools/add-roothide.sh→ thenmake THEOS_PACKAGE_SCHEME=roothide - Scheme files:
roothide-support/ - Windows caveat: the scheme (install_name
@loader_path/.jbroot…, arm64e) builds fine; final.debpackaging has the usual Theos-on-Windows dpkg-deb-stub limit. Needs a RootHide device to verify end-to-end.
Upstream ships one SDK (16.5). All three are now pre-patched (Windows framework
symlinks materialized) and hosted on TheosWin's own sdks-v1 release, so the
setup no longer depends on any other repo.
- One-command install:
tools/install-sdks.sh[16.5|18.6|26.5|all]→ downloads fromsdks-v1into$THEOS/sdks/. - Make another version yourself from any mirror:
tools/add-sdk.py(resolves framework symlinks via git metadata). - Select per project:
TARGET = iphone:clang:26.5:14.5(etc.). 16.5 is the safe default; newer ones are opt-in per project.
Only one Windows-host iOS toolchain exists publicly (Leeksov's LLVM 19). L1ghtmann's other releases are Linux/macOS. A second Windows clang would need a from-source build. So TheosWin stays on LLVM 19.
Pinned toolchain (reproducibility): the base install.sh pulls the toolchain
from Leeksov's latest, which could change if they publish a newer LLVM. For a
byte-for-byte reproducible setup, the exact LLVM 19 is mirrored on the
toolchain-v1 release — install it with
tools/install-toolchain.sh (or setup-extras.sh --toolchain). Then a fresh machine matches your current setup precisely.