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
6ifeq ($(BUILD_SUN_PKG), 1)
7
8# set RPATH-type linker instructions here so they can be used in the shared
9# version and in the mixed (static nss libs/shared NSPR libs) version.
10
11ifeq ($(OS_ARCH), SunOS)
12ifeq ($(USE_64), 1)
13EXTRA_SHARED_LIBS += -R '$$ORIGIN/../lib:/usr/lib/mps/secv1/64:/usr/lib/mps/64'
14else
15EXTRA_SHARED_LIBS += -R '$$ORIGIN/../lib:/usr/lib/mps/secv1:/usr/lib/mps'
16endif
17endif
18
19ifeq ($(OS_ARCH), Linux)
20ifeq ($(USE_64), 1)
21EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:/opt/sun/private/lib64:$$ORIGIN/../lib'
22else
23EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib:/opt/sun/private/lib'
24endif
25endif
26
27endif # BUILD_SUN_PKG
28
29ifdef NSS_DISABLE_DBM
30DBMLIB = $(NULL)
31else
32DBMLIB = $(DIST)/lib/$(LIB_PREFIX)dbm.$(LIB_SUFFIX)
33endif
34
35ifeq ($(NSS_BUILD_UTIL_ONLY),1)
36SECTOOL_LIB = $(NULL)
37else
38SECTOOL_LIB = $(DIST)/lib/$(LIB_PREFIX)sectool.$(LIB_SUFFIX)
39endif
40
41ifdef USE_STATIC_LIBS
42
43DEFINES += -DNSS_USE_STATIC_LIBS
44# $(PROGRAM) has explicit dependencies on $(EXTRA_LIBS)
45ifndef NSS_USE_SYSTEM_FREEBL
46CRYPTOLIB=$(DIST)/lib/$(LIB_PREFIX)freebl.$(LIB_SUFFIX)
47SOFTOKENLIB=$(DIST)/lib/$(LIB_PREFIX)softokn.$(LIB_SUFFIX)
48else
49# Use the system installed freebl static library and set softoken one to empty.
50# Some tools need to link statically with freebl but none with softoken. Only
51# the softoken shared library, not the static one, is installed in the system.
52CRYPTOLIB=$(FREEBL_LIB_DIR)/$(LIB_PREFIX)freebl.$(LIB_SUFFIX)
53SOFTOKENLIB=
54EXTRA_SHARED_LIBS += \
55	-L$(SOFTOKEN_LIB_DIR) \
56	-lsoftokn3 \
57	$(NULL)
58endif
59
60ifndef NSS_DISABLE_LIBPKIX
61ifndef NSS_BUILD_SOFTOKEN_ONLY
62PKIXLIB = \
63	$(DIST)/lib/$(LIB_PREFIX)pkixtop.$(LIB_SUFFIX) \
64	$(DIST)/lib/$(LIB_PREFIX)pkixutil.$(LIB_SUFFIX) \
65	$(DIST)/lib/$(LIB_PREFIX)pkixsystem.$(LIB_SUFFIX) \
66	$(DIST)/lib/$(LIB_PREFIX)pkixcrlsel.$(LIB_SUFFIX) \
67	$(DIST)/lib/$(LIB_PREFIX)pkixmodule.$(LIB_SUFFIX) \
68	$(DIST)/lib/$(LIB_PREFIX)pkixstore.$(LIB_SUFFIX) \
69	$(DIST)/lib/$(LIB_PREFIX)pkixparams.$(LIB_SUFFIX) \
70	$(DIST)/lib/$(LIB_PREFIX)pkixchecker.$(LIB_SUFFIX) \
71	$(DIST)/lib/$(LIB_PREFIX)pkixpki.$(LIB_SUFFIX) \
72	$(DIST)/lib/$(LIB_PREFIX)pkixtop.$(LIB_SUFFIX) \
73	$(DIST)/lib/$(LIB_PREFIX)pkixresults.$(LIB_SUFFIX) \
74	$(DIST)/lib/$(LIB_PREFIX)pkixcertsel.$(LIB_SUFFIX)
75endif
76endif
77
78NSS_LIBS_1=
79NSS_LIBS_2=
80NSS_LIBS_3=
81NSS_LIBS_4=
82
83ifneq ($(NSS_BUILD_SOFTOKEN_ONLY),1)
84ifeq ($(OS_ARCH), WINNT)
85# breakdown for windows
86NSS_LIBS_1 = \
87	$(DIST)/lib/$(LIB_PREFIX)smime.$(LIB_SUFFIX) \
88	$(DIST)/lib/$(LIB_PREFIX)ssl.$(LIB_SUFFIX) \
89	$(DIST)/lib/$(LIB_PREFIX)nss.$(LIB_SUFFIX) \
90	$(NULL)
91NSS_LIBS_2 = \
92	$(DIST)/lib/$(LIB_PREFIX)pkcs12.$(LIB_SUFFIX) \
93	$(DIST)/lib/$(LIB_PREFIX)pkcs7.$(LIB_SUFFIX) \
94	$(DIST)/lib/$(LIB_PREFIX)certhi.$(LIB_SUFFIX) \
95	$(DIST)/lib/$(LIB_PREFIX)cryptohi.$(LIB_SUFFIX) \
96	$(DIST)/lib/$(LIB_PREFIX)pk11wrap.$(LIB_SUFFIX) \
97	$(DIST)/lib/$(LIB_PREFIX)certdb.$(LIB_SUFFIX) \
98	$(NULL)
99NSS_LIBS_3 = \
100	$(DIST)/lib/$(LIB_PREFIX)nsspki.$(LIB_SUFFIX) \
101	$(DIST)/lib/$(LIB_PREFIX)nssdev.$(LIB_SUFFIX) \
102	$(DIST)/lib/$(LIB_PREFIX)nssb.$(LIB_SUFFIX) \
103	$(PKIXLIB) \
104	$(DBMLIB) \
105	$(NULL)
106NSS_LIBS_4 = \
107	$(SQLITE_LIB_DIR)/$(LIB_PREFIX)$(SQLITE_LIB_NAME).$(LIB_SUFFIX) \
108	$(NSSUTIL_LIB_DIR)/$(LIB_PREFIX)nssutil3.$(LIB_SUFFIX) \
109	$(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)plc4.$(LIB_SUFFIX) \
110	$(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)plds4.$(LIB_SUFFIX) \
111	$(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)nspr4.$(LIB_SUFFIX) \
112	$(NULL)
113else
114# breakdown for others
115NSS_LIBS_1 = \
116	$(DIST)/lib/$(LIB_PREFIX)smime.$(LIB_SUFFIX) \
117	$(DIST)/lib/$(LIB_PREFIX)ssl.$(LIB_SUFFIX) \
118	$(DIST)/lib/$(LIB_PREFIX)nss.$(LIB_SUFFIX) \
119	$(NULL)
120NSS_LIBS_2 = \
121	$(DIST)/lib/$(LIB_PREFIX)pkcs12.$(LIB_SUFFIX) \
122	$(DIST)/lib/$(LIB_PREFIX)pkcs7.$(LIB_SUFFIX) \
123	$(DIST)/lib/$(LIB_PREFIX)certhi.$(LIB_SUFFIX) \
124	$(DIST)/lib/$(LIB_PREFIX)cryptohi.$(LIB_SUFFIX) \
125	$(DIST)/lib/$(LIB_PREFIX)pk11wrap.$(LIB_SUFFIX) \
126	$(NULL)
127NSS_LIBS_3 = \
128	$(DIST)/lib/$(LIB_PREFIX)certdb.$(LIB_SUFFIX) \
129	$(DIST)/lib/$(LIB_PREFIX)nsspki.$(LIB_SUFFIX) \
130	$(DIST)/lib/$(LIB_PREFIX)nssdev.$(LIB_SUFFIX) \
131	$(DIST)/lib/$(LIB_PREFIX)nssb.$(LIB_SUFFIX) \
132	$(NULL)
133NSS_LIBS_4 = \
134	$(DBMLIB) \
135	$(PKIXLIB) \
136	$(DIST)/lib/$(LIB_PREFIX)nss.$(LIB_SUFFIX) \
137	$(DIST)/lib/$(LIB_PREFIX)pk11wrap.$(LIB_SUFFIX) \
138	$(DIST)/lib/$(LIB_PREFIX)certhi.$(LIB_SUFFIX) \
139	$(NULL)
140endif
141endif
142
143# can't do this in manifest.mn because OS_ARCH isn't defined there.
144ifeq ($(OS_ARCH), WINNT)
145
146EXTRA_LIBS += \
147	$(SECTOOL_LIB) \
148	$(NSS_LIBS_1) \
149	$(NSS_LIBS_2) \
150	$(SOFTOKENLIB) \
151	$(CRYPTOLIB) \
152	$(NSS_LIBS_3) \
153	$(NSS_LIBS_4) \
154	$(NULL)
155
156# $(PROGRAM) has NO explicit dependencies on $(OS_LIBS)
157#OS_LIBS += \
158	wsock32.lib \
159	winmm.lib \
160	$(NULL)
161else
162
163EXTRA_LIBS += \
164	$(SECTOOL_LIB) \
165	$(NSS_LIBS_1) \
166	$(NSS_LIBS_2) \
167	$(SOFTOKENLIB) \
168	$(NSS_LIBS_3) \
169	$(CRYPTOLIB) \
170	$(NSS_LIBS_4) \
171	$(NULL)
172
173ifeq ($(OS_ARCH), AIX)
174EXTRA_SHARED_LIBS += -brtl
175endif
176
177# $(PROGRAM) has NO explicit dependencies on $(EXTRA_SHARED_LIBS)
178# $(EXTRA_SHARED_LIBS) come before $(OS_LIBS), except on AIX.
179EXTRA_SHARED_LIBS += \
180	-L$(SQLITE_LIB_DIR) \
181	-l$(SQLITE_LIB_NAME) \
182	-L$(NSSUTIL_LIB_DIR) \
183	-lnssutil3 \
184	-L$(NSPR_LIB_DIR) \
185	-lplc4 \
186	-lplds4 \
187	-lnspr4 \
188	$(NULL)
189endif
190
191else # USE_STATIC_LIBS
192# can't do this in manifest.mn because OS_ARCH isn't defined there.
193ifeq ($(OS_ARCH), WINNT)
194
195# $(PROGRAM) has explicit dependencies on $(EXTRA_LIBS)
196EXTRA_LIBS += \
197	$(SECTOOL_LIB) \
198	$(NSSUTIL_LIB_DIR)/$(IMPORT_LIB_PREFIX)nssutil3$(IMPORT_LIB_SUFFIX) \
199	$(DIST)/lib/$(IMPORT_LIB_PREFIX)smime3$(IMPORT_LIB_SUFFIX) \
200	$(DIST)/lib/$(IMPORT_LIB_PREFIX)ssl3$(IMPORT_LIB_SUFFIX) \
201	$(DIST)/lib/$(IMPORT_LIB_PREFIX)nss3$(IMPORT_LIB_SUFFIX) \
202	$(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)plc4$(IMPORT_LIB_SUFFIX) \
203	$(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)plds4$(IMPORT_LIB_SUFFIX) \
204	$(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)nspr4$(IMPORT_LIB_SUFFIX) \
205	$(NULL)
206
207# $(PROGRAM) has NO explicit dependencies on $(OS_LIBS)
208#OS_LIBS += \
209	wsock32.lib \
210	winmm.lib \
211	$(NULL)
212else
213
214# $(PROGRAM) has explicit dependencies on $(EXTRA_LIBS)
215EXTRA_LIBS += \
216	$(SECTOOL_LIB) \
217	$(NULL)
218
219ifeq ($(OS_ARCH), AIX)
220EXTRA_SHARED_LIBS += -brtl
221endif
222
223# $(PROGRAM) has NO explicit dependencies on $(EXTRA_SHARED_LIBS)
224# $(EXTRA_SHARED_LIBS) come before $(OS_LIBS), except on AIX.
225EXTRA_SHARED_LIBS += \
226	-L$(DIST)/lib \
227	-L$(NSSUTIL_LIB_DIR) \
228	-lnssutil3 \
229	-L$(NSPR_LIB_DIR) \
230	-lplc4 \
231	-lplds4 \
232	-lnspr4 \
233	$(NULL)
234ifndef NSS_BUILD_UTIL_ONLY
235ifndef NSS_BUILD_SOFTOKEN_ONLY
236EXTRA_SHARED_LIBS += \
237	-lssl3 \
238	-lsmime3 \
239	-lnss3
240endif
241endif
242endif
243
244ifdef SOFTOKEN_LIB_DIR
245ifdef NSS_USE_SYSTEM_FREEBL
246EXTRA_SHARED_LIBS += -L$(SOFTOKEN_LIB_DIR) -lsoftokn3
247endif
248endif
249
250endif # USE_STATIC_LIBS
251
252# If a platform has a system freebl, set USE_SYSTEM_FREEBL to 1 and
253# FREEBL_LIBS to the linker command-line arguments for the system nss-util
254# (for example, -lfreebl3 on fedora) in the platform's config file in coreconf.
255ifdef NSS_USE_SYSTEM_FREEBL
256FREEBL_LIBS = $(FREEBL_LIB_DIR)/$(LIB_PREFIX)freebl.$(LIB_SUFFIX)
257EXTRA_LIBS += $(FREEBL_LIBS)
258endif
259
260JAR_LIBS = $(DIST)/lib/$(LIB_PREFIX)jar.$(LIB_SUFFIX)
261