mirror of
https://github.com/tihmstar/futurerestore.git
synced 2025-04-20 14:31:41 +00:00
Add pkg-config support (Fixes #75)
This commit is contained in:
parent
f7fa07e2ba
commit
b3f500cdd9
4
.github/workflows/linux-build.sh
vendored
4
.github/workflows/linux-build.sh
vendored
|
@ -8,11 +8,11 @@ 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
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_MESSAGE_LOG_LEVEL="WARNING" -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 -DNO_PKGCFG
|
||||
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
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -DCMAKE_MESSAGE_LOG_LEVEL="WARNING" -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 -DNO_PKGCFG
|
||||
make -j4 -l4 -C cmake-build-debug-x86_64
|
||||
llvm-strip-13 -s cmake-build-release-x86_64/src/futurerestore
|
||||
|
|
8
.github/workflows/mac-build.sh
vendored
8
.github/workflows/mac-build.sh
vendored
|
@ -7,19 +7,19 @@ 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
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -DCMAKE_MESSAGE_LOG_LEVEL="WARNING" -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-release-x86_64 -DARCH=x86_64 -DNO_PKGCFG
|
||||
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
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -DCMAKE_MESSAGE_LOG_LEVEL="WARNING" -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-debug-x86_64 -DARCH=x86_64 -DNO_PKGCFG
|
||||
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
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -DCMAKE_MESSAGE_LOG_LEVEL="WARNING" -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-release-arm64 -DARCH=arm64 -DNO_PKGCFG
|
||||
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
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -DCMAKE_MESSAGE_LOG_LEVEL="WARNING" -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-debug-arm64 -DARCH=arm64 -DNO_PKGCFG
|
||||
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
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
cmake_minimum_required(VERSION 3.22)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
set(SUBPROJECT_BUILD 1)
|
||||
if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin")
|
||||
if(NOT DEFINED NO_XCODE AND NOT DEFINED ENV{NO_XCODE})
|
||||
|
@ -16,15 +17,17 @@ if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin")
|
|||
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)
|
||||
if(NOT DEFINED MINVER OR NOT DEFINED "$ENV{MINVER}" AND DEFINED NO_PKGCFG AND "$ENV{NO_PKGCFG}" MATCHES "1")
|
||||
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()
|
||||
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")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch ${ARCH} -isysroot ${SYSROOT} ${MINVER} -fembed-bitcode=off -flto=thin -pthread -mrelax-all -std=gnu++20")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch ${ARCH} -isysroot ${SYSROOT} ${MINVER} -fembed-bitcode=off -flto=thin -pthread -mrelax-all -std=gnu17")
|
||||
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")
|
||||
|
@ -38,4 +41,5 @@ set(CMAKE_CXX_STANDARD 20)
|
|||
project(futurerestore)
|
||||
add_subdirectory(external/tsschecker)
|
||||
add_subdirectory(external/idevicerestore)
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(src)
|
||||
|
||||
|
|
14
COMPILING.md
14
COMPILING.md
|
@ -48,6 +48,12 @@
|
|||
|
||||
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 disable pkg-config linking you can provide the `NO_PKGCFG` flag.
|
||||
|
||||
By default pkg-config linking is enabled. dep_root will be used when disabled.
|
||||
* Example: `./build.sh -DARCH=x86_64 -DNO_PKGCFG`
|
||||
* or `NO_PKGCFG=1 ./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`
|
||||
|
@ -58,5 +64,9 @@
|
|||
* 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
|
||||
* `cmake-build-release/src/futurerestore` for release builds
|
||||
* `cmake-build-debug/src/futurerestore` for debug builds
|
||||
|
||||
Otherwise you can install the binary via:
|
||||
* `make -C cmake-build-release install` for release builds
|
||||
* `make -C cmake-build-debug install` for debug builds
|
29
build.sh
29
build.sh
|
@ -1,13 +1,26 @@
|
|||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
which cmake >/dev/null
|
||||
# if [[ "$?" -gt 0 ]]; then echo "[!] cmake not installed or not found, refusing to build!"; exit 1; fi
|
||||
which make >/dev/null
|
||||
if [[ "$?" -gt 0 ]]; then echo "[!] make not installed or not found, refusing to build!"; exit 1; fi
|
||||
echo "[*] Building futurerestore"
|
||||
export FR_INSTALL_DIR="/usr/local/bin"
|
||||
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
|
||||
if [[ ! "$NO_CLEAN" == "1" ]]; then cmake -DCMAKE_INSTALL_PREFIX="${FR_INSTALL_DIR}" -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -DCMAKE_MESSAGE_LOG_LEVEL="WARNING" -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-release $@; fi
|
||||
make -s -C cmake-build-release clean
|
||||
make -s -C cmake-build-release
|
||||
if [[ "$?" -gt 0 ]]; then echo "[!] Failed to build futurerestore!"; exit 1; fi
|
||||
which llvm-strip >/dev/null
|
||||
if [[ "$?" -lt 1 ]]; then llvm-strip -s cmake-build-release/src/futurerestore; else echo "[!] llvm-strip not installed or not found, not stripping release binary."; fi
|
||||
echo "[*] Run make -C cmake-build-release install, to install futurerestore or obtain the binary at cmake-build-release/src/futurerestore"
|
||||
echo "[*] Successfully built 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
|
||||
if [[ ! "$NO_CLEAN" == "1" ]]; then cmake -DCMAKE_INSTALL_PREFIX="${FR_INSTALL_DIR}" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -DCMAKE_MESSAGE_LOG_LEVEL="WARNING" -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-debug $@ ; fi
|
||||
make -s -C cmake-build-debug clean
|
||||
make -s -C cmake-build-debug
|
||||
if [[ "$?" -gt 0 ]]; then echo "[!] Failed to build futurerestore!"; exit 1; fi
|
||||
echo "[*] Run make -C cmake-build-debug install, to install futurerestore or obtain the binary at cmake-build-debug/src/futurerestore"
|
||||
echo "[*] Successfully built futurerestore."
|
||||
fi
|
||||
|
|
2
external/idevicerestore
vendored
2
external/idevicerestore
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 78e077ccd41b5ee8d6c35702805a01a954d62cfc
|
||||
Subproject commit 4710028c9ebc5363847258055b539580a9db904f
|
2
external/tsschecker
vendored
2
external/tsschecker
vendored
|
@ -1 +1 @@
|
|||
Subproject commit ba70a6ad0c818b67028276c430ef221591692d2a
|
||||
Subproject commit 9f141b333befed9b45203a4f45e49707ec08ff24
|
|
@ -1,51 +1,83 @@
|
|||
project(futurerestore)
|
||||
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)
|
||||
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")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
if(NOT DEFINED NO_PKGCFG AND NOT "$ENV{NO_PKGCFG}" MATCHES "1")
|
||||
pkg_check_modules(DEPS REQUIRED
|
||||
libzip
|
||||
zlib
|
||||
libpng16
|
||||
libcrypto
|
||||
libssl
|
||||
libplist-2.0
|
||||
libimobiledevice-glue-1.0
|
||||
libimobiledevice-1.0
|
||||
libirecovery-1.0
|
||||
libusbmuxd-2.0
|
||||
libgeneral
|
||||
libcurl
|
||||
libfragmentzip
|
||||
libimg4tool
|
||||
libinsn
|
||||
liboffsetfinder64
|
||||
libipatcher)
|
||||
target_include_directories(futurerestore PRIVATE "${DEPS_INCLUDE_DIRS}")
|
||||
target_link_directories(futurerestore PRIVATE "${DEPS_LIBRARY_DIRS}")
|
||||
target_link_libraries(futurerestore PRIVATE "${DEPS_LIBRARIES}" tsschecker idevicerestore)
|
||||
else()
|
||||
target_include_directories(futurerestore PRIVATE
|
||||
"${CMAKE_SOURCE_DIR}/dep_root/include")
|
||||
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)
|
||||
endif()
|
||||
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)
|
||||
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)
|
||||
|
@ -55,3 +87,6 @@ add_definitions(
|
|||
-DVERSION_COMMIT_COUNT="${VERSION_COMMIT_COUNT}"
|
||||
-DVERSION_COMMIT_SHA="${VERSION_COMMIT_SHA}"
|
||||
-DVERSION_RELEASE="${VERSION_RELEASE}")
|
||||
install(TARGETS futurerestore
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
|
|
Loading…
Reference in a new issue