aboutsummaryrefslogtreecommitdiff
blob: 07a0897b2572ede2b76e3758773005cb21c1b640 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=5
WANT_AUTOCONF="2.1"

inherit autotools-multilib autotools eutils multilib toolchain-funcs versionator ehooker

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="~amd64"
IUSE="debug"

DEPEND="abi_x86_32? (
		!<=app-emulation/emul-linux-x86-baselibs-20131008-r1
		!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
	)"

# We must run eautoconf to regenerate configure
AUTOTOOLS_AUTORECONF=yes
MULTILIB_WRAPPED_EXECUTABLES=(@/usr/bin/nspr-config)

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

	autotools-multilib_src_prepare

	# 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

	epatch_user
}

ehook autotools-multilib-global-pre_src_configure global_pre_configure
global_pre_configure() {
	ECONF_SOURCE="${S}"/nspr
	export LC_ALL=C

    # 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}

    [[ ${CBUILD} != ${CHOST} ]] \
        && export CROSS_COMPILE=1 \
        || unset CROSS_COMPILE

	myeconfargs+=(
		$(use_enable debug)
		$(use_enable !debug optimize)
	)
}

ehook autotools-multilib-per-abi-pre_src_configure abi_pre_configure
abi_pre_configure() {
	abi_pre_configure2() {
		echo > "${T}"/test-${ABI}.c
		${CC} ${CFLAGS} ${CPPFLAGS} -c "${T}"/test-${ABI}.c -o "${T}"/test-${ABI}.o || die
		case $(file "${T}"/test-${ABI}.o) in
			*32-bit*x86-64*|*64-bit*|*ppc64*|*x86_64*) myeconfargs+=(--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.
		export ac_cv_path_AR="${AR}"
	}

	myeconfargs+=(--libdir="${EPREFIX}/usr/@GET_LIBDIR@")
	MULTILIB_TC_EXPORT_VARS="AR CC CXX RANLIB" multilib_tc_export abi_pre_configure2
	return 0
}

ehook autotools-multilib-per-abi-post_src_configure abi_post_configure
abi_post_configure() {
	unset ac_cv_path_AR
}

ehook autotools-multilib-global-pre_src_install global_pre_install
global_pre_install() {
	# Their build system is royally confusing, as usual
	MINOR_VERSION=${MIN_PV} # Used for .so version
}

ehook autotools-multilib-per-abi-post_src_install abi_post_install
abi_post_install() {
	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 "${BUILD_DIR}"/config/nspr-config
}

ehook autotools-multilib-global-post_src_install post_install
post_install() {
	# Remove stupid files in /usr/bin
	rm -f "${ED}"/usr/bin/prerr.properties || die "failed to cleanup unneeded files"
}