Commit 2016db44 authored by Will Newton's avatar Will Newton Committed by Peter Korsgaard
Browse files

package: add libnss



NSS is the Network Security Services library developed as part of
the Mozilla project. It provides similar functions to OpenSSL but
allows MPL, GPL and LGPL licensing.

[Peter: fix target install]
Signed-off-by: default avatarWill Newton <will.newton@imgtec.com>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent 36b4b852
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -250,6 +250,7 @@ menu "Crypto"
source "package/beecrypt/Config.in"
source "package/libgcrypt/Config.in"
source "package/libgpg-error/Config.in"
source "package/libnss/Config.in"
source "package/openssl/Config.in"
endmenu

+17 −0
Original line number Diff line number Diff line
config BR2_PACKAGE_LIBNSS
	bool "libnss"
	select BR2_PACKAGE_LIBNSPR
	select BR2_PACKAGE_SQLITE
	select BR2_PACKAGE_ZLIB
	depends on BR2_LARGEFILE
	help
	  Network Security Services (NSS) is a set of libraries designed
	  to support development of security-enabled client and server
	  applications. Applications built with NSS can support SSL v2
	  and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME,
	  and X.509 v3 certificates.

	  http://www.mozilla.org/projects/security/pki/nss/

comment "libnss requires a toolchain with LARGEFILE support"
	depends on !BR2_LARGEFILE
+27 −0
Original line number Diff line number Diff line

This patch allows us to set a value for the cross compiler via TARGETCC without
setting CC on the command line. CC is used for host tools as well as cross
compiled code so we cannot define it on the command line without breaking
the host tools build.

Signed-off-by: Will Newton <will.newton@imgtec.com>

--- libnss-3.12.9.old/mozilla/security/coreconf/Linux.mk	2011-03-01 10:31:21.517847183 +0000
+++ libnss-3.12.9/mozilla/security/coreconf/Linux.mk	2011-03-01 10:33:42.688648237 +0000
@@ -46,9 +46,13 @@
 	IMPL_STRATEGY = _PTH
 endif
 
-CC			= gcc
-CCC			= g++
-RANLIB			= ranlib
+TARGETCC		= gcc
+TARGETCCC		= g++
+TARGETRANLIB		= ranlib
+
+CC			= $(TARGETCC)
+CCC			= $(TARGETCCC)
+RANLIB			= $(TARGETRANLIB)
 
 DEFAULT_COMPILER = gcc
 
+19 −0
Original line number Diff line number Diff line

uCLibc does not define RTLD_NOLOAD.

Signed-off-by: Will Newton <will.newton@imgtec.com>

--- nss-3.12.9.old/mozilla/security/nss/lib/freebl/stubs.c	2011-07-08 13:32:54.964338355 +0100
+++ nss-3.12.9/mozilla/security/nss/lib/freebl/stubs.c	2011-07-08 13:33:57.255337490 +0100
@@ -535,6 +535,11 @@
     return SECSuccess;
 }
 
+/* uClibc does not define RTLD_NOLOAD. */
+#ifndef RTLD_NOLOAD
+#define RTLD_NOLOAD 0
+#endif
+
 /*
  * fetch the library if it's loaded. For NSS it should already be loaded
  */
+67 −0
Original line number Diff line number Diff line
#############################################################
#
# libnss
#
#############################################################
LIBNSS_VERSION = 3.12.9
LIBNSS_SOURCE = nss-$(LIBNSS_VERSION).tar.gz
LIBNSS_SITE_VERSION = $(subst .,_,$(LIBNSS_VERSION))
LIBNSS_SITE = https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_$(LIBNSS_SITE_VERSION)_RTM/src/
LIBNSS_SUBDIR = mozilla/security
LIBNSS_DISTDIR = mozilla/dist
LIBNSS_INSTALL_STAGING = YES
LIBNSS_DEPENDENCIES = libnspr sqlite zlib

LIBNSS_BUILD_VARS = MOZILLA_CLIENT=1 \
		NSPR_INCLUDE_DIR=$(STAGING_DIR)/usr/include/nspr \
		NSPR_LIB_DIR=$(STAGING_DIR)/usr/lib \
		BUILD_OPT=1 \
		NS_USE_GCC=1 \
		OPTIMIZER="$(TARGET_CFLAGS)" \
		NSS_USE_SYSTEM_SQLITE=1 \
		NSS_ENABLE_ECC=1 \
		NATIVE_CC="$(HOSTCC)" \
		TARGETCC="$(TARGET_CC)" \
		TARGETCCC="$(TARGET_CXX)" \
		TARGETRANLIB="$(TARGET_RANLIB)" \
		OS_ARCH="Linux" \
		OS_RELEASE="2.6" \
		OS_TEST="$(ARCH)"


define LIBNSS_BUILD_CMDS
	$(MAKE1) -C $(@D)/$(LIBNSS_SUBDIR)/nss build_coreconf build_dbm all \
			SOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \
			DIST=$(@D)/$(LIBNSS_DISTDIR) \
			CHECKLOC= \
			$(LIBNSS_BUILD_VARS)
endef

define LIBNSS_INSTALL_STAGING_CMDS
	$(INSTALL) -m 755 -t $(STAGING_DIR)/usr/lib/ \
		$(@D)/$(LIBNSS_DISTDIR)/lib/*.so
	$(INSTALL) -m 755 -d $(STAGING_DIR)/usr/include/nss
	$(INSTALL) -m 644 -t $(STAGING_DIR)/usr/include/nss \
		$(@D)/$(LIBNSS_DISTDIR)/public/nss/*
	$(INSTALL) -m 755 -t $(STAGING_DIR)/usr/lib/ \
		$(@D)/$(LIBNSS_DISTDIR)/lib/*.a
endef

define LIBNSS_INSTALL_TARGET_CMDS
	$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/lib/ \
		$(@D)/$(LIBNSS_DISTDIR)/lib/*.so
	$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/include/nss
	$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/include/nss \
		$(@D)/$(LIBNSS_DISTDIR)/public/nss/*
	$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/lib/ \
		$(@D)/$(LIBNSS_DISTDIR)/lib/*.a
endef

define LIBNSS_CLEAN_CMDS
	-$(MAKE1) -C $(@D)/$(LIBNSS_SUBDIR) clobber \
					clobber_dbm \
					clobber_coreconf \
					BUILD_OPT=1
endef

$(eval $(call GENTARGETS,package,libnss))