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/.
10 topsrcdir
= @top_srcdir@
14 include $(MOD_DEPTH
)/config
/autoconf.mk
16 include $(topsrcdir
)/config
/config.mk
178 ifeq ($(OS_ARCH
),WINCE
)
179 CFLAGS
+= -FImozce_shunt.h
-Zi
-UDEBUG
-DNDEBUG
180 LDOPTS
+= -link
$(DIST
)/lib
/mozce_shunt.lib ws2.lib
-DEBUG
-DEBUGTYPE
:CV
-INCREMENTAL
:NO
-PDB
:$(@
:.exe
=.pdb
)
183 ifeq ($(OS_TARGET
),OS2
)
191 ifeq (,$(filter-out WINCE WINNT OS2
,$(OS_ARCH
)))
199 PROGS
= $(addprefix $(OBJDIR
)/, $(CSRCS
:.c
=$(PROG_SUFFIX
)))
203 INCLUDES
= -I
$(dist_includedir
) -I
$(topsrcdir
)/pr
/include -I
$(topsrcdir
)/pr
/include/private
205 ifeq ($(OS_ARCH
), WINNT
)
207 EXTRA_LIBS
+= -lwsock32
209 EXTRA_LIBS
+= wsock32.lib
210 LDOPTS
= -NOLOGO
-DEBUG
-DEBUGTYPE
:CV
-INCREMENTAL
:NO
212 LDOPTS
+= -PROFILE
-MAP
217 ifeq ($(OS_ARCH
),OS2
)
218 EXTRA_LIBS
= $(OS_LIBS
)
219 LDOPTS
= -Zomf
-Zlinker
/PM
:VIO
-Zlinker
/ST
:0x64000
222 ifneq ($(OS_ARCH
), WINNT
)
223 # Use an absolute pathname as the runtime library path (for the -R
224 # or -rpath linker option or the LD_RUN_PATH environment variable).
225 ifeq (,$(patsubst /%,,$(DIST
)))
226 # $(DIST) is already an absolute pathname.
227 ABSOLUTE_LIB_DIR
= $(dist_libdir
)
229 # $(DIST) is a relative pathname: prepend the current directory.
231 ABSOLUTE_LIB_DIR
= $(PWD
)/$(dist_libdir
)
235 ifeq ($(OS_ARCH
), IRIX
)
236 ifeq ($(USE_CPLUS
), 1)
239 LDOPTS
+= -rpath
$(ABSOLUTE_LIB_DIR
)
241 LDOPTS
+= -Wl
,-rdata_shared
243 LDOPTS
+= -rdata_shared
245 # For 6.x machines, include this flag
246 ifeq ($(basename $(OS_RELEASE
)),6)
254 ifeq ($(USE_PTHREADS
), 1)
255 ifeq ($(OS_RELEASE
), 6.2)
256 LDOPTS
+= -Wl
,-woff
,85
263 ifeq ($(OS_ARCH
), OSF1
)
264 ifeq ($(USE_CPLUS
), 1)
267 # I haven't figured out how to pass -rpath to cc on OSF1 V3.2, so
268 # we do static linking.
269 ifeq (,$(filter-out V2.0 V3.2
,$(OS_RELEASE
)))
270 LIBNSPR
= $(dist_libdir
)/libnspr
$(MOD_MAJOR_VERSION
).a
271 LIBPLC
= $(dist_libdir
)/libplc
$(MOD_MAJOR_VERSION
).a
274 LDOPTS
+= -rpath
$(ABSOLUTE_LIB_DIR
)
278 ifeq ($(OS_ARCH
), HP-UX
)
279 LDOPTS
+= -z
-Wl
,+s
,+b
,$(ABSOLUTE_LIB_DIR
)
283 ifeq ($(USE_PTHREADS
),1)
284 EXTRA_LIBS
= $(LIBPTHREAD
)
289 ifeq ($(OS_ARCH
),AIX
)
290 LDOPTS
+= -blibpath
:$(ABSOLUTE_LIB_DIR
):/usr
/lib
:/lib
291 ifneq ($(OS_ARCH
)$(OS_RELEASE
),AIX4.1
)
298 ifeq ($(OS_ARCH
), SunOS
)
300 LDOPTS
+= -Xlinker
-R
-Xlinker
$(ABSOLUTE_LIB_DIR
)
302 ifeq ($(USE_CPLUS
), 1)
305 LDOPTS
+= -R
$(ABSOLUTE_LIB_DIR
)
309 EXTRA_LIBS
= -lpthread
313 ifeq (,$(filter-out Linux GNU GNU_
%,$(OS_ARCH
)))
314 LDOPTS
+= -Xlinker
-rpath
$(ABSOLUTE_LIB_DIR
)
315 ifeq ($(USE_PTHREADS
),1)
316 EXTRA_LIBS
= -lpthread
320 ifeq ($(OS_ARCH
), SCOOS
)
321 # SCO Unix needs to link against -lsocket again even though we
322 # already linked with these system libraries when we built libnspr.so.
323 EXTRA_LIBS
= -lsocket
324 # This hardcodes in the executable programs the directory to find
325 # libnspr.so etc. at program startup. Equivalent to the -R or -rpath
326 # option for ld on other platforms.
327 export LD_RUN_PATH
= $(ABSOLUTE_LIB_DIR
)
330 ifeq ($(OS_ARCH
),OpenUNIX
)
331 export LD_RUN_PATH
= $(ABSOLUTE_LIB_DIR
)
332 ifeq ($(USE_PTHREADS
),1)
337 ifeq ($(OS_ARCH
), UNIXWARE
)
338 export LD_RUN_PATH
= $(ABSOLUTE_LIB_DIR
)
341 ifeq ($(OS_ARCH
),FreeBSD
)
342 ifeq ($(USE_PTHREADS
),1)
345 LDOPTS
+= -Xlinker
-R
$(ABSOLUTE_LIB_DIR
)
348 ifeq ($(OS_ARCH
),OpenBSD
)
349 ifeq ($(USE_PTHREADS
),1)
354 ifeq ($(OS_ARCH
),BSD_OS
)
355 ifneq ($(OS_RELEASE
),1.1)
360 ifeq ($(OS_ARCH
),RISCOS
)
364 ifeq ($(USE_PTHREADS
),1)
365 LIBPTHREAD
= -lpthread
366 ifeq ($(OS_ARCH
),AIX
)
367 LIBPTHREAD
= -lpthreads
369 ifeq (,$(filter-out FreeBSD OpenBSD BSD_OS QNX Darwin OpenUNIX
,$(OS_ARCH
)))
372 ifeq ($(OS_ARCH
)$(basename $(OS_RELEASE
)),HP-UXB
.10)
377 ifeq ($(OS_TARGET
),Android
)
379 XCFLAGS
= $(OS_CFLAGS
)
382 #####################################################
386 #####################################################
388 include $(topsrcdir
)/config
/rules.mk
391 ifeq ($(OS_ARCH
),AIX
)
392 ifeq ($(OS_RELEASE
),4.1)
393 ifneq ($(USE_PTHREADS
), 1)
399 ifeq ($(AIX_PRE_4_2
),1)
401 # AIX releases prior to 4.2 need a special two-step linking hack
402 # in order to both override the system select() and be able to
403 # get at the original system select().
405 # We use a pattern rule in ns/nspr20/config/rules.mk to generate
406 # the .$(OBJ_SUFFIX) file from the .c source file, then do the
407 # two-step linking hack below.
409 $(OBJDIR
)/%: $(OBJDIR
)/%.
$(OBJ_SUFFIX
)
412 $(CC
) $(AIX_LINK_OPTS
) -o
$(AIX_TMP
) $< $(dist_libdir
)/libnspr
$(MOD_MAJOR_VERSION
).a
413 $(CC
) -o
$@
$(AIX_TMP
) $(AIX_WRAP
)
418 # All platforms that are not AIX pre-4.2.
420 $(OBJDIR
)/%$(PROG_SUFFIX
): $(OBJDIR
)/%.
$(OBJ_SUFFIX
)
422 ifeq ($(NS_USE_GCC
)_
$(OS_ARCH
),_WINNT
)
423 link
$(LDOPTS
) $(EXTRA_LDOPTS
) $< $(LIBPLC
) $(LIBNSPR
) $(EXTRA_LIBS
) -out
:$@
425 @if
test -f
$@.manifest
; then \
426 $(MT
) -NOLOGO
-MANIFEST
$@.manifest
-OUTPUTRESOURCE
:$@\
;1; \
431 $(PURE
) $(CC
) $(XCFLAGS
) $< $(LDOPTS
) $(LIBPLC
) $(LIBNSPR
) $(EXTRA_LIBS
) -o
$@
439 # The following tests call BSD socket functions, so they need to link
440 # with -lsocket on some platforms.
441 ifeq ($(OS_ARCH
),SunOS
)
443 $(OBJDIR
)/gethost
: $(OBJDIR
)/gethost.o
444 $(PURE
) $(CC
) $(XCFLAGS
) $< $(LDOPTS
) $(LIBPLC
) $(LIBNSPR
) -lsocket
$(EXTRA_LIBS
) -o
$@
446 $(OBJDIR
)/prpoll
: $(OBJDIR
)/prpoll.o
447 $(PURE
) $(CC
) $(XCFLAGS
) $< $(LDOPTS
) $(LIBPLC
) $(LIBNSPR
) -lsocket
$(EXTRA_LIBS
) -o
$@
450 ifeq ($(USE_PTHREADS
), 1)
451 $(OBJDIR
)/attach
: $(OBJDIR
)/attach.o
452 $(PURE
) $(CC
) $(XCFLAGS
) $< $(LDOPTS
) $(LIBPLC
) $(LIBNSPR
) $(LIBPTHREAD
) $(EXTRA_LIBS
) -o
$@
453 $(OBJDIR
)/foreign
: $(OBJDIR
)/foreign.o
454 $(PURE
) $(CC
) $(XCFLAGS
) $< $(LDOPTS
) $(LIBPLC
) $(LIBNSPR
) $(LIBPTHREAD
) $(EXTRA_LIBS
) -o
$@
455 $(OBJDIR
)/provider
: $(OBJDIR
)/provider.o
456 $(PURE
) $(CC
) $(XCFLAGS
) $< $(LDOPTS
) $(LIBPLC
) $(LIBNSPR
) $(LIBPTHREAD
) $(EXTRA_LIBS
) -o
$@
457 $(OBJDIR
)/socket
: $(OBJDIR
)/socket.o
458 $(PURE
) $(CC
) $(XCFLAGS
) $< $(LDOPTS
) $(LIBPLC
) $(LIBNSPR
) $(LIBPTHREAD
) $(EXTRA_LIBS
) -o
$@
459 $(OBJDIR
)/testfile
: $(OBJDIR
)/testfile.o
460 $(PURE
) $(CC
) $(XCFLAGS
) $< $(LDOPTS
) $(LIBPLC
) $(LIBNSPR
) $(LIBPTHREAD
) $(EXTRA_LIBS
) -o
$@
464 # Run the test programs with no arguments
466 # Test output goes to the file pointed to by the environment variable
467 # NSPR_TEST_LOGFILE, if set, else to /dev/null
470 PROGRAMS
= $(notdir $(PROGS
))
471 ifdef NSPR_TEST_LOGFILE
472 LOGFILE
= $(NSPR_TEST_LOGFILE
)
474 ifeq (,$(filter-out WINNT OS2
,$(OS_ARCH
)))
481 ifeq ($(OS_TARGET
),Linux
)
487 runtests
:: $(PROGS
) ALWAYS
488 @
$(ECHO
) "\nNSPR Test Results - $(OBJDIR)\n"
489 @
$(ECHO
) "BEGIN\t\t\t`date`"
490 @
$(ECHO
) "NSPR_TEST_LOGFILE\t$(LOGFILE)\n"
491 @
$(ECHO
) "Test\t\t\tResult\n"
492 @cd
$(OBJDIR
); for i in
$(PROGRAMS
); do \
494 .
/$$i >> $(LOGFILE
) 2>&1 ; \
495 if
[ 0 = $$?
] ; then \
496 $(ECHO
) "\t\t\tPassed"; \
498 $(ECHO
) "\t\t\tFAILED"; \
501 @
$(ECHO
) "\nEND\t\t`date`\n"