libnss.mk 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. ################################################################################
  2. #
  3. # libnss
  4. #
  5. ################################################################################
  6. LIBNSS_VERSION = 3.97
  7. LIBNSS_SOURCE = nss-$(LIBNSS_VERSION).tar.gz
  8. LIBNSS_SITE = https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_$(subst .,_,$(LIBNSS_VERSION))_RTM/src
  9. LIBNSS_DISTDIR = dist
  10. LIBNSS_INSTALL_STAGING = YES
  11. LIBNSS_DEPENDENCIES = libnspr sqlite zlib
  12. LIBNSS_LICENSE = MPL-2.0
  13. LIBNSS_LICENSE_FILES = nss/COPYING
  14. LIBNSS_CPE_ID_VENDOR = mozilla
  15. LIBNSS_CPE_ID_PRODUCT = nss
  16. # Don't parallel build if make version = 4.3
  17. ifneq ($(filter $(RUNNING_MAKE_VERSION),4.3),)
  18. LIBNSS_MAKE = $(MAKE1)
  19. else
  20. LIBNSS_MAKE = $(MAKE)
  21. endif
  22. LIBNSS_CFLAGS = $(TARGET_CFLAGS)
  23. ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85862),y)
  24. LIBNSS_CFLAGS += -O0
  25. endif
  26. # Need to pass down TARGET_CFLAGS and TARGET_LDFLAGS
  27. define LIBNSS_FIXUP_LINUX_MK
  28. echo 'OS_CFLAGS += $(LIBNSS_CFLAGS)' >> $(@D)/nss/coreconf/Linux.mk
  29. echo 'LDFLAGS += $(TARGET_LDFLAGS)' >> $(@D)/nss/coreconf/Linux.mk
  30. endef
  31. LIBNSS_PRE_CONFIGURE_HOOKS += LIBNSS_FIXUP_LINUX_MK
  32. # --gc-sections triggers binutils ld segfault
  33. # https://sourceware.org/bugzilla/show_bug.cgi?id=21180
  34. ifeq ($(BR2_microblaze),y)
  35. define LIBNSS_DROP_GC_SECTIONS
  36. sed -i 's:-Wl,--gc-sections::g' $(@D)/nss/coreconf/Linux.mk
  37. endef
  38. LIBNSS_PRE_CONFIGURE_HOOKS += LIBNSS_DROP_GC_SECTIONS
  39. endif
  40. LIBNSS_BUILD_VARS = \
  41. MOZILLA_CLIENT=1 \
  42. NSPR_INCLUDE_DIR=$(STAGING_DIR)/usr/include/nspr \
  43. NSPR_LIB_DIR=$(STAGING_DIR)/usr/lib \
  44. NS_USE_GCC=1 \
  45. NSS_DISABLE_GTESTS=1 \
  46. NSS_USE_SYSTEM_SQLITE=1 \
  47. NATIVE_CC="$(HOSTCC)" \
  48. OS_ARCH="Linux" \
  49. OS_RELEASE="2.6" \
  50. OS_TEST=$(BR2_PACKAGE_LIBNSS_ARCH) \
  51. NSS_ENABLE_WERROR=0
  52. ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),)
  53. # Disable Altivec if not supported
  54. LIBNSS_BUILD_VARS += NSS_DISABLE_ALTIVEC=1
  55. endif
  56. ifeq ($(BR2_POWERPC_CPU_HAS_VSX),)
  57. # Disable VSX if not supported
  58. LIBNSS_BUILD_VARS += NSS_DISABLE_CRYPTO_VSX=1
  59. endif
  60. ifeq ($(BR2_ARM_CPU_HAS_NEON),)
  61. # Disable arm32-neon if neon is not supported
  62. LIBNSS_BUILD_VARS += NSS_DISABLE_ARM32_NEON=1
  63. endif
  64. ifeq ($(BR2_ARCH_IS_64),y)
  65. # MIPS64 n32 is treated as a 32-bit architecture by libnss.
  66. # See: https://bugzilla.mozilla.org/show_bug.cgi?id=1010730
  67. ifeq ($(BR2_MIPS_NABI32),)
  68. LIBNSS_BUILD_VARS += USE_64=1
  69. endif
  70. endif
  71. define LIBNSS_BUILD_CMDS
  72. $(TARGET_CONFIGURE_OPTS) $(LIBNSS_MAKE) -C $(@D)/nss coreconf \
  73. SOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \
  74. DIST=$(@D)/$(LIBNSS_DISTDIR) \
  75. CHECKLOC= \
  76. $(LIBNSS_BUILD_VARS)
  77. $(TARGET_CONFIGURE_OPTS) $(LIBNSS_MAKE) -C $(@D)/nss lib/dbm all \
  78. SOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \
  79. DIST=$(@D)/$(LIBNSS_DISTDIR) \
  80. CHECKLOC= \
  81. $(LIBNSS_BUILD_VARS) \
  82. NATIVE_FLAGS="$(HOST_CFLAGS) -DLINUX" \
  83. NATIVE_LDFLAGS="$(HOST_LDFLAGS)"
  84. endef
  85. define LIBNSS_INSTALL_STAGING_CMDS
  86. $(INSTALL) -m 755 -t $(STAGING_DIR)/usr/lib/ \
  87. $(@D)/$(LIBNSS_DISTDIR)/lib/*.so
  88. $(INSTALL) -m 755 -d $(STAGING_DIR)/usr/include/nss
  89. $(INSTALL) -m 644 -t $(STAGING_DIR)/usr/include/nss \
  90. $(@D)/$(LIBNSS_DISTDIR)/public/nss/*
  91. $(INSTALL) -m 755 -t $(STAGING_DIR)/usr/lib/ \
  92. $(@D)/$(LIBNSS_DISTDIR)/lib/*.a
  93. $(INSTALL) -D -m 0644 $(TOPDIR)/package/libnss/nss.pc.in \
  94. $(STAGING_DIR)/usr/lib/pkgconfig/nss.pc
  95. $(SED) 's/@VERSION@/$(LIBNSS_VERSION)/g;' \
  96. $(STAGING_DIR)/usr/lib/pkgconfig/nss.pc
  97. endef
  98. define LIBNSS_INSTALL_TARGET_CMDS
  99. $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/lib/ \
  100. $(@D)/$(LIBNSS_DISTDIR)/lib/*.so
  101. $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/include/nss
  102. $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/include/nss \
  103. $(@D)/$(LIBNSS_DISTDIR)/public/nss/*
  104. $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/lib/ \
  105. $(@D)/$(LIBNSS_DISTDIR)/lib/*.a
  106. $(INSTALL) -D -m 0644 $(TOPDIR)/package/libnss/nss.pc.in \
  107. $(TARGET_DIR)/usr/lib/pkgconfig/nss.pc
  108. $(INSTALL) -D -m 755 $(@D)/$(LIBNSS_DISTDIR)/bin/certutil \
  109. $(TARGET_DIR)/usr/bin/certutil
  110. $(SED) 's/@VERSION@/$(LIBNSS_VERSION)/g;' \
  111. $(TARGET_DIR)/usr/lib/pkgconfig/nss.pc
  112. endef
  113. HOST_LIBNSS_BUILD_VARS = \
  114. MOZILLA_CLIENT=1 \
  115. NSPR_INCLUDE_DIR=$(HOST_DIR)/include/nspr \
  116. NSPR_LIB_DIR=$(HOST_DIR)/lib \
  117. NS_USE_GCC=1 \
  118. NSS_DISABLE_GTESTS=1 \
  119. NSS_USE_SYSTEM_SQLITE=1 \
  120. SQLITE_INCLUDE_DIR=$(HOST_DIR)/include \
  121. ZLIB_INCLUDE_DIR=$(HOST_DIR)/include \
  122. NSS_ENABLE_WERROR=0
  123. HOST_LIBNSS_DEPENDENCIES = host-libnspr host-sqlite host-zlib
  124. ifneq ($(filter %64,$(HOSTARCH)),)
  125. HOST_LIBNSS_BUILD_VARS += USE_64=1
  126. endif
  127. define HOST_LIBNSS_BUILD_CMDS
  128. $(HOST_CONFIGURE_OPTS) $(LIBNSS_MAKE) -C $(@D)/nss coreconf \
  129. SOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \
  130. DIST=$(@D)/$(LIBNSS_DISTDIR) \
  131. CHECKLOC= \
  132. $(HOST_LIBNSS_BUILD_VARS)
  133. $(HOST_CONFIGURE_OPTS) $(LIBNSS_MAKE) -C $(@D)/nss lib/dbm all \
  134. SOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \
  135. DIST=$(@D)/$(LIBNSS_DISTDIR) \
  136. CHECKLOC= \
  137. $(HOST_LIBNSS_BUILD_VARS)
  138. endef
  139. define HOST_LIBNSS_INSTALL_CMDS
  140. $(INSTALL) -m 755 -t $(HOST_DIR)/lib/ \
  141. $(@D)/$(LIBNSS_DISTDIR)/lib/*.so
  142. $(INSTALL) -m 755 -d $(HOST_DIR)/include/nss
  143. $(INSTALL) -m 644 -t $(HOST_DIR)/include/nss \
  144. $(@D)/$(LIBNSS_DISTDIR)/public/nss/*
  145. $(INSTALL) -m 755 -t $(HOST_DIR)/lib/ \
  146. $(@D)/$(LIBNSS_DISTDIR)/lib/*.a
  147. $(INSTALL) -D -m 0644 $(TOPDIR)/package/libnss/nss.pc.in \
  148. $(HOST_DIR)/lib/pkgconfig/nss.pc
  149. $(SED) 's/@VERSION@/$(LIBNSS_VERSION)/g;' \
  150. $(HOST_DIR)/lib/pkgconfig/nss.pc
  151. $(SED) '/^prefix/s,=.*,=$(HOST_DIR),g;' \
  152. $(HOST_DIR)/lib/pkgconfig/nss.pc
  153. endef
  154. $(eval $(generic-package))
  155. $(eval $(host-generic-package))