Port futurerestore to from autotools to cmake

This commit is contained in:
Cryptiiiic 2022-06-06 22:21:29 -07:00
parent ecc32003b0
commit f7fa07e2ba
No known key found for this signature in database
GPG key ID: 6027B509EFE3A76B
28 changed files with 329 additions and 2526 deletions

View file

@ -20,42 +20,37 @@ jobs:
- name: macOS Build
id: macOS-Build
run: |
cd /Users/runner/work/futurerestore/futurerestore/.github/workflows
./mac-bootstrap.sh
./Builder macOS x86_64 release 1300 10.12 &
./Builder macOS x86_64 debug 1300 10.12 &
./Builder macOS arm64 release 1700 11.0 &
./Builder macOS arm64 debug 1700 11.0 &
wait
./mac-post.sh
/Users/runner/work/futurerestore/futurerestore/.github/workflows/mac-bootstrap.sh
/Users/runner/work/futurerestore/futurerestore/.github/workflows/mac-build.sh
/Users/runner/work/futurerestore/futurerestore/.github/workflows/mac-post.sh
- name: macOS x86_64 RELEASE Archive
id: macOS-x86_64-RELEASE-Archive
uses: actions/upload-artifact@v2
with:
name: futurerestore-macOS-x86_64-RELEASE
path: |
/Users/runner/work/futurerestore/futurerestore/.github/workflows/futurerestore-macOS-x86_64-*-RELEASE.tar.xz
/Users/runner/work/futurerestore/futurerestore/futurerestore-macOS-x86_64-*-RELEASE.tar.xz
- name: macOS x86_64 DEBUG Archive
id: macOS-x86_64-DEBUG-Archive
uses: actions/upload-artifact@v2
with:
name: futurerestore-macOS-x86_64-DEBUG
path: |
/Users/runner/work/futurerestore/futurerestore/.github/workflows/futurerestore-macOS-x86_64-*-DEBUG.tar.xz
/Users/runner/work/futurerestore/futurerestore/futurerestore-macOS-x86_64-*-DEBUG.tar.xz
- name: macOS arm64 RELEASE Archive
id: macOS-arm64-RELEASE-Archive
uses: actions/upload-artifact@v2
with:
name: futurerestore-macOS-arm64-RELEASE
path: |
/Users/runner/work/futurerestore/futurerestore/.github/workflows/futurerestore-macOS-arm64-*-RELEASE.tar.xz
/Users/runner/work/futurerestore/futurerestore/futurerestore-macOS-arm64-*-RELEASE.tar.xz
- name: macOS arm64 DEBUG Archive
id: macOS-arm64-DEBUG-Archive
uses: actions/upload-artifact@v2
with:
name: futurerestore-macOS-arm64-DEBUG
path: |
/Users/runner/work/futurerestore/futurerestore/.github/workflows/futurerestore-macOS-arm64-*-DEBUG.tar.xz
/Users/runner/work/futurerestore/futurerestore/futurerestore-macOS-arm64-*-DEBUG.tar.xz
Linux:
runs-on: ubuntu-latest
steps:
@ -71,13 +66,9 @@ jobs:
image: debian:buster-slim
options: -v ${{ github.workspace }}/..:/tmp/Builder/repos/
run: |
cd /tmp/Builder/repos/futurerestore/.github/workflows/
./linux-bootstrap.sh
./Builder Linux cctools
./Builder Linux x86_64 Release &
./Builder Linux x86_64 Debug &
wait
./linux-post.sh
/tmp/Builder/repos/futurerestore/.github/workflows/linux-bootstrap.sh
/tmp/Builder/repos/futurerestore/.github/workflows/linux-build.sh
/tmp/Builder/repos/futurerestore/.github/workflows/linux-post.sh
- name: Linux x86_64 RELEASE Build
run: |
mkdir -p /home/runner/work/futurerestore/futurerestore/.github/workflows/

File diff suppressed because it is too large Load diff

View file

@ -2,7 +2,9 @@
set -e
export TMPDIR=/tmp
export BASE=${TMPDIR}/Builder/repos/futurerestore/.github/workflows
export WORKFLOW_ROOT=${TMPDIR}/Builder/repos/futurerestore/.github/workflows
export DEP_ROOT=${TMPDIR}/Builder/repos/futurerestore/dep_root
export BASE=${TMPDIR}/Builder/repos/futurerestore/
#sed -i 's/deb\.debian\.org/ftp.de.debian.org/g' /etc/apt/sources.list
apt-get -qq update
@ -12,20 +14,24 @@ cp -RpP /usr/bin/ld /
rm -rf /usr/bin/ld /usr/lib/x86_64-linux-gnu/lib{usb-1.0,png*,readline}.so*
cd ${TMPDIR}/Builder/repos/futurerestore
git submodule update --init --recursive
cd ${BASE}
cd ${WORKFLOW_ROOT}
curl -sO https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
./llvm.sh 13 all
ln -sf /usr/bin/ld.lld-13 /usr/bin/ld
curl -sO https://cdn.cryptiiiic.com/bootstrap/Builder_Linux.tar.zst &
#curl -sO https://cdn.cryptiiiic.com/bootstrap/Builder_Linux.tar.zst &
curl -sO https://cdn.cryptiiiic.com/bootstrap/linux_fix.tar.zst &
curl -sO https://cdn.cryptiiiic.com/deps/static/Linux/x86_64/Linux_x86_64_Release_Latest.tar.zst &
curl -sO https://cdn.cryptiiiic.com/deps/static/Linux/x86_64/Linux_x86_64_Debug_Latest.tar.zst &
curl -sLO https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-x86_64.tar.gz &
wait
tar xf Linux_x86_64_Release_Latest.tar.zst -C ${TMPDIR}/Builder &
tar xf Linux_x86_64_Debug_Latest.tar.zst -C ${TMPDIR}/Builder &
mkdir -p ${DEP_ROOT}/Linux_x86_64_{Release,Debug}
tar xf Linux_x86_64_Release_Latest.tar.zst -C ${DEP_ROOT}/Linux_x86_64_Release &
tar xf Linux_x86_64_Debug_Latest.tar.zst -C ${DEP_ROOT}/Linux_x86_64_Debug &
tar xf linux_fix.tar.zst -C ${TMPDIR}/Builder &
tar xf Builder_Linux.tar.zst &
tar xf cmake-3.23.2-linux-x86_64.tar.gz
cp -RpP cmake-3.23.2-linux-x86_64/* /usr/local/ || true
#tar xf Builder_Linux.tar.zst &
wait
rm -rf "*.zst"
cd ${BASE}
cd ${WORKFLOW_ROOT}

18
.github/workflows/linux-build.sh vendored Executable file
View file

@ -0,0 +1,18 @@
#!/usr/bin/env bash
set -e
export TMPDIR=/tmp
export WORKFLOW_ROOT=${TMPDIR}/Builder/repos/futurerestore/.github/workflows
export DEP_ROOT=${TMPDIR}/Builder/repos/futurerestore/dep_root
export BASE=${TMPDIR}/Builder/repos/futurerestore/
cd ${BASE}
ln -sf ${DEP_ROOT}/Linux_x86_64_Release/{lib/,include/} ${DEP_ROOT}/
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-release-x86_64 -DARCH=x86_64 -DCMAKE_C_COMPILER=clang-13 -DCMAKE_CXX_COMPILER=clang++-13 -DCMAKE_LINKER=ld.lld-13
make -j4 -l4 -C cmake-build-release-x86_64
cd ${BASE}
ln -sf ${DEP_ROOT}/Linux_x86_64_Debug/{lib/,include/} ${DEP_ROOT}/
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-debug-x86_64 -DARCH=x86_64 -DCMAKE_C_COMPILER=clang-13 -DCMAKE_CXX_COMPILER=clang++-13 -DCMAKE_LINKER=ld.lld-13
make -j4 -l4 -C cmake-build-debug-x86_64
llvm-strip-13 -s cmake-build-release-x86_64/src/futurerestore

View file

@ -2,16 +2,18 @@
set -e
export TMPDIR=/tmp
export BASE=${TMPDIR}/Builder/repos/futurerestore/.github/workflows
export WORKFLOW_ROOT=${TMPDIR}/Builder/repos/futurerestore/.github/workflows
export DEP_ROOT=${TMPDIR}/Builder/repos/futurerestore/dep_root
export BASE=${TMPDIR}/Builder/repos/futurerestore/
cd ${BASE}/../../
cd ${BASE}
export FUTURERESTORE_VERSION=$(git rev-list --count HEAD | tr -d '\n')
export FUTURERESTORE_VERSION_RELEASE=$(cat version.txt | tr -d '\n')
cd ${BASE}
cd ${WORKFLOW_ROOT}
echo "futurerestore-Linux-x86_64-${FUTURERESTORE_VERSION_RELEASE}-Build_${FUTURERESTORE_VERSION}-RELEASE.tar.xz" > name1.txt
echo "futurerestore-Linux-x86_64-${FUTURERESTORE_VERSION_RELEASE}-Build_${FUTURERESTORE_VERSION}-DEBUG.tar.xz" > name2.txt
cp -RpP "${TMPDIR}/Builder/linux_fix.sh" linux_fix.sh
cp -RpP "${TMPDIR}/Builder/Linux_x86_64_Release/bin/futurerestore" futurerestore
cp -RpP "${BASE}/cmake-build-release-x86_64/src/futurerestore" futurerestore
tar cpPJvf "futurerestore1.tar.xz" futurerestore linux_fix.sh
cp -RpP "${TMPDIR}/Builder/Linux_x86_64_Debug/bin/futurerestore" futurerestore
cp -RpP "${BASE}/cmake-build-debug-x86_64/src/futurerestore" futurerestore
tar cpPJvf "futurerestore2.tar.xz" futurerestore linux_fix.sh

View file

@ -1,33 +1,36 @@
#!/usr/bin/env zsh
set -e
export BASE=/Users/runner/work/futurerestore/futurerestore/.github/workflows
export WORKFLOW_ROOT=/Users/runner/work/futurerestore/futurerestore/.github/workflows
export DEP_ROOT=/Users/runner/work/futurerestore/futurerestore/dep_root
export BASE=/Users/runner/work/futurerestore/futurerestore/
cd ${BASE}
cd ${WORKFLOW_ROOT}
curl -sO https://cdn.cryptiiiic.com/bootstrap/bootstrap_x86_64.tar.zst &
curl -sO https://cdn.cryptiiiic.com/bootstrap/Builder_macOS.tar.zst &
curl -sO https://cdn.cryptiiiic.com/deps/static/macOS/x86_64/macOS_x86_64_1300_Release_Latest.tar.zst &
curl -sO https://cdn.cryptiiiic.com/deps/static/macOS/arm64/macOS_arm64_1700_Release_Latest.tar.zst &
curl -sO https://cdn.cryptiiiic.com/deps/static/macOS/x86_64/macOS_x86_64_1300_Debug_Latest.tar.zst &
curl -sO https://cdn.cryptiiiic.com/deps/static/macOS/arm64/macOS_arm64_1700_Debug_Latest.tar.zst &
# curl -sO https://cdn.cryptiiiic.com/bootstrap/Builder_macOS.tar.zst &
curl -sO https://cdn.cryptiiiic.com/deps/static/macOS/x86_64/macOS_x86_64_Release_Latest.tar.zst &
curl -sO https://cdn.cryptiiiic.com/deps/static/macOS/arm64/macOS_arm64_Release_Latest.tar.zst &
curl -sO https://cdn.cryptiiiic.com/deps/static/macOS/x86_64/macOS_x86_64_Debug_Latest.tar.zst &
curl -sO https://cdn.cryptiiiic.com/deps/static/macOS/arm64/macOS_arm64_Debug_Latest.tar.zst &
wait
sudo gtar xf ${BASE}/bootstrap_x86_64.tar.zst -C / --warning=none || true || true &
sudo gtar xf ${WORKFLOW_ROOT}/bootstrap_x86_64.tar.zst -C / --warning=none || true || true &
echo "${PROCURSUS}/bin" | sudo tee /etc/paths1
echo "${PROCURSUS}/libexec/gnubin" | sudo tee /etc/paths1
cat /etc/paths | sudo tee -a /etc/paths1
sudo mv /etc/paths{1,}
wait
mkdir -p ${TMPDIR}/Builder/repos
gtar xf macOS_x86_64_1300_Release_Latest.tar.zst -C ${TMPDIR}/Builder &
gtar xf macOS_x86_64_1300_Debug_Latest.tar.zst -C ${TMPDIR}/Builder &
gtar xf macOS_arm64_1700_Release_Latest.tar.zst -C ${TMPDIR}/Builder &
gtar xf macOS_arm64_1700_Debug_Latest.tar.zst -C ${TMPDIR}/Builder &
mkdir -p ${DEP_ROOT}/macOS_x86_64_Release ${DEP_ROOT}/macOS_x86_64_Debug ${DEP_ROOT}/macOS_arm64_Release ${DEP_ROOT}/macOS_arm64_Debug
gtar xf macOS_x86_64_Release_Latest.tar.zst -C ${DEP_ROOT}/macOS_x86_64_Release &
gtar xf macOS_x86_64_Debug_Latest.tar.zst -C ${DEP_ROOT}/macOS_x86_64_Debug &
gtar xf macOS_arm64_Release_Latest.tar.zst -C ${DEP_ROOT}/macOS_arm64_Release &
gtar xf macOS_arm64_Debug_Latest.tar.zst -C ${DEP_ROOT}/macOS_arm64_Debug &
wait
gtar xf ${BASE}/Builder_macOS.tar.zst &
# gtar xf ${BASE}/Builder_macOS.tar.zst &
sudo ${PROCURSUS}/bin/apt-get update -qq
sudo ${PROCURSUS}/bin/apt-get dist-upgrade -yqq
sudo ${PROCURSUS}/bin/apt-get install llvm-utils -yqq
sudo mv /usr/local/bin{,1}
ln -sf ${BASE}/../../ ${TMPDIR}/Builder/repos/futurerestore
cd ${TMPDIR}/Builder/repos/futurerestore
cd ${BASE}
git submodule update --init --recursive
cd ${BASE}/external/tsschecker
git submodule update --init --recursive
cd ${TMPDIR}/Builder/repos/futurerestore/.github/workflows

25
.github/workflows/mac-build.sh vendored Executable file
View file

@ -0,0 +1,25 @@
#!/usr/bin/env zsh
set -e
export WORKFLOW_ROOT=/Users/runner/work/futurerestore/futurerestore/.github/workflows
export DEP_ROOT=/Users/runner/work/futurerestore/futurerestore/dep_root
export BASE=/Users/runner/work/futurerestore/futurerestore/
cd /Users/runner/work/futurerestore/futurerestore/
ln -sf ${DEP_ROOT}/macOS_x86_64_Release/{lib/,include/} ${DEP_ROOT}/
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-release-x86_64 -DARCH=x86_64
make -j4 -l4 -C cmake-build-release-x86_64
ln -sf ${DEP_ROOT}/macOS_x86_64_Debug/{lib/,include/} ${DEP_ROOT}/
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-debug-x86_64 -DARCH=x86_64
make -j4 -l4 -C cmake-build-debug-x86_64
ln -sf ${DEP_ROOT}/macOS_arm64_Release/{lib/,include/} ${DEP_ROOT}/
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-release-arm64 -DARCH=arm64
make -j4 -l4 -C cmake-build-release-arm64
ln -sf ${DEP_ROOT}/macOS_arm64_Debug/{lib/,include/} ${DEP_ROOT}/
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-debug-arm64 -DARCH=arm64
make -j4 -l4 -C cmake-build-debug-arm64
llvm-strip -s cmake-build-release-x86_64/src/futurerestore
llvm-strip -s cmake-build-release-arm64/src/futurerestore

View file

@ -1,17 +1,14 @@
#!/usr/bin/env zsh
set -e
export BASE=${TMPDIR}/Builder/repos/futurerestore/.github/workflows
export WORKFLOW_ROOT=/Users/runner/work/futurerestore/futurerestore/.github/workflows
export DEP_ROOT=/Users/runner/work/futurerestore/futurerestore/dep_root
export BASE=/Users/runner/work/futurerestore/futurerestore/
cd ${BASE}/../../
cd ${BASE}
export FUTURERESTORE_VERSION=$(git rev-list --count HEAD | tr -d '\n')
export FUTURERESTORE_VERSION_RELEASE=$(cat version.txt | tr -d '\n')
cd ${BASE}
cp -RpP "${TMPDIR}/Builder/macOS_x86_64_1300_Release/bin/futurerestore" futurerestore
tar cpPJf "futurerestore-macOS-x86_64-${FUTURERESTORE_VERSION_RELEASE}-Build_${FUTURERESTORE_VERSION}-RELEASE.tar.xz" futurerestore
cp -RpP "${TMPDIR}/Builder/macOS_x86_64_1300_Debug/bin/futurerestore" futurerestore
tar cpPJf "futurerestore-macOS-x86_64-${FUTURERESTORE_VERSION_RELEASE}-Build_${FUTURERESTORE_VERSION}-DEBUG.tar.xz" futurerestore
cp -RpP "${TMPDIR}/Builder/macOS_arm64_1700_Release/bin/futurerestore" futurerestore
tar cpPJf "futurerestore-macOS-arm64-${FUTURERESTORE_VERSION_RELEASE}-Build_${FUTURERESTORE_VERSION}-RELEASE.tar.xz" futurerestore
cp -RpP "${TMPDIR}/Builder/macOS_arm64_1700_Debug/bin/futurerestore" futurerestore
tar cpPJf "futurerestore-macOS-arm64-${FUTURERESTORE_VERSION_RELEASE}-Build_${FUTURERESTORE_VERSION}-DEBUG.tar.xz" futurerestore
tar cpPJf "futurerestore-macOS-x86_64-${FUTURERESTORE_VERSION_RELEASE}-Build_${FUTURERESTORE_VERSION}-RELEASE.tar.xz" -C cmake-build-release-x86_64/src futurerestore
tar cpPJf "futurerestore-macOS-x86_64-${FUTURERESTORE_VERSION_RELEASE}-Build_${FUTURERESTORE_VERSION}-DEBUG.tar.xz" -C cmake-build-debug-x86_64/src futurerestore
tar cpPJf "futurerestore-macOS-arm64-${FUTURERESTORE_VERSION_RELEASE}-Build_${FUTURERESTORE_VERSION}-RELEASE.tar.xz" -C cmake-build-release-arm64/src futurerestore
tar cpPJf "futurerestore-macOS-arm64-${FUTURERESTORE_VERSION_RELEASE}-Build_${FUTURERESTORE_VERSION}-DEBUG.tar.xz" -C cmake-build-debug-arm64/src futurerestore

52
.gitignore vendored
View file

@ -1,29 +1,65 @@
!dep_root/include
!dep_root/include/.keep
!dep_root/lib
!dep_root/lib/.keep
*.DS_Store
.vscode
*.[oa]
*.a
*.o
*.diff
*.in
*.la
*.lo
*.o
*.patch
*.po
*.so
*/.libs
*.swp
*/.deps
*/.deps/*
*/.libs
*/all.h*
*/futurerestore*
*/tsschecker*
*Makefile
*Makefile.in
*~
.DS_Store
.build_complete
.idea
.vscode
CMakeCache.txt
CMakeFiles
aclocal.m4
autom4te.cache
autom4te.cache/*
build
cmake-build-debug
cmake-build-release
cmake_install.cmake
compile
!.github/workflows/config.guess
config.*
config.guess
config.h
config.log
config.status
config.sub
configure
configure~
dep_root/*
dep_root/include/*
dep_root/lib/*
depcomp
install-sh
libtool
ltmain.sh
m4
m4/*
main
missing
*/futurerestore*
mkinstalldirs
py-compile
src/.libs
src/idevicerestore
stamp-h1
swig/*
xcuserdata
.build_complete
.idea
configure~

4
.gitmodules vendored
View file

@ -1,8 +1,8 @@
[submodule "external/idevicerestore"]
[submodule "idevicerestore"]
path = external/idevicerestore
url = https://github.com/futurerestore/idevicerestore.git
branch = main
[submodule "external/tsschecker"]
[submodule "tsschecker"]
path = external/tsschecker
url = https://github.com/1Conan/tsschecker.git
branch = master

41
CMakeLists.txt Normal file
View file

@ -0,0 +1,41 @@
cmake_minimum_required(VERSION 3.22)
set(SUBPROJECT_BUILD 1)
if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin")
if(NOT DEFINED NO_XCODE AND NOT DEFINED ENV{NO_XCODE})
execute_process(COMMAND xcrun --find clang WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE CC OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND xcrun --find clang++ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE CXX OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND xcrun --find ar WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE AR OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND xcrun --find ld WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE LD OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND xcrun --show-sdk-path WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE SYSROOT OUTPUT_STRIP_TRAILING_WHITESPACE)
set(CMAKE_C_COMPILER "${CC}")
set(CMAKE_CXX_COMPILER "${CXX}")
endif()
if(NOT DEFINED ARCH)
set(ARCH "$ENV{ARCH}")
if(ARCH STREQUAL "")
set(ARCH "${CMAKE_SYSTEM_PROCESSOR}")
endif()
endif()
if("${ARCH}" STREQUAL "x86_64" OR "$ENV{ARCH}" STREQUAL "x86_64")
set(MINVER -mmacosx-version-min=10.12)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12)
else()
set(MINVER -mmacosx-version-min=11.0)
set(CMAKE_OSX_DEPLOYMENT_TARGET 11.0)
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch ${ARCH} -isysroot ${SYSROOT} ${MINVER} -fembed-bitcode=off -flto=thin -pthread")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch ${ARCH} -isysroot ${SYSROOT} ${MINVER} -fembed-bitcode=off -flto=thin -pthread")
elseif(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,--allow-multiple-definition -pthread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--allow-multiple-definition -pthread")
endif()
set(CMAKE_C_FLAGS_RELEASE "-Os -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-Os -DNDEBUG")
set(CMAKE_C_FLAGS_DEBUG "-g -O0 -DDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -DDEBUG")
set(CMAKE_C_STANDARD 17)
set(CMAKE_CXX_STANDARD 20)
project(futurerestore)
add_subdirectory(external/tsschecker)
add_subdirectory(external/idevicerestore)
add_subdirectory(src)

62
COMPILING.md Normal file
View file

@ -0,0 +1,62 @@
# Compiling Futurerestore
# Required/Optional Dependencies
* ## External libs
Make sure these are installed
* [curl](https://github.com/curl/curl) (Linux/Windows only, macOS already has curl preinstalled);
* [openssl 3.0.3](https://github.com/openssl/openssl) (or CommonCrypto on macOS);
* [libusb 1.0.25](https://github.com/libusb/libusb) (Linux/Windows only, macOS can use IOKit for libirecovery);
* [libzip](https://github.com/nih-at/libzip);
* [libplist](https://github.com/libimobiledevice/libplist);
* [libusbmuxd](https://github.com/libimobiledevice/libusbmuxd);
* [libirecovery](https://github.com/libimobiledevice/libirecovery);
* [libimobiledevice](https://github.com/libimobiledevice/libimobiledevice);
* [libimobiledevice-glue](https://github.com/libimobiledevice/libimobiledevice-glue);
* [libpng16](https://github.com/glennrp/libpng);
* [xpwn(fork)](https://github.com/nyuszika7h/xpwn);
* [libgeneral](https://github.com/tihmstar/libgeneral);
* [libfragmentzip](https://github.com/tihmstar/libfragmentzip);
* [libinsn](https://github.com/tihmstar/libinsn);
* [lzfse](https://github.com/lzfse/lzfse) (Linux/Windows only, macOS has built in libcompression);
* [img4tool](https://github.com/tihmstar/img4tool);
* [liboffsetfinder64(fork))](https://github.com/Cryptiiiic/liboffsetfinder64);
* [libipatcher(fork)](https://github.com/Cryptiiiic/libipatcher)
* ## Submodules
Make sure these projects compile on your system (install it's dependencies):
* [tsschecker(fork)](https://github.com/1Conan/tsschecker);
* * [jssy](https://github.com/tihmstar/jssy) (This is a submodule of tsschecker);
* [idevicerestore(fork)](https://github.com/futurerestore/idevicerestore)
If you are cloning this repository you may run:
```git clone https://github.com/futurerestore/futurerestore --recursive```
which will clone these submodules for you.
# Building from source
* ## dep_root
After obtaining all the required/optional dependencies you can either install them to your
system for building dynamically or place the static libs in `dep_root/lib` and headers in
`dep_root/include` for building statically
* ## build.sh
Executing build.sh will configure and building in debug mode by default and an arch must be provided.
* Example: `./build.sh -DARCH=x86_64` or `ARCH=x86_64 ./build.sh`
If you want to build in release mode pass in the RELEASE=1 environment variable.
* Example: `RELEASE=1 ./build.sh -DARCH=x86_64` or `RELEASE=0 ./build.sh -DARCH=x86_64`
If you want to overwrite the compiler on mac you can provide `NO_XCODE` flag.
* Example: `CC=gcc CXX=g++ ./build.sh -DARCH=x86_64 -DNO_XCODE`
* or `NO_XCODE=1 CC=gcc CXX=g++ ./build.sh -DARCH=x86_64`
If you want to disable cmake reconfigure for each build, you can provide the `NO_CLEAN` flag.
* Example: `NO_CLEAN=1 ./build.sh -DARCH=x86_64`
* By default it will remove cmake and cache and reconfigure for each subsequent build.
The compiled binary will be located at:
* `cmake-build-release/src/futurerestore` for release build
* `cmake-build-debug/src/futurerestore` for debug builds

View file

@ -1,4 +0,0 @@
AUTOMAKE_OPTIONS = foreign
ACLOCAL_AMFLAGS = -I m4
SUBDIRS = external/idevicerestore external/tsschecker futurerestore
install installdirs: SUBDIRS = futurerestore

View file

@ -23,41 +23,11 @@ FutureRestore is a modified idevicerestore wrapper, which allows manually specif
* Odysseus for 32-bit & 64-bit (A7-A11) devices
* Re-restoring 32-bit devices to iOS 9.x with [alitek123](https://github.com/alitek12)'s no-ApNonce method (alternative — [idevicererestore](https://downgrade.party)).
# Dependencies
* ## External libs
Make sure these are installed
* [curl](https://github.com/curl/curl) (Linux/Windows only, macOS already has curl preinstalled);
* [openssl 1.1.1](https://github.com/openssl/openssl) (or CommonCrypto on macOS);
* [libusb 1.0.24](https://github.com/libusb/libusb) (Linux/Windows only, macOS can use IOKit for libirecovery);
* [libzip](https://github.com/nih-at/libzip);
* [libplist](https://github.com/libimobiledevice/libplist);
* [libusbmuxd](https://github.com/libimobiledevice/libusbmuxd);
* [libirecovery](https://github.com/libimobiledevice/libirecovery);
* [libimobiledevice](https://github.com/libimobiledevice/libimobiledevice);
* [libpng16](https://github.com/glennrp/libpng);
* [xpwn(fork)](https://github.com/nyuszika7h/xpwn);
* [libgeneral](https://github.com/tihmstar/libgeneral);
* [libfragmentzip](https://github.com/tihmstar/libfragmentzip);
* [libinsn](https://github.com/tihmstar/libinsn);
* [lzfse](https://github.com/lzfse/lzfse);
* [img4tool](https://github.com/tihmstar/img4tool);
* [liboffsetfinder64(fork))](https://github.com/Cryptiiiic/liboffsetfinder64);
* [libipatcher(fork)](https://github.com/Cryptiiiic/libipatcher)
* ## Submodules
Make sure these projects compile on your system (install it's dependencies):
* [jssy](https://github.com/tihmstar/jssy);
* [tsschecker(fork)](https://github.com/1Conan/tsschecker);
* [idevicerestore(fork)](https://github.com/futurerestore/idevicerestore)
If you are cloning this repository you may run:
```git clone https://github.com/futurerestore/futurerestore --recursive```
which will clone these submodules for you.
# Compiling
See [COMPILING](COMPILING.md)
# Futurerestore Usage
Usage: `futurerestore [OPTIONS] iPSW`
| option (short) | option (long) | description |

View file

@ -1,27 +0,0 @@
#!/bin/bash
gprefix=`which glibtoolize 2>&1 >/dev/null`
if [ $? -eq 0 ]; then
glibtoolize --force
else
libtoolize --force
fi
aclocal -I m4
autoconf
autoheader
automake --add-missing
autoreconf -i
export NOCONFIGURE=1
SUBDIRS="external/idevicerestore external/tsschecker"
for SUB in $SUBDIRS; do
pushd $SUB
./autogen.sh
popd
done
unset NOCONFIGURE
if [ -z "$NOCONFIGURE" ]; then
./configure "$@"
fi

13
build.sh Executable file
View file

@ -0,0 +1,13 @@
#!/bin/bash
if [[ -z "$NO_CLEAN" ]]; then rm -rf cmake-build-release cmake-build-debug; fi
if [[ "$RELEASE" == "1" ]]
then
if [[ ! "$NO_CLEAN" == "1" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-release $@; fi
make -C cmake-build-release clean
make -C cmake-build-release
llvm-strip -s cmake-build-release/src/futurerestore
else
if [[ ! "$NO_CLEAN" == "1" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-debug $@ ; fi
make -C cmake-build-debug clean
make -C cmake-build-debug
fi

View file

@ -1,103 +0,0 @@
AC_PREREQ([2.69])
AC_INIT([futurerestore], m4_esyscmd([git rev-list --count HEAD | tr -d '\n']), [tihmstar@gmail.com])
AC_CANONICAL_SYSTEM
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([subdir-objects])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIRS([m4])
# Versioning.
AC_DEFINE([VERSION_COMMIT_COUNT], "m4_esyscmd([git rev-list --count HEAD | tr -d '\n'])", [Git commit count])
AC_DEFINE([VERSION_COMMIT_SHA], "m4_esyscmd([git rev-parse HEAD | tr -d '\n'])", [Git commit sha])
AC_DEFINE([VERSION_RELEASE], "m4_esyscmd([cat version.txt | tr -d '\n'])", [Futurerestore release version])
AC_SUBST([VERSION_COMMIT_COUNT], ["m4_esyscmd([git rev-list --count HEAD | tr -d '\n'])"])
AC_SUBST([VERSION_COMMIT_SHA], ["m4_esyscmd([git rev-parse HEAD | tr -d '\n'])"])
AC_SUBST([VERSION_RELEASE], ["m4_esyscmd([cat version.txt | tr -d '\n'])"])
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
# Check for operating system.
AC_MSG_CHECKING([whether we need platform-specific build settings])
case $host_os in
darwin* )
CXXFLAGS+=" -stdlib=libc++"
;;
esac
# Checks the flags.
CFLAGS+=" -DIDEVICERESTORE_NOMAIN=1 -DTSSCHECKER_NOMAIN=1"
CXXFLAGS+=" -std=gnu++11"
CFLAGS+=" -std=gnu11"
AC_DEFUN([AX_UNPRECIOUS], [
m4_define([_AC_PRECIOUS_VARS], m4_bpatsubst(_AC_PRECIOUS_VARS, [$1], []))
])
AX_UNPRECIOUS([CFLAGS])
export CFLAGS
AC_CONFIG_SUBDIRS(external/idevicerestore external/tsschecker)
AC_CONFIG_SRCDIR([futurerestore])
# Checks the libraries.
LIBIPATCHER_REQUIRES_STR="libipatcher >= 61"
LIBPLIST_REQUIRES_STR="libplist-2.0 >= 2.2.0"
LIBZIP_REQUIRES_STR="libzip >= 0.10"
LIBIMOBILEDEVICE_REQUIRES_STR="libimobiledevice-1.0 >= 1.2.1"
LIBFRAGMENTZIP_REQUIRES_STR="libfragmentzip >= 47"
LIBIRECOVERY_REQUIRES_STR="libirecovery-1.0 >= 1.0.0"
IMG4TOOL_REQUIRES_STR="libimg4tool >= 162"
LIBGENERAL_REQUIRES_STR="libgeneral >= 26"
PKG_CHECK_MODULES(libplist, $LIBPLIST_REQUIRES_STR)
PKG_CHECK_MODULES(libzip, $LIBZIP_REQUIRES_STR)
PKG_CHECK_MODULES(libimobiledevice, $LIBIMOBILEDEVICE_REQUIRES_STR)
PKG_CHECK_MODULES(libfragmentzip, $LIBFRAGMENTZIP_REQUIRES_STR)
PKG_CHECK_MODULES(libirecovery, $LIBIRECOVERY_REQUIRES_STR)
PKG_CHECK_MODULES(libimg4tool, $IMG4TOOL_REQUIRES_STR)
PKG_CHECK_MODULES(libgeneral, $LIBGENERAL_REQUIRES_STR)
# Optional module libipatcher
AC_ARG_WITH([libipatcher],
[AS_HELP_STRING([--without-libipatcher],
[build with bundle-less odysseus support (default is yes)])],
[build_libipatcher=false],
[build_libipatcher=true])
PKG_PROG_PKG_CONFIG
LIBIPATCHER_FLAGS=$($PKG_CONFIG --cflags libipatcher)
if [test -z "$LIBIPATCHER_FLAGS"]; then
do_libipatcher=no
else
AC_MSG_CHECKING([for futurerestore libipatcher])
if test "$build_libipatcher" = "true"; then
PKG_CHECK_MODULES(libipatcher, $LIBIPATCHER_REQUIRES_STR)
AC_DEFINE(HAVE_LIBIPATCHER, 1, [Define if you have libipatcher])
do_libipatcher=yes
else
do_libipatcher=no
fi
fi
AM_CONDITIONAL([HAVE_LIBIPATCHER],[test "x$do_libipatcher" = "xyes"])
AC_DEFINE(CUSTOM_LOGGING, <stdlib.h>, [required for futurerestore])
LT_INIT
AC_OUTPUT([
Makefile
futurerestore/Makefile
])
echo "
Configuration for $PACKAGE $VERSION:
-------------------------------------------
Install prefix ..........: $prefix
With libipatcher ........: $do_libipatcher
Now type 'make' to build $PACKAGE $VERSION,
and then 'make install' for installation.
"

0
dep_root/.keep Normal file
View file

@ -1 +1 @@
Subproject commit 44c13e418806e8cb5b666486bb0de6052e5cfb3d
Subproject commit 78e077ccd41b5ee8d6c35702805a01a954d62cfc

2
external/tsschecker vendored

@ -1 +1 @@
Subproject commit 38dc80af7f55cacc75b623bb8efe2fcbf26eaf96
Subproject commit ba70a6ad0c818b67028276c430ef221591692d2a

View file

@ -1,557 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 47;
objects = {
/* Begin PBXBuildFile section */
5669111D23B3D86E00C93279 /* libbz2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669111C23B3D86E00C93279 /* libbz2.a */; };
5669111F23B3D88200C93279 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669111E23B3D88200C93279 /* libcrypto.a */; };
5669112123B3D89B00C93279 /* libcurl.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669112023B3D89B00C93279 /* libcurl.tbd */; };
5669112323B3D89E00C93279 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669112223B3D89E00C93279 /* libz.tbd */; };
5669112523B3D8B200C93279 /* libfragmentzip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669112423B3D8B200C93279 /* libfragmentzip.a */; };
5669112723B3D8BE00C93279 /* libgeneral.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669112623B3D8BE00C93279 /* libgeneral.a */; };
5669112923B3D8CF00C93279 /* libimg4tool.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669112823B3D8CE00C93279 /* libimg4tool.a */; };
5669112B23B3D8DA00C93279 /* libimobiledevice.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669112A23B3D8DA00C93279 /* libimobiledevice.a */; };
5669112D23B3D8E200C93279 /* libipatcher.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669112C23B3D8E200C93279 /* libipatcher.a */; };
5669112F23B3D8ED00C93279 /* libirecovery.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669112E23B3D8ED00C93279 /* libirecovery.a */; };
5669113123B3D91B00C93279 /* libpartialzip-1.0.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669113023B3D91B00C93279 /* libpartialzip-1.0.a */; };
5669113323B3D92B00C93279 /* libplist.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669113223B3D92B00C93279 /* libplist.a */; };
5669113523B3D94300C93279 /* libzip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5669113423B3D94300C93279 /* libzip.a */; };
878587471D89CFDC008689F0 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 878587461D89CFDC008689F0 /* main.cpp */; };
8799B0B21D89D99D002F4D5F /* futurerestore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8799B0B01D89D99D002F4D5F /* futurerestore.cpp */; };
8799B0B31D89DAE7002F4D5F /* idevicerestore.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785875C1D89D1C1008689F0 /* idevicerestore.c */; };
8799B0B41D89DAF6002F4D5F /* tss.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587761D89D1C1008689F0 /* tss.c */; };
8799B0B51D89DAFF002F4D5F /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587511D89D1C1008689F0 /* common.c */; };
8799B0B61D89DAFF002F4D5F /* dfu.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587531D89D1C1008689F0 /* dfu.c */; };
8799B0B71D89DAFF002F4D5F /* normal.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785876C1D89D1C1008689F0 /* normal.c */; };
8799B0B81D89DAFF002F4D5F /* recovery.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785876E1D89D1C1008689F0 /* recovery.c */; };
8799B0B91D89DB0D002F4D5F /* img3.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785875E1D89D1C1008689F0 /* img3.c */; };
8799B0BB1D89DB12002F4D5F /* download.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587551D89D1C1008689F0 /* download.c */; settings = {COMPILER_FLAGS = "-DPACKAGE_VERSION=\"\""; }; };
8799B0BC1D89DB27002F4D5F /* ipsw.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587621D89D1C1008689F0 /* ipsw.c */; };
8799B0BD1D89DB27002F4D5F /* limera1n.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587641D89D1C1008689F0 /* limera1n.c */; };
8799B0BE1D89DB27002F4D5F /* restore.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587701D89D1C1008689F0 /* restore.c */; };
8799B0BF1D89DB38002F4D5F /* asr.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785874F1D89D1C1008689F0 /* asr.c */; };
8799B0C01D89DB38002F4D5F /* fdr.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587581D89D1C1008689F0 /* fdr.c */; };
8799B0C11D89DB38002F4D5F /* fls.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785875A1D89D1C1008689F0 /* fls.c */; };
8799B0C21D89DB46002F4D5F /* thread.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587741D89D1C1008689F0 /* thread.c */; };
8799B0C31D89DB4B002F4D5F /* socket.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587721D89D1C1008689F0 /* socket.c */; };
8799B0C41D89DB55002F4D5F /* mbn.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785876A1D89D1C1008689F0 /* mbn.c */; };
8799B0C51D89DB67002F4D5F /* locking.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587671D89D1C1008689F0 /* locking.c */; };
8799B0CA1D89E371002F4D5F /* img4.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587601D89D1C1008689F0 /* img4.c */; };
8799B0CB1D89F796002F4D5F /* tsschecker.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785879F1D89D2BA008689F0 /* tsschecker.c */; };
8799B0CC1D89F7B9002F4D5F /* download.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587981D89D2BA008689F0 /* download.c */; };
87B517C3236EF36B009EAB8F /* ftab.c in Sources */ = {isa = PBXBuildFile; fileRef = 87B517C1236EF36B009EAB8F /* ftab.c */; };
87B517C6236EF3B0009EAB8F /* json_plist.c in Sources */ = {isa = PBXBuildFile; fileRef = 87B517C5236EF3B0009EAB8F /* json_plist.c */; };
87B517C9236EF3CD009EAB8F /* jsmn.c in Sources */ = {isa = PBXBuildFile; fileRef = 87B517C7236EF3CD009EAB8F /* jsmn.c */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
8762F346236DF4D900F42FDB /* Embed Libraries */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
);
name = "Embed Libraries";
runOnlyForDeploymentPostprocessing = 0;
};
878587411D89CFDC008689F0 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
5669111C23B3D86E00C93279 /* libbz2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libbz2.a; path = ../../../../../usr/local/lib/libbz2.a; sourceTree = "<group>"; };
5669111E23B3D88200C93279 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = ../../../../../usr/local/lib/libcrypto.a; sourceTree = "<group>"; };
5669112023B3D89B00C93279 /* libcurl.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libcurl.tbd; path = usr/lib/libcurl.tbd; sourceTree = SDKROOT; };
5669112223B3D89E00C93279 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
5669112423B3D8B200C93279 /* libfragmentzip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfragmentzip.a; path = ../../../../../usr/local/lib/libfragmentzip.a; sourceTree = "<group>"; };
5669112623B3D8BE00C93279 /* libgeneral.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgeneral.a; path = ../../../../../usr/local/lib/libgeneral.a; sourceTree = "<group>"; };
5669112823B3D8CE00C93279 /* libimg4tool.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libimg4tool.a; path = ../../../../../usr/local/lib/libimg4tool.a; sourceTree = "<group>"; };
5669112A23B3D8DA00C93279 /* libimobiledevice.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libimobiledevice.a; path = ../../../../../usr/local/lib/libimobiledevice.a; sourceTree = "<group>"; };
5669112C23B3D8E200C93279 /* libipatcher.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libipatcher.a; path = ../../../../../usr/local/lib/libipatcher.a; sourceTree = "<group>"; };
5669112E23B3D8ED00C93279 /* libirecovery.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libirecovery.a; path = ../../../../../usr/local/lib/libirecovery.a; sourceTree = "<group>"; };
5669113023B3D91B00C93279 /* libpartialzip-1.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libpartialzip-1.0.a"; path = "../../../../../usr/local/lib/libpartialzip-1.0.a"; sourceTree = "<group>"; };
5669113223B3D92B00C93279 /* libplist.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libplist.a; path = ../../../../../usr/local/lib/libplist.a; sourceTree = "<group>"; };
5669113423B3D94300C93279 /* libzip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzip.a; path = ../../../../../usr/local/lib/libzip.a; sourceTree = "<group>"; };
878587431D89CFDC008689F0 /* futurerestore */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = futurerestore; sourceTree = BUILT_PRODUCTS_DIR; };
878587461D89CFDC008689F0 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
8785874F1D89D1C1008689F0 /* asr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = asr.c; sourceTree = "<group>"; };
878587501D89D1C1008689F0 /* asr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asr.h; sourceTree = "<group>"; };
878587511D89D1C1008689F0 /* common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = common.c; sourceTree = "<group>"; };
878587521D89D1C1008689F0 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = "<group>"; };
878587531D89D1C1008689F0 /* dfu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dfu.c; sourceTree = "<group>"; };
878587541D89D1C1008689F0 /* dfu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dfu.h; sourceTree = "<group>"; };
878587551D89D1C1008689F0 /* download.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = download.c; sourceTree = "<group>"; };
878587561D89D1C1008689F0 /* download.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = download.h; sourceTree = "<group>"; };
878587571D89D1C1008689F0 /* endianness.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endianness.h; sourceTree = "<group>"; };
878587581D89D1C1008689F0 /* fdr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fdr.c; sourceTree = "<group>"; };
878587591D89D1C1008689F0 /* fdr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fdr.h; sourceTree = "<group>"; };
8785875A1D89D1C1008689F0 /* fls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fls.c; sourceTree = "<group>"; };
8785875B1D89D1C1008689F0 /* fls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fls.h; sourceTree = "<group>"; };
8785875C1D89D1C1008689F0 /* idevicerestore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = idevicerestore.c; sourceTree = "<group>"; };
8785875D1D89D1C1008689F0 /* idevicerestore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = idevicerestore.h; sourceTree = "<group>"; };
8785875E1D89D1C1008689F0 /* img3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = img3.c; sourceTree = "<group>"; };
8785875F1D89D1C1008689F0 /* img3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = img3.h; sourceTree = "<group>"; };
878587601D89D1C1008689F0 /* img4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = img4.c; sourceTree = "<group>"; };
878587611D89D1C1008689F0 /* img4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = img4.h; sourceTree = "<group>"; };
878587621D89D1C1008689F0 /* ipsw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ipsw.c; sourceTree = "<group>"; };
878587631D89D1C1008689F0 /* ipsw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ipsw.h; sourceTree = "<group>"; };
878587641D89D1C1008689F0 /* limera1n.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = limera1n.c; sourceTree = "<group>"; };
878587651D89D1C1008689F0 /* limera1n.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = limera1n.h; sourceTree = "<group>"; };
878587661D89D1C1008689F0 /* limera1n_payload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = limera1n_payload.h; sourceTree = "<group>"; };
878587671D89D1C1008689F0 /* locking.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = locking.c; sourceTree = "<group>"; };
878587681D89D1C1008689F0 /* locking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = locking.h; sourceTree = "<group>"; };
8785876A1D89D1C1008689F0 /* mbn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mbn.c; sourceTree = "<group>"; };
8785876B1D89D1C1008689F0 /* mbn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mbn.h; sourceTree = "<group>"; };
8785876C1D89D1C1008689F0 /* normal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = normal.c; sourceTree = "<group>"; };
8785876D1D89D1C1008689F0 /* normal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = normal.h; sourceTree = "<group>"; };
8785876E1D89D1C1008689F0 /* recovery.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = recovery.c; sourceTree = "<group>"; };
8785876F1D89D1C1008689F0 /* recovery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = recovery.h; sourceTree = "<group>"; };
878587701D89D1C1008689F0 /* restore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = restore.c; sourceTree = "<group>"; };
878587711D89D1C1008689F0 /* restore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = restore.h; sourceTree = "<group>"; };
878587721D89D1C1008689F0 /* socket.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = socket.c; sourceTree = "<group>"; };
878587731D89D1C1008689F0 /* socket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = socket.h; sourceTree = "<group>"; };
878587741D89D1C1008689F0 /* thread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = thread.c; sourceTree = "<group>"; };
878587751D89D1C1008689F0 /* thread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = thread.h; sourceTree = "<group>"; };
878587761D89D1C1008689F0 /* tss.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tss.c; sourceTree = "<group>"; };
878587771D89D1C1008689F0 /* tss.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tss.h; sourceTree = "<group>"; };
878587981D89D2BA008689F0 /* download.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = download.c; sourceTree = "<group>"; };
878587991D89D2BA008689F0 /* download.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = download.h; sourceTree = "<group>"; };
8785879A1D89D2BA008689F0 /* jssy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jssy.c; path = ../external/jssy/jssy/jssy.c; sourceTree = "<group>"; };
8785879B1D89D2BA008689F0 /* jssy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jssy.h; path = ../external/jssy/jssy/jssy.h; sourceTree = "<group>"; };
8785879F1D89D2BA008689F0 /* tsschecker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tsschecker.c; sourceTree = "<group>"; };
878587A01D89D2BA008689F0 /* tsschecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tsschecker.h; sourceTree = "<group>"; };
8799B0B01D89D99D002F4D5F /* futurerestore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = futurerestore.cpp; sourceTree = "<group>"; };
8799B0B11D89D99D002F4D5F /* futurerestore.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = futurerestore.hpp; sourceTree = "<group>"; };
87B517C1236EF36B009EAB8F /* ftab.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ftab.c; sourceTree = "<group>"; };
87B517C2236EF36B009EAB8F /* ftab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftab.h; sourceTree = "<group>"; };
87B517C4236EF3B0009EAB8F /* json_plist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = json_plist.h; sourceTree = "<group>"; };
87B517C5236EF3B0009EAB8F /* json_plist.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = json_plist.c; sourceTree = "<group>"; };
87B517C7236EF3CD009EAB8F /* jsmn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jsmn.c; sourceTree = "<group>"; };
87B517C8236EF3CD009EAB8F /* jsmn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jsmn.h; sourceTree = "<group>"; };
87F574C71E151DA6008D5C4D /* libcommonCrypto.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libcommonCrypto.tbd; path = usr/lib/system/libcommonCrypto.tbd; sourceTree = SDKROOT; };
87F574CC1E151EF8008D5C4D /* libcorecrypto.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libcorecrypto.tbd; path = usr/lib/system/libcorecrypto.tbd; sourceTree = SDKROOT; };
87F574CE1E151F11008D5C4D /* libSystem.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libSystem.tbd; path = usr/lib/libSystem.tbd; sourceTree = SDKROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
878587401D89CFDC008689F0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
5669113323B3D92B00C93279 /* libplist.a in Frameworks */,
5669111D23B3D86E00C93279 /* libbz2.a in Frameworks */,
5669112523B3D8B200C93279 /* libfragmentzip.a in Frameworks */,
5669112923B3D8CF00C93279 /* libimg4tool.a in Frameworks */,
5669112D23B3D8E200C93279 /* libipatcher.a in Frameworks */,
5669112B23B3D8DA00C93279 /* libimobiledevice.a in Frameworks */,
5669112F23B3D8ED00C93279 /* libirecovery.a in Frameworks */,
5669113123B3D91B00C93279 /* libpartialzip-1.0.a in Frameworks */,
5669112723B3D8BE00C93279 /* libgeneral.a in Frameworks */,
5669112123B3D89B00C93279 /* libcurl.tbd in Frameworks */,
5669112323B3D89E00C93279 /* libz.tbd in Frameworks */,
5669111F23B3D88200C93279 /* libcrypto.a in Frameworks */,
5669113523B3D94300C93279 /* libzip.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
8785873A1D89CFDC008689F0 = {
isa = PBXGroup;
children = (
878587451D89CFDC008689F0 /* futurerestore */,
878587441D89CFDC008689F0 /* Products */,
87F574C21E151CDE008D5C4D /* Frameworks */,
);
sourceTree = "<group>";
};
878587441D89CFDC008689F0 /* Products */ = {
isa = PBXGroup;
children = (
878587431D89CFDC008689F0 /* futurerestore */,
);
name = Products;
sourceTree = "<group>";
};
878587451D89CFDC008689F0 /* futurerestore */ = {
isa = PBXGroup;
children = (
8785874D1D89D1A4008689F0 /* external */,
8799B0B11D89D99D002F4D5F /* futurerestore.hpp */,
8799B0B01D89D99D002F4D5F /* futurerestore.cpp */,
878587461D89CFDC008689F0 /* main.cpp */,
);
path = futurerestore;
sourceTree = "<group>";
};
8785874D1D89D1A4008689F0 /* external */ = {
isa = PBXGroup;
children = (
878587961D89D2BA008689F0 /* tsschecker */,
8785874E1D89D1C1008689F0 /* idevicerestore */,
);
name = external;
sourceTree = "<group>";
};
8785874E1D89D1C1008689F0 /* idevicerestore */ = {
isa = PBXGroup;
children = (
8785874F1D89D1C1008689F0 /* asr.c */,
878587501D89D1C1008689F0 /* asr.h */,
878587511D89D1C1008689F0 /* common.c */,
878587521D89D1C1008689F0 /* common.h */,
878587531D89D1C1008689F0 /* dfu.c */,
878587541D89D1C1008689F0 /* dfu.h */,
878587551D89D1C1008689F0 /* download.c */,
878587561D89D1C1008689F0 /* download.h */,
878587571D89D1C1008689F0 /* endianness.h */,
878587581D89D1C1008689F0 /* fdr.c */,
878587591D89D1C1008689F0 /* fdr.h */,
8785875A1D89D1C1008689F0 /* fls.c */,
8785875B1D89D1C1008689F0 /* fls.h */,
8785875C1D89D1C1008689F0 /* idevicerestore.c */,
8785875D1D89D1C1008689F0 /* idevicerestore.h */,
8785875E1D89D1C1008689F0 /* img3.c */,
8785875F1D89D1C1008689F0 /* img3.h */,
878587601D89D1C1008689F0 /* img4.c */,
878587611D89D1C1008689F0 /* img4.h */,
87B517C5236EF3B0009EAB8F /* json_plist.c */,
87B517C4236EF3B0009EAB8F /* json_plist.h */,
87B517C1236EF36B009EAB8F /* ftab.c */,
87B517C2236EF36B009EAB8F /* ftab.h */,
87B517C7236EF3CD009EAB8F /* jsmn.c */,
87B517C8236EF3CD009EAB8F /* jsmn.h */,
878587621D89D1C1008689F0 /* ipsw.c */,
878587631D89D1C1008689F0 /* ipsw.h */,
878587641D89D1C1008689F0 /* limera1n.c */,
878587651D89D1C1008689F0 /* limera1n.h */,
878587661D89D1C1008689F0 /* limera1n_payload.h */,
878587671D89D1C1008689F0 /* locking.c */,
878587681D89D1C1008689F0 /* locking.h */,
8785876A1D89D1C1008689F0 /* mbn.c */,
8785876B1D89D1C1008689F0 /* mbn.h */,
8785876C1D89D1C1008689F0 /* normal.c */,
8785876D1D89D1C1008689F0 /* normal.h */,
8785876E1D89D1C1008689F0 /* recovery.c */,
8785876F1D89D1C1008689F0 /* recovery.h */,
878587701D89D1C1008689F0 /* restore.c */,
878587711D89D1C1008689F0 /* restore.h */,
878587721D89D1C1008689F0 /* socket.c */,
878587731D89D1C1008689F0 /* socket.h */,
878587741D89D1C1008689F0 /* thread.c */,
878587751D89D1C1008689F0 /* thread.h */,
878587761D89D1C1008689F0 /* tss.c */,
878587771D89D1C1008689F0 /* tss.h */,
);
name = idevicerestore;
path = external/idevicerestore/src;
sourceTree = SOURCE_ROOT;
};
878587961D89D2BA008689F0 /* tsschecker */ = {
isa = PBXGroup;
children = (
878587991D89D2BA008689F0 /* download.h */,
878587981D89D2BA008689F0 /* download.c */,
8785879B1D89D2BA008689F0 /* jssy.h */,
8785879A1D89D2BA008689F0 /* jssy.c */,
878587A01D89D2BA008689F0 /* tsschecker.h */,
8785879F1D89D2BA008689F0 /* tsschecker.c */,
);
name = tsschecker;
path = external/tsschecker/tsschecker;
sourceTree = SOURCE_ROOT;
};
87F574C21E151CDE008D5C4D /* Frameworks */ = {
isa = PBXGroup;
children = (
5669111C23B3D86E00C93279 /* libbz2.a */,
87F574C71E151DA6008D5C4D /* libcommonCrypto.tbd */,
87F574CC1E151EF8008D5C4D /* libcorecrypto.tbd */,
5669111E23B3D88200C93279 /* libcrypto.a */,
5669112023B3D89B00C93279 /* libcurl.tbd */,
5669112223B3D89E00C93279 /* libz.tbd */,
5669112623B3D8BE00C93279 /* libgeneral.a */,
5669112423B3D8B200C93279 /* libfragmentzip.a */,
5669112823B3D8CE00C93279 /* libimg4tool.a */,
5669112A23B3D8DA00C93279 /* libimobiledevice.a */,
5669112C23B3D8E200C93279 /* libipatcher.a */,
5669112E23B3D8ED00C93279 /* libirecovery.a */,
5669113023B3D91B00C93279 /* libpartialzip-1.0.a */,
5669113223B3D92B00C93279 /* libplist.a */,
87F574CE1E151F11008D5C4D /* libSystem.tbd */,
5669113423B3D94300C93279 /* libzip.a */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
878587421D89CFDC008689F0 /* futurerestore */ = {
isa = PBXNativeTarget;
buildConfigurationList = 8785874A1D89CFDC008689F0 /* Build configuration list for PBXNativeTarget "futurerestore" */;
buildPhases = (
8785873F1D89CFDC008689F0 /* Sources */,
878587401D89CFDC008689F0 /* Frameworks */,
878587411D89CFDC008689F0 /* CopyFiles */,
8762F346236DF4D900F42FDB /* Embed Libraries */,
);
buildRules = (
);
dependencies = (
);
name = futurerestore;
productName = futurerestore;
productReference = 878587431D89CFDC008689F0 /* futurerestore */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
8785873B1D89CFDC008689F0 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1130;
ORGANIZATIONNAME = tihmstar;
TargetAttributes = {
878587421D89CFDC008689F0 = {
CreatedOnToolsVersion = 7.3.1;
};
};
};
buildConfigurationList = 8785873E1D89CFDC008689F0 /* Build configuration list for PBXProject "futurerestore" */;
compatibilityVersion = "Xcode 6.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = 8785873A1D89CFDC008689F0;
productRefGroup = 878587441D89CFDC008689F0 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
878587421D89CFDC008689F0 /* futurerestore */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
8785873F1D89CFDC008689F0 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8799B0C11D89DB38002F4D5F /* fls.c in Sources */,
8799B0B41D89DAF6002F4D5F /* tss.c in Sources */,
8799B0C01D89DB38002F4D5F /* fdr.c in Sources */,
8799B0BC1D89DB27002F4D5F /* ipsw.c in Sources */,
87B517C3236EF36B009EAB8F /* ftab.c in Sources */,
8799B0CC1D89F7B9002F4D5F /* download.c in Sources */,
8799B0B91D89DB0D002F4D5F /* img3.c in Sources */,
8799B0B51D89DAFF002F4D5F /* common.c in Sources */,
8799B0C41D89DB55002F4D5F /* mbn.c in Sources */,
8799B0B81D89DAFF002F4D5F /* recovery.c in Sources */,
8799B0B31D89DAE7002F4D5F /* idevicerestore.c in Sources */,
8799B0BB1D89DB12002F4D5F /* download.c in Sources */,
8799B0B71D89DAFF002F4D5F /* normal.c in Sources */,
87B517C9236EF3CD009EAB8F /* jsmn.c in Sources */,
8799B0C31D89DB4B002F4D5F /* socket.c in Sources */,
8799B0C21D89DB46002F4D5F /* thread.c in Sources */,
8799B0B61D89DAFF002F4D5F /* dfu.c in Sources */,
8799B0BD1D89DB27002F4D5F /* limera1n.c in Sources */,
8799B0C51D89DB67002F4D5F /* locking.c in Sources */,
878587471D89CFDC008689F0 /* main.cpp in Sources */,
87B517C6236EF3B0009EAB8F /* json_plist.c in Sources */,
8799B0BF1D89DB38002F4D5F /* asr.c in Sources */,
8799B0BE1D89DB27002F4D5F /* restore.c in Sources */,
8799B0CB1D89F796002F4D5F /* tsschecker.c in Sources */,
8799B0CA1D89E371002F4D5F /* img4.c in Sources */,
8799B0B21D89D99D002F4D5F /* futurerestore.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
878587481D89CFDC008689F0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
INSTALL_PATH = /usr/local/bin;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
878587491D89CFDC008689F0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
INSTALL_PATH = /usr/local/bin;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
};
name = Release;
};
8785874B1D89CFDC008689F0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
"IDEVICERESTORE_NOMAIN=1",
"CUSTOM_LOGGING=1",
"HAVE_REALPATH=1",
);
HEADER_SEARCH_PATHS = "";
LIBRARY_SEARCH_PATHS = (
/usr/local/lib,
/usr/lib,
/usr/local/opt/openssl/lib,
"$(SDKROOT)/usr/lib/system",
);
OTHER_CFLAGS = "-DHAVE_LIBIPATCHER";
PRODUCT_NAME = "$(TARGET_NAME)";
USER_HEADER_SEARCH_PATHS = "/usr/local/opt/openssl/include /usr/local/include $(SRCROOT)/external/libgeneral/include $(SRCROOT)/external/tsschecker/external/jssy/jssy $(SRCROOT)/external/idevicerestore/src";
};
name = Debug;
};
8785874C1D89CFDC008689F0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
HEADER_SEARCH_PATHS = "";
LIBRARY_SEARCH_PATHS = (
/usr/local/lib,
/usr/lib,
/usr/local/opt/openssl/lib,
"$(SDKROOT)/usr/lib/system",
);
OTHER_CFLAGS = "-DHAVE_LIBIPATCHER";
PRODUCT_NAME = "$(TARGET_NAME)";
USER_HEADER_SEARCH_PATHS = "/usr/local/opt/openssl/include /usr/local/include $(SRCROOT)/external/libgeneral/include $(SRCROOT)/external/tsschecker/external/jssy/jssy $(SRCROOT)/external/idevicerestore/src";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
8785873E1D89CFDC008689F0 /* Build configuration list for PBXProject "futurerestore" */ = {
isa = XCConfigurationList;
buildConfigurations = (
878587481D89CFDC008689F0 /* Debug */,
878587491D89CFDC008689F0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
8785874A1D89CFDC008689F0 /* Build configuration list for PBXNativeTarget "futurerestore" */ = {
isa = XCConfigurationList;
buildConfigurations = (
8785874B1D89CFDC008689F0 /* Debug */,
8785874C1D89CFDC008689F0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 8785873B1D89CFDC008689F0 /* Project object */;
}

View file

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:futurerestore.xcodeproj">
</FileRef>
</Workspace>

View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View file

@ -1,12 +0,0 @@
AM_CFLAGS = -I$(top_srcdir)/external/libgeneral/include -I$(top_srcdir)/external/tsschecker/external/jssy/jssy -I$(top_srcdir)/external/tsschecker/tsschecker -I$(top_srcdir)/external/idevicerestore/src $(libplist_CFLAGS) $(libzip_CFLAGS) $(libimobiledevice_CFLAGS) $(libfragmentzip_CFLAGS) $(libirecovery_CFLAGS) $(libimg4tool_CFLAGS) $(libgeneral_CFLAGS)
AM_LDFLAGS = $(libplist_LIBS) $(libzip_LIBS) $(libimobiledevice_LIBS) $(libfragmentzip_LIBS) $(libirecovery_LIBS) $(libimg4tool_LIBS) $(libgeneral_LIBS)
if HAVE_LIBIPATCHER
AM_LDFLAGS += $(libipatcher_LIBS)
AM_CFLAGS += $(libipatcher_CFLAGS)
endif
bin_PROGRAMS = futurerestore
futurerestore_CXXFLAGS = $(AM_CFLAGS)
futurerestore_LDADD = $(top_srcdir)/external/idevicerestore/src/libidevicerestore.la $(top_srcdir)/external/tsschecker/tsschecker/libtsschecker.la $(top_srcdir)/external/tsschecker/tsschecker/libjssy.a $(AM_LDFLAGS)
futurerestore_SOURCES = futurerestore.cpp main.cpp

57
src/CMakeLists.txt Normal file
View file

@ -0,0 +1,57 @@
project(futurerestore)
add_executable(futurerestore
main.cpp
futurerestore.cpp)
target_include_directories(futurerestore PRIVATE
"${CMAKE_SOURCE_DIR}/dep_root/include"
"${CMAKE_SOURCE_DIR}/external/idevicerestore/src"
"${CMAKE_SOURCE_DIR}/external/tsschecker/external/jssy/jssy"
"${CMAKE_SOURCE_DIR}/external/tsschecker/tsschecker")
target_link_directories(futurerestore PRIVATE
"${CMAKE_SOURCE_DIR}/dep_root/lib"
"${CMAKE_SOURCE_DIR}/dep_root/lib/xpwn"
)
target_link_libraries(futurerestore PRIVATE
z
zip
png16
crypto
ssl
"-lgeneral"
plist-2.0
fragmentzip
img4tool
common
xpwn
insn
offsetfinder64
ipatcher
tsschecker
idevicerestore
jssy
curl
imobiledevice-glue-1.0
imobiledevice-1.0
irecovery-1.0
usbmuxd-2.0
pthread)
if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin")
target_link_libraries(futurerestore PRIVATE
compression
"-framework CoreFoundation"
"-framework IOKit")
else()
target_link_libraries(futurerestore PRIVATE
usb-1.0
dl
udev
lzfse)
endif()
execute_process(COMMAND git rev-list --count HEAD WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE VERSION_COMMIT_COUNT ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND git rev-parse HEAD WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE VERSION_COMMIT_SHA ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND cat version.txt WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE VERSION_RELEASE ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
add_definitions(
-DHAVE_LIBIPATCHER=1
-DVERSION_COMMIT_COUNT="${VERSION_COMMIT_COUNT}"
-DVERSION_COMMIT_SHA="${VERSION_COMMIT_SHA}"
-DVERSION_RELEASE="${VERSION_RELEASE}")

View file

@ -735,6 +735,10 @@ void futurerestore::enterPwnRecovery(plist_t build_identity, std::string bootarg
auto nonceelem = img4tool::getValFromIM4M({_im4ms[0].first, _im4ms[0].second}, 'BNCH');
info("ApNonce pre-hax:\n");
getDeviceMode(true);
retassure(((recovery_client_new(_client) == IRECV_E_SUCCESS) ||
(mutex_unlock(&_client->device_event_mutex), 0)),
"Failed to connect to device in Recovery Mode!");
if (get_ap_nonce(_client, &_client->nonce, &_client->nonce_size) < 0) {
reterror("Failed to get apnonce from device!");
}

View file

@ -11,9 +11,6 @@
extern "C"{
#include "tsschecker.h"
#undef VERSION_COMMIT_SHA
#undef VERSION_COMMIT_COUNT
#undef VERSION_RELEASE
};
#include <libgeneral/macros.h>