# Contributor: Ɓukasz Jendrysik <scadu@yandex.com>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
setvar pkgname = 'nss'
setvar pkgver = '3.32'
setvar _ver = ${pkgver//./_}
setvar pkgrel = '0'
setvar pkgdesc = ""Mozilla Network Security Services""
setvar url = ""http://www.mozilla.org/projects/security/pki/nss/""
setvar arch = ""all""
setvar license = ""MPL GPL""
setvar options = ""!check""
setvar depends = ''
setvar depends_dev = ""nspr-dev""
setvar makedepends = ""nspr-dev sqlite-dev zlib-dev perl bsd-compat-headers""
setvar subpackages = ""$pkgname-static $pkgname-dev $pkgname-tools""
setvar source = ""http://ftp.mozilla.org/pub/security/$pkgname/releases/NSS_${pkgver//./_}_RTM/src/$pkgname-$pkgver.tar.gz
	nss.pc.in
	nss-util.pc.in
	nss-softokn.pc.in
	nss-config.in
	add_spi+cacert_ca_certs.patch
	""
setvar builddir = ""$srcdir/$pkgname-$pkgver""

proc prepare {
	default_prepare || return 1

	# Respect LDFLAGS
	sed -i -e 's/\$(MKSHLIB) -o/\$(MKSHLIB) \$(LDFLAGS) -o/g' \
		"$builddir"/nss/coreconf/rules.mk
}

proc build {
	cd $builddir
	unset CFLAGS
	unset CXXFLAGS
	export BUILD_OPT=1
	export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
	export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
	export FREEBL_NO_DEPEND=0
	export NSS_USE_SYSTEM_SQLITE=1
	export NSS_ENABLE_WERROR=0
	export NSPR_INCLUDE_DIR=$(pkg-config --cflags-only-I nspr | sed 's/-I//)
	export NSPR_LIB_DIR=$(pkg-config --libs-only-L nspr | sed 's/-L.//)
	case (CARCH) {
		*64* | s390x { export USE_64=1}
	}
	make -j 1 -C nss/coreconf || return 1
	make -j 1 -C nss/lib/dbm || return 1
	make -j 1 -C nss || return 1
}

proc package {
	setvar replaces = ""nss-dev libnss""

	cd $builddir

	install -m755 -d "$pkgdir"/usr/lib/pkgconfig
	install -m755 -d "$pkgdir"/usr/bin
	install -m755 -d "$pkgdir"/usr/include/nss/private

	setvar NSS_VMAJOR = $(awk '/#define.*NSS_VMAJOR/ {print $3}' nss/lib/nss/nss.h)
	msg "DEBUG: $NSS_VMAJOR"
	setvar NSS_VMINOR = $(awk '/#define.*NSS_VMINOR/ {print $3}' nss/lib/nss/nss.h)
	setvar NSS_VPATCH = $(awk '/#define.*NSS_VPATCH/ {print $3}' nss/lib/nss/nss.h)

	# pkgconfig files
	local _pc; for _pc in nss.pc nss-util.pc nss-softokn.pc {
		sed "$srcdir"/${_pc}.in \
			-e "s,%libdir%,/usr/lib,g" \
			-e "s,%prefix%,/usr,g" \
			-e "s,%exec_prefix%,/usr/bin,g" \
			-e "s,%includedir%,/usr/include/nss,g" \
			-e "s,%SOFTOKEN_VERSION%,$pkgver,g" \
			-e "s,%NSPR_VERSION%,$pkgver,g" \
			-e "s,%NSS_VERSION%,$pkgver,g" \
			-e "s,%NSSUTIL_VERSION%,$pkgver,g" \
			> "$pkgdir"/usr/lib/pkgconfig/${_pc} \
			|| return 1
	}
	ln -sf nss.pc "$pkgdir"/usr/lib/pkgconfig/mozilla-nss.pc || return 1
	chmod 644 "$pkgdir"/usr/lib/pkgconfig/*.pc || return 1

	# nss-config
	sed "$srcdir"/nss-config.in \
		-e "s,@libdir@,/usr/lib,g" \
		-e "s,@prefix@,/usr/bin,g" \
		-e "s,@exec_prefix@,/usr/bin,g" \
		-e "s,@includedir@,/usr/include/nss,g" \
		-e "s,@MOD_MAJOR_VERSION@,${NSS_VMAJOR},g" \
		-e "s,@MOD_MINOR_VERSION@,${NSS_VMINOR},g" \
		-e "s,@MOD_PATCH_VERSION@,${NSS_VPATCH},g" \
		> "$pkgdir"/usr/bin/nss-config || return 1
	chmod 755 "$pkgdir"/usr/bin/nss-config || return 1
	local minor=${pkgver#*.}
	setvar minor = ${minor%.*}
	for file in $(find dist/*.OBJ/lib -name "*.so") {
		install -m755 $file \
			"$pkgdir"/usr/lib/${file##*/}.$minor || return 1
		ln -s ${file##*/}.$minor "$pkgdir"/usr/lib/${file##*/}
	}
	install -m644 dist/*.OBJ/lib/*.a "$pkgdir"/usr/lib/ \
		|| return 1
	install -m644 dist/*.OBJ/lib/*.chk "$pkgdir"/usr/lib/ \
		|| return 1

	for file in certutil cmsutil crlutil modutil pk12util shlibsign \
			signtool signver ssltap {
		install -m755 dist/*.OBJ/bin/${file} "$pkgdir"/usr/bin/\
			|| return 1
	}
	install -m644 dist/public/nss/*.h "$pkgdir"/usr/include/nss/ \
		|| return 1
	install -m644 dist/private/nss/blapi.h dist/private/nss/alghmac.h "$pkgdir"/usr/include/nss/private/ \
		|| return 1
}

proc static {
	setvar pkgdesc = ""Static libraries for nss""
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/

	# remove libssl.a which conflicts with libressl
	rm "$subpkgdir"/usr/lib/libssl.a
}

proc dev {
	# we cannot use default_dev because we need the .so symlinks in main package
	local i= j=
	setvar pkgdesc = ""Development files for nss""
	setvar depends = ""$pkgname $depends_dev""

	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/nss-config "$subpkgdir"/usr/bin

	cd $pkgdir
	for i in usr/include usr/lib/pkgconfig usr/lib/*.a {
		if test -e "$pkgdir/$i" || test -L "$pkgdir/$i" {
			setvar d = ""$subpkgdir/${i%/*}""  # dirname $i
			mkdir -p $d
			mv "$pkgdir/$i" $d
			rmdir "$pkgdir/${i%/*}" 2>/dev/null || true
		}
	}
	mv "$pkgdir"/usr/lib/libgtest1.* "$pkgdir"/usr/lib/libnsssysinit.* \
		"$subpkgdir"/usr/lib
}

proc tools {
	setvar pkgdesc = ""Tools for the Network Security Services""
	setvar replaces = ""nss""
	mkdir -p "$subpkgdir"/usr/
	mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}

setvar sha512sums = ""7a01f81e23ef9649fd26b8423b015f4df5878c94f6ff591727086644b01db3dbc36de4e131cf70a6f84564e46c8decb7c4f7780fca12270eb900de1f8a11ee3c  nss-3.32.tar.gz
75dbd648a461940647ff373389cc73bc8ec609139cd46c91bcce866af02be6bcbb0524eb3dfb721fbd5b0bc68c20081ed6f7debf6b24317f2a7ba823e8d3c531  nss.pc.in
0f2efa8563b11da68669d281b4459289a56f5a3a906eb60382126f3adcfe47420cdcedc6ab57727a3afeeffa2bbb4c750b43bef8b5f343a75c968411dfa30e09  nss-util.pc.in
09c69d4cc39ec9deebc88696a80d0f15eb2d8c94d9daa234a2adfec941b63805eb4ce7f2e1943857b938bddcaee1beac246a0ec627b71563d9f846e6119a4a15  nss-softokn.pc.in
2971669e128f06a9af40a5ba88218fa7c9eecfeeae8b0cf42e14f31ed12bf6fa4c5ce60289e078f50e2669a9376b56b45d7c29d726a7eac69ebe1d1e22dc710b  nss-config.in
6e04556858499aec465d6670818465327ba2cb099061c2afee4b5cac8aa61938e0095906acfb38df6a1b70a6bde6dd69f08bb4c00a9d188e4cb3131b26c1bc16  add_spi+cacert_ca_certs.patch""