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: Will Newton <will.newton@imgtec.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
This commit is contained in:
Will Newton 2011-07-08 14:19:16 +01:00 committed by Peter Korsgaard
parent 36b4b852ee
commit 2016db44e8
5 changed files with 131 additions and 0 deletions

View File

@ -250,6 +250,7 @@ menu "Crypto"
source "package/beecrypt/Config.in" source "package/beecrypt/Config.in"
source "package/libgcrypt/Config.in" source "package/libgcrypt/Config.in"
source "package/libgpg-error/Config.in" source "package/libgpg-error/Config.in"
source "package/libnss/Config.in"
source "package/openssl/Config.in" source "package/openssl/Config.in"
endmenu endmenu

17
package/libnss/Config.in Normal file
View File

@ -0,0 +1,17 @@
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

View File

@ -0,0 +1,27 @@
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

View File

@ -0,0 +1,19 @@
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
package/libnss/libnss.mk Normal file
View File

@ -0,0 +1,67 @@
#############################################################
#
# 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))