From 6f0f00e8c7debfd96ebafadba16ebe258a27b8cc Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Sat, 23 Mar 2024 17:50:33 +0100 Subject: Updated README --- README.md | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 161 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index a447fec..ac49f5d 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,21 @@ via USB.* ![](https://github.com/libimobiledevice/libirecovery/workflows/build/badge.svg) +## Table of Contents +- [Features](#features) +- [Building](#building) + - [Prerequisites](#prerequisites) + - [Linux (Debian/Ubuntu based)](#linux-debianubuntu-based) + - [macOS](#macos) + - [Windows](#windows) + - [Configuring the source tree](#configuring-the-source-tree) + - [Building and installation](#building-and-installation) +- [Usage](#usage) +- [Contributing](#contributing) +- [Links](#links) +- [License](#license) +- [Credits](#credits) + ## Features libirecovery is a cross-platform library which implements communication to @@ -14,38 +29,164 @@ iBoot/iBSS found on Apple's iOS devices via USB. A command-line utility named This is a fork of an older version from former openjailbreak.org and is meant to be used with [idevicerestore](https://github.com/libimobiledevice/idevicerestore.git/) from the [libimobiledevice](https://github.com/libimobiledevice/) project. -## Installation / Getting started +## Building + +### Prerequisites + +You need to have a working compiler (gcc/clang) and development environent +available. This project uses autotools for the build process, allowing to +have common build steps across different platforms. +Only the prerequisites differ and they are described in this section. + +libirecovery requires [libimobiledevice-glue](https://github.com/libimobiledevice/libimobiledevice-glue). +Check the [Building](https://github.com/libimobiledevice/libimobiledevice-glue?tab=readme-ov-file#building) +section of the README on how to build it. Note that some platforms might have it as a package. + +#### Linux (Debian/Ubuntu based) + +* Install all required dependencies and build tools: + ```shell + sudo apt-get install \ + build-essential \ + pkg-config \ + checkinstall \ + git \ + autoconf \ + automake \ + libtool-bin \ + libimobiledevice-glue-dev \ + libreadline-dev \ + libusb-1.0-0-dev + ``` + + In case libimobiledevice-glue-dev is not available, you can manually build and install it. See note above. + +#### macOS + +* Make sure the Xcode command line tools are installed. Then, use either [MacPorts](https://www.macports.org/) + or [Homebrew](https://brew.sh/) to install `automake`, `autoconf`, `libtool`, etc. + + Using MacPorts: + ```shell + sudo port install libtool autoconf automake pkgconfig + ``` + + Using Homebrew: + ```shell + brew install libtool autoconf automake pkg-config + ``` -### Debian / Ubuntu Linux +#### Windows + +* Using [MSYS2](https://www.msys2.org/) is the official way of compiling this project on Windows. Download the MSYS2 installer + and follow the installation steps. + + It is recommended to use the _MSYS2 MinGW 64-bit_ shell. Run it and make sure the required dependencies are installed: + + ```shell + pacman -S base-devel \ + git \ + mingw-w64-x86_64-gcc \ + make \ + libtool \ + autoconf \ + automake-wrapper \ + pkg-config + ``` + NOTE: You can use a different shell and different compiler according to your needs. Adapt the above command accordingly. + +### Configuring the source tree + +You can build the source code from a git checkout, or from a `.tar.bz2` release tarball from [Releases](https://github.com/libimobiledevice/libirecovery/releases). +Before we can build it, the source tree has to be configured for building. The steps depend on where you got the source from. + +Since libirecovery depends on other packages, you should set the pkg-config environment variable `PKG_CONFIG_PATH` +accordingly. Make sure to use a path with the same prefix as the dependencies. If they are installed in `/usr/local` you would do -First install all required dependencies and build tools: ```shell -sudo apt-get install \ - build-essential \ - pkg-config \ - checkinstall \ - git \ - autoconf \ - automake \ - libtool-bin \ - libimobiledevice-glue-dev \ - libreadline-dev \ - libusb-1.0-0-dev +export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ``` -Then clone the actual project repository: +* **From git** + + If you haven't done already, clone the actual project repository and change into the directory. + ```shell + git clone https://github.com/libimobiledevice/libirecovery + cd libirecovery + ``` + + Configure the source tree for building: + ```shell + ./autogen.sh + ``` + +* **From release tarball (.tar.bz2)** + + When using an official [release tarball](https://github.com/libimobiledevice/libirecovery/releases) (`libirecovery-x.y.z.tar.bz2`) + the procedure is slightly different. + + Extract the tarball: + ```shell + tar xjf libirecovery-x.y.z.tar.bz2 + cd libirecovery-x.y.z + ``` + + Configure the source tree for building: + ```shell + ./configure + ``` + +Both `./configure` and `./autogen.sh` (which generates and calls `configure`) accept a few options, for example `--prefix` to allow +building for a different target folder. You can simply pass them like this: + +```shell +./autogen.sh --prefix=/usr/local +``` +or ```shell -git clone https://github.com/libimobiledevice/libirecovery.git -cd libirecovery +./configure --prefix=/usr/local ``` -Now you can build and install it: +Once the command is successful, the last few lines of output will look like this: +``` +[...] +config.status: creating config.h +config.status: executing depfiles commands +config.status: executing libtool commands + +Configuration for libirecovery 1.2.0: +------------------------------------------- + + Install prefix: .........: /usr/local + USB backend: ............: IOKit + + Now type 'make' to build libirecovery 1.2.0, + and then 'make install' for installation. +``` + +### Building and installation + +If you followed all the steps successfully, and `autogen.sh` or `configure` did not print any errors, +you are ready to build the project. This is simply done with + ```shell -./autogen.sh make +``` + +If no errors are emitted you are ready for installation. Depending on whether +the current user has permissions to write to the destination directory or not, +you would either run +```shell +make install +``` +_OR_ +```shell sudo make install ``` +If you are on Linux, you want to run `sudo ldconfig` after installation to +make sure the installed libraries are made available. + ## Usage First of all attach your device to your machine. Make sure your device is not @@ -92,8 +233,6 @@ Please make sure your contribution adheres to: * Try to split larger changes into individual commits of a common domain * Use your real name and a valid email address for your commits -We are still working on the guidelines so bear with us! - ## Links * Homepage: https://libimobiledevice.org/ @@ -116,4 +255,4 @@ iPadOS, tvOS, watchOS, and macOS are trademarks of Apple Inc. This project is an independent software library and has not been authorized, sponsored, or otherwise approved by Apple Inc. -README Updated on: 2023-04-22 +README Updated on: 2024-03-23 -- cgit v1.1-32-gdbae