security/build/Makefile.in

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/security/build/Makefile.in	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,494 @@
     1.4 +#
     1.5 +# This Source Code Form is subject to the terms of the Mozilla Public
     1.6 +# License, v. 2.0. If a copy of the MPL was not distributed with this
     1.7 +# file, You can obtain one at http://mozilla.org/MPL/2.0/.
     1.8 +
     1.9 +CC_WRAPPER =
    1.10 +CXX_WRAPPER =
    1.11 +
    1.12 +default::
    1.13 +
    1.14 +include $(topsrcdir)/config/makefiles/functions.mk
    1.15 +
    1.16 +NSS_LIBS = \
    1.17 +  nss3 \
    1.18 +  nssutil3 \
    1.19 +  smime3 \
    1.20 +  ssl3 \
    1.21 +  $(NULL)
    1.22 +
    1.23 +ifdef MOZ_FOLD_LIBS
    1.24 +NSS_DLLS = $(LIBRARY_NAME)
    1.25 +else
    1.26 +NSS_DLLS = $(NSS_LIBS)
    1.27 +endif
    1.28 +
    1.29 +NSS_EXTRA_DLLS = \
    1.30 +  nssckbi \
    1.31 +  softokn3 \
    1.32 +  $(NULL)
    1.33 +
    1.34 +ifndef NSS_DISABLE_DBM
    1.35 +NSS_EXTRA_DLLS += nssdbm3
    1.36 +endif
    1.37 +
    1.38 +SDK_LIBS = crmf
    1.39 +
    1.40 +ifneq (,$(filter WINNT,$(OS_ARCH)))
    1.41 +SDK_LIBS += $(NSS_DLLS)
    1.42 +endif
    1.43 +
    1.44 +# Default
    1.45 +HAVE_FREEBL_LIBS = 1
    1.46 +
    1.47 +# 32-bit HP-UX PA-RISC
    1.48 +ifeq ($(OS_ARCH), HP-UX)
    1.49 +ifneq ($(OS_TEST), ia64)
    1.50 +ifndef HAVE_64BIT_OS
    1.51 +HAVE_FREEBL_LIBS =
    1.52 +HAVE_FREEBL_LIBS_32INT32 = 1
    1.53 +HAVE_FREEBL_LIBS_32FPU = 1
    1.54 +endif
    1.55 +endif
    1.56 +endif
    1.57 +
    1.58 +# SunOS SPARC
    1.59 +ifeq ($(OS_ARCH), SunOS)
    1.60 +ifneq (86,$(findstring 86,$(OS_TEST)))
    1.61 +ifdef HAVE_64BIT_OS
    1.62 +HAVE_FREEBL_LIBS =
    1.63 +HAVE_FREEBL_LIBS_64 = 1
    1.64 +else
    1.65 +HAVE_FREEBL_LIBS =
    1.66 +HAVE_FREEBL_LIBS_32FPU = 1
    1.67 +HAVE_FREEBL_LIBS_32INT64 = 1
    1.68 +endif
    1.69 +endif
    1.70 +endif
    1.71 +
    1.72 +ifdef HAVE_FREEBL_LIBS
    1.73 +NSS_EXTRA_DLLS += freebl3
    1.74 +endif
    1.75 +ifdef HAVE_FREEBL_LIBS_32INT32
    1.76 +NSS_EXTRA_DLLS += freebl_32int_3
    1.77 +endif
    1.78 +ifdef HAVE_FREEBL_LIBS_32FPU
    1.79 +NSS_EXTRA_DLLS += freebl_32fpu_3
    1.80 +endif
    1.81 +ifdef HAVE_FREEBL_LIBS_32INT64
    1.82 +NSS_EXTRA_DLLS += freebl_32int64_3
    1.83 +endif
    1.84 +ifdef HAVE_FREEBL_LIBS_64
    1.85 +NSS_EXTRA_DLLS += freebl_64int_3
    1.86 +NSS_EXTRA_DLLS += freebl_64fpu_3
    1.87 +endif
    1.88 +
    1.89 +ABS_DIST := $(abspath $(DIST))
    1.90 +ifeq ($(HOST_OS_ARCH),WINNT)
    1.91 +ifdef CYGDRIVE_MOUNT
    1.92 +ABS_DIST := $(shell cygpath -w $(ABS_DIST) | sed -e 's|\\|/|g')
    1.93 +endif
    1.94 +ifneq (,$(filter mingw%,$(host_os)))
    1.95 +ABS_DIST := $(shell cd $(DIST) && pwd -W)
    1.96 +endif
    1.97 +endif
    1.98 +# For all variables such as DLLFLAGS, that may contain $(DIST)
    1.99 +DIST := $(ABS_DIST)
   1.100 +NSPR_INCLUDE_DIR = $(firstword $(filter -I%,$(NSPR_CFLAGS)))
   1.101 +ifneq (,$(strip $(NSPR_INCLUDE_DIR)))
   1.102 +NSPR_INCLUDE_DIR := $(subst -I,,$(subst -I$(DIST),-I$(ABS_DIST),$(NSPR_INCLUDE_DIR)))
   1.103 +else
   1.104 +NSPR_INCLUDE_DIR = $(ABS_DIST)/include/nspr
   1.105 +endif
   1.106 +NSPR_LIB_DIR = $(firstword $(filter -L%,$(NSPR_LIBS)))
   1.107 +ifneq (,$(strip $(NSPR_LIB_DIR)))
   1.108 +NSPR_LIB_DIR := $(subst -L,,$(subst -L$(DIST),-L$(ABS_DIST),$(NSPR_LIB_DIR)))
   1.109 +else
   1.110 +NSPR_LIB_DIR = $(ABS_DIST)/lib
   1.111 +endif
   1.112 +# Can't pass this in DEFAULT_GMAKE_FLAGS because that overrides
   1.113 +# definitions in NSS, so just export it into the sub-make's environment.
   1.114 +ifeq (WINNT_1,$(OS_TARGET)_$(MOZ_MEMORY))
   1.115 +export DLLFLAGS
   1.116 +endif
   1.117 +
   1.118 +# To get debug symbols from NSS
   1.119 +export MOZ_DEBUG_SYMBOLS
   1.120 +
   1.121 +DEFAULT_GMAKE_FLAGS =
   1.122 +DEFAULT_GMAKE_FLAGS += CC='$(CC)'
   1.123 +DEFAULT_GMAKE_FLAGS += SOURCE_MD_DIR=$(ABS_DIST)
   1.124 +DEFAULT_GMAKE_FLAGS += SOURCE_MDHEADERS_DIR=$(NSPR_INCLUDE_DIR)
   1.125 +DEFAULT_GMAKE_FLAGS += DIST=$(ABS_DIST)
   1.126 +DEFAULT_GMAKE_FLAGS += NSPR_INCLUDE_DIR=$(NSPR_INCLUDE_DIR)
   1.127 +DEFAULT_GMAKE_FLAGS += NSPR_LIB_DIR=$(NSPR_LIB_DIR)
   1.128 +DEFAULT_GMAKE_FLAGS += MOZILLA_CLIENT=1
   1.129 +DEFAULT_GMAKE_FLAGS += NO_MDUPDATE=1
   1.130 +DEFAULT_GMAKE_FLAGS += NSS_ENABLE_ECC=1
   1.131 +ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_1)
   1.132 +DEFAULT_GMAKE_FLAGS += OS_DLLFLAGS='-static-libgcc'
   1.133 +endif
   1.134 +ifndef MOZ_NATIVE_SQLITE
   1.135 +ifdef MOZ_FOLD_LIBS
   1.136 +DEFAULT_GMAKE_FLAGS += SQLITE_LIB_NAME=nss3
   1.137 +else
   1.138 +DEFAULT_GMAKE_FLAGS += SQLITE_LIB_NAME=mozsqlite3
   1.139 +endif # MOZ_FOLD_LIBS
   1.140 +DEFAULT_GMAKE_FLAGS += SQLITE_INCLUDE_DIR=$(ABS_DIST)/include
   1.141 +endif
   1.142 +ifdef NSS_DISABLE_DBM 
   1.143 +DEFAULT_GMAKE_FLAGS += NSS_DISABLE_DBM=1
   1.144 +endif
   1.145 +# Hack to force NSS build system to use "normal" object directories
   1.146 +DEFAULT_GMAKE_FLAGS += topsrcdir='$(topsrcdir)'
   1.147 +# topsrcdir can't be expanded here because msys path mangling likes to break
   1.148 +# paths in that case.
   1.149 +DEFAULT_GMAKE_FLAGS += BUILD='$(MOZ_BUILD_ROOT)/security/$$(subst $$(topsrcdir)/security/,,$$(CURDIR))'
   1.150 +DEFAULT_GMAKE_FLAGS += BUILD_TREE='$$(BUILD)' OBJDIR='$$(BUILD)' DEPENDENCIES='$$(BUILD)/.deps' SINGLE_SHLIB_DIR='$$(BUILD)'
   1.151 +DEFAULT_GMAKE_FLAGS += SOURCE_XP_DIR=$(ABS_DIST)
   1.152 +ifndef MOZ_DEBUG
   1.153 +DEFAULT_GMAKE_FLAGS += BUILD_OPT=1 OPT_CODE_SIZE=1
   1.154 +endif
   1.155 +ifdef GNU_CC
   1.156 +DEFAULT_GMAKE_FLAGS += NS_USE_GCC=1
   1.157 +else
   1.158 +DEFAULT_GMAKE_FLAGS += NS_USE_GCC=
   1.159 +endif
   1.160 +ifdef USE_N32
   1.161 +# It is not really necessary to specify USE_PTHREADS=1.  USE_PTHREADS
   1.162 +# merely adds _PTH to coreconf's OBJDIR name.
   1.163 +DEFAULT_GMAKE_FLAGS += USE_N32=1 USE_PTHREADS=1
   1.164 +endif
   1.165 +ifdef HAVE_64BIT_OS
   1.166 +DEFAULT_GMAKE_FLAGS += USE_64=1
   1.167 +endif
   1.168 +ifeq ($(OS_ARCH),WINNT)
   1.169 +DEFAULT_GMAKE_FLAGS += OS_TARGET=WIN95
   1.170 +ifdef MOZ_DEBUG
   1.171 +ifndef MOZ_NO_DEBUG_RTL
   1.172 +DEFAULT_GMAKE_FLAGS += USE_DEBUG_RTL=1
   1.173 +endif
   1.174 +endif
   1.175 +endif # WINNT
   1.176 +ifeq ($(OS_ARCH),Darwin)
   1.177 +# Make nsinstall use absolute symlinks by default when building NSS
   1.178 +# for Mozilla on Mac OS X. (Bugzilla bug 193164)
   1.179 +ifndef NSDISTMODE
   1.180 +DEFAULT_GMAKE_FLAGS += NSDISTMODE=absolute_symlink
   1.181 +endif
   1.182 +ifdef MACOS_SDK_DIR
   1.183 +DEFAULT_GMAKE_FLAGS += MACOS_SDK_DIR=$(MACOS_SDK_DIR)
   1.184 +endif
   1.185 +endif
   1.186 +
   1.187 +# Turn off TLS compression support because it requires system zlib.
   1.188 +# See bug 580679 comment 18.
   1.189 +DEFAULT_GMAKE_FLAGS += NSS_ENABLE_ZLIB=
   1.190 +
   1.191 +# Disable building of the test programs in security/nss/lib/zlib
   1.192 +DEFAULT_GMAKE_FLAGS += PROGRAMS=
   1.193 +
   1.194 +# Disable creating .chk files. They will be generated from packager.mk
   1.195 +# When bug 681624 lands, we can replace CHECKLOC= with SKIP_SHLIBSIGN=1
   1.196 +DEFAULT_GMAKE_FLAGS += CHECKLOC=
   1.197 +
   1.198 +ifdef CROSS_COMPILE
   1.199 +
   1.200 +DEFAULT_GMAKE_FLAGS += \
   1.201 +	NATIVE_CC='$(HOST_CC)' \
   1.202 +	CC='$(CC)' \
   1.203 +	CCC='$(CXX)' \
   1.204 +	LINK='$(LD)' \
   1.205 +	AS='$(AS)' \
   1.206 +	AR='$(AR) $(AR_FLAGS:$@=$$@)' \
   1.207 +	RANLIB='$(RANLIB)' \
   1.208 +	RC='$(RC) $(RCFLAGS)' \
   1.209 +	OS_ARCH='$(OS_ARCH)' \
   1.210 +	OS_TEST='$(OS_TEST)' \
   1.211 +	CPU_ARCH='$(TARGET_CPU)' \
   1.212 +	$(NULL)
   1.213 +
   1.214 +# Android has pthreads integrated into -lc, so OS_PTHREAD is set to nothing
   1.215 +ifeq ($(OS_TARGET), Android)
   1.216 +DEFAULT_GMAKE_FLAGS += \
   1.217 +	OS_RELEASE='2.6' \
   1.218 +	OS_PTHREAD= \
   1.219 +	$(NULL)
   1.220 +
   1.221 +DEFAULT_GMAKE_FLAGS += ARCHFLAG='$(CFLAGS) -DCHECK_FORK_GETPID -DRTLD_NOLOAD=0 -include $(topsrcdir)/security/manager/android_stub.h'
   1.222 +endif
   1.223 +endif
   1.224 +
   1.225 +ifdef WRAP_LDFLAGS
   1.226 +DEFAULT_GMAKE_FLAGS += \
   1.227 +	LDFLAGS='$(LDFLAGS) $(WRAP_LDFLAGS)' \
   1.228 +	DSO_LDOPTS='$(DSO_LDOPTS) $(LDFLAGS) $(WRAP_LDFLAGS)' \
   1.229 +	$(NULL)
   1.230 +endif
   1.231 +
   1.232 +DEFAULT_GMAKE_FLAGS += FREEBL_NO_DEPEND=0
   1.233 +ifeq ($(OS_TARGET),Linux)
   1.234 +DEFAULT_GMAKE_FLAGS += FREEBL_LOWHASH=1
   1.235 +endif
   1.236 +
   1.237 +ifdef MOZ_NO_WLZDEFS
   1.238 +DEFAULT_GMAKE_FLAGS += ZDEFS_FLAG=
   1.239 +endif
   1.240 +ifdef MOZ_CFLAGS_NSS
   1.241 +DEFAULT_GMAKE_FLAGS += XCFLAGS='$(CFLAGS)'
   1.242 +DEFAULT_GMAKE_FLAGS += DARWIN_DYLIB_VERSIONS='-compatibility_version 1 -current_version 1 $(LDFLAGS)'
   1.243 +endif
   1.244 +
   1.245 +DEFAULT_GMAKE_FLAGS += NSS_NO_PKCS11_BYPASS=1
   1.246 +
   1.247 +# Put NSS headers directly under $(DIST)/include
   1.248 +DEFAULT_GMAKE_FLAGS += PUBLIC_EXPORT_DIR='$(ABS_DIST)/include/$$(MODULE)'
   1.249 +DEFAULT_GMAKE_FLAGS += SOURCE_XPHEADERS_DIR='$$(SOURCE_XP_DIR)/include/$$(MODULE)'
   1.250 +DEFAULT_GMAKE_FLAGS += MODULE_INCLUDES='$$(addprefix -I$$(SOURCE_XP_DIR)/include/,$$(REQUIRES))'
   1.251 +
   1.252 +# Work around NSS's MAKE_OBJDIR being racy. See bug #836220
   1.253 +DEFAULT_GMAKE_FLAGS += MAKE_OBJDIR='$$(INSTALL) -D $$(OBJDIR)'
   1.254 +
   1.255 +# Work around NSS adding IMPORT_LIBRARY to TARGETS with no rule for
   1.256 +# it, creating race conditions. See bug #836220
   1.257 +DEFAULT_GMAKE_FLAGS += TARGETS='$$(LIBRARY) $$(SHARED_LIBRARY) $$(PROGRAM)'
   1.258 +
   1.259 +ifdef MOZ_B2G_CERTDATA
   1.260 +include $(srcdir)/b2g-certdata.mk
   1.261 +endif
   1.262 +
   1.263 +ifdef MOZ_NSS_PATCH
   1.264 +# If we're applying a patch, we'll copy the NSS source to the objdir
   1.265 +# and build it from there.
   1.266 +NSS_SRCDIR = $(CURDIR)/nss
   1.267 +
   1.268 +# This will copy and patch the NSS source for every build.
   1.269 +# Since we "cp -p", it won't force rebuilds for most files, just
   1.270 +# for patched files, but that's easier than trying to track
   1.271 +# dependencies for patched files.
   1.272 +export::
   1.273 +	rm -rf $(NSS_SRCDIR)
   1.274 +	$(NSINSTALL) -D $(NSS_SRCDIR)/security
   1.275 +	cp -Rp $(topsrcdir)/security/nss $(NSS_SRCDIR)/security
   1.276 +	cp -Rp $(topsrcdir)/security/coreconf $(NSS_SRCDIR)/security
   1.277 +	cp -Rp $(topsrcdir)/security/dbm $(NSS_SRCDIR)/security
   1.278 +	cp -Rp $(topsrcdir)/dbm $(NSS_SRCDIR)
   1.279 +	(cd $(NSS_SRCDIR) && patch -p1 < $(abspath $(MOZ_NSS_PATCH)))
   1.280 +else
   1.281 +NSS_SRCDIR = $(topsrcdir)
   1.282 +endif
   1.283 +
   1.284 +NSS_DIRS =
   1.285 +ifndef MOZ_FOLD_LIBS
   1.286 +NSS_DIRS += nss/lib
   1.287 +else
   1.288 +ifndef NSS_DISABLE_DBM
   1.289 +NSS_DIRS += nss/lib/dbm
   1.290 +endif
   1.291 +endif
   1.292 +NSS_DIRS += \
   1.293 +  nss/cmd/lib \
   1.294 +  nss/cmd/shlibsign \
   1.295 +  $(NULL)
   1.296 +
   1.297 +ifdef ENABLE_TESTS
   1.298 +NSS_DIRS += \
   1.299 +  nss/cmd/certutil \
   1.300 +  nss/cmd/pk12util \
   1.301 +  nss/cmd/modutil \
   1.302 +  $(NULL)
   1.303 +endif
   1.304 +
   1.305 +ifneq (,$(filter %--build-id,$(LDFLAGS)))
   1.306 +DEFAULT_GMAKE_ENV = LDFLAGS=-Wl,--build-id
   1.307 +endif
   1.308 +
   1.309 +ifdef MOZ_FOLD_LIBS
   1.310 +# TODO: The following can be replaced by something simpler when bug 844880
   1.311 +# is fixed.
   1.312 +# All static libraries required for nss, smime, ssl and nssutil.
   1.313 +# The strip is needed to remove potential linefeed characters, since they hang
   1.314 +# around in some cases on Windows.
   1.315 +NSS_STATIC_LIBS := $(strip $(shell $(MAKE) --no-print-directory -f $(srcdir)/nss.mk DEPTH='$(DEPTH)' topsrcdir='$(topsrcdir)' srcdir='$(srcdir)' echo-variable-libs))
   1.316 +# Corresponding build directories
   1.317 +NSS_STATIC_DIRS := $(foreach lib,$(NSS_STATIC_LIBS),$(patsubst %/,%,$(dir $(lib))))
   1.318 +NSS_DIRS += $(NSS_STATIC_DIRS)
   1.319 +
   1.320 +# TODO: The following can be replaced by something simpler when bug 844884
   1.321 +# is fixed.
   1.322 +# Remaining nss/lib directories
   1.323 +NSS_DIRS += nss/lib/freebl nss/lib/softoken nss/lib/jar nss/lib/crmf nss/lib/ckfw nss/lib/libpkix
   1.324 +ifeq (WINNT,$(OS_TARGET))
   1.325 +NSS_DIRS += nss/lib/zlib
   1.326 +endif
   1.327 +endif # MOZ_FOLD_LIBS
   1.328 +
   1.329 +# Filter-out $(LIBRARY_NAME) because it's already handled in config/rules.mk.
   1.330 +NSS_DIST_DLL_FILES := $(addprefix $(DIST)/lib/$(DLL_PREFIX),$(addsuffix $(DLL_SUFFIX),$(filter-out $(LIBRARY_NAME),$(NSS_DLLS)) $(NSS_EXTRA_DLLS)))
   1.331 +NSS_DIST_DLL_DEST := $(DIST)/bin
   1.332 +INSTALL_TARGETS += NSS_DIST_DLL
   1.333 +
   1.334 +ifeq ($(OS_ARCH)_$(1), SunOS_softokn3)
   1.335 +# has to use copy mode on Solaris, see #665509
   1.336 +$(DIST)/bin/$(DLL_PREFIX)softokn3$(DLL_SUFFIX): INSTALL := $(INSTALL) -t
   1.337 +endif
   1.338 +
   1.339 +NSS_SDK_LIB_FILES := \
   1.340 +  $(addprefix $(DIST)/lib/$(LIB_PREFIX),$(addsuffix .$(LIB_SUFFIX),$(SDK_LIBS))) \
   1.341 +  $(addprefix $(DIST)/bin/$(DLL_PREFIX),$(addsuffix $(DLL_SUFFIX),$(NSS_DLLS))) \
   1.342 +  $(NULL)
   1.343 +NSS_SDK_LIB_DEST := $(DIST)/sdk/lib
   1.344 +INSTALL_TARGETS += NSS_SDK_LIB
   1.345 +
   1.346 +ifdef MOZ_FOLD_LIBS
   1.347 +ifeq (WINNT,$(OS_TARGET))
   1.348 +SUFFIX = _s.$(LIB_SUFFIX)
   1.349 +else
   1.350 +SUFFIX = .$(LIB_SUFFIX)
   1.351 +endif
   1.352 +
   1.353 +# Fold NSPR libs
   1.354 +EXTRA_DSO_LDOPTS += $(DEPTH)/nsprpub/pr/src/$(LIB_PREFIX)nspr4$(SUFFIX)
   1.355 +EXTRA_DSO_LDOPTS += $(DEPTH)/nsprpub/lib/ds/$(LIB_PREFIX)plds4$(SUFFIX)
   1.356 +EXTRA_DSO_LDOPTS += $(DEPTH)/nsprpub/lib/libc/src/$(LIB_PREFIX)plc4$(SUFFIX)
   1.357 +
   1.358 +# Fold SQLite
   1.359 +EXTRA_DSO_LDOPTS += $(DEPTH)/db/sqlite3/src/$(LIB_PREFIX)mozsqlite3.$(LIB_SUFFIX)
   1.360 +
   1.361 +# Add all static libraries for nss, smime, ssl and nssutil
   1.362 +SHARED_LIBRARY_LIBS = $(addprefix ../,$(NSS_STATIC_LIBS))
   1.363 +
   1.364 +ifeq (WINNT,$(OS_TARGET))
   1.365 +# Create a .def file based on the various .def files for nss, smime, ssl and
   1.366 +# nssutil.
   1.367 +NSS_STATIC_LIBS_DEFS := $(wildcard $(addprefix $(srcdir)/../,$(NSS_STATIC_LIBS:.$(LIB_SUFFIX)=.def)))
   1.368 +
   1.369 +nss3.def: $(NSS_STATIC_LIBS_DEFS) $(DEPTH)/db/sqlite3/src/sqlite-processed.def
   1.370 +	echo LIBRARY nss3$(DLL_SUFFIX) > $@.tmp
   1.371 +	echo EXPORTS >> $@.tmp
   1.372 +	grep -v -h -e ^LIBRARY -e ^EXPORTS -e ^\; $^ >> $@.tmp
   1.373 +	mv $@.tmp $@
   1.374 +endif
   1.375 +
   1.376 +ifneq (,$(filter WINNT,$(OS_ARCH)))
   1.377 +SDK_LIBRARY = $(IMPORT_LIBRARY)
   1.378 +else
   1.379 +SDK_LIBRARY = $(SHARED_LIBRARY)
   1.380 +endif
   1.381 +
   1.382 +endif # MOZ_FOLD_LIBS
   1.383 +
   1.384 +include $(topsrcdir)/config/rules.mk
   1.385 +
   1.386 +ifdef MOZ_FOLD_LIBS
   1.387 +# Force the linker to include everything from the static libraries.
   1.388 +EXPAND_LIBS_EXEC += --extract
   1.389 +
   1.390 +$(SHARED_LIBRARY): $(SHARED_LIBRARY_LIBS)
   1.391 +
   1.392 +EXTRA_DSO_LDOPTS += $(REALTIME_LIBS)
   1.393 +
   1.394 +ifdef IMPORT_LIB_SUFFIX
   1.395 +IMPORT_PREFIX = $(LIB_PREFIX)
   1.396 +IMPORT_SUFFIX = .$(IMPORT_LIB_SUFFIX)
   1.397 +else
   1.398 +IMPORT_PREFIX = $(DLL_PREFIX)
   1.399 +IMPORT_SUFFIX = $(DLL_SUFFIX)
   1.400 +endif
   1.401 +
   1.402 +NSPR_IMPORT_LIBS = $(addprefix $(DIST)/lib/$(IMPORT_PREFIX),$(addsuffix $(IMPORT_SUFFIX),nspr4 plc4 plds4))
   1.403 +SQLITE_IMPORT_LIB = $(DIST)/lib/$(IMPORT_PREFIX)mozsqlite3$(IMPORT_SUFFIX)
   1.404 +
   1.405 +# TODO: The following can be replaced by something simpler when bug 844884
   1.406 +# is fixed.
   1.407 +# Associate target files with the rules that build them.
   1.408 +$(DIST)/lib/$(LIB_PREFIX)crmf.$(LIB_SUFFIX): libs-nss/lib/crmf
   1.409 +$(DIST)/lib/$(DLL_PREFIX)freebl3$(DLL_SUFFIX): libs-nss/lib/freebl
   1.410 +$(DIST)/lib/$(DLL_PREFIX)nssckbi$(DLL_SUFFIX): libs-nss/lib/ckfw
   1.411 +$(DIST)/lib/$(DLL_PREFIX)softokn3$(DLL_SUFFIX): libs-nss/lib/softoken
   1.412 +$(DIST)/lib/$(DLL_PREFIX)nssdbm3$(DLL_SUFFIX): libs-nss/lib/softoken
   1.413 +$(foreach lib,$(NSS_STATIC_LIBS),$(eval ../$(lib): libs-$(patsubst %/,%,$(dir $(lib)))))
   1.414 +
   1.415 +# Create fake import libraries for the folded libraries, so that linking
   1.416 +# against them works both for the NSS build system (see dependencies below)
   1.417 +# and for the rest of the mozilla build system.
   1.418 +$(NSPR_IMPORT_LIBS) \
   1.419 +$(SQLITE_IMPORT_LIB) \
   1.420 +$(DIST)/lib/$(IMPORT_PREFIX)nssutil3$(IMPORT_SUFFIX) \
   1.421 +$(DIST)/lib/$(IMPORT_PREFIX)ssl3$(IMPORT_SUFFIX) \
   1.422 +$(DIST)/lib/$(IMPORT_PREFIX)smime3$(IMPORT_SUFFIX): $(DIST)/lib/$(IMPORT_PREFIX)nss3$(IMPORT_SUFFIX)
   1.423 +ifeq (WINNT,$(OS_TARGET))
   1.424 +	cp $< $@
   1.425 +else
   1.426 +	ln -sf $< $@
   1.427 +endif
   1.428 +
   1.429 +# Interdependencies between nss sub-directories, and dependencies on NSPR/SQLite
   1.430 +libs-nss/lib/ckfw: libs-nss/lib/nss/../base $(NSPR_IMPORT_LIBS)
   1.431 +libs-nss/lib/softoken: $(NSPR_IMPORT_LIBS) $(SQLITE_IMPORT_LIB)
   1.432 +libs-nss/lib/softoken: libs-nss/lib/freebl
   1.433 +ifndef NSS_DISABLE_DBM
   1.434 +libs-nss/lib/softoken: libs-nss/lib/dbm
   1.435 +endif
   1.436 +libs-nss/lib/softoken: $(DIST)/lib/$(IMPORT_PREFIX)nssutil3$(IMPORT_SUFFIX)
   1.437 +libs-nss/lib/freebl: $(DIST)/lib/$(IMPORT_PREFIX)nssutil3$(IMPORT_SUFFIX) $(NSPR_IMPORT_LIBS)
   1.438 +
   1.439 +# For each directory where we build static libraries, force the NSS build system
   1.440 +# to only build static libraries.
   1.441 +$(addprefix libs-,$(NSS_STATIC_DIRS)): DEFAULT_GMAKE_FLAGS += SHARED_LIBRARY= IMPORT_LIBRARY=
   1.442 +else
   1.443 +$(NSS_DIST_DLL_FILES) $(NSS_SDK_LIB_FILES): libs-nss/lib
   1.444 +endif # MOZ_FOLD_LIBS
   1.445 +
   1.446 +ifeq ($(NSINSTALL_PY),$(NSINSTALL))
   1.447 +DEFAULT_GMAKE_FLAGS += PYTHON='$(PYTHON)'
   1.448 +DEFAULT_GMAKE_FLAGS += NSINSTALL_PY='$(abspath $(topsrcdir)/config/nsinstall.py)'
   1.449 +DEFAULT_GMAKE_FLAGS += NSINSTALL='$$(PYTHON) $$(NSINSTALL_PY)'
   1.450 +else
   1.451 +DEFAULT_GMAKE_FLAGS += NSINSTALL='$(NSINSTALL)'
   1.452 +endif
   1.453 +ifeq ($(OS_ARCH),WINNT)
   1.454 +DEFAULT_GMAKE_FLAGS += INSTALL='$$(NSINSTALL) -t'
   1.455 +endif
   1.456 +DEFAULT_GMAKE_FLAGS += $(EXTRA_GMAKE_FLAGS)
   1.457 +
   1.458 +$(addprefix libs-,$(NSS_DIRS)): libs-%:
   1.459 +# Work around NSS's export rule being racy when recursing for private_export
   1.460 +# See bug #836220.
   1.461 +$(addprefix export-,$(NSS_DIRS)): EXTRA_GMAKE_FLAGS = PRIVATE_EXPORTS=
   1.462 +$(addprefix export-,$(NSS_DIRS)): export-%: private_export-%
   1.463 +$(addprefix private_export-,$(NSS_DIRS)): EXTRA_GMAKE_FLAGS =
   1.464 +$(addprefix private_export-,$(NSS_DIRS)): private_export-%:
   1.465 +
   1.466 +# Work around bug #836228 in pymake
   1.467 +ifdef .PYMAKE
   1.468 +$(foreach p,libs export private_export,$(addprefix $(p)-,$(NSS_DIRS))): *=$(subst $(NULL) $(NULL),-,$(wordlist 2,$(words $(subst -, ,$@)),$(subst -, ,$@)))
   1.469 +endif
   1.470 +
   1.471 +$(foreach p,libs export private_export,$(addprefix $(p)-,$(NSS_DIRS))):
   1.472 +	$(DEFAULT_GMAKE_ENV) $(MAKE) -C $(NSS_SRCDIR)/security/$* $(@:-$*=) $(DEFAULT_GMAKE_FLAGS)
   1.473 +
   1.474 +export:: $(addprefix export-,$(NSS_DIRS))
   1.475 +
   1.476 +$(addprefix clean-,$(NSS_DIRS)): clean-%:
   1.477 +	$(MAKE) -C $(NSS_SRCDIR)/security/$* $(DEFAULT_GMAKE_FLAGS) clean
   1.478 +
   1.479 +clean clobber clobber_all realclean distclean depend:: $(addprefix clean-,$(NSS_DIRS))
   1.480 +
   1.481 +NSS_CMD_TARGETS := $(addprefix libs-,$(filter-out nss/cmd/lib,$(filter nss/cmd/%,$(NSS_DIRS))))
   1.482 +libs:: $(NSS_CMD_TARGETS)
   1.483 +
   1.484 +ifdef MOZ_FOLD_LIBS
   1.485 +$(NSS_CMD_TARGETS): $(addprefix $(DIST)/lib/$(IMPORT_PREFIX),$(addsuffix $(IMPORT_SUFFIX),$(NSS_LIBS)))
   1.486 +libs-nss/cmd/modutil: libs-nss/lib/jar
   1.487 +ifeq (WINNT,$(OS_TARGET))
   1.488 +libs-nss/cmd/modutil: libs-nss/lib/zlib
   1.489 +endif
   1.490 +$(NSS_CMD_TARGETS): libs-nss/cmd/lib
   1.491 +else
   1.492 +$(NSS_CMD_TARGETS): libs-nss/lib libs-nss/cmd/lib
   1.493 +endif # MOZ_FOLD_LIBS
   1.494 +
   1.495 +# Work around NSS build system race condition creating certdata.c in
   1.496 +# security/nss/lib/ckfw/builtins. See bug #836220.
   1.497 +libs-nss/lib$(if $(MOZ_FOLD_LIBS),/ckfw): $(call mkdir_deps,../nss/lib/ckfw/builtins)

mercurial