2018-01-19 03:59:58 +08:00
|
|
|
#
|
|
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
|
|
|
|
|
|
CC_WRAPPER =
|
|
|
|
|
CXX_WRAPPER =
|
|
|
|
|
|
|
|
|
|
default::
|
|
|
|
|
|
|
|
|
|
include $(topsrcdir)/config/makefiles/functions.mk
|
|
|
|
|
|
|
|
|
|
NSS_LIBS = \
|
|
|
|
|
nss3 \
|
|
|
|
|
nssutil3 \
|
|
|
|
|
smime3 \
|
|
|
|
|
ssl3 \
|
|
|
|
|
$(NULL)
|
|
|
|
|
|
|
|
|
|
ifdef MOZ_FOLD_LIBS
|
|
|
|
|
NSS_DLLS = $(LIBRARY_NAME)
|
|
|
|
|
else
|
|
|
|
|
NSS_DLLS = $(NSS_LIBS)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
NSS_EXTRA_DLLS = \
|
|
|
|
|
nssckbi \
|
|
|
|
|
softokn3 \
|
|
|
|
|
$(NULL)
|
|
|
|
|
|
|
|
|
|
ifndef NSS_DISABLE_DBM
|
|
|
|
|
NSS_EXTRA_DLLS += nssdbm3
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
SDK_LIBS = crmf
|
|
|
|
|
|
|
|
|
|
ifneq (,$(filter WINNT,$(OS_ARCH)))
|
|
|
|
|
SDK_LIBS += $(NSS_DLLS)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Default
|
|
|
|
|
HAVE_FREEBL_LIBS = 1
|
|
|
|
|
|
MoonchildProductions#1251 - Part 1: Restore initial Solaris support, fixed up.
Compared with what Pale Moon had for Solaris originally, this is mostly the same zero point I started patching from, but I've made the following changes here after reviewing all this initial code I never looked at closely before.
1. In package-manifest.in for both Basilisk and Pale Moon, I've made the SPARC code for libfreebl not interefere with the x86 code, use the proper build flags, and also updated it to allow a SPARC64 build which is more likely to be used than the 32-bit SPARC code we had there.
2. See Mozilla bug #832272 and the old rules.mk patch from around Firefox 30 in oracle/solaris-userland. I believe they screwed up NSINSTALL on Solaris when they were trying to streamline the NSS buildsystem, because they started having unexplained issues with it around that time after Firefox 22 that they never properly resolved until Mozilla began building NSS with gyp files. I'm actually not even sure how relevant the thing they broke actually is to Solaris at this point, bug 665509 is so old it predates Firefox itself and goes back to the Mozilla suite days. I believe $(INSTALL) -t was wrong, and they meant $(NSINSTALL) -t because that makes more sense and is closer to what was there originally. It's what they have for WINNT, and it's possible a fix more like that could serve for Solaris as well. Alternatively, we could get rid of all these half-broken Makefiles and start building NSS with gyp files like Mozilla did.
3. I've completely cut out support for the Sun compiler and taken into account the reality that everyone builds Firefox (and therefore its forks) with GCC now on Solaris. This alone helped clean up a lot of the uglier parts of the code.
4. I've updated all remaining SOLARIS build flags to the newer XP_SOLARIS, because the SOLARIS flag is no longer set when building Solaris.
5. I've confirmed the workaround in gtxFontconfigFonts.cpp is no longer necessary. The Solaris people got impatient about implementing a half-baked patch for a fontconfig feature that wasn't ready yet back in 2009, and somehow convinced Mozilla to patch their software to work around it when really they should have just fixed or removed their broken fontconfig patch. The feature they wanted has since been implemented properly, and no version of Solaris still uses the broken patch that required this fix. If anyone had ever properly audited this code, it would have been removed a long time ago.
2019-10-01 06:07:31 -05:00
|
|
|
# SunOS SPARC
|
|
|
|
|
|
|
|
|
|
ifeq ($(OS_ARCH), SunOS)
|
|
|
|
|
ifneq (86,$(findstring 86,$(OS_TEST)))
|
|
|
|
|
ifdef HAVE_64BIT_BUILD
|
|
|
|
|
HAVE_FREEBL_LIBS =
|
|
|
|
|
HAVE_FREEBL_LIBS_64 = 1
|
|
|
|
|
else
|
|
|
|
|
HAVE_FREEBL_LIBS =
|
|
|
|
|
HAVE_FREEBL_LIBS_32FPU = 1
|
|
|
|
|
HAVE_FREEBL_LIBS_32INT64 = 1
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
2018-01-19 03:59:58 +08:00
|
|
|
ifeq ($(OS_TARGET),Linux)
|
|
|
|
|
HAVE_FREEBL_LIBS =
|
|
|
|
|
HAVE_FREEBL_LIBS_PRIV = 1
|
|
|
|
|
FREEBL_LOWHASH_FLAG = FREEBL_LOWHASH=1
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifdef HAVE_FREEBL_LIBS
|
|
|
|
|
NSS_EXTRA_DLLS += freebl3
|
|
|
|
|
endif
|
|
|
|
|
ifdef HAVE_FREEBL_LIBS_PRIV
|
|
|
|
|
NSS_EXTRA_DLLS += freeblpriv3
|
|
|
|
|
endif
|
|
|
|
|
ifdef HAVE_FREEBL_LIBS_32INT32
|
|
|
|
|
NSS_EXTRA_DLLS += freebl_32int_3
|
|
|
|
|
endif
|
|
|
|
|
ifdef HAVE_FREEBL_LIBS_32FPU
|
|
|
|
|
NSS_EXTRA_DLLS += freebl_32fpu_3
|
|
|
|
|
endif
|
|
|
|
|
ifdef HAVE_FREEBL_LIBS_32INT64
|
|
|
|
|
NSS_EXTRA_DLLS += freebl_32int64_3
|
|
|
|
|
endif
|
|
|
|
|
ifdef HAVE_FREEBL_LIBS_64
|
|
|
|
|
NSS_EXTRA_DLLS += freebl_64int_3
|
|
|
|
|
NSS_EXTRA_DLLS += freebl_64fpu_3
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# For all variables such as DLLFLAGS, that may contain $(DIST)
|
|
|
|
|
DIST := $(ABS_DIST)
|
|
|
|
|
# TODO: move this all to configure, but in Python
|
|
|
|
|
ifndef MOZ_BUILD_NSPR
|
|
|
|
|
NSPR_INCLUDE_DIR = $(firstword $(filter -I%,$(NSPR_CFLAGS)))
|
|
|
|
|
ifneq (,$(strip $(NSPR_INCLUDE_DIR)))
|
|
|
|
|
NSPR_INCLUDE_DIR := $(subst -I,,$(subst -I$(DIST),-I$(ABS_DIST),$(NSPR_INCLUDE_DIR)))
|
|
|
|
|
else
|
|
|
|
|
$(error Your NSPR CFLAGS are broken!)
|
|
|
|
|
endif
|
|
|
|
|
NSPR_LIB_DIR = $(firstword $(filter -L%,$(NSPR_LIBS)))
|
|
|
|
|
ifneq (,$(strip $(NSPR_LIB_DIR)))
|
|
|
|
|
NSPR_LIB_DIR := $(subst -L,,$(subst -L$(DIST),-L$(ABS_DIST),$(NSPR_LIB_DIR)))
|
|
|
|
|
else
|
|
|
|
|
$(error Your NSPR LDFLAGS are broken!)
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# To get debug symbols from NSS
|
|
|
|
|
export MOZ_DEBUG_SYMBOLS
|
|
|
|
|
|
|
|
|
|
DEFAULT_GMAKE_FLAGS =
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += CC='$(CC)'
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += MT='$(MT)'
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += LD='$(LD)'
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += SOURCE_MD_DIR=$(ABS_DIST)
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += SOURCE_MDHEADERS_DIR=$(NSPR_INCLUDE_DIR)
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += DIST=$(ABS_DIST)
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSPR_INCLUDE_DIR=$(NSPR_INCLUDE_DIR)
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSPR_LIB_DIR=$(NSPR_LIB_DIR)
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += MOZILLA_CLIENT=1
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NO_MDUPDATE=1
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSS_ENABLE_ECC=1
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSS_ENABLE_TLS_1_3=1
|
|
|
|
|
ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_1)
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += OS_DLLFLAGS='-static-libgcc' NSPR31_LIB_PREFIX=lib
|
|
|
|
|
endif
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += SQLITE_LIB_NAME=mozsqlite3
|
2020-02-20 10:02:49 -05:00
|
|
|
DEFAULT_GMAKE_FLAGS += SQLITE_LIB_DIR=$(ABS_DIST)/../db/sqlite3/src
|
2018-01-19 03:59:58 +08:00
|
|
|
DEFAULT_GMAKE_FLAGS += SQLITE_INCLUDE_DIR=$(ABS_DIST)/include
|
|
|
|
|
ifdef NSS_DISABLE_DBM
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSS_DISABLE_DBM=1
|
|
|
|
|
endif
|
|
|
|
|
# Hack to force NSS build system to use "normal" object directories
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += topsrcdir='$(topsrcdir)'
|
|
|
|
|
# topsrcdir can't be expanded here because msys path mangling likes to break
|
|
|
|
|
# paths in that case.
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += BUILD='$(MOZ_BUILD_ROOT)/security/$$(subst $$(topsrcdir)/security/,,$$(CURDIR))'
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += BUILD_TREE='$$(BUILD)' OBJDIR='$$(BUILD)' DEPENDENCIES='$$(BUILD)/.deps' SINGLE_SHLIB_DIR='$$(BUILD)'
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += SOURCE_XP_DIR=$(ABS_DIST)
|
|
|
|
|
ifndef MOZ_DEBUG
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += BUILD_OPT=1 OPT_CODE_SIZE=1
|
|
|
|
|
endif
|
|
|
|
|
ifdef GNU_CC
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NS_USE_GCC=1
|
|
|
|
|
else
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NS_USE_GCC=
|
|
|
|
|
endif
|
|
|
|
|
ifdef USE_N32
|
|
|
|
|
# It is not really necessary to specify USE_PTHREADS=1. USE_PTHREADS
|
|
|
|
|
# merely adds _PTH to coreconf's OBJDIR name.
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += USE_N32=1 USE_PTHREADS=1
|
|
|
|
|
endif
|
|
|
|
|
ifdef HAVE_64BIT_BUILD
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += USE_64=1
|
|
|
|
|
endif
|
|
|
|
|
ifeq ($(OS_ARCH),WINNT)
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += OS_TARGET=WIN95
|
|
|
|
|
ifdef MOZ_DEBUG
|
|
|
|
|
ifndef MOZ_NO_DEBUG_RTL
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += USE_DEBUG_RTL=1
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
endif # WINNT
|
|
|
|
|
ifeq ($(OS_ARCH),Darwin)
|
|
|
|
|
# Make nsinstall use absolute symlinks by default when building NSS
|
|
|
|
|
# for Mozilla on Mac OS X. (Bugzilla bug 193164)
|
|
|
|
|
ifndef NSDISTMODE
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSDISTMODE=absolute_symlink
|
|
|
|
|
endif
|
|
|
|
|
ifdef MACOS_SDK_DIR
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += MACOS_SDK_DIR=$(MACOS_SDK_DIR)
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Turn off TLS compression support because it requires system zlib.
|
|
|
|
|
# See bug 580679 comment 18.
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSS_SSL_ENABLE_ZLIB=
|
|
|
|
|
|
|
|
|
|
# Disable building of the test programs in security/nss/lib/zlib
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += PROGRAMS=
|
|
|
|
|
|
|
|
|
|
# Disable creating .chk files. They will be generated from packager.mk
|
|
|
|
|
# When bug 681624 lands, we can replace CHECKLOC= with SKIP_SHLIBSIGN=1
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += CHECKLOC=
|
|
|
|
|
|
|
|
|
|
ifdef CROSS_COMPILE
|
|
|
|
|
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += \
|
|
|
|
|
NATIVE_CC='$(HOST_CC)' \
|
|
|
|
|
CC='$(CC)' \
|
|
|
|
|
CCC='$(CXX)' \
|
|
|
|
|
AS='$(AS)' \
|
|
|
|
|
AR='$(AR) $(AR_FLAGS:$@=$$@)' \
|
|
|
|
|
RANLIB='$(RANLIB)' \
|
|
|
|
|
RC='$(RC) $(RCFLAGS)' \
|
|
|
|
|
OS_ARCH='$(OS_ARCH)' \
|
|
|
|
|
OS_TEST='$(OS_TEST)' \
|
|
|
|
|
CPU_ARCH='$(TARGET_CPU)' \
|
|
|
|
|
$(NULL)
|
|
|
|
|
|
|
|
|
|
# Android has pthreads integrated into -lc, so OS_PTHREAD is set to nothing
|
|
|
|
|
ifeq ($(OS_TARGET), Android)
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += \
|
|
|
|
|
OS_RELEASE='2.6' \
|
|
|
|
|
OS_PTHREAD= \
|
|
|
|
|
$(NULL)
|
|
|
|
|
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += ARCHFLAG='$(filter-out -W%,$(CFLAGS)) -DCHECK_FORK_GETPID $(addprefix -DANDROID_VERSION=,$(ANDROID_VERSION)) -include $(topsrcdir)/security/manager/android_stub.h'
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifdef WRAP_LDFLAGS
|
|
|
|
|
NSS_EXTRA_LDFLAGS += $(WRAP_LDFLAGS)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# The SHARED_LIBS part is needed unconditionally on Android. It's not
|
|
|
|
|
# clear why this is the case, but see bug 1133073 (starting around
|
|
|
|
|
# comment #8) for context.
|
|
|
|
|
ifneq (,$(or $(MOZ_GLUE_WRAP_LDFLAGS), $(filter Android, $(OS_TARGET))))
|
|
|
|
|
NSS_EXTRA_LDFLAGS += $(SHARED_LIBS:$(DEPTH)%=$(MOZ_BUILD_ROOT)%) $(MOZ_GLUE_WRAP_LDFLAGS)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifneq (,$(NSS_EXTRA_LDFLAGS))
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += \
|
|
|
|
|
LDFLAGS='$(LDFLAGS) $(NSS_EXTRA_LDFLAGS)' \
|
|
|
|
|
DSO_LDOPTS='$(DSO_LDOPTS) $(LDFLAGS) $(NSS_EXTRA_LDFLAGS)' \
|
|
|
|
|
$(NULL)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += FREEBL_NO_DEPEND=0 $(FREEBL_LOWHASH_FLAG)
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSS_ALLOW_SSLKEYLOGFILE=1
|
|
|
|
|
|
|
|
|
|
ifdef MOZ_NO_WLZDEFS
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += ZDEFS_FLAG=
|
|
|
|
|
endif
|
|
|
|
|
ifdef MOZ_CFLAGS_NSS
|
|
|
|
|
NSS_XCFLAGS += $(filter-out -W%,$(CFLAGS))
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += DARWIN_DYLIB_VERSIONS='-compatibility_version 1 -current_version 1 $(LDFLAGS)'
|
|
|
|
|
endif
|
|
|
|
|
ifeq (1_1,$(CLANG_CL)_$(MOZ_ASAN))
|
|
|
|
|
XLDFLAGS := $(OS_LDFLAGS)
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += XLDFLAGS='$(XLDFLAGS)'
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSS_NO_PKCS11_BYPASS=1
|
|
|
|
|
|
|
|
|
|
# Put NSS headers directly under $(DIST)/include
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += PUBLIC_EXPORT_DIR='$(ABS_DIST)/include/$$(MODULE)'
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += SOURCE_XPHEADERS_DIR='$$(SOURCE_XP_DIR)/include/$$(MODULE)'
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += MODULE_INCLUDES='$$(addprefix -I$$(SOURCE_XP_DIR)/include/,$$(REQUIRES))'
|
|
|
|
|
|
|
|
|
|
# Work around NSS's MAKE_OBJDIR being racy. See bug #836220
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += MAKE_OBJDIR='$$(INSTALL) -D $$(OBJDIR)'
|
|
|
|
|
|
|
|
|
|
# Work around NSS adding IMPORT_LIBRARY to TARGETS with no rule for
|
|
|
|
|
# it, creating race conditions. See bug #836220
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += TARGETS='$$(LIBRARY) $$(SHARED_LIBRARY) $$(PROGRAM)'
|
|
|
|
|
|
|
|
|
|
ifdef MOZ_FOLD_LIBS_FLAGS
|
|
|
|
|
NSS_XCFLAGS += $(MOZ_FOLD_LIBS_FLAGS)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Pass on the MSVC target arch from the main build system.
|
|
|
|
|
# Note this is case- and switch-character sensitive, while
|
|
|
|
|
# the MSVC option is not.
|
|
|
|
|
ifeq (WINNT,$(OS_TARGET))
|
|
|
|
|
NSS_XCFLAGS += $(filter -arch:%,$(CFLAGS))
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Enable short header experiment. Firefox only.
|
|
|
|
|
NSS_XCFLAGS += -DNSS_ENABLE_TLS13_SHORT_HEADERS
|
|
|
|
|
|
|
|
|
|
# Export accumulated XCFLAGS to modify nss defaults.
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += XCFLAGS='$(NSS_XCFLAGS)'
|
|
|
|
|
|
|
|
|
|
NSS_SRCDIR = $(topsrcdir)
|
|
|
|
|
|
|
|
|
|
NSS_DIRS =
|
|
|
|
|
ifndef MOZ_FOLD_LIBS
|
|
|
|
|
NSS_DIRS += nss/lib
|
|
|
|
|
else
|
|
|
|
|
ifndef NSS_DISABLE_DBM
|
|
|
|
|
NSS_DIRS += nss/lib/dbm
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifneq (,$(filter %--build-id,$(LDFLAGS)))
|
|
|
|
|
DEFAULT_GMAKE_ENV = LDFLAGS=-Wl,--build-id
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifdef MOZ_FOLD_LIBS
|
|
|
|
|
# TODO: The following can be replaced by something simpler when bug 844880
|
|
|
|
|
# is fixed.
|
|
|
|
|
# All static libraries required for nss, smime, ssl and nssutil.
|
|
|
|
|
# The strip is needed to remove potential linefeed characters, since they hang
|
|
|
|
|
# around in some cases on Windows.
|
|
|
|
|
NSS_STATIC_LIBS := $(strip $(shell $(MAKE) --no-print-directory -f $(srcdir)/nss.mk DEPTH='$(DEPTH)' topsrcdir='$(topsrcdir)' srcdir='$(srcdir)' echo-variable-libs))
|
|
|
|
|
# Corresponding build directories
|
|
|
|
|
NSS_STATIC_DIRS := $(foreach lib,$(NSS_STATIC_LIBS),$(patsubst %/,%,$(dir $(lib))))
|
|
|
|
|
NSS_DIRS += $(NSS_STATIC_DIRS)
|
|
|
|
|
|
|
|
|
|
# TODO: The following can be replaced by something simpler when bug 844884
|
|
|
|
|
# is fixed.
|
|
|
|
|
# Remaining nss/lib directories
|
|
|
|
|
NSS_DIRS += nss/lib/freebl nss/lib/softoken nss/lib/jar nss/lib/crmf nss/lib/ckfw
|
|
|
|
|
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSS_DISABLE_LIBPKIX=1
|
|
|
|
|
|
|
|
|
|
ifeq (WINNT,$(OS_TARGET))
|
|
|
|
|
NSS_DIRS += nss/lib/zlib
|
|
|
|
|
endif
|
|
|
|
|
endif # MOZ_FOLD_LIBS
|
|
|
|
|
|
|
|
|
|
# Filter-out $(LIBRARY_NAME) because it's already handled in config/rules.mk.
|
|
|
|
|
NSS_DIST_DLL_FILES := $(addprefix $(DIST)/lib/$(DLL_PREFIX),$(addsuffix $(DLL_SUFFIX),$(filter-out $(LIBRARY_NAME),$(NSS_DLLS)) $(NSS_EXTRA_DLLS)))
|
|
|
|
|
NSS_DIST_DLL_DEST := $(DIST)/bin
|
|
|
|
|
NSS_DIST_DLL_TARGET := target
|
|
|
|
|
INSTALL_TARGETS += NSS_DIST_DLL
|
|
|
|
|
|
MoonchildProductions#1251 - Part 1: Restore initial Solaris support, fixed up.
Compared with what Pale Moon had for Solaris originally, this is mostly the same zero point I started patching from, but I've made the following changes here after reviewing all this initial code I never looked at closely before.
1. In package-manifest.in for both Basilisk and Pale Moon, I've made the SPARC code for libfreebl not interefere with the x86 code, use the proper build flags, and also updated it to allow a SPARC64 build which is more likely to be used than the 32-bit SPARC code we had there.
2. See Mozilla bug #832272 and the old rules.mk patch from around Firefox 30 in oracle/solaris-userland. I believe they screwed up NSINSTALL on Solaris when they were trying to streamline the NSS buildsystem, because they started having unexplained issues with it around that time after Firefox 22 that they never properly resolved until Mozilla began building NSS with gyp files. I'm actually not even sure how relevant the thing they broke actually is to Solaris at this point, bug 665509 is so old it predates Firefox itself and goes back to the Mozilla suite days. I believe $(INSTALL) -t was wrong, and they meant $(NSINSTALL) -t because that makes more sense and is closer to what was there originally. It's what they have for WINNT, and it's possible a fix more like that could serve for Solaris as well. Alternatively, we could get rid of all these half-broken Makefiles and start building NSS with gyp files like Mozilla did.
3. I've completely cut out support for the Sun compiler and taken into account the reality that everyone builds Firefox (and therefore its forks) with GCC now on Solaris. This alone helped clean up a lot of the uglier parts of the code.
4. I've updated all remaining SOLARIS build flags to the newer XP_SOLARIS, because the SOLARIS flag is no longer set when building Solaris.
5. I've confirmed the workaround in gtxFontconfigFonts.cpp is no longer necessary. The Solaris people got impatient about implementing a half-baked patch for a fontconfig feature that wasn't ready yet back in 2009, and somehow convinced Mozilla to patch their software to work around it when really they should have just fixed or removed their broken fontconfig patch. The feature they wanted has since been implemented properly, and no version of Solaris still uses the broken patch that required this fix. If anyone had ever properly audited this code, it would have been removed a long time ago.
2019-10-01 06:07:31 -05:00
|
|
|
ifeq ($(OS_ARCH)_$(1), SunOS_softokn3)
|
|
|
|
|
# has to use copy mode on Solaris, see #665509
|
|
|
|
|
$(DIST)/bin/$(DLL_PREFIX)softokn3$(DLL_SUFFIX): INSTALL := $(NSINSTALL) -t
|
|
|
|
|
endif
|
|
|
|
|
|
2018-01-19 03:59:58 +08:00
|
|
|
NSS_SDK_LIB_FILES := \
|
|
|
|
|
$(addprefix $(DIST)/lib/$(LIB_PREFIX),$(addsuffix .$(LIB_SUFFIX),$(SDK_LIBS))) \
|
|
|
|
|
$(addprefix $(DIST)/bin/$(DLL_PREFIX),$(addsuffix $(DLL_SUFFIX),$(NSS_DLLS))) \
|
|
|
|
|
$(NULL)
|
|
|
|
|
NSS_SDK_LIB_DEST := $(DIST)/sdk/lib
|
|
|
|
|
NSS_SDK_LIB_TARGET := target
|
|
|
|
|
INSTALL_TARGETS += NSS_SDK_LIB
|
|
|
|
|
|
|
|
|
|
ifdef MOZ_FOLD_LIBS
|
|
|
|
|
# Add all static libraries for nss, smime, ssl and nssutil
|
|
|
|
|
STATIC_LIBS += $(addprefix $(DEPTH)/security/,$(NSS_STATIC_LIBS))
|
|
|
|
|
|
|
|
|
|
IMPORT_LIB_FILES = $(IMPORT_LIBRARY)
|
|
|
|
|
IMPORT_LIB_DEST ?= $(DIST)/lib
|
|
|
|
|
IMPORT_LIB_TARGET = target
|
|
|
|
|
INSTALL_TARGETS += IMPORT_LIB
|
|
|
|
|
|
|
|
|
|
endif # MOZ_FOLD_LIBS
|
|
|
|
|
|
|
|
|
|
include $(topsrcdir)/config/rules.mk
|
|
|
|
|
|
|
|
|
|
ifeq (1,$(ALLOW_COMPILER_WARNINGS))
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSS_ENABLE_WERROR=0
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Can't pass this in DEFAULT_GMAKE_FLAGS because that overrides
|
|
|
|
|
# definitions in NSS, so just export it into the sub-make's environment.
|
|
|
|
|
ifeq (WINNT_1,$(OS_TARGET)_$(MOZ_MEMORY))
|
|
|
|
|
DLLFLAGS := -LIBPATH:$(ABS_DIST)/../mozglue/build -DEFAULTLIB:mozglue
|
|
|
|
|
export DLLFLAGS
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifdef MOZ_FOLD_LIBS
|
|
|
|
|
# Force the linker to include everything from the static libraries.
|
|
|
|
|
EXPAND_LIBS_EXEC += --extract
|
|
|
|
|
|
|
|
|
|
$(SHARED_LIBRARY): $(addprefix $(DEPTH)/security/,$(NSS_STATIC_LIBS))
|
|
|
|
|
|
|
|
|
|
ifdef IMPORT_LIB_SUFFIX
|
|
|
|
|
IMPORT_PREFIX = $(LIB_PREFIX)
|
|
|
|
|
IMPORT_SUFFIX = .$(IMPORT_LIB_SUFFIX)
|
|
|
|
|
else
|
|
|
|
|
IMPORT_PREFIX = $(DLL_PREFIX)
|
|
|
|
|
IMPORT_SUFFIX = $(DLL_SUFFIX)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
NSPR_IMPORT_LIBS = $(addprefix $(DIST)/lib/$(IMPORT_PREFIX),$(addsuffix $(IMPORT_SUFFIX),nspr4 plc4 plds4))
|
|
|
|
|
SQLITE_IMPORT_LIB = $(DIST)/lib/$(IMPORT_PREFIX)mozsqlite3$(IMPORT_SUFFIX)
|
|
|
|
|
|
|
|
|
|
# TODO: The following can be replaced by something simpler when bug 844884
|
|
|
|
|
# is fixed.
|
|
|
|
|
# Associate target files with the rules that build them.
|
|
|
|
|
$(DIST)/lib/$(LIB_PREFIX)crmf.$(LIB_SUFFIX): libs-nss/lib/crmf
|
|
|
|
|
$(DIST)/lib/$(DLL_PREFIX)freebl3$(DLL_SUFFIX): libs-nss/lib/freebl
|
|
|
|
|
$(DIST)/lib/$(DLL_PREFIX)nssckbi$(DLL_SUFFIX): libs-nss/lib/ckfw
|
|
|
|
|
$(DIST)/lib/$(DLL_PREFIX)softokn3$(DLL_SUFFIX): libs-nss/lib/softoken
|
|
|
|
|
$(DIST)/lib/$(DLL_PREFIX)nssdbm3$(DLL_SUFFIX): libs-nss/lib/softoken
|
|
|
|
|
$(foreach lib,$(NSS_STATIC_LIBS),$(eval $(DEPTH)/security/$(lib): libs-$(patsubst %/,%,$(dir $(lib)))))
|
|
|
|
|
|
|
|
|
|
# Create fake import libraries for the folded libraries, so that linking
|
|
|
|
|
# against them works both for the NSS build system (see dependencies below)
|
|
|
|
|
# and for the rest of the mozilla build system.
|
|
|
|
|
$(NSPR_IMPORT_LIBS) \
|
|
|
|
|
$(SQLITE_IMPORT_LIB) \
|
|
|
|
|
$(DIST)/lib/$(IMPORT_PREFIX)nssutil3$(IMPORT_SUFFIX) \
|
|
|
|
|
$(DIST)/lib/$(IMPORT_PREFIX)ssl3$(IMPORT_SUFFIX) \
|
|
|
|
|
$(DIST)/lib/$(IMPORT_PREFIX)smime3$(IMPORT_SUFFIX): $(DIST)/lib/$(IMPORT_PREFIX)nss3$(IMPORT_SUFFIX)
|
|
|
|
|
ifeq (WINNT,$(OS_TARGET))
|
|
|
|
|
cp $< $@
|
|
|
|
|
else
|
|
|
|
|
ln -sf $< $@
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Interdependencies between nss sub-directories, and dependencies on NSPR/SQLite
|
|
|
|
|
libs-nss/lib/ckfw: libs-nss/lib/nss/../base $(NSPR_IMPORT_LIBS)
|
|
|
|
|
libs-nss/lib/softoken: $(NSPR_IMPORT_LIBS) $(SQLITE_IMPORT_LIB)
|
|
|
|
|
libs-nss/lib/softoken: libs-nss/lib/freebl
|
|
|
|
|
ifndef NSS_DISABLE_DBM
|
|
|
|
|
libs-nss/lib/softoken: libs-nss/lib/dbm
|
|
|
|
|
endif
|
|
|
|
|
libs-nss/lib/softoken: $(DIST)/lib/$(IMPORT_PREFIX)nssutil3$(IMPORT_SUFFIX)
|
|
|
|
|
libs-nss/lib/freebl: $(DIST)/lib/$(IMPORT_PREFIX)nssutil3$(IMPORT_SUFFIX) $(NSPR_IMPORT_LIBS)
|
|
|
|
|
|
|
|
|
|
# For each directory where we build static libraries, force the NSS build system
|
|
|
|
|
# to only build static libraries.
|
|
|
|
|
$(addprefix libs-,$(NSS_STATIC_DIRS)): DEFAULT_GMAKE_FLAGS += SHARED_LIBRARY= IMPORT_LIBRARY=
|
|
|
|
|
else
|
|
|
|
|
$(STATIC_LIBS) $(NSS_DIST_DLL_FILES) $(NSS_SDK_LIB_FILES): libs-nss/lib
|
|
|
|
|
endif # MOZ_FOLD_LIBS
|
|
|
|
|
|
|
|
|
|
ifeq ($(NSINSTALL_PY),$(NSINSTALL))
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += PYTHON='$(PYTHON)'
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSINSTALL_PY='$(abspath $(topsrcdir)/config/nsinstall.py)'
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSINSTALL='$$(PYTHON) $$(NSINSTALL_PY)'
|
|
|
|
|
else
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += NSINSTALL='$(abspath $(NSINSTALL))'
|
|
|
|
|
endif
|
|
|
|
|
ifeq ($(OS_ARCH),WINNT)
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += INSTALL='$$(NSINSTALL) -t'
|
|
|
|
|
endif
|
|
|
|
|
DEFAULT_GMAKE_FLAGS += $(EXTRA_GMAKE_FLAGS)
|
|
|
|
|
|
|
|
|
|
$(addprefix libs-,$(NSS_DIRS)): libs-%:
|
|
|
|
|
# Work around NSS's export rule being racy when recursing for private_export
|
|
|
|
|
# See bug #836220.
|
|
|
|
|
$(addprefix export-,$(NSS_DIRS)): EXTRA_GMAKE_FLAGS = PRIVATE_EXPORTS=
|
|
|
|
|
$(addprefix export-,$(NSS_DIRS)): export-%: private_export-%
|
|
|
|
|
$(addprefix private_export-,$(NSS_DIRS)): EXTRA_GMAKE_FLAGS =
|
|
|
|
|
$(addprefix private_export-,$(NSS_DIRS)): private_export-%:
|
|
|
|
|
|
|
|
|
|
$(foreach p,libs export private_export,$(addprefix $(p)-,$(NSS_DIRS))):
|
|
|
|
|
$(DEFAULT_GMAKE_ENV) $(MAKE) -C $(NSS_SRCDIR)/security/$* $(@:-$*=) $(DEFAULT_GMAKE_FLAGS)
|
|
|
|
|
|
|
|
|
|
export:: $(addprefix export-,$(NSS_DIRS))
|
|
|
|
|
|
|
|
|
|
$(addprefix clean-,$(NSS_DIRS)): clean-%:
|
|
|
|
|
$(MAKE) -C $(NSS_SRCDIR)/security/$* $(DEFAULT_GMAKE_FLAGS) clean
|
|
|
|
|
|
|
|
|
|
clean clobber clobber_all realclean distclean depend:: $(addprefix clean-,$(NSS_DIRS))
|
|
|
|
|
|
|
|
|
|
# Work around NSS build system race condition creating certdata.c in
|
|
|
|
|
# security/nss/lib/ckfw/builtins. See bug #836220.
|
|
|
|
|
libs-nss/lib$(if $(MOZ_FOLD_LIBS),/ckfw): $(call mkdir_deps,$(DEPTH)/security/nss/lib/ckfw/builtins)
|
|
|
|
|
|