From ebc224377853eb2a67f59aa68d95d94fc8770a77 Mon Sep 17 00:00:00 2001 From: Ken Micklas Date: Sun, 15 Apr 2018 19:22:08 -0400 Subject: [PATCH] binutils: Add iOS as a supported platform --- .../tools/misc/binutils/default.nix | 10 +- .../tools/misc/binutils/support-ios.patch | 112 ++++++++++++++++++ 2 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 pkgs/development/tools/misc/binutils/support-ios.patch diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index 5c88902a68c..123f679d779 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -1,5 +1,5 @@ { stdenv, buildPackages -, fetchurl, zlib +, fetchurl, zlib, autoreconfHook264 , buildPlatform, hostPlatform, targetPlatform , noSysDirs, gold ? true, bison ? null }: @@ -64,12 +64,16 @@ stdenv.mkDerivation rec { # https://sourceware.org/bugzilla/show_bug.cgi?id=22868 ./gold-symbol-visibility.patch - ]; + ] ++ stdenv.lib.optional targetPlatform.isiOS ./support-ios.patch; outputs = [ "out" "info" "man" ]; depsBuildBuild = [ buildPackages.stdenv.cc ]; - nativeBuildInputs = [ bison ]; + nativeBuildInputs = [ + bison + ] ++ stdenv.lib.optionals targetPlatform.isiOS [ + autoreconfHook264 + ]; buildInputs = [ zlib ]; inherit noSysDirs; diff --git a/pkgs/development/tools/misc/binutils/support-ios.patch b/pkgs/development/tools/misc/binutils/support-ios.patch new file mode 100644 index 00000000000..919a3920727 --- /dev/null +++ b/pkgs/development/tools/misc/binutils/support-ios.patch @@ -0,0 +1,112 @@ +diff --git a/bfd/config.bfd b/bfd/config.bfd +index f04a993f06..3357022f35 100644 +--- a/bfd/config.bfd ++++ b/bfd/config.bfd +@@ -238,7 +238,7 @@ case "${targ}" in + + # START OF targmatch.h + #ifdef BFD64 +- aarch64-*-darwin*) ++ aarch64-*-darwin* | aarch64-*-ios*) + targ_defvec=aarch64_mach_o_vec + targ_selvecs="arm_mach_o_vec mach_o_le_vec mach_o_be_vec mach_o_fat_vec" + targ_archs="$targ_archs bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch" +@@ -358,7 +358,7 @@ case "${targ}" in + targ_selvecs=arc_elf32_be_vec + ;; + +- arm-*-darwin*) ++ arm-*-darwin* | arm-*-ios*) + targ_defvec=arm_mach_o_vec + targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec" + targ_archs="$targ_archs bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch" +diff --git a/configure.ac b/configure.ac +index aae94501e4..4b1121e0d1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -510,7 +510,7 @@ if test x$enable_libgomp = x ; then + ;; + *-*-solaris2* | *-*-hpux11*) + ;; +- *-*-darwin* | *-*-aix*) ++ *-*-darwin* | *-*-ios* | *-*-aix*) + ;; + nvptx*-*-*) + ;; +@@ -706,7 +706,7 @@ case "${target}" in + ;; + x86_64-*-darwin[[912]]*) + ;; +- *-*-darwin*) ++ *-*-darwin* | *-*-ios*) + noconfigdirs="$noconfigdirs target-libffi" + ;; + *-*-netware*) +@@ -788,7 +788,7 @@ esac + # Disable the go frontend on systems where it is known to not work. Please keep + # this in sync with contrib/config-list.mk. + case "${target}" in +-*-*-darwin* | *-*-cygwin* | *-*-mingw*) ++*-*-darwin* | *-*-ios* | *-*-cygwin* | *-*-mingw*) + unsupported_languages="$unsupported_languages go" + ;; + esac +@@ -797,7 +797,7 @@ esac + # For testing, you can easily override this with --enable-libgo. + if test x$enable_libgo = x; then + case "${target}" in +- *-*-darwin*) ++ *-*-darwin* | *-*-ios*) + # PR 46986 + noconfigdirs="$noconfigdirs target-libgo" + ;; +@@ -916,11 +916,11 @@ esac + case "${target}" in + *-*-chorusos) + ;; +- aarch64-*-darwin*) ++ aarch64-*-darwin* | aarch64-*-ios*) + noconfigdirs="$noconfigdirs ld gas gdb gprof" + noconfigdirs="$noconfigdirs sim target-rda" + ;; +- arm-*-darwin*) ++ arm-*-darwin* | arm-*-ios*) + noconfigdirs="$noconfigdirs ld gas gdb gprof" + noconfigdirs="$noconfigdirs sim target-rda" + ;; +@@ -936,7 +936,7 @@ case "${target}" in + noconfigdirs="$noconfigdirs ld gas gprof" + noconfigdirs="$noconfigdirs sim target-rda" + ;; +- *-*-darwin*) ++ *-*-darwin* | *-*-ios*) + noconfigdirs="$noconfigdirs ld gas gdb gprof" + noconfigdirs="$noconfigdirs sim target-rda" + ;; +@@ -1226,7 +1226,7 @@ case "${host}" in + hppa*-*) + host_makefile_frag="config/mh-pa" + ;; +- *-*-darwin*) ++ *-*-darwin* | *-*-ios*) + host_makefile_frag="config/mh-darwin" + ;; + powerpc-*-aix*) +@@ -1708,7 +1708,7 @@ ACX_ELF_TARGET_IFELSE([# ELF platforms build the lto-plugin always. + # warn during gcc/ subconfigure; unless you're bootstrapping with + # -flto it won't be needed until after installation anyway. + case $target in +- *-cygwin* | *-mingw* | *-apple-darwin* | *djgpp*) ;; ++ *-cygwin* | *-mingw* | *-apple-darwin* | *-apple-ios* | *djgpp*) ;; + *) if test x"$enable_lto" = x"yes"; then + AC_MSG_ERROR([LTO support is not enabled for this target.]) + fi +@@ -2590,7 +2590,7 @@ rm -f conftest* + # Decide which environment variable is used to find dynamic libraries. + case "${host}" in + *-*-hpux*) RPATH_ENVVAR=SHLIB_PATH ;; +- *-*-darwin*) RPATH_ENVVAR=DYLD_LIBRARY_PATH ;; ++ *-*-darwin* | *-*-ios* ) RPATH_ENVVAR=DYLD_LIBRARY_PATH ;; + *-*-mingw* | *-*-cygwin ) RPATH_ENVVAR=PATH ;; + *) RPATH_ENVVAR=LD_LIBRARY_PATH ;; + esac