Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,5 @@ fastlane/test_output

iOSInjectionProject/
.DS_Store
.vscode/settings.json
.vscode
83 changes: 83 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# StikJIT Makefile
# By neoarz

# Path to code signing tool
TARGET_CODESIGN = $(shell which ldid)

# Build configuration settings
PLATFORM = iphoneos
NAME = StikJIT
SCHEME ?= 'StikJIT'
RELEASE = Release-iphoneos
CONFIGURATION = Release

# SDK paths for compilation
MACOSX_SYSROOT = $(shell xcrun -sdk macosx --show-sdk-path)
TARGET_SYSROOT = $(shell xcrun -sdk $(PLATFORM) --show-sdk-path)

# Temporary build directories
APP_TMP = $(TMPDIR)/$(NAME)
STAGE_DIR = $(APP_TMP)/stage
APP_DIR = $(APP_TMP)/Build/Products/$(RELEASE)/$(NAME).app

# Default target
all: package

# Main build target - compiles and packages the application
package:
# Clean any previous build artifacts
@rm -rf $(APP_TMP)

# Build the app with xcodebuild
# Uses parallel jobs to speed up compilation
@set -o pipefail; \
xcodebuild \
-jobs $(shell sysctl -n hw.ncpu) \
-project '$(NAME).xcodeproj' \
-scheme $(SCHEME) \
-configuration $(CONFIGURATION) \
-arch arm64 -sdk $(PLATFORM) \
-derivedDataPath $(APP_TMP) \
CODE_SIGNING_ALLOWED=NO \
DSTROOT=$(APP_TMP)/install \
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO \
ONLY_ACTIVE_ARCH=NO \
CODE_SIGN_IDENTITY="" \
CODE_SIGNING_REQUIRED=NO \
SWIFT_OPTIMIZATION_LEVEL="-Onone" \
IPHONEOS_DEPLOYMENT_TARGET=17.4

# Prepare the directory structure for packaging
@rm -rf Payload
@rm -rf $(STAGE_DIR)/
@mkdir -p $(STAGE_DIR)/Payload
@mv $(APP_DIR) $(STAGE_DIR)/Payload/$(NAME).app

# Debug output - show paths for troubleshooting
@echo $(APP_TMP)
@echo $(STAGE_DIR)

# Remove Apple's code signature so we can use our own
@rm -rf $(STAGE_DIR)/Payload/$(NAME).app/_CodeSignature

# Set up symbolic link for packaging
@ln -sf $(STAGE_DIR)/Payload Payload

# Prepare packages directory
@rm -rf packages
@mkdir -p packages

# Create standard IPA package
# Using max compression level (9) for smaller file size
@zip -r9 packages/$(NAME).ipa Payload
@rm -rf Payload

# Clean target - removes all temporary files and build artifacts
clean:
@rm -rf $(STAGE_DIR)
@rm -rf packages
@rm -rf out.dmg
@rm -rf $(APP_TMP)

# Phony target declaration
.PHONY: apple-include
37 changes: 30 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,21 +42,44 @@
- Native UI for managing JIT-enabling.
- No data collection—ensuring full privacy.

## Compiling Instructions
## Building Instructions

1. **Clone the repository:**
```sh
git clone https://github.com/0-Blu/StikJIT.git
cd StikJIT
```

2. **Open in Xcode:**
Open `StikJIT.xcodeproj` in Xcode.
2. **Build using Makefile:**
```sh
make package # Build unsigned .ipa
```

3. **Updating:**
```sh
git pull
make clean # Clean previous build
make package # Rebuild
```
> [!WARNING]
> The __Makefile__ build creates an unsigned .ipa in the `packages` directory. While this is useful for quick builds, please use Xcode for development and debugging. When submitting pull requests or reporting issues, ensure you've tested your changes thoroughly using Xcode.



## Contributing
```sh
# Clone the repository
git clone https://github.com/0-Blu/StikJIT.git
cd StikJIT

# Open in Xcode
open StikJIT.xcodeproj
```

3. **Build and Run:**
- Connect your iOS device.
- Select your device in Xcode.
- Build and run the project.
Then in Xcode:
- Connect your iOS device
- Select your device in Xcode
- Build and run the project (⌘R)

## License
StikJIT is licensed under **AGPL-3.0**. See [`LICENSE`](LICENSE) for details.