nspr: upgraded package to upstream

Upgraded dev-libs/nspr to version 4.10.2 on amd64, arm, x86

BUG=chromium:321783
TEST=emerge dev-libs/nss; HTTPS works as normal
CQ-DEPEND=CL:179000

Change-Id: Ie7fa441658c55fc23d4b23756813646b361341d2
Reviewed-on: https://chromium-review.googlesource.com/177971
Reviewed-by: Ryan Sleevi <rsleevi@chromium.org>
Tested-by: Ryan Sleevi <rsleevi@chromium.org>
Commit-Queue: David James <davidjames@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/178982
Reviewed-by: Jorge Lucangeli Obes <jorgelo@chromium.org>
Tested-by: Jorge Lucangeli Obes <jorgelo@chromium.org>
diff --git a/dev-libs/nspr/Manifest b/dev-libs/nspr/Manifest
new file mode 100644
index 0000000..7ecbbf9
--- /dev/null
+++ b/dev-libs/nspr/Manifest
@@ -0,0 +1 @@
+DIST nspr-4.10.2.tar.gz 1103130 SHA256 4d09ee67a6fb57d3c646098b0ac7fd1e31be1c2c2ca57cd2ad28b42e6d3cf400 SHA512 bb45c7a23c1bc38433520bfa71309085c25e65d004a3012c60e66c4f31fb6fdc45406cbd6228a5fdd89dfb02cd9badb5a3961186c32898aa456b04f0b6f53698 WHIRLPOOL 0cf2916c4cb595ee3ccd88da636a6599e2c3b5c51193608bbd2acfa9b3bcad89a7135af1f4cf42644495e17fc03c67a8b22719c0efb4faf8aacf1dcd0d0d9511
diff --git a/dev-libs/nspr/files/nspr-4.6.1-lang.patch b/dev-libs/nspr/files/nspr-4.6.1-lang.patch
new file mode 100644
index 0000000..46fe15b
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.6.1-lang.patch
@@ -0,0 +1,41 @@
+The LANG vars aren't reset early enough so when sed tries to use [a-zA-Z] in 
+option parsing, it may break.
+
+http://bugs.gentoo.org/103483
+
+--- mozilla/nsprpub/configure
++++ mozilla/nsprpub/configure
+@@ -54,6 +54,16 @@
+ infodir='${prefix}/info'
+ mandir='${prefix}/man'
+ 
++# NLS nuisances.
++# Only set these to C if already set.  These must not be set unconditionally
++# because not all systems understand e.g. LANG=C (notably SCO).
++# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
++# Non-C LC_CTYPE values break the ctype check.
++if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
++if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
++if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
++if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
++
+ # Initialize some other variables.
+ subdirs=
+ MFLAGS= MAKEFLAGS=
+@@ -452,16 +463,6 @@
+   esac
+ done
+ 
+-# NLS nuisances.
+-# Only set these to C if already set.  These must not be set unconditionally
+-# because not all systems understand e.g. LANG=C (notably SCO).
+-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+-# Non-C LC_CTYPE values break the ctype check.
+-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
+-
+ # confdefs.h avoids OS command line length limits that DEFS can exceed.
+ rm -rf conftest* confdefs.h
+ # AIX cpp loses on an empty file, so make sure it contains at least a newline.
diff --git a/dev-libs/nspr/files/nspr-4.7.0-prtime.patch b/dev-libs/nspr/files/nspr-4.7.0-prtime.patch
new file mode 100644
index 0000000..ac509ef
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.7.0-prtime.patch
@@ -0,0 +1,26 @@
+--- mozilla/nsprpub/pr/src/misc/prtime.c.orig	2007-09-14 19:41:08.000000000 +0200
++++ mozilla/nsprpub/pr/src/misc/prtime.c	2007-09-14 19:42:17.000000000 +0200
+@@ -1536,7 +1536,7 @@
+                 case TT_EET: zone_offset =  2 * 60; break;
+                 case TT_JST: zone_offset =  9 * 60; break;
+                 default:
+-                  PR_ASSERT (0);
++                  return PR_FAILURE;
+                   break;
+                 }
+         }
+@@ -1578,11 +1578,12 @@
+           struct tm localTime;
+           time_t secs;
+ 
+-          PR_ASSERT(result->tm_month > -1 &&
++          if (!(result->tm_month > -1 &&
+                     result->tm_mday > 0 &&
+                     result->tm_hour > -1 &&
+                     result->tm_min > -1 &&
+-                    result->tm_sec > -1);
++                    result->tm_sec > -1))
++		    return PR_FAILURE;
+ 
+             /*
+              * To obtain time_t from a tm structure representing the local
diff --git a/dev-libs/nspr/files/nspr-4.7.1-solaris.patch b/dev-libs/nspr/files/nspr-4.7.1-solaris.patch
new file mode 100644
index 0000000..5d9e810
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.7.1-solaris.patch
@@ -0,0 +1,14 @@
+Same magic as haubi did for glib compilation, which works again here
+resolving a linker problem on Solaris with GNU ld.  Bug #222625
+
+--- mozilla/nsprpub/pr/src/Makefile.in.orig	2008-06-22 22:24:56.671065000 +0200
++++ mozilla/nsprpub/pr/src/Makefile.in	2008-06-23 14:38:52.320417000 +0200
+@@ -95,7 +95,7 @@
+ endif
+ 
+ ifdef USE_PTHREADS
+-OS_LIBS			= -lpthread ${LIBRT} -lsocket -lnsl -ldl -lc
++OS_LIBS			= -pthread ${LIBRT} -lsocket -lnsl -ldl -lc
+ else
+ ifdef LOCAL_THREADS_ONLY
+ OS_LIBS			= -lsocket -lnsl -ldl -lc
diff --git a/dev-libs/nspr/files/nspr-4.7.4-solaris.patch b/dev-libs/nspr/files/nspr-4.7.4-solaris.patch
new file mode 100644
index 0000000..a0f14d5
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.7.4-solaris.patch
@@ -0,0 +1,62 @@
+* drop Solaris linker stuff
+
+--- nspr-4.7.4/mozilla/nsprpub/configure.in
++++ nspr-4.7.4/mozilla/nsprpub/configure.in
+@@ -1988,26 +1988,14 @@
+     CPU_ARCH=`uname -p`
+     MDCPUCFG_H=_solaris.cfg
+     PR_MD_CSRCS=solaris.c
+-    LD=/usr/ccs/bin/ld
+     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
+     RESOLVE_LINK_SYMBOLS=1
+-    case "${OS_RELEASE}" in
+-    5.8|5.9)
+-        ;;
+-    *)
+-        # It is safe to use the -Bdirect linker flag on Solaris 10 or later.
+-        USE_B_DIRECT=1
+-        ;;
+-    esac
+     if test -n "$GNU_CC"; then
+         DSO_CFLAGS=-fPIC
+         if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
+             GCC_USE_GNU_LD=1
+         fi
+-        DSO_LDOPTS='-shared -Wl,-h,$(notdir $@),-z,combreloc,-z,defs,-z,ignore' 
+-        if test -n "$USE_B_DIRECT"; then
+-            DSO_LDOPTS="$DSO_LDOPTS,-Bdirect"
+-        fi
++		DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
+     else
+         DSO_CFLAGS=-KPIC
+         DSO_LDOPTS='-G -h $(notdir $@) -z combreloc -z defs -z ignore'
+--- nspr-4.7.4/mozilla/nsprpub/configure
++++ nspr-4.7.4/mozilla/nsprpub/configure
+@@ -4765,26 +4765,14 @@
+     CPU_ARCH=`uname -p`
+     MDCPUCFG_H=_solaris.cfg
+     PR_MD_CSRCS=solaris.c
+-    LD=/usr/ccs/bin/ld
+     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
+     RESOLVE_LINK_SYMBOLS=1
+-    case "${OS_RELEASE}" in
+-    5.8|5.9)
+-        ;;
+-    *)
+-        # It is safe to use the -Bdirect linker flag on Solaris 10 or later.
+-        USE_B_DIRECT=1
+-        ;;
+-    esac
+     if test -n "$GNU_CC"; then
+         DSO_CFLAGS=-fPIC
+         if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
+             GCC_USE_GNU_LD=1
+         fi
+-        DSO_LDOPTS='-shared -Wl,-h,$(notdir $@),-z,combreloc,-z,defs,-z,ignore' 
+-        if test -n "$USE_B_DIRECT"; then
+-            DSO_LDOPTS="$DSO_LDOPTS,-Bdirect"
+-        fi
++		DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
+     else
+         DSO_CFLAGS=-KPIC
+         DSO_LDOPTS='-G -h $(notdir $@) -z combreloc -z defs -z ignore'
diff --git a/dev-libs/nspr/files/nspr-4.8.3-aix-gcc.patch b/dev-libs/nspr/files/nspr-4.8.3-aix-gcc.patch
new file mode 100644
index 0000000..4dc4ea3
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.8.3-aix-gcc.patch
@@ -0,0 +1,145 @@
+NSPR does not know that gcc does work on AIX:
+https://bugzilla.mozilla.org/show_bug.cgi?id=547991
+
+--- ./mozilla/nsprpub/configure.in.orig	2010-02-23 14:36:55 +0100
++++ ./mozilla/nsprpub/configure.in	2010-02-23 14:37:08 +0100
+@@ -871,8 +871,13 @@
+         AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
+         USE_IPV6=1
+         AIX_LINK_OPTS='-brtl -bnso -berok'
++        if test -n "$GNU_CC"; then
++            LD='$(CC)'
++            DSO_LDOPTS='-shared -Wl,-G,-bernotok,-bexpall,-blibpath:/usr/lib:/lib'
++        fi
+         ;;
+     esac
++    test -z "$GNU_CC" &&
+     CFLAGS="$CFLAGS -qro -qroconst"
+     AIX_WRAP='$(DIST)/lib/aixwrap.o'
+     AIX_TMP='./_aix_tmp.o'
+--- ./mozilla/nsprpub/configure.orig	2010-02-23 14:36:58 +0100
++++ ./mozilla/nsprpub/configure	2010-02-23 14:37:08 +0100
+@@ -3099,8 +3099,13 @@
+ 
+         USE_IPV6=1
+         AIX_LINK_OPTS='-brtl -bnso -berok'
++        if test -n "$GNU_CC"; then
++            LD='$(CC)'
++            DSO_LDOPTS='-shared -Wl,-G,-bernotok,-bexpall,-blibpath:/usr/lib:/lib'
++        fi
+         ;;
+     esac
++    test -z "$GNU_CC" &&
+     CFLAGS="$CFLAGS -qro -qroconst"
+     AIX_WRAP='$(DIST)/lib/aixwrap.o'
+     AIX_TMP='./_aix_tmp.o'
+--- ./mozilla/nsprpub/lib/ds/Makefile.in.orig	2010-02-23 14:40:10 +0100
++++ ./mozilla/nsprpub/lib/ds/Makefile.in	2010-02-23 14:40:58 +0100
+@@ -68,11 +68,19 @@
+ endif # WINNT
+ 
+ ifeq ($(OS_ARCH), AIX)
++ifndef NS_USE_GCC
+ ifeq ($(CLASSIC_NSPR),1)
+ OS_LIBS = -lc
+ else
+ OS_LIBS = -lc_r
+ endif
++else
++ifeq ($(CLASSIC_NSPR),1)
++OS_LIBS =
++else
++OS_LIBS = -pthread
++endif
++endif
+ endif
+ 
+ ifeq ($(OS_ARCH),IRIX)
+--- ./mozilla/nsprpub/lib/libc/src/Makefile.in.orig	2010-02-23 14:45:41 +0100
++++ ./mozilla/nsprpub/lib/libc/src/Makefile.in	2010-02-23 14:47:58 +0100
+@@ -77,11 +77,19 @@
+ endif # WINNT
+ 
+ ifeq ($(OS_ARCH), AIX)
++ifndef NS_USE_GCC
+ ifeq ($(CLASSIC_NSPR),1)
+ OS_LIBS = -lc
+ else
+ OS_LIBS = -lc_r
+ endif
++else
++ifeq ($(CLASSIC_NSPR),1)
++OS_LIBS =
++else
++OS_LIBS = -pthread
++endif
++endif
+ endif
+ 
+ ifeq ($(OS_ARCH),IRIX)
+--- ./mozilla/nsprpub/pr/src/Makefile.in.orig	2010-02-23 14:37:04 +0100
++++ ./mozilla/nsprpub/pr/src/Makefile.in	2010-02-23 14:52:16 +0100
+@@ -110,19 +110,29 @@
+ endif
+ 
+ ifeq ($(OS_ARCH),AIX)
++ifndef NS_USE_GCC
+ DSO_LDOPTS	+= -binitfini::_PR_Fini
++endif
+ OS_LIBS		= -lodm -lcfg
+ ifeq ($(CLASSIC_NSPR),1)
+ ifeq ($(OS_RELEASE),4.1)
+ OS_LIBS		+= -lsvld -lc
+ else
++ifndef NS_USE_GCC
+ OS_LIBS		+= -ldl -lc
++else
++OS_LIBS		+= -ldl
++endif
+ endif
+ else
+ ifeq ($(OS_RELEASE),4.1)
+ OS_LIBS		+= -lpthreads -lsvld -lC_r -lC -lc_r -lm /usr/lib/libc.a
+ else
++ifndef NS_USE_GCC
+ OS_LIBS		+= -lpthreads -ldl -lC_r -lC -lc_r -lm /usr/lib/libc.a
++else
++OS_LIBS		+= -pthread -ldl -lm
++endif
+ endif
+ endif
+ endif
+--- mozilla/nsprpub/pr/tests/Makefile.in.orig	2010-02-23 15:14:03 +0100
++++ mozilla/nsprpub/pr/tests/Makefile.in	2010-02-23 15:17:58 +0100
+@@ -341,9 +341,17 @@
+ 
+ # AIX
+ ifeq ($(OS_ARCH),AIX)
++  ifndef NS_USE_GCC
+     LDOPTS += -blibpath:$(ABSOLUTE_LIB_DIR):/usr/lib:/lib
++  else
++    LDOPTS += -Wl,-blibpath:$(ABSOLUTE_LIB_DIR):/usr/lib:/lib
++  endif
+     ifneq ($(OS_ARCH)$(OS_RELEASE),AIX4.1)
++      ifndef NS_USE_GCC
+         LDOPTS += -brtl
++      else
++        LDOPTS += -Wl,-brtl
++      endif
+         EXTRA_LIBS = -ldl
+     endif
+ endif
+--- mozilla/nsprpub/lib/tests/Makefile.in.orig	2010-02-23 15:35:37 +0100
++++ mozilla/nsprpub/lib/tests/Makefile.in	2010-02-23 15:35:37 +0100
+@@ -127,7 +127,11 @@
+ 
+ # AIX
+ ifeq ($(OS_ARCH),AIX)
++ifndef NS_USE_GCC
+ LDOPTS += -blibpath:$(PWD)/$(dist_libdir):/usr/lib:/lib
++else
++LDOPTS += -Wl,-blibpath:$(PWD)/$(dist_libdir):/usr/lib:/lib
++endif
+ LIBPR = -lnspr$(MOD_MAJOR_VERSION)_shr
+ LIBPLC = -lplc$(MOD_MAJOR_VERSION)_shr
+ endif
diff --git a/dev-libs/nspr/files/nspr-4.8.4-darwin-install_name.patch b/dev-libs/nspr/files/nspr-4.8.4-darwin-install_name.patch
new file mode 100644
index 0000000..1258b60
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.8.4-darwin-install_name.patch
@@ -0,0 +1,25 @@
+Don't use @executable_path, it messed up linking against nspr from e.g.
+nss.
+
+--- mozilla/nsprpub/configure.in
++++ mozilla/nsprpub/configure.in
+@@ -1007,7 +1007,7 @@
+             ;;
+     esac
+     DSO_CFLAGS=-fPIC
+-    DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load -install_name @executable_path/$@ -headerpad_max_install_names'
++    DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load -install_name $(libdir)/$@ -headerpad_max_install_names'
+     _OPTIMIZE_FLAGS=-O2
+     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
+     STRIP="$STRIP -x -S"
+--- mozilla/nsprpub/configure
++++ mozilla/nsprpub/configure
+@@ -1007,7 +1007,7 @@
+             ;;
+     esac
+     DSO_CFLAGS=-fPIC
+-    DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load -install_name @executable_path/$@ -headerpad_max_install_names'
++    DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load -install_name $(libdir)/$@ -headerpad_max_install_names'
+     _OPTIMIZE_FLAGS=-O2
+     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
+     STRIP="$STRIP -x -S"
diff --git a/dev-libs/nspr/files/nspr-4.8.9-link-flags.patch b/dev-libs/nspr/files/nspr-4.8.9-link-flags.patch
new file mode 100644
index 0000000..dd3b132
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.8.9-link-flags.patch
@@ -0,0 +1,28 @@
+Use CFLAGS when linking.  Some flags can add functionality to generated
+code that requires extra libs to be linked in (eg. libgomp when using
+autoparallelization).  Other flags are required when building and linking
+(eg. -flto).
+
+https://bugs.gentoo.org/365975
+
+--- a/mozilla/nsprpub/config/autoconf.mk.in
++++ b/mozilla/nsprpub/config/autoconf.mk.in
+@@ -81,6 +81,7 @@ OS_DLLFLAGS	= @OS_DLLFLAGS@
+ DLLFLAGS	= @DLLFLAGS@
+ EXEFLAGS  = @EXEFLAGS@
+ OPTIMIZER	= @OPTIMIZER@
++LD_CFLAGS   = @CFLAGS@
+ 
+ PROFILE_GEN_CFLAGS  = @PROFILE_GEN_CFLAGS@
+ PROFILE_GEN_LDFLAGS = @PROFILE_GEN_LDFLAGS@
+--- a/mozilla/nsprpub/config/config.mk
++++ b/mozilla/nsprpub/config/config.mk
+@@ -72,7 +72,7 @@ NOMD_CFLAGS	= $(CC_ONLY_FLAGS) $(OPTIMIZER) $(NOMD_OS_CFLAGS)\
+ NOMD_CCFLAGS	= $(CCC_ONLY_FLAGS) $(OPTIMIZER) $(NOMD_OS_CFLAGS)\
+ 		  $(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
+ 
+-LDFLAGS		= $(OS_LDFLAGS)
++LDFLAGS		= $(LD_CFLAGS) $(OS_LDFLAGS)
+ 
+ # Enable profile-guided optimization
+ ifdef MOZ_PROFILE_GENERATE
diff --git a/dev-libs/nspr/files/nspr-4.9.5_nspr_config.patch b/dev-libs/nspr/files/nspr-4.9.5_nspr_config.patch
new file mode 100644
index 0000000..d4f9a7e
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.9.5_nspr_config.patch
@@ -0,0 +1,12 @@
+diff -urN a/mozilla/nsprpub/config/nspr-config.in b/mozilla/nsprpub/config/nspr-config.in
+--- a/mozilla/nsprpub/config/nspr-config.in	2012-03-06 07:13:39.000000000 -0600
++++ b/mozilla/nsprpub/config/nspr-config.in	2013-02-16 20:53:53.893489345 -0600
+@@ -126,7 +126,7 @@
+ fi
+ 
+ if test "$echo_libs" = "yes"; then
+-      libdirs=-L$libdir
++      libdirs=""
+       if test -n "$lib_plds"; then
+ 	libdirs="$libdirs -lplds${major_version}"
+       fi
diff --git a/dev-libs/nspr/nspr-4.10.2.ebuild b/dev-libs/nspr/nspr-4.10.2.ebuild
new file mode 100644
index 0000000..f88d410
--- /dev/null
+++ b/dev-libs/nspr/nspr-4.10.2.ebuild
@@ -0,0 +1,95 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/nspr/nspr-4.10.2.ebuild,v 1.1 2013/11/18 09:11:48 polynomial-c Exp $
+
+EAPI=3
+WANT_AUTOCONF="2.1"
+
+inherit autotools eutils multilib toolchain-funcs versionator
+
+MIN_PV="$(get_version_component_range 2)"
+
+DESCRIPTION="Netscape Portable Runtime"
+HOMEPAGE="http://www.mozilla.org/projects/nspr/"
+SRC_URI="ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v${PV}/src/${P}.tar.gz"
+
+LICENSE="|| ( MPL-2.0 GPL-2 LGPL-2.1 )"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 s390 sh sparc x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
+IUSE="debug"
+
+src_prepare() {
+	mkdir build inst
+	cd "${S}"/nspr/
+	epatch "${FILESDIR}"/${PN}-4.6.1-lang.patch
+	epatch "${FILESDIR}"/${PN}-4.7.0-prtime.patch
+	epatch "${FILESDIR}"/${PN}-4.7.1-solaris.patch
+	epatch "${FILESDIR}"/${PN}-4.7.4-solaris.patch
+	# epatch "${FILESDIR}"/${PN}-4.8.3-aix-gcc.patch
+	epatch "${FILESDIR}"/${PN}-4.8.4-darwin-install_name.patch
+	epatch "${FILESDIR}"/${PN}-4.8.9-link-flags.patch
+	# We do not need to pass -L$libdir via nspr-config --libs
+	epatch "${FILESDIR}"/${PN}-4.9.5_nspr_config.patch
+
+	# We must run eautoconf to regenerate configure
+	eautoconf
+
+	# make sure it won't find Perl out of Prefix
+	sed -i -e "s/perl5//g" "${S}"/nspr/configure || die
+
+	# Respect LDFLAGS
+	sed -i -e 's/\$(MKSHLIB) \$(OBJS)/\$(MKSHLIB) \$(LDFLAGS) \$(OBJS)/g' \
+		"${S}"/nspr/config/rules.mk || die
+}
+
+src_configure() {
+	cd "${S}"/build
+
+	# We use the standard BUILD_xxx but nspr uses HOST_xxx
+	tc-export_build_env BUILD_CC
+	export HOST_CC=${BUILD_CC} HOST_CFLAGS=${BUILD_CFLAGS} HOST_LDFLAGS=${BUILD_LDFLAGS}
+	tc-export AR CC CXX RANLIB
+	[[ ${CBUILD} != ${CHOST} ]] \
+		&& export CROSS_COMPILE=1 \
+		|| unset CROSS_COMPILE
+
+	local myconf
+	echo > "${T}"/test.c
+	${CC} ${CFLAGS} ${CPPFLAGS} -c "${T}"/test.c -o "${T}"/test.o || die
+	case $(file "${T}"/test.o) in
+		*32-bit*x86-64*|*64-bit*|*ppc64*|*x86_64*) myconf+=" --enable-64bit";;
+		*32-bit*|*ppc*|*i386*) ;;
+		*) die "Failed to detect whether your arch is 64bits or 32bits, disable distcc if you're using it, please";;
+	esac
+
+	# Ancient autoconf needs help finding the right tools.
+	LC_ALL="C" ECONF_SOURCE="../nspr" \
+	ac_cv_path_AR="${AR}" \
+	econf \
+		--libdir="${EPREFIX}/usr/$(get_libdir)" \
+		$(use_enable debug) \
+		$(use_enable !debug optimize) \
+		${myconf}
+}
+
+src_compile() {
+	cd "${S}"/build
+	emake || die "failed to build"
+}
+
+src_install() {
+	# Their build system is royally confusing, as usual
+	MINOR_VERSION=${MIN_PV} # Used for .so version
+	cd "${S}"/build
+	emake DESTDIR="${D}" install || die "emake install failed"
+
+	cd "${ED}"/usr/$(get_libdir)
+	einfo "removing static libraries as upstream has requested!"
+	rm -f *.a || die "failed to remove static libraries."
+
+	# install nspr-config
+	dobin "${S}"/build/config/nspr-config || die "failed to install nspr-config"
+
+	# Remove stupid files in /usr/bin
+	rm -f "${ED}"/usr/bin/prerr.properties || die "failed to cleanup unneeded files"
+}
diff --git a/metadata/md5-cache/dev-libs/nspr-4.10.2 b/metadata/md5-cache/dev-libs/nspr-4.10.2
new file mode 100644
index 0000000..23bf76b
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/nspr-4.10.2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure install prepare
+DEPEND=|| ( >=sys-devel/automake-1.11.1:1.11 >=sys-devel/automake-1.12:1.12 ) =sys-devel/autoconf-2.1* sys-devel/libtool
+DESCRIPTION=Netscape Portable Runtime
+EAPI=3
+HOMEPAGE=http://www.mozilla.org/projects/nspr/
+IUSE=debug
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 s390 sh sparc x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris
+LICENSE=|| ( MPL-2.0 GPL-2 LGPL-2.1 )
+SLOT=0
+SRC_URI=ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v4.10.2/src/nspr-4.10.2.tar.gz
+_eclasses_=autotools	1b0fa473be98091220edff9f51d06153	eutils	d40dc948067bd3db1c8ebf7d51897313	libtool	0fd90d183673bf1107465ec45849d1ea	multilib	ded93e450747134a079e647d888aa80b	multiprocessing	1512bdfe7004902b8cd2c466fc3df772	toolchain-funcs	3e30ef439a720915f8f4fd4fe75f704c	user	9e552f935106ff0bc92af16da64b4b29	versionator	865bc8b2fc9fcfb6d520bdf5a110f5ed
+_md5_=ca6c5082b238e7cd0e2f61ac6fd0c37d