commit ea525c3d56b47cccfaa99c50f195377951136a60 Author: Jack Matthews Date: Sun Mar 12 04:19:51 2023 -0400 [Global] Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b86e722 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +.DS_Store +/.build +/Packages +/*.xcodeproj +xcuserdata/ + +.theos +/packages +.theos/ +packages/ +.DS_Store diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c5be4e8 --- /dev/null +++ b/Makefile @@ -0,0 +1,12 @@ +TARGET := iphone:clang:latest:12.2 + + +include $(THEOS)/makefiles/common.mk + +TWEAK_NAME = VendettaTweak + +VendettaTweak_FILES = $(shell find Sources/VendettaTweak -name '*.swift') $(shell find Sources/VendettaTweakC -name '*.m' -o -name '*.c' -o -name '*.mm' -o -name '*.cpp') +VendettaTweak_SWIFTFLAGS = -ISources/VendettaTweakC/include +VendettaTweak_CFLAGS = -fobjc-arc -ISources/VendettaTweakC/include + +include $(THEOS_MAKE_PATH)/tweak.mk diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..a9608cc --- /dev/null +++ b/Package.swift @@ -0,0 +1,88 @@ +// swift-tools-version:5.2 + +import PackageDescription +import Foundation + +let projectDir = URL(fileURLWithPath: #filePath).deletingLastPathComponent() + +@dynamicMemberLookup struct TheosConfiguration { + private let dict: [String: String] + init(at path: String) { + let configURL = URL(fileURLWithPath: path, relativeTo: projectDir) + guard let infoString = try? String(contentsOf: configURL) else { + fatalError(""" + Could not find Theos SPM config. Have you run `make spm` yet? + """) + } + let pairs = infoString.split(separator: "\n").map { + $0.split( + separator: "=", maxSplits: 1, + omittingEmptySubsequences: false + ).map(String.init) + }.map { ($0[0], $0[1]) } + dict = Dictionary(uniqueKeysWithValues: pairs) + } + subscript( + key: String, + or defaultValue: @autoclosure () -> String? = nil + ) -> String { + if let value = dict[key] { + return value + } else if let def = defaultValue() { + return def + } else { + fatalError(""" + Could not get value of key '\(key)' from Theos SPM config. \ + Try running `make spm` again. + """) + } + } + subscript(dynamicMember key: String) -> String { self[key] } +} +let conf = TheosConfiguration(at: ".theos/spm_config") + +let theosPath = conf.theos +let sdk = conf.sdk +let resourceDir = conf.swiftResourceDir +let deploymentTarget = conf.deploymentTarget +let triple = "arm64-apple-ios\(deploymentTarget)" + +let libFlags: [String] = [ + "-F\(theosPath)/vendor/lib", "-F\(theosPath)/lib", + "-I\(theosPath)/vendor/include", "-I\(theosPath)/include" +] + +let cFlags: [String] = libFlags + [ + "-target", triple, "-isysroot", sdk, + "-Wno-unused-command-line-argument", "-Qunused-arguments", +] + +let cxxFlags: [String] = [ +] + +let swiftFlags: [String] = libFlags + [ + "-target", triple, "-sdk", sdk, "-resource-dir", resourceDir, +] + +let package = Package( + name: "VendettaTweak", + platforms: [.iOS(deploymentTarget)], + products: [ + .library( + name: "VendettaTweak", + targets: ["VendettaTweak"] + ), + ], + targets: [ + .target( + name: "VendettaTweakC", + cSettings: [.unsafeFlags(cFlags)], + cxxSettings: [.unsafeFlags(cxxFlags)] + ), + .target( + name: "VendettaTweak", + dependencies: ["VendettaTweakC"], + swiftSettings: [.unsafeFlags(swiftFlags)] + ), + ] +) diff --git a/Sources/VendettaTweak/Tweak.x.swift b/Sources/VendettaTweak/Tweak.x.swift new file mode 100644 index 0000000..3b10a58 --- /dev/null +++ b/Sources/VendettaTweak/Tweak.x.swift @@ -0,0 +1,2 @@ +import Orion +import VendettaTweakC diff --git a/Sources/VendettaTweakC/Tweak.m b/Sources/VendettaTweakC/Tweak.m new file mode 100644 index 0000000..810da33 --- /dev/null +++ b/Sources/VendettaTweakC/Tweak.m @@ -0,0 +1,7 @@ +#import + +__attribute__((constructor)) static void init() { + // Initialize Orion - do not remove this line. + orion_init(); + // Custom initialization code goes here. +} diff --git a/Sources/VendettaTweakC/include/Tweak.h b/Sources/VendettaTweakC/include/Tweak.h new file mode 100644 index 0000000..e69de29 diff --git a/Sources/VendettaTweakC/include/module.modulemap b/Sources/VendettaTweakC/include/module.modulemap new file mode 100644 index 0000000..4302bab --- /dev/null +++ b/Sources/VendettaTweakC/include/module.modulemap @@ -0,0 +1,4 @@ +module VendettaTweakC { + umbrella "." + export * +} diff --git a/VendettaTweak.plist b/VendettaTweak.plist new file mode 100644 index 0000000..192729d --- /dev/null +++ b/VendettaTweak.plist @@ -0,0 +1 @@ +{ Filter = { Bundles = ( "com.hammerandchisel.discord" ); }; } diff --git a/control b/control new file mode 100644 index 0000000..4f68db2 --- /dev/null +++ b/control @@ -0,0 +1,9 @@ +Package: dev.beefers.vendetta +Name: VendettaTweak +Version: 0.0.1 +Architecture: iphoneos-arm +Description: An awesome Orion tweak! +Maintainer: FieryFlames +Author: FieryFlames +Section: Tweaks +Depends: ${ORION}, firmware (>= 12.2)