|
1 # |
|
2 # This Source Code Form is subject to the terms of the Mozilla Public |
|
3 # License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
5 |
|
6 CC_WRAPPER = |
|
7 CXX_WRAPPER = |
|
8 |
|
9 default:: |
|
10 |
|
11 include $(topsrcdir)/config/makefiles/functions.mk |
|
12 |
|
13 NSS_LIBS = \ |
|
14 nss3 \ |
|
15 nssutil3 \ |
|
16 smime3 \ |
|
17 ssl3 \ |
|
18 $(NULL) |
|
19 |
|
20 ifdef MOZ_FOLD_LIBS |
|
21 NSS_DLLS = $(LIBRARY_NAME) |
|
22 else |
|
23 NSS_DLLS = $(NSS_LIBS) |
|
24 endif |
|
25 |
|
26 NSS_EXTRA_DLLS = \ |
|
27 nssckbi \ |
|
28 softokn3 \ |
|
29 $(NULL) |
|
30 |
|
31 ifndef NSS_DISABLE_DBM |
|
32 NSS_EXTRA_DLLS += nssdbm3 |
|
33 endif |
|
34 |
|
35 SDK_LIBS = crmf |
|
36 |
|
37 ifneq (,$(filter WINNT,$(OS_ARCH))) |
|
38 SDK_LIBS += $(NSS_DLLS) |
|
39 endif |
|
40 |
|
41 # Default |
|
42 HAVE_FREEBL_LIBS = 1 |
|
43 |
|
44 # 32-bit HP-UX PA-RISC |
|
45 ifeq ($(OS_ARCH), HP-UX) |
|
46 ifneq ($(OS_TEST), ia64) |
|
47 ifndef HAVE_64BIT_OS |
|
48 HAVE_FREEBL_LIBS = |
|
49 HAVE_FREEBL_LIBS_32INT32 = 1 |
|
50 HAVE_FREEBL_LIBS_32FPU = 1 |
|
51 endif |
|
52 endif |
|
53 endif |
|
54 |
|
55 # SunOS SPARC |
|
56 ifeq ($(OS_ARCH), SunOS) |
|
57 ifneq (86,$(findstring 86,$(OS_TEST))) |
|
58 ifdef HAVE_64BIT_OS |
|
59 HAVE_FREEBL_LIBS = |
|
60 HAVE_FREEBL_LIBS_64 = 1 |
|
61 else |
|
62 HAVE_FREEBL_LIBS = |
|
63 HAVE_FREEBL_LIBS_32FPU = 1 |
|
64 HAVE_FREEBL_LIBS_32INT64 = 1 |
|
65 endif |
|
66 endif |
|
67 endif |
|
68 |
|
69 ifdef HAVE_FREEBL_LIBS |
|
70 NSS_EXTRA_DLLS += freebl3 |
|
71 endif |
|
72 ifdef HAVE_FREEBL_LIBS_32INT32 |
|
73 NSS_EXTRA_DLLS += freebl_32int_3 |
|
74 endif |
|
75 ifdef HAVE_FREEBL_LIBS_32FPU |
|
76 NSS_EXTRA_DLLS += freebl_32fpu_3 |
|
77 endif |
|
78 ifdef HAVE_FREEBL_LIBS_32INT64 |
|
79 NSS_EXTRA_DLLS += freebl_32int64_3 |
|
80 endif |
|
81 ifdef HAVE_FREEBL_LIBS_64 |
|
82 NSS_EXTRA_DLLS += freebl_64int_3 |
|
83 NSS_EXTRA_DLLS += freebl_64fpu_3 |
|
84 endif |
|
85 |
|
86 ABS_DIST := $(abspath $(DIST)) |
|
87 ifeq ($(HOST_OS_ARCH),WINNT) |
|
88 ifdef CYGDRIVE_MOUNT |
|
89 ABS_DIST := $(shell cygpath -w $(ABS_DIST) | sed -e 's|\\|/|g') |
|
90 endif |
|
91 ifneq (,$(filter mingw%,$(host_os))) |
|
92 ABS_DIST := $(shell cd $(DIST) && pwd -W) |
|
93 endif |
|
94 endif |
|
95 # For all variables such as DLLFLAGS, that may contain $(DIST) |
|
96 DIST := $(ABS_DIST) |
|
97 NSPR_INCLUDE_DIR = $(firstword $(filter -I%,$(NSPR_CFLAGS))) |
|
98 ifneq (,$(strip $(NSPR_INCLUDE_DIR))) |
|
99 NSPR_INCLUDE_DIR := $(subst -I,,$(subst -I$(DIST),-I$(ABS_DIST),$(NSPR_INCLUDE_DIR))) |
|
100 else |
|
101 NSPR_INCLUDE_DIR = $(ABS_DIST)/include/nspr |
|
102 endif |
|
103 NSPR_LIB_DIR = $(firstword $(filter -L%,$(NSPR_LIBS))) |
|
104 ifneq (,$(strip $(NSPR_LIB_DIR))) |
|
105 NSPR_LIB_DIR := $(subst -L,,$(subst -L$(DIST),-L$(ABS_DIST),$(NSPR_LIB_DIR))) |
|
106 else |
|
107 NSPR_LIB_DIR = $(ABS_DIST)/lib |
|
108 endif |
|
109 # Can't pass this in DEFAULT_GMAKE_FLAGS because that overrides |
|
110 # definitions in NSS, so just export it into the sub-make's environment. |
|
111 ifeq (WINNT_1,$(OS_TARGET)_$(MOZ_MEMORY)) |
|
112 export DLLFLAGS |
|
113 endif |
|
114 |
|
115 # To get debug symbols from NSS |
|
116 export MOZ_DEBUG_SYMBOLS |
|
117 |
|
118 DEFAULT_GMAKE_FLAGS = |
|
119 DEFAULT_GMAKE_FLAGS += CC='$(CC)' |
|
120 DEFAULT_GMAKE_FLAGS += SOURCE_MD_DIR=$(ABS_DIST) |
|
121 DEFAULT_GMAKE_FLAGS += SOURCE_MDHEADERS_DIR=$(NSPR_INCLUDE_DIR) |
|
122 DEFAULT_GMAKE_FLAGS += DIST=$(ABS_DIST) |
|
123 DEFAULT_GMAKE_FLAGS += NSPR_INCLUDE_DIR=$(NSPR_INCLUDE_DIR) |
|
124 DEFAULT_GMAKE_FLAGS += NSPR_LIB_DIR=$(NSPR_LIB_DIR) |
|
125 DEFAULT_GMAKE_FLAGS += MOZILLA_CLIENT=1 |
|
126 DEFAULT_GMAKE_FLAGS += NO_MDUPDATE=1 |
|
127 DEFAULT_GMAKE_FLAGS += NSS_ENABLE_ECC=1 |
|
128 ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_1) |
|
129 DEFAULT_GMAKE_FLAGS += OS_DLLFLAGS='-static-libgcc' |
|
130 endif |
|
131 ifndef MOZ_NATIVE_SQLITE |
|
132 ifdef MOZ_FOLD_LIBS |
|
133 DEFAULT_GMAKE_FLAGS += SQLITE_LIB_NAME=nss3 |
|
134 else |
|
135 DEFAULT_GMAKE_FLAGS += SQLITE_LIB_NAME=mozsqlite3 |
|
136 endif # MOZ_FOLD_LIBS |
|
137 DEFAULT_GMAKE_FLAGS += SQLITE_INCLUDE_DIR=$(ABS_DIST)/include |
|
138 endif |
|
139 ifdef NSS_DISABLE_DBM |
|
140 DEFAULT_GMAKE_FLAGS += NSS_DISABLE_DBM=1 |
|
141 endif |
|
142 # Hack to force NSS build system to use "normal" object directories |
|
143 DEFAULT_GMAKE_FLAGS += topsrcdir='$(topsrcdir)' |
|
144 # topsrcdir can't be expanded here because msys path mangling likes to break |
|
145 # paths in that case. |
|
146 DEFAULT_GMAKE_FLAGS += BUILD='$(MOZ_BUILD_ROOT)/security/$$(subst $$(topsrcdir)/security/,,$$(CURDIR))' |
|
147 DEFAULT_GMAKE_FLAGS += BUILD_TREE='$$(BUILD)' OBJDIR='$$(BUILD)' DEPENDENCIES='$$(BUILD)/.deps' SINGLE_SHLIB_DIR='$$(BUILD)' |
|
148 DEFAULT_GMAKE_FLAGS += SOURCE_XP_DIR=$(ABS_DIST) |
|
149 ifndef MOZ_DEBUG |
|
150 DEFAULT_GMAKE_FLAGS += BUILD_OPT=1 OPT_CODE_SIZE=1 |
|
151 endif |
|
152 ifdef GNU_CC |
|
153 DEFAULT_GMAKE_FLAGS += NS_USE_GCC=1 |
|
154 else |
|
155 DEFAULT_GMAKE_FLAGS += NS_USE_GCC= |
|
156 endif |
|
157 ifdef USE_N32 |
|
158 # It is not really necessary to specify USE_PTHREADS=1. USE_PTHREADS |
|
159 # merely adds _PTH to coreconf's OBJDIR name. |
|
160 DEFAULT_GMAKE_FLAGS += USE_N32=1 USE_PTHREADS=1 |
|
161 endif |
|
162 ifdef HAVE_64BIT_OS |
|
163 DEFAULT_GMAKE_FLAGS += USE_64=1 |
|
164 endif |
|
165 ifeq ($(OS_ARCH),WINNT) |
|
166 DEFAULT_GMAKE_FLAGS += OS_TARGET=WIN95 |
|
167 ifdef MOZ_DEBUG |
|
168 ifndef MOZ_NO_DEBUG_RTL |
|
169 DEFAULT_GMAKE_FLAGS += USE_DEBUG_RTL=1 |
|
170 endif |
|
171 endif |
|
172 endif # WINNT |
|
173 ifeq ($(OS_ARCH),Darwin) |
|
174 # Make nsinstall use absolute symlinks by default when building NSS |
|
175 # for Mozilla on Mac OS X. (Bugzilla bug 193164) |
|
176 ifndef NSDISTMODE |
|
177 DEFAULT_GMAKE_FLAGS += NSDISTMODE=absolute_symlink |
|
178 endif |
|
179 ifdef MACOS_SDK_DIR |
|
180 DEFAULT_GMAKE_FLAGS += MACOS_SDK_DIR=$(MACOS_SDK_DIR) |
|
181 endif |
|
182 endif |
|
183 |
|
184 # Turn off TLS compression support because it requires system zlib. |
|
185 # See bug 580679 comment 18. |
|
186 DEFAULT_GMAKE_FLAGS += NSS_ENABLE_ZLIB= |
|
187 |
|
188 # Disable building of the test programs in security/nss/lib/zlib |
|
189 DEFAULT_GMAKE_FLAGS += PROGRAMS= |
|
190 |
|
191 # Disable creating .chk files. They will be generated from packager.mk |
|
192 # When bug 681624 lands, we can replace CHECKLOC= with SKIP_SHLIBSIGN=1 |
|
193 DEFAULT_GMAKE_FLAGS += CHECKLOC= |
|
194 |
|
195 ifdef CROSS_COMPILE |
|
196 |
|
197 DEFAULT_GMAKE_FLAGS += \ |
|
198 NATIVE_CC='$(HOST_CC)' \ |
|
199 CC='$(CC)' \ |
|
200 CCC='$(CXX)' \ |
|
201 LINK='$(LD)' \ |
|
202 AS='$(AS)' \ |
|
203 AR='$(AR) $(AR_FLAGS:$@=$$@)' \ |
|
204 RANLIB='$(RANLIB)' \ |
|
205 RC='$(RC) $(RCFLAGS)' \ |
|
206 OS_ARCH='$(OS_ARCH)' \ |
|
207 OS_TEST='$(OS_TEST)' \ |
|
208 CPU_ARCH='$(TARGET_CPU)' \ |
|
209 $(NULL) |
|
210 |
|
211 # Android has pthreads integrated into -lc, so OS_PTHREAD is set to nothing |
|
212 ifeq ($(OS_TARGET), Android) |
|
213 DEFAULT_GMAKE_FLAGS += \ |
|
214 OS_RELEASE='2.6' \ |
|
215 OS_PTHREAD= \ |
|
216 $(NULL) |
|
217 |
|
218 DEFAULT_GMAKE_FLAGS += ARCHFLAG='$(CFLAGS) -DCHECK_FORK_GETPID -DRTLD_NOLOAD=0 -include $(topsrcdir)/security/manager/android_stub.h' |
|
219 endif |
|
220 endif |
|
221 |
|
222 ifdef WRAP_LDFLAGS |
|
223 DEFAULT_GMAKE_FLAGS += \ |
|
224 LDFLAGS='$(LDFLAGS) $(WRAP_LDFLAGS)' \ |
|
225 DSO_LDOPTS='$(DSO_LDOPTS) $(LDFLAGS) $(WRAP_LDFLAGS)' \ |
|
226 $(NULL) |
|
227 endif |
|
228 |
|
229 DEFAULT_GMAKE_FLAGS += FREEBL_NO_DEPEND=0 |
|
230 ifeq ($(OS_TARGET),Linux) |
|
231 DEFAULT_GMAKE_FLAGS += FREEBL_LOWHASH=1 |
|
232 endif |
|
233 |
|
234 ifdef MOZ_NO_WLZDEFS |
|
235 DEFAULT_GMAKE_FLAGS += ZDEFS_FLAG= |
|
236 endif |
|
237 ifdef MOZ_CFLAGS_NSS |
|
238 DEFAULT_GMAKE_FLAGS += XCFLAGS='$(CFLAGS)' |
|
239 DEFAULT_GMAKE_FLAGS += DARWIN_DYLIB_VERSIONS='-compatibility_version 1 -current_version 1 $(LDFLAGS)' |
|
240 endif |
|
241 |
|
242 DEFAULT_GMAKE_FLAGS += NSS_NO_PKCS11_BYPASS=1 |
|
243 |
|
244 # Put NSS headers directly under $(DIST)/include |
|
245 DEFAULT_GMAKE_FLAGS += PUBLIC_EXPORT_DIR='$(ABS_DIST)/include/$$(MODULE)' |
|
246 DEFAULT_GMAKE_FLAGS += SOURCE_XPHEADERS_DIR='$$(SOURCE_XP_DIR)/include/$$(MODULE)' |
|
247 DEFAULT_GMAKE_FLAGS += MODULE_INCLUDES='$$(addprefix -I$$(SOURCE_XP_DIR)/include/,$$(REQUIRES))' |
|
248 |
|
249 # Work around NSS's MAKE_OBJDIR being racy. See bug #836220 |
|
250 DEFAULT_GMAKE_FLAGS += MAKE_OBJDIR='$$(INSTALL) -D $$(OBJDIR)' |
|
251 |
|
252 # Work around NSS adding IMPORT_LIBRARY to TARGETS with no rule for |
|
253 # it, creating race conditions. See bug #836220 |
|
254 DEFAULT_GMAKE_FLAGS += TARGETS='$$(LIBRARY) $$(SHARED_LIBRARY) $$(PROGRAM)' |
|
255 |
|
256 ifdef MOZ_B2G_CERTDATA |
|
257 include $(srcdir)/b2g-certdata.mk |
|
258 endif |
|
259 |
|
260 ifdef MOZ_NSS_PATCH |
|
261 # If we're applying a patch, we'll copy the NSS source to the objdir |
|
262 # and build it from there. |
|
263 NSS_SRCDIR = $(CURDIR)/nss |
|
264 |
|
265 # This will copy and patch the NSS source for every build. |
|
266 # Since we "cp -p", it won't force rebuilds for most files, just |
|
267 # for patched files, but that's easier than trying to track |
|
268 # dependencies for patched files. |
|
269 export:: |
|
270 rm -rf $(NSS_SRCDIR) |
|
271 $(NSINSTALL) -D $(NSS_SRCDIR)/security |
|
272 cp -Rp $(topsrcdir)/security/nss $(NSS_SRCDIR)/security |
|
273 cp -Rp $(topsrcdir)/security/coreconf $(NSS_SRCDIR)/security |
|
274 cp -Rp $(topsrcdir)/security/dbm $(NSS_SRCDIR)/security |
|
275 cp -Rp $(topsrcdir)/dbm $(NSS_SRCDIR) |
|
276 (cd $(NSS_SRCDIR) && patch -p1 < $(abspath $(MOZ_NSS_PATCH))) |
|
277 else |
|
278 NSS_SRCDIR = $(topsrcdir) |
|
279 endif |
|
280 |
|
281 NSS_DIRS = |
|
282 ifndef MOZ_FOLD_LIBS |
|
283 NSS_DIRS += nss/lib |
|
284 else |
|
285 ifndef NSS_DISABLE_DBM |
|
286 NSS_DIRS += nss/lib/dbm |
|
287 endif |
|
288 endif |
|
289 NSS_DIRS += \ |
|
290 nss/cmd/lib \ |
|
291 nss/cmd/shlibsign \ |
|
292 $(NULL) |
|
293 |
|
294 ifdef ENABLE_TESTS |
|
295 NSS_DIRS += \ |
|
296 nss/cmd/certutil \ |
|
297 nss/cmd/pk12util \ |
|
298 nss/cmd/modutil \ |
|
299 $(NULL) |
|
300 endif |
|
301 |
|
302 ifneq (,$(filter %--build-id,$(LDFLAGS))) |
|
303 DEFAULT_GMAKE_ENV = LDFLAGS=-Wl,--build-id |
|
304 endif |
|
305 |
|
306 ifdef MOZ_FOLD_LIBS |
|
307 # TODO: The following can be replaced by something simpler when bug 844880 |
|
308 # is fixed. |
|
309 # All static libraries required for nss, smime, ssl and nssutil. |
|
310 # The strip is needed to remove potential linefeed characters, since they hang |
|
311 # around in some cases on Windows. |
|
312 NSS_STATIC_LIBS := $(strip $(shell $(MAKE) --no-print-directory -f $(srcdir)/nss.mk DEPTH='$(DEPTH)' topsrcdir='$(topsrcdir)' srcdir='$(srcdir)' echo-variable-libs)) |
|
313 # Corresponding build directories |
|
314 NSS_STATIC_DIRS := $(foreach lib,$(NSS_STATIC_LIBS),$(patsubst %/,%,$(dir $(lib)))) |
|
315 NSS_DIRS += $(NSS_STATIC_DIRS) |
|
316 |
|
317 # TODO: The following can be replaced by something simpler when bug 844884 |
|
318 # is fixed. |
|
319 # Remaining nss/lib directories |
|
320 NSS_DIRS += nss/lib/freebl nss/lib/softoken nss/lib/jar nss/lib/crmf nss/lib/ckfw nss/lib/libpkix |
|
321 ifeq (WINNT,$(OS_TARGET)) |
|
322 NSS_DIRS += nss/lib/zlib |
|
323 endif |
|
324 endif # MOZ_FOLD_LIBS |
|
325 |
|
326 # Filter-out $(LIBRARY_NAME) because it's already handled in config/rules.mk. |
|
327 NSS_DIST_DLL_FILES := $(addprefix $(DIST)/lib/$(DLL_PREFIX),$(addsuffix $(DLL_SUFFIX),$(filter-out $(LIBRARY_NAME),$(NSS_DLLS)) $(NSS_EXTRA_DLLS))) |
|
328 NSS_DIST_DLL_DEST := $(DIST)/bin |
|
329 INSTALL_TARGETS += NSS_DIST_DLL |
|
330 |
|
331 ifeq ($(OS_ARCH)_$(1), SunOS_softokn3) |
|
332 # has to use copy mode on Solaris, see #665509 |
|
333 $(DIST)/bin/$(DLL_PREFIX)softokn3$(DLL_SUFFIX): INSTALL := $(INSTALL) -t |
|
334 endif |
|
335 |
|
336 NSS_SDK_LIB_FILES := \ |
|
337 $(addprefix $(DIST)/lib/$(LIB_PREFIX),$(addsuffix .$(LIB_SUFFIX),$(SDK_LIBS))) \ |
|
338 $(addprefix $(DIST)/bin/$(DLL_PREFIX),$(addsuffix $(DLL_SUFFIX),$(NSS_DLLS))) \ |
|
339 $(NULL) |
|
340 NSS_SDK_LIB_DEST := $(DIST)/sdk/lib |
|
341 INSTALL_TARGETS += NSS_SDK_LIB |
|
342 |
|
343 ifdef MOZ_FOLD_LIBS |
|
344 ifeq (WINNT,$(OS_TARGET)) |
|
345 SUFFIX = _s.$(LIB_SUFFIX) |
|
346 else |
|
347 SUFFIX = .$(LIB_SUFFIX) |
|
348 endif |
|
349 |
|
350 # Fold NSPR libs |
|
351 EXTRA_DSO_LDOPTS += $(DEPTH)/nsprpub/pr/src/$(LIB_PREFIX)nspr4$(SUFFIX) |
|
352 EXTRA_DSO_LDOPTS += $(DEPTH)/nsprpub/lib/ds/$(LIB_PREFIX)plds4$(SUFFIX) |
|
353 EXTRA_DSO_LDOPTS += $(DEPTH)/nsprpub/lib/libc/src/$(LIB_PREFIX)plc4$(SUFFIX) |
|
354 |
|
355 # Fold SQLite |
|
356 EXTRA_DSO_LDOPTS += $(DEPTH)/db/sqlite3/src/$(LIB_PREFIX)mozsqlite3.$(LIB_SUFFIX) |
|
357 |
|
358 # Add all static libraries for nss, smime, ssl and nssutil |
|
359 SHARED_LIBRARY_LIBS = $(addprefix ../,$(NSS_STATIC_LIBS)) |
|
360 |
|
361 ifeq (WINNT,$(OS_TARGET)) |
|
362 # Create a .def file based on the various .def files for nss, smime, ssl and |
|
363 # nssutil. |
|
364 NSS_STATIC_LIBS_DEFS := $(wildcard $(addprefix $(srcdir)/../,$(NSS_STATIC_LIBS:.$(LIB_SUFFIX)=.def))) |
|
365 |
|
366 nss3.def: $(NSS_STATIC_LIBS_DEFS) $(DEPTH)/db/sqlite3/src/sqlite-processed.def |
|
367 echo LIBRARY nss3$(DLL_SUFFIX) > $@.tmp |
|
368 echo EXPORTS >> $@.tmp |
|
369 grep -v -h -e ^LIBRARY -e ^EXPORTS -e ^\; $^ >> $@.tmp |
|
370 mv $@.tmp $@ |
|
371 endif |
|
372 |
|
373 ifneq (,$(filter WINNT,$(OS_ARCH))) |
|
374 SDK_LIBRARY = $(IMPORT_LIBRARY) |
|
375 else |
|
376 SDK_LIBRARY = $(SHARED_LIBRARY) |
|
377 endif |
|
378 |
|
379 endif # MOZ_FOLD_LIBS |
|
380 |
|
381 include $(topsrcdir)/config/rules.mk |
|
382 |
|
383 ifdef MOZ_FOLD_LIBS |
|
384 # Force the linker to include everything from the static libraries. |
|
385 EXPAND_LIBS_EXEC += --extract |
|
386 |
|
387 $(SHARED_LIBRARY): $(SHARED_LIBRARY_LIBS) |
|
388 |
|
389 EXTRA_DSO_LDOPTS += $(REALTIME_LIBS) |
|
390 |
|
391 ifdef IMPORT_LIB_SUFFIX |
|
392 IMPORT_PREFIX = $(LIB_PREFIX) |
|
393 IMPORT_SUFFIX = .$(IMPORT_LIB_SUFFIX) |
|
394 else |
|
395 IMPORT_PREFIX = $(DLL_PREFIX) |
|
396 IMPORT_SUFFIX = $(DLL_SUFFIX) |
|
397 endif |
|
398 |
|
399 NSPR_IMPORT_LIBS = $(addprefix $(DIST)/lib/$(IMPORT_PREFIX),$(addsuffix $(IMPORT_SUFFIX),nspr4 plc4 plds4)) |
|
400 SQLITE_IMPORT_LIB = $(DIST)/lib/$(IMPORT_PREFIX)mozsqlite3$(IMPORT_SUFFIX) |
|
401 |
|
402 # TODO: The following can be replaced by something simpler when bug 844884 |
|
403 # is fixed. |
|
404 # Associate target files with the rules that build them. |
|
405 $(DIST)/lib/$(LIB_PREFIX)crmf.$(LIB_SUFFIX): libs-nss/lib/crmf |
|
406 $(DIST)/lib/$(DLL_PREFIX)freebl3$(DLL_SUFFIX): libs-nss/lib/freebl |
|
407 $(DIST)/lib/$(DLL_PREFIX)nssckbi$(DLL_SUFFIX): libs-nss/lib/ckfw |
|
408 $(DIST)/lib/$(DLL_PREFIX)softokn3$(DLL_SUFFIX): libs-nss/lib/softoken |
|
409 $(DIST)/lib/$(DLL_PREFIX)nssdbm3$(DLL_SUFFIX): libs-nss/lib/softoken |
|
410 $(foreach lib,$(NSS_STATIC_LIBS),$(eval ../$(lib): libs-$(patsubst %/,%,$(dir $(lib))))) |
|
411 |
|
412 # Create fake import libraries for the folded libraries, so that linking |
|
413 # against them works both for the NSS build system (see dependencies below) |
|
414 # and for the rest of the mozilla build system. |
|
415 $(NSPR_IMPORT_LIBS) \ |
|
416 $(SQLITE_IMPORT_LIB) \ |
|
417 $(DIST)/lib/$(IMPORT_PREFIX)nssutil3$(IMPORT_SUFFIX) \ |
|
418 $(DIST)/lib/$(IMPORT_PREFIX)ssl3$(IMPORT_SUFFIX) \ |
|
419 $(DIST)/lib/$(IMPORT_PREFIX)smime3$(IMPORT_SUFFIX): $(DIST)/lib/$(IMPORT_PREFIX)nss3$(IMPORT_SUFFIX) |
|
420 ifeq (WINNT,$(OS_TARGET)) |
|
421 cp $< $@ |
|
422 else |
|
423 ln -sf $< $@ |
|
424 endif |
|
425 |
|
426 # Interdependencies between nss sub-directories, and dependencies on NSPR/SQLite |
|
427 libs-nss/lib/ckfw: libs-nss/lib/nss/../base $(NSPR_IMPORT_LIBS) |
|
428 libs-nss/lib/softoken: $(NSPR_IMPORT_LIBS) $(SQLITE_IMPORT_LIB) |
|
429 libs-nss/lib/softoken: libs-nss/lib/freebl |
|
430 ifndef NSS_DISABLE_DBM |
|
431 libs-nss/lib/softoken: libs-nss/lib/dbm |
|
432 endif |
|
433 libs-nss/lib/softoken: $(DIST)/lib/$(IMPORT_PREFIX)nssutil3$(IMPORT_SUFFIX) |
|
434 libs-nss/lib/freebl: $(DIST)/lib/$(IMPORT_PREFIX)nssutil3$(IMPORT_SUFFIX) $(NSPR_IMPORT_LIBS) |
|
435 |
|
436 # For each directory where we build static libraries, force the NSS build system |
|
437 # to only build static libraries. |
|
438 $(addprefix libs-,$(NSS_STATIC_DIRS)): DEFAULT_GMAKE_FLAGS += SHARED_LIBRARY= IMPORT_LIBRARY= |
|
439 else |
|
440 $(NSS_DIST_DLL_FILES) $(NSS_SDK_LIB_FILES): libs-nss/lib |
|
441 endif # MOZ_FOLD_LIBS |
|
442 |
|
443 ifeq ($(NSINSTALL_PY),$(NSINSTALL)) |
|
444 DEFAULT_GMAKE_FLAGS += PYTHON='$(PYTHON)' |
|
445 DEFAULT_GMAKE_FLAGS += NSINSTALL_PY='$(abspath $(topsrcdir)/config/nsinstall.py)' |
|
446 DEFAULT_GMAKE_FLAGS += NSINSTALL='$$(PYTHON) $$(NSINSTALL_PY)' |
|
447 else |
|
448 DEFAULT_GMAKE_FLAGS += NSINSTALL='$(NSINSTALL)' |
|
449 endif |
|
450 ifeq ($(OS_ARCH),WINNT) |
|
451 DEFAULT_GMAKE_FLAGS += INSTALL='$$(NSINSTALL) -t' |
|
452 endif |
|
453 DEFAULT_GMAKE_FLAGS += $(EXTRA_GMAKE_FLAGS) |
|
454 |
|
455 $(addprefix libs-,$(NSS_DIRS)): libs-%: |
|
456 # Work around NSS's export rule being racy when recursing for private_export |
|
457 # See bug #836220. |
|
458 $(addprefix export-,$(NSS_DIRS)): EXTRA_GMAKE_FLAGS = PRIVATE_EXPORTS= |
|
459 $(addprefix export-,$(NSS_DIRS)): export-%: private_export-% |
|
460 $(addprefix private_export-,$(NSS_DIRS)): EXTRA_GMAKE_FLAGS = |
|
461 $(addprefix private_export-,$(NSS_DIRS)): private_export-%: |
|
462 |
|
463 # Work around bug #836228 in pymake |
|
464 ifdef .PYMAKE |
|
465 $(foreach p,libs export private_export,$(addprefix $(p)-,$(NSS_DIRS))): *=$(subst $(NULL) $(NULL),-,$(wordlist 2,$(words $(subst -, ,$@)),$(subst -, ,$@))) |
|
466 endif |
|
467 |
|
468 $(foreach p,libs export private_export,$(addprefix $(p)-,$(NSS_DIRS))): |
|
469 $(DEFAULT_GMAKE_ENV) $(MAKE) -C $(NSS_SRCDIR)/security/$* $(@:-$*=) $(DEFAULT_GMAKE_FLAGS) |
|
470 |
|
471 export:: $(addprefix export-,$(NSS_DIRS)) |
|
472 |
|
473 $(addprefix clean-,$(NSS_DIRS)): clean-%: |
|
474 $(MAKE) -C $(NSS_SRCDIR)/security/$* $(DEFAULT_GMAKE_FLAGS) clean |
|
475 |
|
476 clean clobber clobber_all realclean distclean depend:: $(addprefix clean-,$(NSS_DIRS)) |
|
477 |
|
478 NSS_CMD_TARGETS := $(addprefix libs-,$(filter-out nss/cmd/lib,$(filter nss/cmd/%,$(NSS_DIRS)))) |
|
479 libs:: $(NSS_CMD_TARGETS) |
|
480 |
|
481 ifdef MOZ_FOLD_LIBS |
|
482 $(NSS_CMD_TARGETS): $(addprefix $(DIST)/lib/$(IMPORT_PREFIX),$(addsuffix $(IMPORT_SUFFIX),$(NSS_LIBS))) |
|
483 libs-nss/cmd/modutil: libs-nss/lib/jar |
|
484 ifeq (WINNT,$(OS_TARGET)) |
|
485 libs-nss/cmd/modutil: libs-nss/lib/zlib |
|
486 endif |
|
487 $(NSS_CMD_TARGETS): libs-nss/cmd/lib |
|
488 else |
|
489 $(NSS_CMD_TARGETS): libs-nss/lib libs-nss/cmd/lib |
|
490 endif # MOZ_FOLD_LIBS |
|
491 |
|
492 # Work around NSS build system race condition creating certdata.c in |
|
493 # security/nss/lib/ckfw/builtins. See bug #836220. |
|
494 libs-nss/lib$(if $(MOZ_FOLD_LIBS),/ckfw): $(call mkdir_deps,../nss/lib/ckfw/builtins) |