nixpkgs/pkgs/development/mobile/xpwn/default.nix
Sergei Trofimovich 7595ca654a xpwn: add -fcommon workaround
Workaround build failure on -fno-common toolchains like upstream
gcc-10. Otherwise build fails as:

    ld: ../ipsw-patch/libxpwn.a(libxpwn.c.o):(.bss+0x4): multiple definition of
      `endianness'; CMakeFiles/xpwn-bin.dir/src/xpwn.cpp.o:(.bss+0x0): first defined here
2022-06-03 10:00:52 +01:00

40 lines
1.3 KiB
Nix

{ lib, stdenv, fetchFromGitHub, cmake, zlib, libpng, bzip2, libusb-compat-0_1, openssl }:
stdenv.mkDerivation rec {
pname = "xpwn";
version = "0.5.8git";
src = fetchFromGitHub {
owner = "planetbeing";
repo = pname;
rev = "ac362d4ffe4d0489a26144a1483ebf3b431da899";
sha256 = "1qw9vbk463fpnvvvfgzxmn9add2p30k832s09mlycr7z1hrh3wyf";
};
# Workaround build failure on -fno-common toolchains:
# ld: ../ipsw-patch/libxpwn.a(libxpwn.c.o):(.bss+0x4): multiple definition of
# `endianness'; CMakeFiles/xpwn-bin.dir/src/xpwn.cpp.o:(.bss+0x0): first defined here
NIX_CFLAGS_COMPILE = "-fcommon";
preConfigure = ''
rm BUILD # otherwise `mkdir build` fails on case insensitive file systems
sed -r -i \
-e 's/(install.*TARGET.*DESTINATION )\.\)/\1bin)/' \
-e 's!(install.*(FILE|DIR).*DESTINATION )([^)]*)!\1share/xpwn/\3!' \
*/CMakeLists.txt
sed -i -e '/install/d' CMakeLists.txt
'';
strictDeps = true;
nativeBuildInputs = [ cmake ];
buildInputs = [ zlib libpng bzip2 libusb-compat-0_1 openssl ];
meta = with lib; {
broken = stdenv.isDarwin;
homepage = "http://planetbeing.lighthouseapp.com/projects/15246-xpwn";
description = "Custom NOR firmware loader/IPSW generator for the iPhone";
license = licenses.gpl3Plus;
platforms = with platforms; linux ++ darwin;
};
}