summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cvsignore5
-rw-r--r--Makefile105
-rw-r--r--Makefile.in22
-rwxr-xr-xbuild/autoconf/config.guess946
-rwxr-xr-xbuild/autoconf/config.sub562
-rw-r--r--config/.cvsignore5
-rw-r--r--config/BSD_OS.mk4
-rw-r--r--config/BeOS.mk1
-rw-r--r--config/HP-UX.mk3
-rw-r--r--config/Linux.mk6
-rw-r--r--config/Makefile118
-rw-r--r--config/Makefile.in35
-rw-r--r--config/NTO.mk6
-rw-r--r--config/NetBSD.mk28
-rw-r--r--config/OS2.mk11
-rw-r--r--config/OSF1.mk2
-rw-r--r--config/OpenBSD.mk4
-rw-r--r--config/Rhapsody.mk17
-rw-r--r--config/UNIX.mk1
-rw-r--r--config/WIN32.mk10
-rw-r--r--config/arch.mk14
-rw-r--r--config/autoconf.mk.in52
-rw-r--r--config/config.mk122
-rw-r--r--config/nsinstall.c2
-rwxr-xr-xconfig/nspr-config.in111
-rw-r--r--config/nspr.m467
-rw-r--r--config/rules.mk103
-rw-r--r--config/win16.mk1
-rwxr-xr-xconfigure2859
-rw-r--r--configure.in1292
-rw-r--r--gmakefile.win76
-rw-r--r--lib/.cvsignore1
-rw-r--r--lib/Makefile32
-rw-r--r--lib/Makefile.in1
-rw-r--r--lib/ds/.cvsignore2
-rw-r--r--lib/ds/Makefile174
-rw-r--r--lib/ds/Makefile.in90
-rw-r--r--lib/ds/plhash.c45
-rw-r--r--lib/ds/plhash.h7
-rw-r--r--lib/libc/.cvsignore1
-rw-r--r--lib/libc/Makefile.in1
-rw-r--r--lib/libc/include/.cvsignore1
-rw-r--r--lib/libc/include/Makefile37
-rw-r--r--lib/libc/include/Makefile.in3
-rw-r--r--lib/libc/src/.cvsignore2
-rw-r--r--lib/libc/src/Makefile174
-rw-r--r--lib/libc/src/Makefile.in87
-rw-r--r--lib/libc/src/strccmp.c18
-rw-r--r--lib/msgc/.cvsignore1
-rw-r--r--lib/msgc/Makefile28
-rw-r--r--lib/msgc/Makefile.in1
-rw-r--r--lib/msgc/include/.cvsignore1
-rw-r--r--lib/msgc/include/Makefile37
-rw-r--r--lib/msgc/include/Makefile.in3
-rw-r--r--lib/msgc/src/.cvsignore1
-rw-r--r--lib/msgc/src/Makefile121
-rw-r--r--lib/msgc/src/Makefile.in74
-rw-r--r--lib/msgc/tests/.cvsignore1
-rw-r--r--lib/msgc/tests/Makefile290
-rw-r--r--lib/msgc/tests/Makefile.in84
-rw-r--r--lib/prstreams/.cvsignore1
-rw-r--r--lib/prstreams/Makefile199
-rw-r--r--lib/prstreams/Makefile.in91
-rw-r--r--lib/prstreams/tests/testprstrm/.cvsignore1
-rw-r--r--lib/prstreams/tests/testprstrm/Makefile230
-rw-r--r--lib/prstreams/tests/testprstrm/Makefile.in69
-rw-r--r--lib/tests/.cvsignore1
-rw-r--r--lib/tests/Makefile235
-rw-r--r--lib/tests/Makefile.in73
-rw-r--r--macbuild/NSPR20PPC.mcpbin97889 -> 167357 bytes
-rw-r--r--macbuild/NSPRCarbon.Prefix11
-rw-r--r--macbuild/NSPRCarbonDebug.Prefix12
-rw-r--r--macbuild/NSPRConfig.h1
-rw-r--r--makefile.win105
-rw-r--r--pr/.cvsignore1
-rw-r--r--pr/Makefile24
-rw-r--r--pr/include/.cvsignore1
-rw-r--r--pr/include/Makefile37
-rw-r--r--pr/include/Makefile.in5
-rw-r--r--pr/include/md/.cvsignore1
-rw-r--r--pr/include/md/Makefile189
-rw-r--r--pr/include/md/Makefile.in157
-rw-r--r--pr/include/md/_aix32in6.cfg3
-rw-r--r--pr/include/md/_aix64.cfg3
-rw-r--r--pr/include/md/_beos.cfg2
-rw-r--r--pr/include/md/_beos.h5
-rw-r--r--pr/include/md/_bsdi.cfg2
-rw-r--r--pr/include/md/_darwin.cfg2
-rw-r--r--pr/include/md/_darwin.h2
-rw-r--r--pr/include/md/_freebsd.cfg2
-rw-r--r--pr/include/md/_linux.cfg15
-rw-r--r--pr/include/md/_linux.h20
-rw-r--r--pr/include/md/_macos.h16
-rw-r--r--pr/include/md/_netbsd.cfg8
-rw-r--r--pr/include/md/_netbsd.h121
-rw-r--r--pr/include/md/_nto.cfg2
-rw-r--r--pr/include/md/_nto.h6
-rw-r--r--pr/include/md/_openbsd.cfg2
-rw-r--r--pr/include/md/_openvms.cfg2
-rw-r--r--pr/include/md/_openvms.h12
-rw-r--r--pr/include/md/_os2.cfg2
-rw-r--r--pr/include/md/_os2.h7
-rw-r--r--pr/include/md/_pth.h6
-rw-r--r--pr/include/md/_rhapsody.cfg2
-rw-r--r--pr/include/md/_rhapsody.h2
-rw-r--r--pr/include/md/_solaris.h23
-rw-r--r--pr/include/obsolete/.cvsignore1
-rw-r--r--pr/include/obsolete/Makefile35
-rw-r--r--pr/include/obsolete/Makefile.in7
-rw-r--r--pr/include/obsolete/protypes.h3
-rw-r--r--pr/include/prinet.h2
-rw-r--r--pr/include/prinit.h6
-rw-r--r--pr/include/prio.h30
-rw-r--r--pr/include/private/.cvsignore1
-rw-r--r--pr/include/private/Makefile35
-rw-r--r--pr/include/private/Makefile.in7
-rw-r--r--pr/include/private/primpl.h71
-rw-r--r--pr/include/prtypes.h8
-rw-r--r--pr/src/.cvsignore2
-rw-r--r--pr/src/Makefile431
-rw-r--r--pr/src/Makefile.in167
-rw-r--r--pr/src/bthreads/.cvsignore1
-rw-r--r--pr/src/bthreads/Makefile33
-rw-r--r--pr/src/bthreads/Makefile.in3
-rw-r--r--pr/src/bthreads/btcvar.c64
-rw-r--r--pr/src/bthreads/btthread.c740
-rw-r--r--pr/src/cplus/.cvsignore1
-rw-r--r--pr/src/cplus/Makefile51
-rw-r--r--pr/src/cplus/Makefile.in3
-rw-r--r--pr/src/cplus/tests/.cvsignore1
-rw-r--r--pr/src/cplus/tests/Makefile263
-rw-r--r--pr/src/cplus/tests/Makefile.in64
-rw-r--r--pr/src/io/.cvsignore1
-rw-r--r--pr/src/io/Makefile65
-rw-r--r--pr/src/io/Makefile.in3
-rw-r--r--pr/src/io/pripv6.c32
-rw-r--r--pr/src/io/prlog.c39
-rw-r--r--pr/src/io/prprf.c4
-rw-r--r--pr/src/io/prsocket.c4
-rw-r--r--pr/src/linking/.cvsignore1
-rw-r--r--pr/src/linking/Makefile45
-rw-r--r--pr/src/linking/Makefile.in3
-rw-r--r--pr/src/linking/prlink.c140
-rw-r--r--pr/src/malloc/.cvsignore1
-rw-r--r--pr/src/malloc/Makefile43
-rw-r--r--pr/src/malloc/Makefile.in3
-rw-r--r--pr/src/md/.cvsignore1
-rw-r--r--pr/src/md/Makefile59
-rw-r--r--pr/src/md/Makefile.in26
-rw-r--r--pr/src/md/beos/.cvsignore1
-rw-r--r--pr/src/md/beos/Makefile30
-rw-r--r--pr/src/md/beos/Makefile.in3
-rw-r--r--pr/src/md/mac/macdll.c9
-rw-r--r--pr/src/md/mac/macsockotpt.c240
-rw-r--r--pr/src/md/mac/macthr.c2
-rw-r--r--pr/src/md/mac/mdmac.c4
-rw-r--r--pr/src/md/mac/prcpucfg.h2
-rw-r--r--pr/src/md/os2/.cvsignore1
-rw-r--r--pr/src/md/os2/Makefile53
-rw-r--r--pr/src/md/os2/Makefile.in4
-rw-r--r--pr/src/md/os2/objs.mk (renamed from lib/libc/Makefile)33
-rw-r--r--pr/src/md/os2/os2cv.c12
-rw-r--r--pr/src/md/os2/os2inrval.c6
-rw-r--r--pr/src/md/os2/os2io.c59
-rw-r--r--pr/src/md/os2/os2misc.c2
-rw-r--r--pr/src/md/os2/os2poll.c154
-rw-r--r--pr/src/md/os2/os2sem.c10
-rw-r--r--pr/src/md/os2/os2sock.c268
-rw-r--r--pr/src/md/os2/os2thred.c26
-rw-r--r--pr/src/md/unix/.cvsignore1
-rw-r--r--pr/src/md/unix/Makefile316
-rw-r--r--pr/src/md/unix/Makefile.in261
-rw-r--r--pr/src/md/unix/darwin.c27
-rw-r--r--pr/src/md/unix/objs.mk217
-rw-r--r--pr/src/md/unix/os_Linux_x86.s95
-rw-r--r--pr/src/md/unix/rhapsody.c27
-rw-r--r--pr/src/md/unix/uxproces.c108
-rw-r--r--pr/src/md/unix/uxrng.c3
-rw-r--r--pr/src/md/unix/uxshm.c2
-rw-r--r--pr/src/md/windows/.cvsignore1
-rw-r--r--pr/src/md/windows/Makefile87
-rw-r--r--pr/src/md/windows/Makefile.in9
-rw-r--r--pr/src/md/windows/ntinrval.c2
-rw-r--r--pr/src/md/windows/ntio.c9
-rw-r--r--pr/src/md/windows/objs.mk16
-rw-r--r--pr/src/md/windows/w95io.c5
-rw-r--r--pr/src/memory/.cvsignore1
-rw-r--r--pr/src/memory/Makefile44
-rw-r--r--pr/src/memory/Makefile.in16
-rw-r--r--pr/src/memory/prgcleak.c105
-rw-r--r--pr/src/misc/.cvsignore1
-rw-r--r--pr/src/misc/Makefile88
-rw-r--r--pr/src/misc/Makefile.in23
-rw-r--r--pr/src/misc/prnetdb.c10
-rw-r--r--pr/src/misc/prthinfo.c14
-rw-r--r--pr/src/misc/prtime.c2
-rw-r--r--pr/src/prvrsion.c2
-rw-r--r--pr/src/pthreads/.cvsignore1
-rw-r--r--pr/src/pthreads/Makefile49
-rw-r--r--pr/src/pthreads/Makefile.in3
-rw-r--r--pr/src/pthreads/ptio.c7
-rw-r--r--pr/src/pthreads/ptsynch.c52
-rw-r--r--pr/src/pthreads/ptthread.c72
-rw-r--r--pr/src/threads/.cvsignore1
-rw-r--r--pr/src/threads/Makefile77
-rw-r--r--pr/src/threads/Makefile.in12
-rw-r--r--pr/src/threads/combined/.cvsignore1
-rw-r--r--pr/src/threads/combined/Makefile54
-rw-r--r--pr/src/threads/combined/Makefile.in3
-rw-r--r--pr/src/threads/combined/pruthr.c8
-rw-r--r--pr/tests/.cvsignore1
-rw-r--r--pr/tests/Makefile571
-rw-r--r--pr/tests/Makefile.in172
-rw-r--r--pr/tests/attach.c41
-rw-r--r--pr/tests/dll/.cvsignore1
-rw-r--r--pr/tests/dll/Makefile96
-rw-r--r--pr/tests/dll/Makefile.in13
-rw-r--r--pr/tests/ipv6.c29
-rw-r--r--pr/tests/tpd.c6
-rw-r--r--pr/tests/w16gui/.cvsignore1
-rw-r--r--pr/tests/w16gui/Makefile75
-rw-r--r--pr/tests/w16gui/Makefile.in7
-rw-r--r--tools/.cvsignore1
-rw-r--r--tools/Makefile225
-rw-r--r--tools/Makefile.in52
225 files changed, 7299 insertions, 8862 deletions
diff --git a/.cvsignore b/.cvsignore
new file mode 100644
index 00000000..5a12c765
--- /dev/null
+++ b/.cvsignore
@@ -0,0 +1,5 @@
+Makefile
+config-defs.h
+config.cache
+config.log
+config.status
diff --git a/Makefile b/Makefile
deleted file mode 100644
index e92f2d40..00000000
--- a/Makefile
+++ /dev/null
@@ -1,105 +0,0 @@
-#! gmake
-
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-MOD_DEPTH = .
-
-DIRS = config pr lib
-
-ifdef MOZILLA_CLIENT
-PR_CLIENT_BUILD = 1
-PR_CLIENT_BUILD_UNIX = 1
-endif
-
-include $(MOD_DEPTH)/config/rules.mk
-
-#
-# The -ll option of zip converts CR LF to LF.
-#
-ifeq ($(OS_ARCH),WINNT)
-ZIP_ASCII_OPT = -ll
-endif
-
-ifdef PR_CLIENT_BUILD
-export::
- rm -r -f $(DIST)/../public/nspr
-ifdef PR_CLIENT_BUILD_UNIX
- rm -f $(DIST)/lib/libnspr.a
- rm -f $(DIST)/bin/libnspr.$(DLL_SUFFIX)
-endif
-endif
-
-release::
- echo $(BUILD_NUMBER) > $(RELEASE_DIR)/$(BUILD_NUMBER)/version.df
- @if test -f imports.df; then \
- echo "cp -f imports.df $(RELEASE_DIR)/$(BUILD_NUMBER)/imports.df"; \
- cp -f imports.df $(RELEASE_DIR)/$(BUILD_NUMBER)/imports.df; \
- else \
- echo "echo > $(RELEASE_DIR)/$(BUILD_NUMBER)/imports.df"; \
- echo > $(RELEASE_DIR)/$(BUILD_NUMBER)/imports.df; \
- fi
- cd $(RELEASE_DIR)/$(BUILD_NUMBER)/$(OBJDIR_NAME); \
- rm -rf META-INF; mkdir META-INF; cd META-INF; \
- echo "Manifest-Version: 1.0" > MANIFEST.MF; \
- echo "" >> MANIFEST.MF; \
- cd ..; rm -f mdbinary.jar; zip -r mdbinary.jar META-INF bin lib; \
- rm -rf META-INF; \
- cd include; \
- rm -rf META-INF; mkdir META-INF; cd META-INF; \
- echo "Manifest-Version: 1.0" > MANIFEST.MF; \
- echo "" >> MANIFEST.MF; \
- cd ..; rm -f mdheader.jar; zip $(ZIP_ASCII_OPT) -r mdheader.jar *; \
- rm -rf META-INF
-ifeq ($(OS_ARCH),WINNT)
- @if test ! -d $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER); then \
- rm -rf $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER); \
- echo "making directory /m/dist/$(MOD_NAME)/$(BUILD_NUMBER)"; \
- config/prmkdir.bat $(MDIST_DOS)\\$(MOD_NAME)\\$(BUILD_NUMBER); \
- fi
- @if test ! -d $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER)/$(OBJDIR_NAME); then \
- rm -rf $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER)/$(OBJDIR_NAME); \
- echo "making directory /m/dist/$(MOD_NAME)/$(BUILD_NUMBER)/$(OBJDIR_NAME)"; \
- config/prmkdir.bat $(MDIST_DOS)\\$(MOD_NAME)\\$(BUILD_NUMBER)\\$(OBJDIR_NAME); \
- fi
-else
- @if test ! -d $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER); then \
- rm -rf $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER); \
- echo "making directory /m/dist/$(MOD_NAME)/$(BUILD_NUMBER)"; \
- $(NSINSTALL) -D $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER); \
- chmod 775 $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER); \
- fi
- @if test ! -d $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER)/$(OBJDIR_NAME); then \
- rm -rf $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER)/$(OBJDIR_NAME); \
- echo "making directory /m/dist/$(MOD_NAME)/$(BUILD_NUMBER)/$(OBJDIR_NAME)"; \
- $(NSINSTALL) -D $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER)/$(OBJDIR_NAME); \
- chmod 775 $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER)/$(OBJDIR_NAME); \
- fi
-endif
- cd $(RELEASE_DIR)/$(BUILD_NUMBER); \
- cp -f version.df imports.df $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER); \
- chmod 664 $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER)/version.df; \
- chmod 664 $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER)/imports.df; \
- cd $(OBJDIR_NAME); \
- cp -f mdbinary.jar $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER)/$(OBJDIR_NAME); \
- chmod 664 $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER)/$(OBJDIR_NAME)/mdbinary.jar; \
- cd include; \
- cp -f mdheader.jar $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER)/$(OBJDIR_NAME); \
- chmod 664 $(MDIST)/$(MOD_NAME)/$(BUILD_NUMBER)/$(OBJDIR_NAME)/mdheader.jar
-
-depend:
- @echo "NSPR20 has no dependencies. Skipped."
diff --git a/Makefile.in b/Makefile.in
index 8ff221b8..a7ced32d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,5 +1,4 @@
#! gmake
-
#
# The contents of this file are subject to the Netscape Public License
# Version 1.1 (the "NPL"); you may not use this file except in
@@ -31,8 +30,19 @@ PR_CLIENT_BUILD = 1
PR_CLIENT_BUILD_UNIX = 1
endif
+DIST_GARBAGE = config.cache config.log config.status
+
+all:: config.status export
+
include $(topsrcdir)/config/rules.mk
+config.status:: configure
+ifeq ($(OS_ARCH),WINNT)
+ sh $(srcdir)/configure --no-create --no-recursion
+else
+ ./config.status --recheck && ./config.status
+endif
+
#
# The -ll option of zip converts CR LF to LF.
#
@@ -44,11 +54,17 @@ ifdef PR_CLIENT_BUILD
export::
rm -r -f $(DIST)/../public/nspr
ifdef PR_CLIENT_BUILD_UNIX
- rm -f $(DIST)/lib/libnspr.a
- rm -f $(DIST)/bin/libnspr.$(DLL_SUFFIX)
+ rm -f $(dist_libdir)/libnspr.a
+ rm -f $(dist_bindir)/libnspr.$(DLL_SUFFIX)
endif
endif
+# Delete config/autoconf.mk last because it is included by every makefile.
+distclean::
+ @echo "cd pr/tests; $(MAKE) $@"
+ @$(MAKE) -C pr/tests $@
+ rm -f config/autoconf.mk
+
release::
echo $(BUILD_NUMBER) > $(RELEASE_DIR)/$(BUILD_NUMBER)/version.df
@if test -f imports.df; then \
diff --git a/build/autoconf/config.guess b/build/autoconf/config.guess
index 441894dc..95e52667 100755
--- a/build/autoconf/config.guess
+++ b/build/autoconf/config.guess
@@ -1,7 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
-#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+
+timestamp='2001-03-30'
+
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
@@ -22,18 +25,92 @@
# the same distribution terms that you use for the rest of that program.
# Written by Per Bothner <bothner@cygnus.com>.
-# The master version of this file is at the FSF in /home/gd/gnu/lib.
+# Please send patches to <config-patches@gnu.org>.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# exits with 0. Otherwise, it exits with 1.
#
# The plan is that this can be called by configure scripts if you
-# don't specify an explicit system type (host/target name).
-#
-# Only a few systems have been added to this list; please add others
-# (but try to keep the structure clean).
-#
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+
+dummy=dummy-$$
+trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script.
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int dummy(){}" > $dummy.c
+ for c in cc gcc c89 ; do
+ ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1
+ if test $? = 0 ; then
+ CC_FOR_BUILD="$c"; break
+ fi
+ done
+ rm -f $dummy.c $dummy.o $dummy.rel
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 8/24/94.)
@@ -43,14 +120,57 @@ fi
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
-
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # Netbsd (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ # Determine the machine/vendor (is the vendor relevant).
+ case "${UNAME_MACHINE}" in
+ amiga) machine=m68k-unknown ;;
+ arm32) machine=arm-unknown ;;
+ atari*) machine=m68k-atari ;;
+ sun3*) machine=m68k-sun ;;
+ mac68k) machine=m68k-apple ;;
+ macppc) machine=powerpc-apple ;;
+ hp3[0-9][05]) machine=m68k-hp ;;
+ ibmrt|romp-ibm) machine=romp-ibm ;;
+ *) machine=${UNAME_MACHINE}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE}" in
+ i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k)
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit 0 ;;
alpha:OSF1:*:*)
if test $UNAME_RELEASE = "V4.0"; then
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
@@ -59,59 +179,75 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- cat <<EOF >dummy.s
+ cat <<EOF >$dummy.s
+ .data
+\$Lformat:
+ .byte 37,100,45,37,120,10,0 # "%d-%x\n"
+
+ .text
.globl main
+ .align 4
.ent main
main:
- .frame \$30,0,\$26,0
- .prologue 0
- .long 0x47e03d80 # implver $0
- lda \$2,259
- .long 0x47e20c21 # amask $2,$1
- srl \$1,8,\$2
- sll \$2,2,\$2
- sll \$0,3,\$0
- addl \$1,\$0,\$0
- addl \$2,\$0,\$0
- ret \$31,(\$26),1
+ .frame \$30,16,\$26,0
+ ldgp \$29,0(\$27)
+ .prologue 1
+ .long 0x47e03d80 # implver \$0
+ lda \$2,-1
+ .long 0x47e20c21 # amask \$2,\$1
+ lda \$16,\$Lformat
+ mov \$0,\$17
+ not \$1,\$18
+ jsr \$26,printf
+ ldgp \$29,0(\$26)
+ mov 0,\$16
+ jsr \$26,exit
.end main
EOF
- ${CC-cc} dummy.s -o dummy 2>/dev/null
+ $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
if test "$?" = 0 ; then
- ./dummy
- case "$?" in
- 7)
+ case `./$dummy` in
+ 0-0)
UNAME_MACHINE="alpha"
;;
- 15)
+ 1-0)
UNAME_MACHINE="alphaev5"
;;
- 14)
+ 1-1)
UNAME_MACHINE="alphaev56"
;;
- 10)
+ 1-101)
UNAME_MACHINE="alphapca56"
;;
- 16)
+ 2-303)
UNAME_MACHINE="alphaev6"
;;
+ 2-307)
+ UNAME_MACHINE="alphaev67"
+ ;;
esac
fi
- rm -f dummy.s dummy
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
+ rm -f $dummy.s $dummy
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit 0 ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
exit 0 ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
exit 0 ;;
Amiga*:UNIX_System_V:4.0:*)
- echo m68k-cbm-sysv4
+ echo m68k-unknown-sysv4
exit 0;;
- amiga:NetBSD:*:*)
- echo m68k-cbm-netbsd${UNAME_RELEASE}
- exit 0 ;;
amiga:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit 0 ;;
arc64:OpenBSD:*:*)
echo mips64el-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
@@ -130,16 +266,16 @@ EOF
wgrisc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit 0 ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit 0;;
- arm32:NetBSD:*:*)
- echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- SR2?01:HI-UX/MPP:*:*)
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
echo hppa1.1-hitachi-hiuxmpp
exit 0;;
- Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
echo pyramid-pyramid-sysv3
@@ -147,9 +283,12 @@ EOF
echo pyramid-pyramid-bsd
fi
exit 0 ;;
- NILE:*:*:dcosx)
+ NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
exit 0 ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
@@ -189,21 +328,38 @@ EOF
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
exit 0 ;;
- atari*:NetBSD:*:*)
- echo m68k-atari-netbsd${UNAME_RELEASE}
- exit 0 ;;
atari*:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- sun3*:NetBSD:*:*)
- echo m68k-sun-netbsd${UNAME_RELEASE}
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
exit 0 ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit 0 ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit 0 ;;
sun3*:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- mac68k:NetBSD:*:*)
- echo m68k-apple-netbsd${UNAME_RELEASE}
- exit 0 ;;
mac68k:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
@@ -225,12 +381,17 @@ EOF
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
exit 0 ;;
- 2020:CLIX:*:*)
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
echo clipper-intergraph-clix${UNAME_RELEASE}
exit 0 ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
- sed 's/^ //' << EOF >dummy.c
- int main (argc, argv) int argc; char **argv; {
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
@@ -245,10 +406,10 @@ EOF
exit (-1);
}
EOF
- ${CC-cc} dummy.c -o dummy \
- && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
+ $CC_FOR_BUILD $dummy.c -o $dummy \
+ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+ && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
echo mips-mips-riscos${UNAME_RELEASE}
exit 0 ;;
Night_Hawk:Power_UNIX:*:*)
@@ -266,15 +427,18 @@ EOF
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
- -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
echo m88k-dg-dgux${UNAME_RELEASE}
- else
+ else
echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
fi
- else echo i586-dg-dgux${UNAME_RELEASE}
- fi
exit 0 ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
@@ -298,9 +462,17 @@ EOF
i?86:AIX:*:*)
echo i386-ibm-aix
exit 0 ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit 0 ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- sed 's/^ //' << EOF >dummy.c
+ sed 's/^ //' << EOF >$dummy.c
#include <sys/systemcfg.h>
main()
@@ -311,8 +483,8 @@ EOF
exit(0);
}
EOF
- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
+ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
echo rs6000-ibm-aix3.2.5
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
@@ -320,8 +492,9 @@ EOF
echo rs6000-ibm-aix3.2
fi
exit 0 ;;
- *:AIX:*:4)
- if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
+ *:AIX:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
@@ -329,7 +502,7 @@ EOF
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
- IBM_REV=4.${UNAME_RELEASE}
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
exit 0 ;;
@@ -339,7 +512,7 @@ EOF
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
exit 0 ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
exit 0 ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
@@ -354,18 +527,75 @@ EOF
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
exit 0 ;;
- 9000/[3478]??:HP-UX:*:*)
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
case "${UNAME_MACHINE}" in
9000/31? ) HP_ARCH=m68000 ;;
9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;;
- 9000/8?? ) HP_ARCH=hppa1.0 ;;
+ 9000/[678][0-9][0-9])
+ case "${HPUX_REV}" in
+ 11.[0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ esac ;;
+ esac
+ fi ;;
+ esac
+ if [ "${HP_ARCH}" = "" ]; then
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
+ if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+ rm -f $dummy.c $dummy
+ fi ;;
esac
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit 0 ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit 0 ;;
3050*:HI-UX:*:*)
- sed 's/^ //' << EOF >dummy.c
+ sed 's/^ //' << EOF >$dummy.c
#include <unistd.h>
int
main ()
@@ -390,8 +620,8 @@ EOF
exit (0);
}
EOF
- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
+ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
echo unknown-hitachi-hiuxwe2
exit 0 ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
@@ -400,6 +630,9 @@ EOF
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
exit 0 ;;
+ *9??*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit 0 ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
exit 0 ;;
@@ -416,6 +649,9 @@ EOF
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
exit 0 ;;
+ hppa*:OpenBSD:*:*)
+ echo hppa-unknown-openbsd
+ exit 0 ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
exit 0 ;;
@@ -446,45 +682,70 @@ EOF
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
exit 0 ;;
CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE}
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*T3D:*:*:*)
+ echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
CRAY-2:*:*:*)
echo cray2-cray-unicos
exit 0 ;;
- F300:UNIX_System_V:*:*)
- FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
- F301:UNIX_System_V:*:*)
- echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
- exit 0 ;;
- hp3[0-9][05]:NetBSD:*:*)
- echo m68k-hp-netbsd${UNAME_RELEASE}
- exit 0 ;;
hp300:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- i?86:BSD/386:*:* | *:BSD/OS:*:*)
+ i?86:BSD/386:*:* | i?86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
*:FreeBSD:*:*)
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit 0 ;;
- *:NetBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin32
+ echo ${UNAME_MACHINE}-pc-cygwin
exit 0 ;;
i*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit 0 ;;
+#### MozillaHack
+# Netscape's hacked uname
+ xx:WINNT:* | xx:WIN95:*)
+ echo i586-pc-msvc
+ exit 0 ;;
+### End MozillaHack
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit 0 ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i386-pc-interix
+ exit 0 ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit 0 ;;
p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin32
+ echo powerpcle-unknown-cygwin
exit 0 ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
@@ -492,85 +753,26 @@ EOF
*:GNU:*:*)
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit 0 ;;
- *:Linux:*:*)
- # uname on the ARM produces all sorts of strangeness, and we need to
- # filter it out.
- case "$UNAME_MACHINE" in
- arm* | sa110*) UNAME_MACHINE="arm" ;;
- esac
-
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us.
- ld_help_string=`ld --help 2>&1`
- ld_supported_emulations=`echo $ld_help_string \
- | sed -ne '/supported emulations:/!d
- s/[ ][ ]*/ /g
- s/.*supported emulations: *//
- s/ .*//
- p'`
- case "$ld_supported_emulations" in
- i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;;
- i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;;
- sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
- armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
- m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
- elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;;
- esac
-
- if test "${UNAME_MACHINE}" = "alpha" ; then
- sed 's/^ //' <<EOF >dummy.s
- .globl main
- .ent main
- main:
- .frame \$30,0,\$26,0
- .prologue 0
- .long 0x47e03d80 # implver $0
- lda \$2,259
- .long 0x47e20c21 # amask $2,$1
- srl \$1,8,\$2
- sll \$2,2,\$2
- sll \$0,3,\$0
- addl \$1,\$0,\$0
- addl \$2,\$0,\$0
- ret \$31,(\$26),1
- .end main
-EOF
- LIBC=""
- ${CC-cc} dummy.s -o dummy 2>/dev/null
- if test "$?" = 0 ; then
- ./dummy
- case "$?" in
- 7)
- UNAME_MACHINE="alpha"
- ;;
- 15)
- UNAME_MACHINE="alphaev5"
- ;;
- 14)
- UNAME_MACHINE="alphaev56"
- ;;
- 10)
- UNAME_MACHINE="alphapca56"
- ;;
- 16)
- UNAME_MACHINE="alphaev6"
- ;;
- esac
-
- objdump --private-headers dummy | \
- grep ld.so.1 > /dev/null
- if test "$?" = 0 ; then
- LIBC="libc1"
- fi
- fi
- rm -f dummy.s dummy
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
- elif test "${UNAME_MACHINE}" = "mips" ; then
- cat >dummy.c <<EOF
-main(argc, argv)
- int argc;
- char *argv[];
-{
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit 0 ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux
+ exit 0 ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ mips:Linux:*:*)
+ cat >$dummy.c <<EOF
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+int main (int argc, char *argv[]) {
+#else
+int main (argc, argv) int argc; char *argv[]; {
+#endif
#ifdef __MIPSEB__
printf ("%s-unknown-linux-gnu\n", argv[1]);
#endif
@@ -580,32 +782,152 @@ main(argc, argv)
return 0;
}
EOF
- ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- else
- # Either a pre-BFD a.out linker (linux-gnuoldld)
- # or one that does not give us useful --help.
- # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
- # If ld does not provide *any* "supported emulations:"
- # that means it is gnuoldld.
- echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
- test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
-
- case "${UNAME_MACHINE}" in
- i?86)
- VENDOR=pc;
- ;;
- *)
- VENDOR=unknown;
- ;;
- esac
- # Determine whether the default compiler is a.out or elf
- cat >dummy.c <<EOF
+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
+ ;;
+ ppc:Linux:*:*)
+ # Determine Lib Version
+ cat >$dummy.c <<EOF
#include <features.h>
+#if defined(__GLIBC__)
+extern char __libc_version[];
+extern char __libc_release[];
+#endif
main(argc, argv)
int argc;
char *argv[];
{
+#if defined(__GLIBC__)
+ printf("%s %s\n", __libc_version, __libc_release);
+#else
+ printf("unknown\n");
+#endif
+ return 0;
+}
+EOF
+ LIBC=""
+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
+ if test "$?" = 0 ; then
+ ./$dummy | grep 1\.99 > /dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; fi
+ fi
+ rm -f $dummy.c $dummy
+ echo powerpc-unknown-linux-gnu${LIBC}
+ exit 0 ;;
+ alpha:Linux:*:*)
+ cat <<EOF >$dummy.s
+ .data
+ \$Lformat:
+ .byte 37,100,45,37,120,10,0 # "%d-%x\n"
+ .text
+ .globl main
+ .align 4
+ .ent main
+ main:
+ .frame \$30,16,\$26,0
+ ldgp \$29,0(\$27)
+ .prologue 1
+ .long 0x47e03d80 # implver \$0
+ lda \$2,-1
+ .long 0x47e20c21 # amask \$2,\$1
+ lda \$16,\$Lformat
+ mov \$0,\$17
+ not \$1,\$18
+ jsr \$26,printf
+ ldgp \$29,0(\$26)
+ mov 0,\$16
+ jsr \$26,exit
+ .end main
+EOF
+ LIBC=""
+ $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+ if test "$?" = 0 ; then
+ case `./$dummy` in
+ 0-0) UNAME_MACHINE="alpha" ;;
+ 1-0) UNAME_MACHINE="alphaev5" ;;
+ 1-1) UNAME_MACHINE="alphaev56" ;;
+ 1-101) UNAME_MACHINE="alphapca56" ;;
+ 2-303) UNAME_MACHINE="alphaev6" ;;
+ 2-307) UNAME_MACHINE="alphaev67" ;;
+ esac
+ objdump --private-headers $dummy | \
+ grep ld.so.1 > /dev/null
+ if test "$?" = 0 ; then
+ LIBC="libc1"
+ fi
+ fi
+ rm -f $dummy.s $dummy
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit 0 ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit 0 ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit 0 ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit 0 ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit 0 ;;
+ i?86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ ld_supported_emulations=`cd /; ld --help 2>&1 \
+ | sed -ne '/supported emulations:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported emulations: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_emulations" in
+ i?86linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit 0
+ ;;
+ elf_i?86)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ i?86coff)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit 0
+ ;;
+ esac
+ # Either a pre-BFD a.out linker (linux-gnuoldld)
+ # or one that does not give us useful --help.
+ # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
+ # If ld does not provide *any* "supported emulations:"
+ # that means it is gnuoldld.
+ test -z "$ld_supported_emulations" && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
+ case "${UNAME_MACHINE}" in
+ i?86)
+ VENDOR=pc;
+ ;;
+ *)
+ VENDOR=unknown;
+ ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ cat >$dummy.c <<EOF
+#include <features.h>
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
#ifdef __ELF__
# ifdef __GLIBC__
# if __GLIBC__ >= 2
@@ -622,9 +944,10 @@ main(argc, argv)
return 0;
}
EOF
- ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- fi ;;
+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
+ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ ;;
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
# are messed up and put the nodename in both sysname and nodename.
i?86:DYNIX/ptx:4*:*)
@@ -639,10 +962,20 @@ EOF
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit 0 ;;
i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit 0 ;;
+ i?86:*:5:7*)
+ # Fixed at (any) Pentium or better
+ UNAME_MACHINE=i586
+ if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
+ echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
fi
exit 0 ;;
i?86:*:3.2:*)
@@ -654,12 +987,20 @@ EOF
(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
+ (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
exit 0 ;;
+ i?86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit 0 ;;
pc:*:*:*)
+ # Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i386.
echo i386-pc-msdosdjgpp
@@ -683,7 +1024,7 @@ EOF
exit 0 ;;
M68*:*:R3V[567]*:*)
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
+ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
@@ -694,24 +1035,30 @@ EOF
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& echo i486-ncr-sysv4 && exit 0 ;;
- m68*:LynxOS:2.*:*)
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit 0 ;;
- i?86:LynxOS:2.*:*)
+ i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:* | i?86:LynxOS:4.0*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
- rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
+ rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
exit 0 ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
exit 0 ;;
@@ -727,6 +1074,16 @@ EOF
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
exit 0 ;;
+#### MozillaHack
+ *:*OpenVMS*:*:*)
+ case "${UNAME_SYSTEM}" in
+ POSIX_for_OpenVMS_AXP) echo alpha-dec-openvmsposix ;;
+ POSIX_for_OpenVMS_VAX) echo vax-dec-openvmsposix ;;
+ OpenVMS) echo alpha-dec-openvms ;;
+ *) echo unknown-dec-openvms ;;
+ esac
+ exit 0 ;;
+#### End MozillaHack
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
@@ -736,44 +1093,111 @@ EOF
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
exit 0 ;;
- *:Rhapsody:*:*)
- test ! -z "`echo ${UNAME_MACHINE} | grep Power`" && echo ppc-apple-rhapsody${UNAME_RELEASE} && exit 0
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
exit 0 ;;
- news*:NEWS-OS:*:6*)
+ news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
exit 0 ;;
- R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
else
echo mips-unknown-sysv${UNAME_RELEASE}
fi
exit 0 ;;
- *:QNX:*:*)
- echo i386-pc-qnx`${UNAME_VERSION} | cut -c1-1`
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
exit 0 ;;
- *:*nto:*:*)
- echo `uname -p`-pc-nto
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit 0 ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit 0 ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Darwin:*:*)
+ echo `uname -p`-apple-darwin${UNAME_RELEASE}
+ exit 0 ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ if test "${UNAME_MACHINE}" = "x86pc"; then
+ UNAME_MACHINE=pc
+ fi
+ echo `uname -p`-${UNAME_MACHINE}-nto-qnx
+ exit 0 ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit 0 ;;
+ NSR-[KW]:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit 0 ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit 0 ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit 0 ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit 0 ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit 0 ;;
+ i?86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ # echo ${UNAME_MACHINE}-pc-os2-emx
+#### MozillaHack
+ if test "$VACPP" = "yes"; then
+ echo "i386-pc-os2_vacpp"
+ else
+ echo "i386-pc-os2_emx"
+ fi
+#### End MozillaHack
+ exit 0 ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit 0 ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit 0 ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit 0 ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit 0 ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit 0 ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
exit 0 ;;
- BePC:BeOS:*:*)
- echo i386-pc-beos${UNAME_RELEASE}
- exit 0 ;;
- BeMac:BeOS:*:*)
- echo ppc-apple-beos${UNAME_RELEASE}
- exit 0 ;;
- BeBox:BeOS:*:*)
- echo ppc-be-beos${UNAME_RELEASE}
- exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-cat >dummy.c <<EOF
+cat >$dummy.c <<EOF
#ifdef _SEQUENT_
# include <sys/types.h>
# include <sys/utsname.h>
@@ -811,7 +1235,10 @@ main ()
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
@@ -856,11 +1283,24 @@ main ()
#endif
#if defined (vax)
-#if !defined (ultrix)
- printf ("vax-dec-bsd\n"); exit (0);
-#else
- printf ("vax-dec-ultrix\n"); exit (0);
-#endif
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
#endif
#if defined (alliant) && defined (i860)
@@ -871,8 +1311,8 @@ main ()
}
EOF
-${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
-rm -f dummy.c dummy
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
+rm -f $dummy.c $dummy
# Apollos put the system type in the environment.
@@ -904,6 +1344,48 @@ then
esac
fi
-#echo '(Unable to guess system type)' 1>&2
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build/autoconf/config.sub b/build/autoconf/config.sub
index 2e016f1f..a4b69bed 100755
--- a/build/autoconf/config.sub
+++ b/build/autoconf/config.sub
@@ -1,6 +1,10 @@
#! /bin/sh
-# Configuration validation subroutine script, version 1.1.
-# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+
+timestamp='2001-03-30'
+
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
# can handle that machine. It does not imply ALL GNU software can.
@@ -25,6 +29,8 @@
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
+# Please send patches to <config-patches@gnu.org>.
+#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
@@ -45,30 +51,73 @@
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
-if [ x$1 = x ]
-then
- echo Configuration name missing. 1>&2
- echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
- echo "or $0 ALIAS" 1>&2
- echo where ALIAS is a recognized configuration type. 1>&2
- exit 1
-fi
+me=`echo "$0" | sed -e 's,.*/,,'`
-# First pass through any local machine types.
-case $1 in
- *local*)
- echo $1
- exit 0
- ;;
- *)
- ;;
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit 0;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
esac
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- linux-gnu*)
+ nto-qnx* | linux-gnu* | storm-chaos* | os2-emx*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -94,15 +143,25 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple)
+ -apple | -axis)
os=
basic_machine=$1
;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
-hiux*)
os=-hiuxwe2
;;
-sco5)
- os=sco3.2v5
+ os=-sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
@@ -121,6 +180,9 @@ case $os in
os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
-isc)
os=-isc2.2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@@ -143,17 +205,9 @@ case $os in
-psos*)
os=-psos
;;
- -qnx*)
- basic_machine=x6-pc
- os=-qnx`uname -v | cut -c1-1`
- ;;
- -nto*)
- basic_machine=`uname -p`-pc
- os=-nto
- ;;
- -rhapsody*)
- basic_machine=ppc-apple
- os=-rhapsody`uname -r`
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
;;
esac
@@ -161,20 +215,39 @@ esac
case $basic_machine in
# Recognize the basic CPU types without company name.
# Some are omitted here because they have special meanings below.
- tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
- | arme[lb] | pyramid | mn10200 | mn10300 \
- | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
- | alpha | alphaev5 | alphaev56 | alphaev6 | alphapca56 | we32k | ns16k | clipper \
- | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
- | mips64 | mipsel | mips64el | mips64orion | mips64orionel \
- | mipstx39 | mipstx39el \
- | sparc | sparclet | sparclite | sparc64 | v850)
+ tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \
+ | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \
+ | pyramid | mn10200 | mn10300 | tron | a29k \
+ | 580 | i960 | h8300 \
+ | x86 | ppcbe | mipsbe | mipsle | shbe | shle \
+ | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
+ | hppa64 \
+ | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
+ | alphaev6[78] \
+ | we32k | ns16k | clipper | i370 | sh | sh[34] \
+ | powerpc | powerpcle \
+ | 1750a | dsp16xx | pdp10 | pdp11 \
+ | mips16 | mips64 | mipsel | mips64el \
+ | mips64orion | mips64orionel | mipstx39 | mipstx39el \
+ | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
+ | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \
+ | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
+ | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \
+ | pj | pjl | h8500)
basic_machine=$basic_machine-unknown
;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | w65)
+ ;;
+
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
- i[34567]86)
+ i[234567]86 | x86_64)
basic_machine=$basic_machine-pc
;;
# Object if more than one company name word.
@@ -183,27 +256,51 @@ case $basic_machine in
exit 1
;;
# Recognize the basic CPU types with company name.
- vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
+ # FIXME: clean up the formatting here.
+ vax-* | tahoe-* | i[234567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
+ | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \
+ | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
- | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
- | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* \
- | alpha-* | alphaev5-* | alphaev56-* | alphaev6-* | alphapca56-* | we32k-* | cydra-* \
- | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
- | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
- | sparc64-* | mips64-* | mipsel-* \
- | mips64el-* | mips64orion-* | mips64orionel-* \
- | mipstx39-* | mipstx39el-* \
- | f301-*)
+ | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
+ | xmp-* | ymp-* \
+ | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \
+ | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
+ | hppa2.0n-* | hppa64-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
+ | alphaev6[78]-* \
+ | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
+ | clipper-* | orion-* \
+ | sparclite-* | pdp10-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
+ | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
+ | mips64el-* | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
+ | mipstx39-* | mipstx39el-* | mcore-* \
+ | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \
+ | [cjt]90-* \
+ | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
+ | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \
+ | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*)
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
basic_machine=m68000-att
;;
3b*)
basic_machine=we32k-att
;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
alliant | fx80)
basic_machine=fx80-alliant
;;
@@ -219,20 +316,24 @@ case $basic_machine in
os=-sysv
;;
amiga | amiga-*)
- basic_machine=m68k-cbm
+ basic_machine=m68k-unknown
;;
amigaos | amigados)
- basic_machine=m68k-cbm
+ basic_machine=m68k-unknown
os=-amigaos
;;
amigaunix | amix)
- basic_machine=m68k-cbm
+ basic_machine=m68k-unknown
os=-sysv4
;;
apollo68)
basic_machine=m68k-apollo
os=-sysv
;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
aux)
basic_machine=m68k-apple
os=-aux
@@ -269,13 +370,16 @@ case $basic_machine in
basic_machine=cray2-cray
os=-unicos
;;
- [ctj]90-cray)
- basic_machine=c90-cray
+ [cjt]90)
+ basic_machine=${basic_machine}-cray
os=-unicos
;;
crds | unos)
basic_machine=m68k-crds
;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
da30 | da30-*)
basic_machine=m68k-da30
;;
@@ -309,6 +413,10 @@ case $basic_machine in
encore | umax | mmax)
basic_machine=ns32k-encore
;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
fx2800)
basic_machine=i860-alliant
;;
@@ -319,6 +427,10 @@ case $basic_machine in
basic_machine=tron-gmicro
os=-sysv
;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
h3050r* | hiux*)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
@@ -327,6 +439,14 @@ case $basic_machine in
basic_machine=h8300-hitachi
os=-hms
;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
harris)
basic_machine=m88k-harris
os=-sysv3
@@ -342,13 +462,30 @@ case $basic_machine in
basic_machine=m68k-hp
os=-hpux
;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
hp9k2[0-9][0-9] | hp9k31[0-9])
basic_machine=m68000-hp
;;
hp9k3[2-9][0-9])
basic_machine=m68k-hp
;;
- hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
basic_machine=hppa1.1-hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
@@ -357,9 +494,16 @@ case $basic_machine in
hppa-next)
os=-nextstep3
;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
i370-ibm* | ibm*)
basic_machine=i370-ibm
- os=-mvs
;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i[34567]86v32)
@@ -378,6 +522,14 @@ case $basic_machine in
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-solaris2
;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
iris | iris4d)
basic_machine=mips-sgi
case $os in
@@ -403,9 +555,23 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+#### MozillaHack
+ i386-msvc | msvc)
+ basic_machine=i386-pc
+ os=-msvc
+ ;;
+#### End MozillaHack
miniframe)
basic_machine=m68000-convergent
;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
mipsel*-linux*)
basic_machine=mipsel-unknown
os=-linux-gnu
@@ -420,10 +586,34 @@ case $basic_machine in
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
+ mmix*)
+ basic_machine=mmix-knuth
+ os=-mmixware
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
os=-newsos
@@ -436,6 +626,10 @@ case $basic_machine in
basic_machine=mips-sony
os=-newsos
;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
next | m*-next )
basic_machine=m68k-next
case $os in
@@ -461,9 +655,32 @@ case $basic_machine in
basic_machine=i960-intel
os=-nindy
;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
np1)
basic_machine=np1-gould
;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
pa-hitachi)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
@@ -481,28 +698,28 @@ case $basic_machine in
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
- pentium | p5 | k5 | nexen)
+ pentium | p5 | k5 | k6 | nexgen)
basic_machine=i586-pc
;;
- pentiumpro | p6 | k6 | 6x86)
+ pentiumpro | p6 | 6x86 | athlon)
basic_machine=i686-pc
;;
pentiumii | pentium2)
- basic_machine=i786-pc
+ basic_machine=i686-pc
;;
- pentium-* | p5-* | k5-* | nexen-*)
+ pentium-* | p5-* | k5-* | k6-* | nexgen-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
- pentiumpro-* | p6-* | k6-* | 6x86-*)
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumii-* | pentium2-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pn)
basic_machine=pn-gould
;;
- power) basic_machine=rs6000-ibm
+ power) basic_machine=power-ibm
;;
ppc) basic_machine=powerpc-unknown
;;
@@ -517,13 +734,13 @@ case $basic_machine in
ps2)
basic_machine=i386-ibm
;;
- *qnx*)
- basic_machine=x86-pc
- os=-qnx`uname -v | cut -c1-1`
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
;;
- *nto*)
- basic_machine=`uname -p`-pc
- os=-nto
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
;;
rm[46]00)
basic_machine=mips-siemens
@@ -531,6 +748,10 @@ case $basic_machine in
rtpc | rtpc-*)
basic_machine=romp-ibm
;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
sequent)
basic_machine=i386-sequent
;;
@@ -538,6 +759,10 @@ case $basic_machine in
basic_machine=sh-hitachi
os=-hms
;;
+ sparclite-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
sps7)
basic_machine=m68k-bull
os=-sysv2
@@ -545,6 +770,13 @@ case $basic_machine in
spur)
basic_machine=spur-unknown
;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
sun2)
basic_machine=m68000-sun
;;
@@ -585,10 +817,22 @@ case $basic_machine in
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
symmetry)
basic_machine=i386-sequent
os=-dynix
;;
+ t3e)
+ basic_machine=t3e-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
tx39)
basic_machine=mipstx39-unknown
;;
@@ -606,6 +850,10 @@ case $basic_machine in
basic_machine=a29k-nyu
os=-sym1
;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
vaxv)
basic_machine=vax-dec
os=-sysv
@@ -629,6 +877,14 @@ case $basic_machine in
basic_machine=a29k-wrs
os=-vxworks
;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
xmp)
basic_machine=xmp-cray
os=-unicos
@@ -636,6 +892,10 @@ case $basic_machine in
xps | xps100)
basic_machine=xps100-honeywell
;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
none)
basic_machine=none-none
os=-none
@@ -643,6 +903,15 @@ case $basic_machine in
# Here we handle the default manufacturer of certain CPU types. It is in
# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
mips)
if [ x$os = x-linux-gnu ]; then
basic_machine=mips-unknown
@@ -659,13 +928,20 @@ case $basic_machine in
vax)
basic_machine=vax-dec
;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
pdp11)
basic_machine=pdp11-dec
;;
we32k)
basic_machine=we32k-att
;;
- sparc)
+ sh3 | sh4)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv9)
basic_machine=sparc-sun
;;
cydra)
@@ -677,6 +953,19 @@ case $basic_machine in
orion105)
basic_machine=clipper-highlevel
;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ c4x*)
+ basic_machine=c4x-none
+ os=-coff
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
@@ -718,6 +1007,12 @@ case $os in
-gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
+#### MozillaHack
+ -os2_emx)
+ ;;
+ -os2_vacpp)
+ ;;
+#### End MozillaHack
# First accept the basic system types.
# The portable systems comes first.
# Each alternative MUST END IN A *, to match a version number.
@@ -730,15 +1025,35 @@ case $os in
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
+ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv*)
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+ | -msvc* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
- -beos*)
- os=-beos
+ -qnx*)
+ case $basic_machine in
+ x86-* | i[34567]86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto*)
+ os=-nto-qnx
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
;;
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
@@ -749,6 +1064,12 @@ case $os in
-sunos6*)
os=`echo $os | sed -e 's|sunos6|solaris3|'`
;;
+ -opened*)
+ os=-openedition
+ ;;
+ -wince*)
+ os=-wince
+ ;;
-osfrose*)
os=-osfrose
;;
@@ -764,12 +1085,18 @@ case $os in
-acis*)
os=-aos
;;
+ -386bsd)
+ os=-bsd
+ ;;
-ctix* | -uts*)
os=-sysv
;;
-ns2 )
os=-nextstep2
;;
+ -nsk*)
+ os=-nsk
+ ;;
# Preserve the version number of sinix5.
-sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
@@ -795,14 +1122,17 @@ case $os in
# This must come after -sysvr4.
-sysv*)
;;
- -xenix)
- os=-xenix
+ -ose*)
+ os=-ose
;;
- -rhapsody*)
+ -es1800*)
+ os=-ose
;;
- -qnx*)
+ -xenix)
+ os=-xenix
;;
- -nto*)
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
;;
-none)
;;
@@ -829,9 +1159,15 @@ case $basic_machine in
*-acorn)
os=-riscix1.2
;;
+ arm*-rebel)
+ os=-linux
+ ;;
arm*-semi)
os=-aout
;;
+ pdp10-*)
+ os=-tops20
+ ;;
pdp11-*)
os=-none
;;
@@ -850,15 +1186,36 @@ case $basic_machine in
# default.
# os=-sunos4
;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
*-tti) # must be before sparc entry or we get the wrong os.
os=-sysv3
;;
sparc-* | *-sun)
os=-sunos4.1.1
;;
+ *-be)
+ os=-beos
+ ;;
*-ibm)
os=-aix
;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
*-hp)
os=-hpux
;;
@@ -919,9 +1276,21 @@ case $basic_machine in
*-masscomp)
os=-rtu
;;
- f301-fujitsu)
+ f30[01]-fujitsu | f700-fujitsu)
os=-uxpv
;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
*)
os=-none
;;
@@ -943,9 +1312,15 @@ case $basic_machine in
-aix*)
vendor=ibm
;;
+ -beos*)
+ vendor=be
+ ;;
-hpux*)
vendor=hp
;;
+ -mpeix*)
+ vendor=hp
+ ;;
-hiux*)
vendor=hitachi
;;
@@ -961,7 +1336,7 @@ case $basic_machine in
-genix*)
vendor=ns
;;
- -mvs*)
+ -mvs* | -opened*)
vendor=ibm
;;
-ptx*)
@@ -973,9 +1348,26 @@ case $basic_machine in
-aux*)
vendor=apple
;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
esac
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
;;
esac
echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config/.cvsignore b/config/.cvsignore
index e6e162a9..6015884e 100644
--- a/config/.cvsignore
+++ b/config/.cvsignore
@@ -2,3 +2,8 @@ nfspwd
revdepth
my_config.mk
my_overrides.mk
+autoconf.mk
+nsprincl.mk
+nsprincl.sh
+now
+Makefile
diff --git a/config/BSD_OS.mk b/config/BSD_OS.mk
index f3d96ffe..dba353db 100644
--- a/config/BSD_OS.mk
+++ b/config/BSD_OS.mk
@@ -21,7 +21,7 @@
include $(MOD_DEPTH)/config/UNIX.mk
-ifeq (,$(filter-out 1.1 4.0 4.0.1,$(OS_RELEASE)))
+ifeq (,$(filter-out 1.1 4.%,$(OS_RELEASE)))
CC = gcc -Wall -Wno-format
CCC = g++
else
@@ -64,7 +64,7 @@ OS_CFLAGS += -D_PR_STAT_HAS_ONLY_ST_ATIME -D_PR_NEED_H_ERRNO
else
OS_CFLAGS += -DHAVE_DLL -DUSE_DLFCN -D_PR_STAT_HAS_ST_ATIMESPEC
OS_LIBS = -ldl
-ifeq (,$(filter-out 4.0 4.0.1,$(OS_RELEASE)))
+ifeq (,$(filter-out 4.%,$(OS_RELEASE)))
MKSHLIB = $(CC) $(DSO_LDOPTS)
DSO_CFLAGS = -fPIC
DSO_LDOPTS = -shared -Wl,-soname,$(@:$(OBJDIR)/%.so=%.so)
diff --git a/config/BeOS.mk b/config/BeOS.mk
index 87dc2085..ef2a6a46 100644
--- a/config/BeOS.mk
+++ b/config/BeOS.mk
@@ -30,6 +30,7 @@ OBJ_SUFFIX = o
LIB_SUFFIX = a
DLL_SUFFIX = so
AR = ar cr $@
+STRIP = strip
ifdef BUILD_OPT
DEFINES = -UDEBUG -DNDEBUG
diff --git a/config/HP-UX.mk b/config/HP-UX.mk
index 371de60b..9b2fa853 100644
--- a/config/HP-UX.mk
+++ b/config/HP-UX.mk
@@ -38,7 +38,8 @@ RANLIB = echo
CPU_ARCH = hppa
-OS_CFLAGS += $(DSO_CFLAGS) -DHPUX -D$(CPU_ARCH) -D_HPUX_SOURCE
+OS_CFLAGS += $(DSO_CFLAGS) -DHPUX -D$(CPU_ARCH) -D_HPUX_SOURCE -Dhpux
+
#
# The header netdb.h on HP-UX 9 does not declare h_errno.
diff --git a/config/Linux.mk b/config/Linux.mk
index 29832d08..c7aae11b 100644
--- a/config/Linux.mk
+++ b/config/Linux.mk
@@ -47,12 +47,10 @@ IMPL_STRATEGY = _PTH
DEFINES += -D_REENTRANT
endif
-USE_IPV6 = 1
-
ifeq (86,$(findstring 86,$(OS_TEST)))
CPU_ARCH := x86
else
-ifeq (,$(filter-out armv4l sa110,$(OS_TEST)))
+ifeq (,$(filter-out arm% sa110,$(OS_TEST)))
CPU_ARCH := arm
else
CPU_ARCH := $(OS_TEST)
@@ -101,6 +99,8 @@ endif
MKSHLIB = $(LD) $(DSO_LDOPTS) -soname $(notdir $@)
ifdef BUILD_OPT
OPTIMIZER = -O2
+# invoke 'strip' on *.so files in optimized builds
+STRIP = strip
endif
######################################################################
diff --git a/config/Makefile b/config/Makefile
deleted file mode 100644
index e4ffc4d2..00000000
--- a/config/Makefile
+++ /dev/null
@@ -1,118 +0,0 @@
-#! gmake
-
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-MOD_DEPTH = ..
-
-# Indicate that this directory builds build tools.
-INTERNAL_TOOLS = 1
-
-include $(MOD_DEPTH)/config/config.mk
-
-CSRCS = now.c
-
-# This version hasn't been ported for us; the one in mozilla/config has
-ifneq ($(OS_ARCH),OS2)
-CSRCS += nsinstall.c
-
-PLSRCS = nfspwd.pl
-endif
-
-ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
-PROG_SUFFIX = .exe
-else
-PROG_SUFFIX =
-endif
-
-# Temporary workaround to disable the generation of
-# library build time because now.c uses the 'long long'
-# data type that's not available on some platforms.
-ifeq (,$(filter-out NEC NEXTSTEP QNX SCOOS UNIXWARE,$(OS_ARCH)))
-DEFINES += -DOMIT_LIB_BUILD_TIME
-endif
-
-ifeq ($(OS_ARCH), IRIX)
- ifeq ($(basename $(OS_RELEASE)),6)
- ifeq ($(USE_N32),1)
- XLDOPTS += -n32 -Wl,-woff,85
- ifeq ($(OS_RELEASE), 6_2)
- XLDOPTS += -Wl,-woff,85
- endif
- else
- ifeq ($(USE_64),1)
- XLDOPTS += -64
- else
- XLDOPTS += -32
- endif
- endif
- endif
-endif
-
-ifeq ($(OS_ARCH), HP-UX)
- ifeq ($(USE_64),1)
- XLDOPTS += +DA2.0W
- endif
-endif
-
-ifeq ($(MOZ_OS2_TOOLS),EMX)
-XCFLAGS = $(OS_EXE_CFLAGS)
-ifeq ($(MOZ_OS2_EMX_OBJECTFORMAT),OMF)
-XLDOPTS = -Zlinker /PM:VIO
-endif
-endif
-
-ifeq ($(MOZ_OS2_TOOLS),PGCC)
-XCFLAGS = $(OS_EXE_CFLAGS)
-XLDOPTS = -Zlinker /PM:VIO
-endif
-
-ifeq ($(MOZ_OS2_TOOLS),VACPP)
-OS_CFLAGS = $(OS_EXE_CFLAGS)
-endif
-
-include $(MOD_DEPTH)/config/rules.mk
-
-PROGS = $(OBJDIR)/now$(PROG_SUFFIX)
-
-ifeq (,$(filter-out OS2 WINNT,$(OS_ARCH)))
-TARGETS = $(PROGS)
-else
-PROGS += $(OBJDIR)/nsinstall$(PROG_SUFFIX)
-TARGETS = $(PROGS) $(PLSRCS:.pl=)
-endif
-
-OUTOPTION = -o # end of the line
-ifeq (,$(filter-out WINNT WIN95,$(OS_TARGET)))
-OUTOPTION = /Fe
-endif
-
-# Redefine MAKE_OBJDIR for just this directory
-define MAKE_OBJDIR
-if test ! -d $(@D); then rm -rf $(@D); mkdir $(@D); else true; fi
-endef
-
-export:: $(TARGETS)
-
-$(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
-ifeq ($(MOZ_OS2_TOOLS),VACPP)
- $(LINK) $(EXEFLAGS) $<
-else
- $(CC) $(XCFLAGS) $< $(XLDOPTS) $(OUTOPTION)$@
-endif
-
diff --git a/config/Makefile.in b/config/Makefile.in
index a0004143..e9a60a4b 100644
--- a/config/Makefile.in
+++ b/config/Makefile.in
@@ -27,13 +27,24 @@ include $(MOD_DEPTH)/config/autoconf.mk
# Indicate that this directory builds build tools.
INTERNAL_TOOLS = 1
+# autoconf.mk must be deleted last (from the top-level directory)
+# because it is included by every makefile.
+DIST_GARBAGE = nsprincl.mk nsprincl.sh nspr-config
+
+RELEASE_BINS = nspr-config
+
include $(topsrcdir)/config/config.mk
-CSRCS = nsinstall.c now.c
+CSRCS = now.c
+# This version hasn't been ported for us; the one in mozilla/config has
+ifneq ($(OS_ARCH),OS2)
+CSRCS += nsinstall.c
+
PLSRCS = nfspwd.pl
+endif
-ifeq ($(OS_ARCH), WINNT)
+ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
PROG_SUFFIX = .exe
else
PROG_SUFFIX =
@@ -69,20 +80,23 @@ ifeq ($(OS_ARCH), HP-UX)
endif
endif
-ifdef XP_OS2_EMX
-XCFLAGS = $(OS_EXE_CFLAGS)
+ifeq ($(MOZ_OS2_TOOLS),EMX)
+XCFLAGS = $(OS_CFLAGS)
+ifeq ($(MOZ_OS2_EMX_OBJECTFORMAT),OMF)
XLDOPTS = -Zlinker /PM:VIO
endif
+endif
-ifeq ($(MOZ_OS2_TOOLS),VACPP)
-OS_CFLAGS = $(OS_EXE_CFLAGS)
+ifeq ($(MOZ_OS2_TOOLS),PGCC)
+XCFLAGS = $(OS_CFLAGS)
+XLDOPTS = -Zlinker /PM:VIO
endif
include $(topsrcdir)/config/rules.mk
PROGS = $(OBJDIR)/now$(PROG_SUFFIX)
-ifeq ($(OS_ARCH),WINNT)
+ifeq (,$(filter-out OS2 WINNT,$(OS_ARCH)))
TARGETS = $(PROGS)
else
PROGS += $(OBJDIR)/nsinstall$(PROG_SUFFIX)
@@ -100,11 +114,16 @@ if test ! -d $(@D); then rm -rf $(@D); mkdir $(@D); else true; fi
endef
export:: $(TARGETS)
+ $(RM) -f $(dist_bindir)/nspr-config
$(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
@$(MAKE_OBJDIR)
ifeq ($(MOZ_OS2_TOOLS),VACPP)
- $(LINK) $(EXEFLAGS) $<
+ $(LD) $(EXEFLAGS) $<
else
$(CC) $(XCFLAGS) $< $(XLDOPTS) $(OUTOPTION)$@
endif
+
+real_install:: nspr.m4
+ $(NSINSTALL) -D $(DESTDIR)$(datadir)/aclocal
+ $(NSINSTALL) -t -m 0644 $< $(DESTDIR)$(datadir)/aclocal
diff --git a/config/NTO.mk b/config/NTO.mk
index a0b53ecd..49eee1fe 100644
--- a/config/NTO.mk
+++ b/config/NTO.mk
@@ -55,7 +55,7 @@ OS_CFLAGS = -Wc,-Wall -Wc,-Wno-parentheses -DNTO \
-D_QNX_SOURCE -DHAVE_POINTER_LOCALTIME_R -shared
COMPILER_TAG = _qcc
-MKSHLIB = qcc -Vgcc_ntox86 -shared -Wl,-h$(@:$(OBJDIR)/%.so=%.so) -g2 -M
+MKSHLIB = qcc -Vgcc_ntox86 -shared -Wl,-h$(@:$(OBJDIR)/%.so=%.so) -M
RANLIB = ranlib
G++INCLUDES =
@@ -63,9 +63,9 @@ OS_LIBS =
EXTRA_LIBS = -lsocket
ifdef BUILD_OPT
-OPTIMIZER = -O2
+OPTIMIZER = -O1
else
-OPTIMIZER = -O2 -gdwarf-2
+OPTIMIZER = -O1 -gstabs
endif
NOSUCHFILE = /no-such-file
diff --git a/config/NetBSD.mk b/config/NetBSD.mk
index 1aeac473..2eca2afb 100644
--- a/config/NetBSD.mk
+++ b/config/NetBSD.mk
@@ -25,6 +25,10 @@ CC = gcc
CCC = g++
RANLIB = ranlib
+ifndef OBJECT_FMT
+OBJECT_FMT := $(shell if echo __ELF__ | $${CC:-cc} -E - | grep -q __ELF__ ; then echo a.out ; else echo ELF ; fi)
+endif
+
OS_REL_CFLAGS =
ifeq (86,$(findstring 86,$(OS_TEST)))
CPU_ARCH = x86
@@ -44,25 +48,27 @@ endif
ARCH = netbsd
+ifeq ($(OBJECT_FMT),ELF)
+DLL_SUFFIX = so
+else
DLL_SUFFIX = so.1.0
+# XXX work around a bug in the a.out ld(1).
+OS_LIBS =
+endif
-DSO_CFLAGS = -fPIC
+DSO_CFLAGS = -fPIC -DPIC
DSO_LDFLAGS =
-DSO_LDOPTS = -Bshareable
-ifeq ($(OS_TEST),alpha)
-DSO_LDOPTS = -shared
-endif
-ifeq ($(OS_TEST),mips)
-DSO_LDOPTS = -shared
-endif
-ifeq ($(OS_TEST),pmax)
DSO_LDOPTS = -shared
+ifeq ($(OBJECT_FMT),ELF)
+DSO_LDOPTS +=-Wl,-soname,lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
endif
ifdef LIBRUNPATH
-DSO_LDOPTS += -R$(LIBRUNPATH)
+#DSO_LDOPTS += -R$(LIBRUNPATH)
+DSO_LDOPTS += -Wl,-R$(LIBRUNPATH)
endif
-MKSHLIB = $(LD) $(DSO_LDOPTS)
+#MKSHLIB = $(LD) $(DSO_LDOPTS)
+MKSHLIB = $(CC) $(DSO_LDOPTS)
G++INCLUDES = -I/usr/include/g++
diff --git a/config/OS2.mk b/config/OS2.mk
index 3f008cb9..7dbfb248 100644
--- a/config/OS2.mk
+++ b/config/OS2.mk
@@ -45,14 +45,15 @@ endif
#
# On OS/2 we proudly support gbash...
#
-SHELL = GBASH.EXE
+SHELL := GBASH.EXE
CC = icc -q -DXP_OS2 -N10
CCC = icc -q -DXP_OS2 -DOS2=4 -N10
-LINK = ilink
-AR = ilib /noignorecase /nologo /Out:$(subst /,\\,$@)
+LINK = -ilink
+AR = -ilib /noignorecase /nologo /Out:$(subst /,\\,$@)
RANLIB = @echo RANLIB
BSDECHO = @echo BSDECHO
+STRIP = @echo STRIP
NSINSTALL = nsinstall
INSTALL = $(NSINSTALL)
MAKE_OBJDIR = if test ! -d $(OBJDIR); then mkdir $(OBJDIR); fi
@@ -67,8 +68,8 @@ LIB_SUFFIX = lib
DLL_SUFFIX = dll
OBJ_SUFFIX = obj
-OS_CFLAGS = -W3 -Wcnd- -gm -gd+ -sd- -su4 -ge-
-OS_EXE_CFLAGS = -W3 -Wcnd- -gm -gd+ -sd- -su4
+OS_CFLAGS = -W3 -Wcnd- -gm -gd+ -sd- -su4 -ge- -Mp
+OS_EXE_CFLAGS = -W3 -Wcnd- -gm -gd+ -sd- -su4 -Mp
AR_EXTRA_ARGS =
ifdef BUILD_OPT
diff --git a/config/OSF1.mk b/config/OSF1.mk
index cf00f193..7e3b4c95 100644
--- a/config/OSF1.mk
+++ b/config/OSF1.mk
@@ -24,7 +24,7 @@
# which we use to stop LOOP_OVER_DIRS submakes as soon as any
# submake fails. So we use the Korn shell instead.
#
-SHELL = /usr/bin/ksh
+SHELL := /usr/bin/ksh
include $(MOD_DEPTH)/config/UNIX.mk
diff --git a/config/OpenBSD.mk b/config/OpenBSD.mk
index 35d474fd..b3314605 100644
--- a/config/OpenBSD.mk
+++ b/config/OpenBSD.mk
@@ -35,16 +35,16 @@ endif
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -ansi -Wall -pipe $(THREAD_FLAG) -DOPENBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK
ifeq ($(USE_PTHREADS),1)
-OS_LIBS = -lc_r
THREAD_FLAG += -pthread
# XXX probably should define _THREAD_SAFE too.
else
-OS_LIBS = -lc
DEFINES += -D_PR_LOCAL_THREADS_ONLY
endif
ARCH = openbsd
+DLL_SUFFIX = so.1.0
+
DSO_CFLAGS = -fPIC
DSO_LDFLAGS =
DSO_LDOPTS = -Bshareable
diff --git a/config/Rhapsody.mk b/config/Rhapsody.mk
index 7f3c9116..afc1352e 100644
--- a/config/Rhapsody.mk
+++ b/config/Rhapsody.mk
@@ -21,12 +21,19 @@
include $(MOD_DEPTH)/config/UNIX.mk
-CC = cc
-ifeq ($(OS_RELEASE),5.0)
-CCC = cc++
+#
+# The default implementation strategy for Rhapsody is pthreads.
+#
+ifeq ($(CLASSIC_NSPR),1)
+IMPL_STRATEGY = _EMU
+DEFINES += -D_PR_LOCAL_THREADS_ONLY
else
-CCC = c++
+USE_PTHREADS = 1
+IMPL_STRATEGY = _PTH
endif
+
+CC = cc
+CCC = c++
RANLIB = ranlib
ifeq (86,$(findstring 86,$(OS_TEST)))
@@ -49,8 +56,6 @@ endif
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -Wmost -fno-common -pipe -DRHAPSODY -DHAVE_STRERROR -DHAVE_BSD_FLOCK
-DEFINES += -D_PR_LOCAL_THREADS_ONLY
-
ARCH = rhapsody
# May override this with -bundle to create a loadable module.
diff --git a/config/UNIX.mk b/config/UNIX.mk
index b9868973..e3fab8d1 100644
--- a/config/UNIX.mk
+++ b/config/UNIX.mk
@@ -21,6 +21,7 @@ OBJ_SUFFIX = o
LIB_SUFFIX = a
DLL_SUFFIX = so
AR = ar cr $@
+STRIP = true
ifdef BUILD_OPT
OPTIMIZER = -O
diff --git a/config/WIN32.mk b/config/WIN32.mk
index 375c80c3..238915f9 100644
--- a/config/WIN32.mk
+++ b/config/WIN32.mk
@@ -26,7 +26,7 @@
# flipped, so that gmake won't interpret them as escape characters.
#
ifdef PR_CLIENT_BUILD_WINDOWS
-SHELL = $(MOZ_TOOLS_FLIPPED)/bin/shmsdos.exe
+SHELL := $(MOZ_TOOLS_FLIPPED)/bin/shmsdos.exe
endif
CC = cl
@@ -35,6 +35,7 @@ LINK = link
AR = lib -NOLOGO -OUT:"$@"
RANLIB = echo
BSDECHO = echo
+STRIP = echo
NSINSTALL = nsinstall
INSTALL = $(NSINSTALL)
define MAKE_OBJDIR
@@ -53,14 +54,7 @@ OS_CFLAGS = -W3 -nologo -GF -Gy
ifdef BUILD_OPT
OS_CFLAGS += -MD
-# The -O2 optimization of MSVC 6.0 SP3 appears to generate
-# code that is unsafe for our use of fibers and static thread
-# local storage. We temporarily work around this problem by
-# turning off global optimizations (-Og).
OPTIMIZER = -O2
-ifeq ($(OS_TARGET),WINNT)
-OPTIMIZER += -Og-
-endif
DEFINES = -UDEBUG -U_DEBUG -DNDEBUG
DLLFLAGS = -OUT:"$@"
OBJDIR_TAG = _OPT
diff --git a/config/arch.mk b/config/arch.mk
index 67734e44..35a448aa 100644
--- a/config/arch.mk
+++ b/config/arch.mk
@@ -50,6 +50,9 @@ OS_ARCH := UNIXWARE
OS_RELEASE := $(shell uname -v)
endif
endif
+ifeq ($(OS_ARCH),Mac OS)
+OS_ARCH := Rhapsody
+endif
ifeq ($(OS_ARCH),ncr)
OS_ARCH := NCR
endif
@@ -57,10 +60,6 @@ endif
ifeq ($(OS_ARCH),NCR)
OS_RELEASE := $(shell awk '{print $$3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$$/\2.\3/')
endif
-ifeq ($(OS_ARCH),procnto)
-OS_ARCH := NTO
-OS_RELEASE := _$(OS_TEST)$(OS_RELEASE)
-endif
ifeq ($(OS_ARCH),UNIX_System_V)
OS_ARCH := NEC
endif
@@ -70,7 +69,12 @@ CPU_ARCH := $(shell uname -Wh)
OS_RELEASE := $(shell uname -v)
endif
ifeq ($(OS_ARCH),QNX)
-OS_RELEASE := $(shell uname -v | sed 's/^\([0-9]\)\([0-9]*\)$$/\1.\2/')
+ ifeq ($(OS_RELEASE),6.00)
+ OS_ARCH := NTO
+ OS_RELEASE := _$(OS_TEST)$(OS_RELEASE)
+ else
+ OS_RELEASE := $(shell uname -v | sed 's/^\([0-9]\)\([0-9]*\)$$/\1.\2/')
+ endif
endif
ifeq ($(OS_ARCH),SCO_SV)
OS_ARCH := SCOOS
diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in
index 83b7a86f..9ac9c31e 100644
--- a/config/autoconf.mk.in
+++ b/config/autoconf.mk.in
@@ -1,19 +1,45 @@
+# -*- Mode: Makefile -*-
+INCLUDED_AUTOCONF_MK = 1
USE_AUTOCONF = 1
MOZILLA_CLIENT = @MOZILLA_CLIENT@
-DIST = @prefix@
-OBJDIR_NAME = .
-OBJDIR = .
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+bindir = @bindir@
+includedir = @includedir@/nspr
+libdir = @libdir@
+datadir = @datadir@
+
+dist_prefix = @dist_prefix@
+dist_bindir = @dist_bindir@
+dist_includedir = @dist_includedir@/nspr
+dist_libdir = @dist_libdir@
+
+DIST = $(dist_prefix)
+
+OBJDIR_NAME = @OBJDIR_NAME@
+OBJDIR = @OBJDIR@
OBJ_SUFFIX = @OBJ_SUFFIX@
LIB_SUFFIX = @LIB_SUFFIX@
DLL_SUFFIX = @DLL_SUFFIX@
-MOD_VERSION = @NSPR_VERSION@
MOD_NAME = @NSPR_MODNAME@
+MOD_MAJOR_VERSION = @MOD_MAJOR_VERSION@
+MOD_MINOR_VERSION = @MOD_MINOR_VERSION@
+MOD_REVISION_VERSION = @MOD_REVISION_VERSION@
+
+LIBNSPR = @LIBNSPR@
+LIBPLC = @LIBPLC@
+
+CROSS_COMPILE = @CROSS_COMPILE@
+BUILD_OPT = @MOZ_OPTIMIZE@
+
USE_CPLUS = @USE_CPLUS@
USE_IPV6 = @USE_IPV6@
USE_N32 = @USE_N32@
USE_64 = @USE_64@
+GC_LEAK_DETECTOR = @GC_LEAK_DETECTOR@
USE_PTHREADS = @USE_PTHREADS@
USE_BTHREADS = @USE_BTHREADS@
@@ -31,12 +57,21 @@ RANLIB = @RANLIB@
PERL = @PERL@
DLLTOOL = @DLLTOOL@
WINDRES = @WINDRES@
-RC = $(WINDRES)
+RC = @RC@
+STRIP = @STRIP@
+NSINSTALL = @NSINSTALL@
+FILTER = @FILTER@
+IMPLIB = @IMPLIB@
-OS_CFLAGS = @CFLAGS@ $(DSO_CFLAGS)
-OS_CXXFLAGS = @CXXFLAGS@ $(DSO_CFLAGS)
+OS_CPPFLAGS = @CPPFLAGS@
+OS_CFLAGS = $(OS_CPPFLAGS) @CFLAGS@ $(DSO_CFLAGS)
+OS_CXXFLAGS = $(OS_CPPFLAGS) @CXXFLAGS@ $(DSO_CFLAGS)
OS_LIBS = @OS_LIBS@
OS_LDFLAGS = @LDFLAGS@
+OS_DLLFLAGS = @OS_DLLFLAGS@
+DLLFLAGS = @DLLFLAGS@
+EXEFLAGS = @EXEFLAGS@
+OPTIMIZER = @OPTIMIZER@
MKSHLIB = @MKSHLIB@
DSO_CFLAGS = @DSO_CFLAGS@
@@ -50,10 +85,11 @@ HOST_CFLAGS = @HOST_CFLAGS@
DEFINES = @DEFINES@ @DEFS@
MDCPUCFG_H = @MDCPUCFG_H@
-MOZ_TARGET = @MOZ_TARGET@
+MOZ_WIN32_TARGET= @MOZ_WIN32_TARGET@
PR_MD_CSRCS = @PR_MD_CSRCS@
PR_MD_ASFILES = @PR_MD_ASFILES@
PR_MD_ARCH_DIR = @PR_MD_ARCH_DIR@
+CPU_ARCH = @CPU_ARCH@
OS_TARGET = @OS_TARGET@
OS_ARCH = @OS_ARCH@
diff --git a/config/config.mk b/config/config.mk
index 4f7863f2..4cc92889 100644
--- a/config/config.mk
+++ b/config/config.mk
@@ -40,8 +40,6 @@ ifndef srcdir
srcdir=.
endif
-ifdef USE_AUTOCONF
-
NFSPWD = $(MOD_DEPTH)/config/nfspwd
CFLAGS = $(CC_ONLY_FLAGS) $(OPTIMIZER) $(OS_CFLAGS)\
@@ -54,8 +52,17 @@ NOMD_CFLAGS = $(CC_ONLY_FLAGS) $(OPTIMIZER) $(NOMD_OS_CFLAGS)\
NOMD_CCFLAGS = $(CCC_ONLY_FLAGS) $(OPTIMIZER) $(NOMD_OS_CFLAGS)\
$(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
-NSINSTALL = $(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall
+LDFLAGS = $(OS_LDFLAGS)
+
+define MAKE_OBJDIR
+if test ! -d $(@D); then rm -rf $(@D); $(NSINSTALL) -D $(@D); fi
+endef
+
+LINK_DLL = $(LD) $(OS_DLLFLAGS) $(DLLFLAGS)
+ifneq (,$(filter WINNT OS2, $(OS_ARCH)))
+INSTALL = $(NSINSTALL)
+else
ifeq ($(NSDISTMODE),copy)
# copy files, but preserve source mtime
INSTALL = $(NSINSTALL) -t
@@ -68,6 +75,7 @@ else
INSTALL = $(NSINSTALL) -R
endif
endif
+endif # WINNT || OS2
ifdef BUILD_DEBUG_GC
DEFINES += -DDEBUG_GC
@@ -75,6 +83,8 @@ endif
GARBAGE += $(DEPENDENCIES) core $(wildcard core.[0-9]*)
+DIST_GARBAGE += Makefile
+
DEFINES += -DFORCE_PR_LOG
ifeq ($(_PR_NO_CLOCK_TIMER),1)
@@ -93,97 +103,6 @@ ifeq ($(USE_IPV6),1)
DEFINES += -D_PR_INET6
endif
-else # ! USE_AUTOCONF
-
-ifndef NSPR_MY_CONFIG_MK
-NSPR_MY_CONFIG_MK = $(MOD_DEPTH)/config/my_config.mk
-endif
-
-#
-# The variable definitions in this file are used to
-# override variable values set by NSPR's build system.
-# This file, if present, is included at the end of config.mk.
-#
-# For example:
-#
-# DIST=/usr/local/nspr
-#
-ifndef NSPR_MY_OVERRIDES_MK
-NSPR_MY_OVERRIDES_MK = $(MOD_DEPTH)/config/my_overrides.mk
-endif
-
--include $(NSPR_MY_CONFIG_MK)
-
-include $(MOD_DEPTH)/config/module.df
-
-include $(MOD_DEPTH)/config/arch.mk
-
-ifndef NSDEPTH
-NSDEPTH = $(MOD_DEPTH)/..
-endif
-
-#
-# Default command macros; can be overridden in <arch>.mk.
-#
-# XXX FIXME: I removed CCF and LINKEXE.
-AS = $(CC)
-ASFLAGS = $(CFLAGS)
-PURIFY = purify $(PURIFYOPTIONS)
-LINK_DLL = $(LINK) $(OS_DLLFLAGS) $(DLLFLAGS)
-NFSPWD = $(MOD_DEPTH)/config/nfspwd
-
-CFLAGS = $(CC_ONLY_FLAGS) $(OPTIMIZER) $(OS_CFLAGS)\
- $(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
-CCCFLAGS = $(CCC_ONLY_FLAGS) $(OPTIMIZER) $(OS_CFLAGS)\
- $(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
-# For purify
-NOMD_CFLAGS = $(CC_ONLY_FLAGS) $(OPTIMIZER) $(NOMD_OS_CFLAGS)\
- $(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
-
-include $(MOD_DEPTH)/config/$(OS_TARGET).mk
-
-# Figure out where the binary code lives.
-BUILD = $(OBJDIR_NAME)
-OBJDIR = $(OBJDIR_NAME)
-DIST = $(NSDEPTH)/dist/$(OBJDIR_NAME)
-ifeq ($(MOZ_BITS),16)
-MOZ_INCL = $(NSDEPTH)/dist/public/win16
-MOZ_DIST = $(NSDEPTH)/dist/WIN16D_D.OBJ
-endif
-
-VPATH = $(OBJDIR)
-DEPENDENCIES = $(OBJDIR)/.md
-
-ifdef BUILD_DEBUG_GC
-DEFINES += -DDEBUG_GC
-endif
-
-GARBAGE += $(DEPENDENCIES) core $(wildcard core.[0-9]*)
-
-####################################################################
-#
-# The NSPR-specific configuration
-#
-####################################################################
-
-OS_CFLAGS += -DFORCE_PR_LOG
-
-ifeq ($(_PR_NO_CLOCK_TIMER),1)
-OS_CFLAGS += -D_PR_NO_CLOCK_TIMER
-endif
-
-ifeq ($(USE_PTHREADS), 1)
-OS_CFLAGS += -D_PR_PTHREADS -UHAVE_CVAR_BUILT_ON_SEM
-endif
-
-ifeq ($(PTHREADS_USER), 1)
-OS_CFLAGS += -DPTHREADS_USER -UHAVE_CVAR_BUILT_ON_SEM
-endif
-
-ifeq ($(USE_IPV6),1)
-OS_CFLAGS += -D_PR_INET6
-endif
-
####################################################################
#
# Configuration for the release process
@@ -204,6 +123,17 @@ RELEASE_INCLUDE_DIR = $(RELEASE_DIR)/$(BUILD_NUMBER)/$(OBJDIR_NAME)/include
RELEASE_BIN_DIR = $(RELEASE_DIR)/$(BUILD_NUMBER)/$(OBJDIR_NAME)/bin
RELEASE_LIB_DIR = $(RELEASE_DIR)/$(BUILD_NUMBER)/$(OBJDIR_NAME)/lib
--include $(NSPR_MY_OVERRIDES_MK)
+#
+# The variable definitions in this file are used to
+# override variable values set by NSPR's build system.
+# This file, if present, is included at the end of config.mk.
+#
+# For example:
+#
+# DIST=/usr/local/nspr
+#
+ifndef NSPR_MY_OVERRIDES_MK
+NSPR_MY_OVERRIDES_MK = $(MOD_DEPTH)/config/my_overrides.mk
+endif
-endif # USE_AUTOCONF
+-include $(NSPR_MY_OVERRIDES_MK)
diff --git a/config/nsinstall.c b/config/nsinstall.c
index 56d4d304..75e56a17 100644
--- a/config/nsinstall.c
+++ b/config/nsinstall.c
@@ -41,7 +41,9 @@
#include "pathsub.h"
+#ifndef HAVE_LCHOWN
#define HAVE_LCHOWN
+#endif
#if defined(AIX) || defined(BSDI) || defined(HPUX) || defined(LINUX) \
|| defined(SUNOS4) || defined(SCO) || defined(UNIXWARE) \
diff --git a/config/nspr-config.in b/config/nspr-config.in
new file mode 100755
index 00000000..23c0d70a
--- /dev/null
+++ b/config/nspr-config.in
@@ -0,0 +1,111 @@
+#!/bin/sh
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+exec_prefix_set=no
+
+major_version=@MOD_MAJOR_VERSION@
+minor_version=@MOD_MINOR_VERSION@
+revision_version=@MOD_REVISION_VERSION@
+
+usage()
+{
+ cat <<EOF
+Usage: nspr-config [OPTIONS] [LIBRARIES]
+Options:
+ [--prefix[=DIR]]
+ [--exec-prefix[=DIR]]
+ [--version]
+ [--libs]
+ [--cflags]
+Libraries:
+ nspr
+ plc
+ plds
+EOF
+ exit $1
+}
+
+if test $# -eq 0; then
+ usage 1 1>&2
+fi
+
+lib_nspr=yes
+lib_plc=yes
+lib_plds=yes
+
+while test $# -gt 0; do
+ case "$1" in
+ -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ case $1 in
+ --prefix=*)
+ prefix=$optarg
+ if test $exec_prefix_set = no ; then
+ exec_prefix=$optarg
+ fi
+ ;;
+ --prefix)
+ echo_prefix=yes
+ ;;
+ --exec-prefix=*)
+ exec_prefix=$optarg
+ exec_prefix_set=yes
+ ;;
+ --exec-prefix)
+ echo_exec_prefix=yes
+ ;;
+ --version)
+ echo ${major_version}.${minor_version}.${revision_version}
+ ;;
+ --cflags)
+ echo_cflags=yes
+ ;;
+ --libs)
+ echo_libs=yes
+ ;;
+ nspr)
+ lib_nspr=yes
+ ;;
+ plc)
+ lib_plc=yes
+ ;;
+ plds)
+ lib_plds=yes
+ ;;
+ *)
+ usage 1 1>&2
+ ;;
+ esac
+ shift
+done
+
+if test "$echo_prefix" = "yes"; then
+ echo $prefix
+fi
+
+if test "$echo_exec_prefix" = "yes"; then
+ echo $exec_prefix
+fi
+
+if test "$echo_cflags" = "yes"; then
+ echo -I${prefix}/include/nspr
+fi
+
+if test "$echo_libs" = "yes"; then
+ libdirs=-L${exec_prefix}/lib
+ if test -n "$lib_plds"; then
+ libdirs="$libdirs -lplds${major_version}"
+ fi
+ if test -n "$lib_plc"; then
+ libdirs="$libdirs -lplc${major_version}"
+ fi
+ if test -n "$lib_nspr"; then
+ libdirs="$libdirs -lnspr${major_version}"
+ fi
+
+ echo $libdirs @LDFLAGS@ @OS_LIBS@
+fi
+
diff --git a/config/nspr.m4 b/config/nspr.m4
new file mode 100644
index 00000000..8174bea9
--- /dev/null
+++ b/config/nspr.m4
@@ -0,0 +1,67 @@
+# -*- tab-width: 4; -*-
+# Configure paths for NSPR
+# Public domain - Chris Seawood <cls@seawood.org> 2001-04-05
+# Based upon gtk.m4 (also PD) by Owen Taylor
+
+dnl AM_PATH_NSPR([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for NSPR, and define NSPR_CFLAGS and NSPR_LIBS
+AC_DEFUN(AM_PATH_NSPR,
+[dnl
+
+AC_ARG_WITH(nspr-prefix,
+ [ --with-nspr-prefix=PFX Prefix where NSPR is installed],
+ nspr_config_prefix="$withval",
+ nspr_config_prefix="")
+
+AC_ARG_WITH(nspr-exec-prefix,
+ [ --with-nspr-exec-prefix=PFX
+ Exec prefix where NSPR is installed],
+ nspr_config_exec_prefix="$withval",
+ nspr_config_exec_prefix="")
+
+ if test -n "$nspr_config_exec_prefix"; then
+ nspr_config_args="$nspr_config_args --exec-prefix=$nspr_config_exec_prefix"
+ if test -z "$NSPR_CONFIG"; then
+ NSPR_CONFIG=$nspr_config_exec_prefix/bin/nspr-config
+ fi
+ fi
+ if test -n "$nspr_config_prefix"; then
+ nspr_config_args="$nspr_config_args --prefix=$nspr_config_prefix"
+ if test -z "$NSPR_CONFIG"; then
+ NSPR_CONFIG=$nspr_config_prefix/bin/nspr-config
+ fi
+ fi
+
+ unset ac_cv_path_NSPR_CONFIG
+ AC_PATH_PROG(NSPR_CONFIG, nspr-config, no)
+ min_nspr_version=ifelse([$1], ,4.0.0,$1)
+ AC_MSG_CHECKING(for NSPR - version >= $min_nspr_version (skipping))
+
+ no_nspr=""
+ if test "$NSPR_CONFIG" = "no"; then
+ no_nspr="yes"
+ else
+ NSPR_CFLAGS=`$NSPR_CONFIG $nspr_config_args --cflags`
+ NSPR_LIBS=`$NSPR_CONFIG $nspr_config_args --libs`
+
+ dnl Skip version check for now
+ nspr_config_major_version=`$NSPR_CONFIG $nspr_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ nspr_config_minor_version=`$NSPR_CONFIG $nspr_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ nspr_config_micro_version=`$NSPR_CONFIG $nspr_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ fi
+
+ if test -z "$no_nspr"; then
+ AC_MSG_RESULT(yes)
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+
+ AC_SUBST(NSPR_CFLAGS)
+ AC_SUBST(NSPR_LIBS)
+
+])
diff --git a/config/rules.mk b/config/rules.mk
index b885c33e..2e623a75 100644
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -61,6 +61,7 @@ include $(topsrcdir)/config/config.mk
endif
ifdef USE_AUTOCONF
+ifdef CROSS_COMPILE
ifdef INTERNAL_TOOLS
CC=$(HOST_CC)
CCC=$(HOST_CXX)
@@ -68,6 +69,7 @@ CFLAGS=$(HOST_CFLAGS)
CXXFLAGS=$(HOST_CXXFLAGS)
endif
endif
+endif
#
# This makefile contains rules for building the following kinds of
@@ -87,7 +89,7 @@ ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
# Win95, Win16, and OS/2 require library names conforming to the 8.3 rule.
# other platforms do not.
#
-ifeq (,$(filter-out WIN95 WIN16 OS2,$(OS_TARGET)))
+ifeq (,$(filter-out WIN95 OS2,$(OS_TARGET)))
LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION)_s.$(LIB_SUFFIX)
SHARED_LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
IMPORT_LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).$(LIB_SUFFIX)
@@ -130,24 +132,12 @@ OBJS = $(addprefix $(OBJDIR)/,$(CSRCS:.c=.$(OBJ_SUFFIX))) \
$(addprefix $(OBJDIR)/,$(ASFILES:.s=.$(OBJ_SUFFIX)))
endif
-ifeq ($(OS_TARGET), WIN16)
- comma := ,
- empty :=
- space := $(empty) $(empty)
- W16OBJS = $(subst $(space),$(comma)$(space),$(strip $(OBJS)))
- W16TEMP =$(OS_LIBS) $(EXTRA_LIBS)
- ifeq ($(strip $(W16TEMP)),)
- W16LIBS =
- else
- W16LIBS = library $(subst $(space),$(comma)$(space),$(strip $(W16TEMP)))
- endif
- W16DEF = $(notdir $(basename $(SHARED_LIBRARY))).DEF
-endif
-
ifeq ($(OS_ARCH), WINNT)
-ifneq ($(OS_TARGET), WIN16)
OBJS += $(RES)
endif
+
+ifeq ($(MOZ_OS2_TOOLS),VACPP)
+EXTRA_LIBS := $(patsubst -l%,$(DIST)/lib/%.$(LIB_SUFFIX),$(EXTRA_LIBS))
endif
ALL_TRASH = $(TARGETS) $(OBJS) $(filter-out . .., $(OBJDIR)) LOGS TAGS $(GARBAGE) \
@@ -170,16 +160,14 @@ endif
################################################################################
-all:: export libs install
+all:: export
export::
+$(LOOP_OVER_DIRS)
-libs::
- +$(LOOP_OVER_DIRS)
+libs:: export
-install::
- +$(LOOP_OVER_DIRS)
+install:: export
clean::
rm -rf $(OBJS) so_locations $(NOSUCHFILE) $(GARBAGE)
@@ -193,6 +181,22 @@ realclean clobber_all::
rm -rf $(wildcard *.OBJ *.OBJD) dist $(ALL_TRASH)
+$(LOOP_OVER_DIRS)
+distclean::
+ rm -rf $(wildcard *.OBJ *.OBJD) dist $(ALL_TRASH) $(DIST_GARBAGE)
+ +$(LOOP_OVER_DIRS)
+
+real_install:: $(RELEASE_BINS) $(RELEASE_HEADERS) $(RELEASE_LIBS)
+ifdef RELEASE_BINS
+ $(NSINSTALL) -t -m 0755 $(RELEASE_BINS) $(DESTDIR)$(bindir)
+endif
+ifdef RELEASE_HEADERS
+ $(NSINSTALL) -t -m 0644 $(RELEASE_HEADERS) $(DESTDIR)$(includedir)
+endif
+ifdef RELEASE_LIBS
+ $(NSINSTALL) -t -m 0755 $(RELEASE_LIBS) $(DESTDIR)$(libdir)
+endif
+ +$(LOOP_OVER_DIRS)
+
release:: export
ifdef RELEASE_BINS
@echo "Copying executable programs and scripts to release directory"
@@ -263,26 +267,20 @@ else
$(CC) -o $@ $(CFLAGS) $(OBJS) $(LDFLAGS)
endif
endif
+ifdef BUILD_OPT
+ $(STRIP) $@
+endif
$(LIBRARY): $(OBJS)
@$(MAKE_OBJDIR)
rm -f $@
ifeq ($(MOZ_OS2_TOOLS),VACPP)
- $(AR) $(subst /,\\,$(OBJS)) $(AR_EXTRA_ARGS)
+ $(AR) $(subst /,\\,$(OBJS)) $(AR_FLAGS)
else
-ifdef USE_AUTOCONF
$(AR) $(AR_FLAGS) $(OBJS) $(AR_EXTRA_ARGS)
-else
- $(AR) $(OBJS) $(AR_EXTRA_ARGS)
-endif # USE_AUTOCONF
endif
$(RANLIB) $@
-ifeq ($(OS_TARGET), WIN16)
-$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
- wlib $(OS_LIB_FLAGS) $@ +$(SHARED_LIBRARY)
-endif
-
ifeq ($(OS_TARGET), OS2)
$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
$(IMPLIB) $@ $(SHARED_LIBRARY).def
@@ -291,9 +289,6 @@ endif
$(SHARED_LIBRARY): $(OBJS)
@$(MAKE_OBJDIR)
rm -f $@
-ifdef USE_AUTOCONF
- $(MKSHLIB) $(OBJS) $(EXTRA_LIBS) $(OS_LIBS)
-else
ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
echo "#!" > $(OBJDIR)/lib$(LIBRARY_NAME)_syms
nm -B -C -g $(OBJS) \
@@ -304,25 +299,7 @@ ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
-bM:SRE -bnoentry $(OS_LIBS) $(EXTRA_LIBS)
else # AIX 4.1
ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET), WIN16)
- echo system windows dll initinstance >w16link
- echo option map >>w16link
- echo option oneautodata >>w16link
- echo option heapsize=32K >>w16link
- echo option $(OS_DLL_OPTION) >>w16link
- echo debug $(DEBUGTYPE) all >>w16link
- echo name $@ >>w16link
- echo file >>w16link
- echo $(W16OBJS) >>w16link
- echo $(W16IMPORTS) >>w16link
- echo $(W16LIBS) >>w16link
- echo $(W16_EXPORTS) >>w16link
- echo libfile libentry >>w16link
- $(LINK) @w16link.
- rm w16link
-else # WIN16
- $(LINK_DLL) -MAP $(DLLBASE) $(OS_LIBS) $(EXTRA_LIBS) $(OBJS)
-endif # WINNT
+ $(LINK_DLL) -MAP $(DLLBASE) $(DLL_LIBS) $(EXTRA_LIBS) $(OBJS)
else
ifeq ($(OS_ARCH),OS2)
# append ( >> ) doesn't seem to be working under OS/2 gmake. Run through OS/2 shell instead.
@@ -338,27 +315,28 @@ ifeq ($(OS_TARGET), OpenVMS)
@if test ! -f $(OBJDIR)/VMSuni.opt; then \
echo "Creating universal symbol option file $(OBJDIR)/VMSuni.opt";\
create_opt_uni $(OBJS); \
- mv VMSuni.opt $(OBJDIR); \
fi
- $(MKSHLIB) -o $@ $(OBJS) $(EXTRA_LIBS) $(OS_LIBS) $(OBJDIR)/VMSuni.opt
+ $(MKSHLIB) -o $@ $(OBJS) $(EXTRA_LIBS) $(OBJDIR)/VMSuni.opt
@echo "`translate $@`" > $(@:.$(DLL_SUFFIX)=.vms)
else # OpenVMS
- $(MKSHLIB) -o $@ $(OBJS) $(EXTRA_LIBS) $(OS_LIBS)
+ $(MKSHLIB) $(OBJS) $(EXTRA_LIBS)
endif # OpenVMS
endif # OS2
endif # WINNT
endif # AIX 4.1
-endif # USE_AUTOCONF
+ifdef BUILD_OPT
+ $(STRIP) $@
+endif
ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
$(RES): $(RESNAME)
@$(MAKE_OBJDIR)
ifeq ($(OS_TARGET),OS2)
- $(RC) -DOS2 -r $(RESNAME) $(RES)
+ $(RC) -DOS2 -r $< $@
else
# The resource compiler does not understand the -U option.
- $(RC) $(filter-out -U%,$(DEFINES)) $(INCLUDES) -Fo$(RES) $(RESNAME)
+ $(RC) $(filter-out -U%,$(DEFINES)) $(INCLUDES) -Fo$@ $<
endif
@echo $(RES) finished
endif
@@ -381,14 +359,7 @@ WCCFLAGS3 = $(subst -D,-d,$(WCCFLAGS2))
$(OBJDIR)/%.$(OBJ_SUFFIX): %.c
@$(MAKE_OBJDIR)
ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET), WIN16)
-# $(MOD_DEPTH)/config/w16opt $(WCCFLAGS3)
- echo $(WCCFLAGS3) >w16wccf
- $(CC) -zq -fo$(OBJDIR)\\$*.$(OBJ_SUFFIX) @w16wccf $*.c
- rm w16wccf
-else
$(CC) -Fo$@ -c $(CFLAGS) $<
-endif
else
ifeq ($(MOZ_OS2_TOOLS),VACPP)
$(CC) -Fo$@ -c $(CFLAGS) $<
diff --git a/config/win16.mk b/config/win16.mk
index e1cfd938..d47ed561 100644
--- a/config/win16.mk
+++ b/config/win16.mk
@@ -55,6 +55,7 @@ AR = wlib -q $@
RC = wrc.exe /r /dWIN16=1 /bt=windows
RANLIB = echo
BSDECHO = echo
+STRIP = echo
NSINSTALL = nsinstall
INSTALL = $(NSINSTALL)
MAKE_OBJDIR = mkdir $(OBJDIR)
diff --git a/configure b/configure
index 56a87989..0cf81b44 100755
--- a/configure
+++ b/configure
@@ -11,19 +11,27 @@
ac_help=
ac_default_prefix=/usr/local
# Any additions from configure.in:
-ac_default_prefix=\${MOD_DEPTH}/dist
+ac_help="$ac_help
+ --with-dist-prefix=DIST_PREFIX
+ place build files in DIST_PREFIX [dist]"
+ac_help="$ac_help
+ --with-dist-bindir=DIR build execuatables in DIR [DIST_PREFIX/bin]"
+ac_help="$ac_help
+ --with-dist-includedir=DIR
+ build include files in DIR [DIST_PREFIX/include]"
+ac_help="$ac_help
+ --with-dist-libdir=DIR build library files in DIR [DIST_PREFIX/lib]"
ac_help="$ac_help
--with-mozilla Compile NSPR with Mozilla support"
ac_help="$ac_help
- --enable-optimize Enable code optimizations"
+ --enable-optimize(=val) Enable code optimizations (val, ie. -O2) "
ac_help="$ac_help
--disable-debug Do not compile in debugging symbols"
ac_help="$ac_help
- --disable-shared Do not compile into shared libraries"
+ --enable-win32-target=\$t
+ Specify win32 flavor. (WIN95 or WINNT)"
ac_help="$ac_help
- --enable-target=\$t Turn on features for target \$t when build has multiple targets"
-ac_help="$ac_help
- --enable-n32 Enable n32 support (IRIX only)"
+ --enable-n32 Enable n32 ABI support (IRIX only)"
ac_help="$ac_help
--enable-64bit Enable 64-bit support (on certain platforms)"
ac_help="$ac_help
@@ -39,9 +47,11 @@ ac_help="$ac_help
ac_help="$ac_help
--with-native-threads Use native system threads as thread subsystem (Solaris only)"
ac_help="$ac_help
- --enable-cplus Use cplus for whatever reason"
+ --enable-cplus Enable some c++ api routines"
ac_help="$ac_help
--enable-ipv6 Compile ipv6 support"
+ac_help="$ac_help
+ --enable-boehm Enable the Boehm Garbage Collector"
# Initialize some variables set by options.
# The variables have the same names as the options, with
@@ -553,12 +563,6 @@ fi
-d=`pwd`
-if test "${srcdir}" = "$d" || test "${srcdir}" = "." ; then
- echo "Do not build in the srcdir as it will override Makefiles used by non-autoconf build."
- exit 1;
-fi
-
ac_aux_dir=
for ac_dir in ${srcdir}/build/autoconf $srcdir/${srcdir}/build/autoconf; do
if test -f $ac_dir/install-sh; then
@@ -606,7 +610,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:610: checking host system type" >&5
+echo "configure:614: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -627,7 +631,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:631: checking target system type" >&5
+echo "configure:635: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -645,7 +649,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:649: checking build system type" >&5
+echo "configure:653: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -668,32 +672,14 @@ test "$host_alias" != "$target_alias" &&
program_prefix=${target_alias}-
-
- echo $ac_n "checking cached system tuple""... $ac_c" 1>&6
-echo "configure:674: checking cached system tuple" >&5
- if { test x"${ac_cv_host_system_type+set}" = x"set" &&
- test x"$ac_cv_host_system_type" != x"$host"; } ||
- { test x"${ac_cv_build_system_type+set}" = x"set" &&
- test x"$ac_cv_build_system_type" != x"$build"; } ||
- { test x"${ac_cv_target_system_type+set}" = x"set" &&
- test x"$ac_cv_target_system_type" != x"$target"; }; then
- echo "$ac_t""different" 1>&6
- { echo "configure: error: remove config.cache and re-run configure" 1>&2; exit 1; }
- else
- echo "$ac_t""ok" 1>&6
- fi
- ac_cv_host_system_type="$host"
- ac_cv_build_system_type="$build"
- ac_cv_target_system_type="$target"
-
-
-
cat >> confdefs.h <<\EOF
#define USE_AUTOCONF 1
EOF
-NSPR_VERSION=4
+MOD_MAJOR_VERSION=4
+MOD_MINOR_VERSION=0
+MOD_REVISION_VERSION=1
NSPR_MODNAME=nspr20
_HAVE_PTHREADS=
USE_PTHREADS=
@@ -708,6 +694,13 @@ _OPTIMIZE_FLAGS=-O
_DEBUG_FLAGS=-g
MOZ_DEBUG=1
MOZ_OPTIMIZE=
+OBJDIR=.
+OBJDIR_NAME=.
+NSINSTALL='$(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall'
+NOSUCHFILE=/no-such-file
+LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)'
+LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)'
+
RESOLVE_LINK_SYMBOLS=
CFLAGS="${CFLAGS=}"
@@ -716,6 +709,72 @@ LDFLAGS="${LDFLAGS=}"
HOST_CFLAGS="${HOST_CFLAGS=}"
HOST_LDFLAGS="${HOST_LDFLAGS=}"
+case "$target" in
+*-irix6*)
+ USE_N32=1 ;;
+*-cygwin*)
+ # Check to see if we are really running in a msvc environemnt
+ _WIN32_MSVC=
+ if test "$CC" = "cl" || test "$CXX" = "cl"; then
+ _WIN32_MSVC=1
+ elif test -z "$CC"; then
+ echo 'main() { return 0; }' > dummy.c
+ cl -o dummy dummy.c
+ if test $? = 0; then
+ _WIN32_MSVC=1
+ fi
+ rm -f dummy dummy.o dummy.obj dummy.exe dummy.c
+ fi
+ ;;
+*-msvc*)
+ _WIN32_MSVC=1
+ ;;
+esac
+
+if test -n "$_WIN32_MSVC"; then
+ SKIP_PATH_CHECKS=1
+ SKIP_COMPILER_CHECKS=1
+ SKIP_LIBRARY_CHECKS=1
+fi
+
+dist_prefix='${MOD_DEPTH}/dist'
+dist_bindir='${dist_prefix}/bin'
+dist_includedir='${dist_prefix}/include'
+dist_libdir='${dist_prefix}/lib'
+
+# Check whether --with-dist-prefix or --without-dist-prefix was given.
+if test "${with_dist_prefix+set}" = set; then
+ withval="$with_dist_prefix"
+ dist_prefix=$withval
+fi
+
+
+# Check whether --with-dist-bindir or --without-dist-bindir was given.
+if test "${with_dist_bindir+set}" = set; then
+ withval="$with_dist_bindir"
+ dist_bindir=$withval
+fi
+
+
+# Check whether --with-dist-includedir or --without-dist-includedir was given.
+if test "${with_dist_includedir+set}" = set; then
+ withval="$with_dist_includedir"
+ dist_includedir=$withval
+fi
+
+
+# Check whether --with-dist-libdir or --without-dist-libdir was given.
+if test "${with_dist_libdir+set}" = set; then
+ withval="$with_dist_libdir"
+ dist_libdir=$withval
+fi
+
+
+
+
+
+
+
# Check whether --with-mozilla or --without-mozilla was given.
if test "${with_mozilla+set}" = set; then
withval="$with_mozilla"
@@ -741,7 +800,13 @@ fi
# Check whether --enable-optimize or --disable-optimize was given.
if test "${enable_optimize+set}" = set; then
enableval="$enable_optimize"
- MOZ_OPTIMIZE=1
+ if test "$enableval" != "no"; then
+ MOZ_OPTIMIZE=1
+ if test -n "$enableval" && test "$enableval" != "yes"; then
+ _OPTIMIZE_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
+ _SAVE_OPTIMIZE_FLAGS=$_OPTIMIZE_FLAGS
+ fi
+ fi
fi
@@ -754,19 +819,12 @@ if test "${enable_debug+set}" = set; then
fi
-# Check whether --enable-shared or --disable-shared was given.
-if test "${enable_shared+set}" = set; then
- enableval="$enable_shared"
- :
-fi
-
-
-# Check whether --enable-target or --disable-target was given.
-if test "${enable_target+set}" = set; then
- enableval="$enable_target"
- MOZ_TARGET=`echo $enableval | tr a-z A-Z`
+# Check whether --enable-win32-target or --disable-win32-target was given.
+if test "${enable_win32_target+set}" = set; then
+ enableval="$enable_win32_target"
+ MOZ_WIN32_TARGET=`echo $enableval | tr a-z A-Z`
else
- MOZ_TARGET=
+ MOZ_WIN32_TARGET=
fi
@@ -775,6 +833,9 @@ if test "${enable_n32+set}" = set; then
enableval="$enable_n32"
if test "$enableval" = "yes"; then
USE_N32=1
+ else if test "$enableval" = "no"; then
+ USE_N32=
+ fi
fi
fi
@@ -797,10 +858,11 @@ if test "${enable_mdupdate+set}" = set; then
fi
-# Extract the first word of "whoami", so it can be a program name with args.
-set dummy whoami; ac_word=$2
+if test -z "$SKIP_PATH_CHECKS"; then
+ # Extract the first word of "$WHOAMI whoami", so it can be a program name with args.
+set dummy $WHOAMI whoami; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:804: checking for $ac_word" >&5
+echo "configure:866: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_WHOAMI'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -822,7 +884,7 @@ else
fi
done
IFS="$ac_save_ifs"
- test -z "$ac_cv_path_WHOAMI" && ac_cv_path_WHOAMI=":"
+ test -z "$ac_cv_path_WHOAMI" && ac_cv_path_WHOAMI="echo not_whoami"
;;
esac
fi
@@ -833,6 +895,10 @@ else
echo "$ac_t""no" 1>&6
fi
+elif test -z "$WHOAMI"; then
+ WHOAMI=whoami
+fi
+
if test -n "$MOZ_DEBUG"; then
cat >> confdefs.h <<\EOF
#define DEBUG 1
@@ -848,9 +914,10 @@ else
#define NDEBUG 1
EOF
- DEFINES="$DEFINES -UDEBUG"
+ DEFINES="$DEFINES -U_DEBUG -UDEBUG"
fi
+if test -z "$SKIP_COMPILER_CHECKS"; then
if test "$target" != "$host"; then
echo "cross compiling from $host to $target"
cross_compiling=yes
@@ -860,14 +927,14 @@ if test "$target" != "$host"; then
_SAVE_LDFLAGS="$LDFLAGS"
echo $ac_n "checking for $host compiler""... $ac_c" 1>&6
-echo "configure:864: checking for $host compiler" >&5
+echo "configure:931: checking for $host compiler" >&5
if test -z "$HOST_CC"; then
for ac_prog in gcc cc /usr/ucb/cc
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:871: checking for $ac_word" >&5
+echo "configure:938: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_HOST_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -914,16 +981,16 @@ test -n "$HOST_CC" || HOST_CC=""""
LDFLAGS="$HOST_LDFLAGS"
echo $ac_n "checking whether the $host compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:918: checking whether the $host compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works" >&5
+echo "configure:985: checking whether the $host compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works" >&5
cat > conftest.$ac_ext <<EOF
-#line 920 "configure"
+#line 987 "configure"
#include "confdefs.h"
int main() {
return(0);
; return 0; }
EOF
-if { (eval echo configure:927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_prog_host_cc_works=1 echo "$ac_t""yes" 1>&6
else
@@ -944,7 +1011,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:948: checking for $ac_word" >&5
+echo "configure:1015: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -972,14 +1039,14 @@ fi
test -n "$CC" && break
done
-test -n "$CC" || CC=":"
+test -n "$CC" || CC="echo"
fi
unset ac_cv_prog_CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:983: checking for $ac_word" >&5
+echo "configure:1050: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1009,7 +1076,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1013: checking for $ac_word" >&5
+echo "configure:1080: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1060,7 +1127,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1064: checking for $ac_word" >&5
+echo "configure:1131: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1092,7 +1159,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1096: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1163: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1103,12 +1170,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1107 "configure"
+#line 1174 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1134,12 +1201,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1138: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1205: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1143: checking whether we are using GNU C" >&5
+echo "configure:1210: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1148,7 +1215,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1152: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1219: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1167,7 +1234,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1171: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1238: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1204,7 +1271,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1208: checking for $ac_word" >&5
+echo "configure:1275: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1232,7 +1299,7 @@ fi
test -n "$CXX" && break
done
-test -n "$CXX" || CXX=":"
+test -n "$CXX" || CXX="echo"
fi
unset ac_cv_prog_CXX
@@ -1241,7 +1308,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1245: checking for $ac_word" >&5
+echo "configure:1312: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1273,7 +1340,7 @@ test -n "$CXX" || CXX="gcc"
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1277: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1344: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1284,12 +1351,12 @@ cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext << EOF
-#line 1288 "configure"
+#line 1355 "configure"
#include "confdefs.h"
int main(){return(0);}
EOF
-if { (eval echo configure:1293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cxx_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1315,12 +1382,12 @@ if test $ac_cv_prog_cxx_works = no; then
{ echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1319: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1386: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1324: checking whether we are using GNU C++" >&5
+echo "configure:1391: checking whether we are using GNU C++" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1329,7 +1396,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1333: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gxx=yes
else
ac_cv_prog_gxx=no
@@ -1348,7 +1415,7 @@ ac_test_CXXFLAGS="${CXXFLAGS+set}"
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1352: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1419: checking whether ${CXX-g++} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1385,7 +1452,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1389: checking for $ac_word" >&5
+echo "configure:1456: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1413,7 +1480,7 @@ fi
test -n "$RANLIB" && break
done
-test -n "$RANLIB" || RANLIB=":"
+test -n "$RANLIB" || RANLIB="echo"
fi
if test -z "$AR"; then
@@ -1422,7 +1489,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1426: checking for $ac_word" >&5
+echo "configure:1493: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1450,7 +1517,7 @@ fi
test -n "$AR" && break
done
-test -n "$AR" || AR=":"
+test -n "$AR" || AR="echo"
fi
if test -z "$AS"; then
@@ -1459,7 +1526,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1463: checking for $ac_word" >&5
+echo "configure:1530: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1487,7 +1554,7 @@ fi
test -n "$AS" && break
done
-test -n "$AS" || AS=":"
+test -n "$AS" || AS="echo"
fi
if test -z "$LD"; then
@@ -1496,7 +1563,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1500: checking for $ac_word" >&5
+echo "configure:1567: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1524,7 +1591,44 @@ fi
test -n "$LD" && break
done
-test -n "$LD" || LD=":"
+test -n "$LD" || LD="echo"
+
+ fi
+ if test -z "$STRIP"; then
+ for ac_prog in "${target_alias}-strip" "${target}-strip"
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1604: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_STRIP="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+STRIP="$ac_cv_prog_STRIP"
+if test -n "$STRIP"; then
+ echo "$ac_t""$STRIP" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$STRIP" && break
+done
+test -n "$STRIP" || STRIP="echo"
fi
if test -z "$DLLTOOL"; then
@@ -1533,7 +1637,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1537: checking for $ac_word" >&5
+echo "configure:1641: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1561,7 +1665,7 @@ fi
test -n "$DLLTOOL" && break
done
-test -n "$DLLTOOL" || DLLTOOL=":"
+test -n "$DLLTOOL" || DLLTOOL="echo"
fi
if test -z "$WINDRES"; then
@@ -1570,7 +1674,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1574: checking for $ac_word" >&5
+echo "configure:1678: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1598,14 +1702,161 @@ fi
test -n "$WINDRES" && break
done
-test -n "$WINDRES" || WINDRES=":"
+test -n "$WINDRES" || WINDRES="echo"
fi
+
else
- # Extract the first word of "gcc", so it can be a program name with args.
+ for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1716: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_CXX="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+CXX="$ac_cv_prog_CXX"
+if test -n "$CXX"; then
+ echo "$ac_t""$CXX" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$CXX" && break
+done
+test -n "$CXX" || CXX="gcc"
+
+
+echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:1748: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+
+ac_ext=C
+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
+
+cat > conftest.$ac_ext << EOF
+
+#line 1759 "configure"
+#include "confdefs.h"
+
+int main(){return(0);}
+EOF
+if { (eval echo configure:1764: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ ac_cv_prog_cxx_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+ ac_cv_prog_cxx_cross=no
+ else
+ ac_cv_prog_cxx_cross=yes
+ fi
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_prog_cxx_works=no
+fi
+rm -fr conftest*
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
+if test $ac_cv_prog_cxx_works = no; then
+ { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
+fi
+echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+echo "configure:1790: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
+cross_compiling=$ac_cv_prog_cxx_cross
+
+echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
+echo "configure:1795: checking whether we are using GNU C++" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.C <<EOF
+#ifdef __GNUC__
+ yes;
+#endif
+EOF
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1804: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ ac_cv_prog_gxx=yes
+else
+ ac_cv_prog_gxx=no
+fi
+fi
+
+echo "$ac_t""$ac_cv_prog_gxx" 1>&6
+
+if test $ac_cv_prog_gxx = yes; then
+ GXX=yes
+else
+ GXX=
+fi
+
+ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ac_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS=
+echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
+echo "configure:1823: checking whether ${CXX-g++} accepts -g" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ echo 'void f(){}' > conftest.cc
+if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then
+ ac_cv_prog_cxx_g=yes
+else
+ ac_cv_prog_cxx_g=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS="$ac_save_CXXFLAGS"
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+
+ if test "$CXX" = "cl" -a -z "$CC"; then
+ CC=$CXX
+ else
+ # Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1609: checking for $ac_word" >&5
+echo "configure:1860: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1635,7 +1886,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1639: checking for $ac_word" >&5
+echo "configure:1890: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1686,7 +1937,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1690: checking for $ac_word" >&5
+echo "configure:1941: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1718,7 +1969,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1722: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1973: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1729,12 +1980,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1733 "configure"
+#line 1984 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1760,12 +2011,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1764: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2015: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1769: checking whether we are using GNU C" >&5
+echo "configure:2020: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1774,7 +2025,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1778: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2029: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1793,7 +2044,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1797: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2048: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1824,153 +2075,11 @@ else
fi
fi
- for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1833: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CXX"; then
- ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CXX="$ac_prog"
- break
fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CXX="$ac_cv_prog_CXX"
-if test -n "$CXX"; then
- echo "$ac_t""$CXX" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$CXX" && break
-done
-test -n "$CXX" || CXX="gcc"
-
-
-echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1865: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
-
-ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 1876 "configure"
-#include "confdefs.h"
-
-int main(){return(0);}
-EOF
-if { (eval echo configure:1881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- ac_cv_prog_cxx_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
- ac_cv_prog_cxx_cross=no
- else
- ac_cv_prog_cxx_cross=yes
- fi
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_prog_cxx_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
-if test $ac_cv_prog_cxx_works = no; then
- { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1907: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
-cross_compiling=$ac_cv_prog_cxx_cross
-
-echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1912: checking whether we are using GNU C++" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.C <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gxx=yes
-else
- ac_cv_prog_gxx=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gxx" 1>&6
-
-if test $ac_cv_prog_gxx = yes; then
- GXX=yes
-else
- GXX=
-fi
-
-ac_test_CXXFLAGS="${CXXFLAGS+set}"
-ac_save_CXXFLAGS="$CXXFLAGS"
-CXXFLAGS=
-echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1940: checking whether ${CXX-g++} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- echo 'void f(){}' > conftest.cc
-if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then
- ac_cv_prog_cxx_g=yes
-else
- ac_cv_prog_cxx_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6
-if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS="$ac_save_CXXFLAGS"
-elif test $ac_cv_prog_cxx_g = yes; then
- if test "$GXX" = yes; then
- CXXFLAGS="-g -O2"
- else
- CXXFLAGS="-g"
- fi
-else
- if test "$GXX" = yes; then
- CXXFLAGS="-O2"
- else
- CXXFLAGS=
- fi
-fi
-
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1974: checking for $ac_word" >&5
+echo "configure:2083: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2002,7 +2111,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2006: checking for $ac_word" >&5
+echo "configure:2115: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_AS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2043,7 +2152,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2047: checking for $ac_word" >&5
+echo "configure:2156: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2077,14 +2186,14 @@ fi
test -n "$AR" && break
done
-test -n "$AR" || AR=":"
+test -n "$AR" || AR="echo not_ar"
- for ac_prog in ld
+ for ac_prog in ld link
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2088: checking for $ac_word" >&5
+echo "configure:2197: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2118,14 +2227,55 @@ fi
test -n "$LD" && break
done
-test -n "$LD" || LD=":"
+test -n "$LD" || LD="echo not_ld"
+
+ for ac_prog in strip
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2238: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_STRIP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ case "$STRIP" in
+ /*)
+ ac_cv_path_STRIP="$STRIP" # Let the user override the test with a path.
+ ;;
+ ?:/*)
+ ac_cv_path_STRIP="$STRIP" # Let the user override the test with a dos path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_path_STRIP="$ac_dir/$ac_word"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ ;;
+esac
+fi
+STRIP="$ac_cv_path_STRIP"
+if test -n "$STRIP"; then
+ echo "$ac_t""$STRIP" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$STRIP" && break
+done
+test -n "$STRIP" || STRIP="echo not_strip"
for ac_prog in dlltool
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2129: checking for $ac_word" >&5
+echo "configure:2279: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_DLLTOOL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2159,14 +2309,14 @@ fi
test -n "$DLLTOOL" && break
done
-test -n "$DLLTOOL" || DLLTOOL=":"
+test -n "$DLLTOOL" || DLLTOOL="echo not_dlltool"
for ac_prog in windres
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2170: checking for $ac_word" >&5
+echo "configure:2320: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_WINDRES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2200,7 +2350,7 @@ fi
test -n "$WINDRES" && break
done
-test -n "$WINDRES" || WINDRES=":"
+test -n "$WINDRES" || WINDRES="echo not_windres"
if test -z "$HOST_CC"; then
HOST_CC="$CC"
@@ -2218,97 +2368,21 @@ if test "`echo | $AS -V 2>&1 | grep -c GNU`" != "0"; then
fi
rm -f a.out
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2234: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+if test "$cross_compiling" = "yes"; then
+ CROSS_COMPILE=1
else
- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
- for ac_dir in $PATH; do
- # Account for people who put trailing slashes in PATH elements.
- case "$ac_dir/" in
- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- if test -f $ac_dir/$ac_prog; then
- if test $ac_prog = install &&
- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
- IFS="$ac_save_IFS"
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL="$ac_cv_path_install"
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL="$ac_install_sh"
- fi
+ CROSS_COMPILE=
fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+fi # SKIP_COMPILER_CHECKS
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:2287: checking whether ln -s works" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- rm -f conftestdata
-if ln -s X conftestdata 2>/dev/null
-then
- rm -f conftestdata
- ac_cv_prog_LN_S="ln -s"
-else
- ac_cv_prog_LN_S=ln
-fi
-fi
-LN_S="$ac_cv_prog_LN_S"
-if test "$ac_cv_prog_LN_S" = "ln -s"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-for ac_prog in perl5 perl
+if test -z "$SKIP_PATH_CHECKS"; then
+ for ac_prog in perl5 perl
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2312: checking for $ac_word" >&5
+echo "configure:2386: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2342,8 +2416,11 @@ fi
test -n "$PERL" && break
done
-test -n "$PERL" || PERL=":"
+test -n "$PERL" || PERL="echo not_perl"
+elif test -z "$PERL"; then
+ PERL=perl
+fi
OBJ_SUFFIX=o
LIB_SUFFIX=a
@@ -2353,18 +2430,157 @@ PR_MD_ASFILES=
PR_MD_CSRCS=
PR_MD_ARCH_DIR=unix
AR_FLAGS='cr $@'
+AS='$(CC)'
-OS_TARGET=`uname -s`
OS_ARCH=`uname -s | sed -e 's|/|_|g'`
OS_RELEASE=`uname -r`
OS_TEST=`uname -m`
+if test "$OS_ARCH" = "IRIX64"; then
+ OS_ARCH=IRIX
+fi
+
+if test "$OS_ARCH" = "POSIX_for_OpenVMS_AXP"; then
+ OS_ARCH=OpenVMS
+fi
+
+#######################################################################
+# Master "Core Components" macros for getting the OS target #
+#######################################################################
+
+#
+# Note: OS_TARGET should be specified on the command line for gmake.
+# When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
+# The difference between the Win95 target and the WinNT target is that
+# the WinNT target uses Windows NT specific features not available
+# in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
+# at lesser performance (the Win95 target uses threads; the WinNT target
+# uses fibers).
+#
+# When OS_TARGET=WIN16 is specified, then a Windows 3.11 (16bit) target
+# is built. See: win16_3.11.mk for lots more about the Win16 target.
+#
+# If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
+# cross-compilation.
+#
+
+#
+# The following hack allows one to build on a WIN95 machine (as if
+# s/he were cross-compiling on a WINNT host for a WIN95 target).
+# It also accomodates for MKS's uname.exe. If you never intend
+# to do development on a WIN95 machine, you don't need this hack.
+#
+if test "$OS_ARCH" = "WIN95"; then
+ OS_ARCH=WINNT
+ OS_TARGET=WIN95
+elif test "$OS_ARCH" = 'Windows_95'; then
+ OS_ARCH=Windows_NT
+ OS_TARGET=WIN95
+elif test "$OS_ARCH" = 'Windows_98'; then
+ OS_ARCH=Windows_NT
+ OS_TARGET=WIN95
+elif test "$OS_ARCH" = "CYGWIN_95-4.0"; then
+ OS_ARCH='CYGWIN_NT-4.0'
+ OS_TARGET=WIN95
+elif test "$OS_ARCH" = "CYGWIN_98-4.10"; then
+ OS_ARCH='CYGWIN_NT-4.0'
+ OS_TARGET=WIN95
+elif test "$OS_ARCH" = "OS_2"; then
+ OS_ARCH=OS2
+ OS_TARGET=OS2
+fi
+
+#
+# On WIN32, we also define the variable CPU_ARCH.
+#
+
+if test "$OS_ARCH" = "WINNT"; then
+ CPU_ARCH=`uname -p`
+ if test "$CPU_ARCH" = "I386"; then
+ CPU_ARCH=x86
+ fi
+elif test "$OS_ARCH" = "Windows_NT"; then
+#
+# If uname -s returns "Windows_NT", we assume that we are using
+# the uname.exe in MKS toolkit.
+#
+# The -r option of MKS uname only returns the major version number.
+# So we need to use its -v option to get the minor version number.
+# Moreover, it doesn't have the -p option, so we need to use uname -m.
+#
+ OS_ARCH=WINNT
+# OS_MINOR_RELEASE=`uname -v`
+ if test "$OS_MINOR_RELEASE" = "00"; then
+ OS_MINOR_RELEASE=0
+ fi
+ OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
+ CPU_ARCH=`uname -m`
+ #
+ # MKS's uname -m returns "586" on a Pentium machine.
+ #
+ if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
+ CPU_ARCH=x86
+ fi
+elif echo "$OS_ARCH" | grep -c CYGWIN_NT >/dev/null; then
+#
+# If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
+# the uname.exe in the Cygwin tools.
+#
+ OS_RELEASE=`echo $OS_ARCH | sed 's|^CYGWIN_NT-||'`
+ OS_ARCH=WINNT
+ CPU_ARCH=`uname -m`
+ #
+ # Cygwin's uname -m returns "i686" on a Pentium Pro machine.
+ #
+ if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
+ CPU_ARCH=x86
+ fi
+elif test "$OS_ARCH" = "CYGWIN32_NT"; then
+#
+# Prior to the Beta 20 release, Cygwin was called GNU-Win32.
+# If uname -s returns "CYGWIN32/NT", we assume that we are using
+# the uname.exe in the GNU-Win32 tools.
+#
+ OS_ARCH=WINNT
+ CPU_ARCH=`uname -m`
+ #
+ # GNU-Win32's uname -m returns "i686" on a Pentium Pro machine.
+ #
+ if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
+ CPU_ARCH=x86
+ fi
+fi
+
+if test -n "$MOZILLA_CLIENT" && test "$OS_ARCH" = "WINNT"; then
+ OS_TARGET=WIN95
+ MOZ_WIN32_TARGET=WIN95
+ if test -n "$MOZ_DEBUG"; then
+ USE_DEBUG_RTL=1
+ fi
+fi
+if test -z "$OS_TARGET"; then
+ OS_TARGET=$OS_ARCH
+fi
+if test "$OS_TARGET" = "WIN95"; then
+ OS_RELEASE="4.0"
+fi
+if test "$OS_TARGET" = "WIN16"; then
+ OS_RELEASE=
+fi
+if test -z "$MOZ_WIN32_TARGET"; then
+ MOZ_WIN32_TARGET=$OS_TARGET
+fi
+OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
+
+
case "$host" in
-*-mingw*)
+*-mingw*|*-cygwin*|*-msvc*)
;;
*-beos*)
HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE"
;;
+*os2*)
+ ;;
*)
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
;;
@@ -2427,7 +2643,9 @@ EOF
MKSHLIB=
DSO_LDOPTS=
+ USE_PTHREADS=1
AIX_LINK_OPTS='-bnso -berok'
+ LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)_shr'
;;
aix4.3*)
cat >> confdefs.h <<\EOF
@@ -2451,6 +2669,7 @@ EOF
EOF
USE_IPV6=1
+ USE_PTHREADS=1
AIX_LINK_OPTS='-brtl -bnso -berok'
;;
*)
@@ -2470,7 +2689,7 @@ EOF
;;
esac
CFLAGS="$CFLAGS -qro -qroconst"
- if test `grep -c xlC_r $CC`; then
+ if echo "$CC" | grep -c xlC_r; then
CFLAGS="$CFLAGS -qarch=com"
fi
AIX_WRAP='$(DIST)/lib/aixwrap.o'
@@ -2485,6 +2704,7 @@ EOF
fi
fi
PR_MD_CSRCS=aix.c
+ RESOLVE_LINK_SYMBOLS=1
;;
*-beos*)
@@ -2505,11 +2725,160 @@ EOF
EOF
DSO_LDOPTS=-nostart
- MKSHLIB='$(CCC) $(DSO_LDOPTS) -o $@'
MDCPUCFG_H=_beos.cfg
USE_BTHREADS=1
PR_MD_ARCH_DIR=beos
RESOLVE_LINK_SYMBOLS=1
+ case "${target_cpu}" in
+ i?86)
+ _OPTIMIZE_FLAGS=-O2
+ _DEBUG_FLAGS='-gdwarf-2 -O0'
+ MKSHLIB='$(CCC) $(DSO_LDOPTS) -o $@'
+ ;;
+ powerpc)
+ CC=mwcc
+ CCC=mwcc
+ LD=mwld
+ DSO_LDOPTS='-xms -export pragma -init _init_routine_ -term _term_routine_ -lroot -lnet /boot/develop/lib/ppc/glue-noinit.a /boot/develop/lib/ppc/init_term_dyn.o /boot/develop/lib/ppc/start_dyn.o'
+ _OPTIMIZE_FLAGS=-O2
+ _DEBUG_FLAGS='-g -O0'
+ ;;
+ esac
+ ;;
+
+*-bsdi*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define BSDI 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define NEED_BSDREGEX 1
+EOF
+
+
+ CFLAGS="$CFLAGS -Wall -Wno-format"
+ CXXFLAGS="$CXXFLAGS -Wall -Wno-format"
+
+ if echo "$OS_TEST" | grep -c 86 >/dev/null; then
+ CPU_ARCH=x86
+ elif echo "$OS_TEST" | grep -c sparc >/dev/null; then
+ CPU_ARCH=sparc
+ fi
+
+ MDCPUCFG_H=_bsdi.cfg
+ PR_MD_CSRCS=bsdi.c
+
+ DSO_LDOPTS=-r
+
+ case "$target_os" in
+ bsdi1.1*)
+ cat >> confdefs.h <<\EOF
+#define _PR_BSDI_JMPBUF_IS_ARRAY 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_STAT_HAS_ONLY_ST_ATIME 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_NEED_H_ERRNO 1
+EOF
+
+ MKSHLIB=
+ DSO_CFLAGS=
+ DSO_LDOPTS=
+ ;;
+
+ bsdi2.1*)
+ cat >> confdefs.h <<\EOF
+#define _PR_TIMESPEC_HAS_TS_SEC 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_BSDI_JMPBUF_IS_ARRAY 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_DLL 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define USE_DLFCN 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_STAT_HAS_ST_ATIMESPEC 1
+EOF
+
+ PR_MD_ASFILES=os_BSD_OS_386_2.s
+ ;;
+
+ bsdi4.*)
+ cat >> confdefs.h <<\EOF
+#define _PR_SELECT_CONST_TIMEVAL 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_BSDI_JMPBUF_IS_STRUCT 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_DLL 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define USE_DLFCN 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_STAT_HAS_ST_ATIMESPEC 1
+EOF
+
+ MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)'
+ DSO_CFLAGS=-fPIC
+ DSO_LDOPTS='-shared -Wl,-soname,$(@:$(OBJDIR)/%.so=%.so)'
+ STRIP="$STRIP -d"
+ case "$target_os" in
+ bsdi4.2*)
+ cat >> confdefs.h <<\EOF
+#define _PR_HAVE_GETPROTO_R 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_HAVE_GETPROTO_R_POINTER 1
+EOF
+
+ ;;
+ esac
+ ;;
+ *)
+ cat >> confdefs.h <<\EOF
+#define _PR_SELECT_CONST_TIMEVAL 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_BSDI_JMPBUF_IS_STRUCT 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_DLL 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define USE_DLFCN 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_STAT_HAS_ST_ATIMESPEC 1
+EOF
+
+ ;;
+ esac
+
;;
*-dgux*)
@@ -2541,9 +2910,7 @@ EOF
#define _POSIX4A_DRAFT6_SOURCE 1
EOF
- MKSHLIB='$(LD) $(DSO_LDOPTS)'
DSO_LDOPTS=-G
- NOSUCHFILE=/no-such-file
_OPTIMIZE_FLAGS=-O2
_DEBUG_FLAGS=
MDCPUCFG_H=_dgux.cfg
@@ -2551,12 +2918,10 @@ EOF
;;
*-freebsd*)
- if test "${target_cpu}" != "alpha"; then
- cat >> confdefs.h <<\EOF
-#define i386 1
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
EOF
- fi
cat >> confdefs.h <<\EOF
#define FREEBSD 1
EOF
@@ -2580,6 +2945,10 @@ EOF
*-hpux*)
cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
#define HPUX 1
EOF
@@ -2587,10 +2956,18 @@ EOF
#define _HPUX_SOURCE 1
EOF
- DEFINES="$DEFINES -D${target_cpu}"
+ cat >> confdefs.h <<\EOF
+#define hppa 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define hpux 1
+EOF
+
DLL_SUFFIX=sl
DSO_LDOPTS='-b +h $(notdir $@)'
PR_MD_CSRCS=hpux.c
+ PR_MD_ASFILES=os_HPUX.s
if test -n "$USE_64"; then
MDCPUCFG_H=_hpux64.cfg
else
@@ -2605,79 +2982,106 @@ EOF
else
DSO_CFLAGS=-fPIC
fi
+
if test -n "$MOZILLA_CLIENT"; then
- USE_NSPR_THREADS=1
+ DEFAULT_IMPL_STRATEGY=_EMU
fi
- case "${target_os}" in
- hpuxA.09*)
+
+ if echo "$OS_RELEASE" | grep ^A.09 >/dev/null; then
cat >> confdefs.h <<\EOF
-#define HPUX9 1
+#define _PR_NEED_H_ERRNO 1
EOF
cat >> confdefs.h <<\EOF
-#define _PR_NEED_H_ERRNO 1
+#define HPUX9 1
EOF
+ DEFAULT_IMPL_STRATEGY=_EMU
+ USE_NSPR_THREADS=1
+ fi
+
+ if echo "$OS_RELEASE" | egrep '^(A.09|B.10)' >/dev/null; then
cat >> confdefs.h <<\EOF
#define _PR_NO_LARGE_FILES 1
EOF
- ;;
- hpuxB.10.01*)
+ fi
+
+ if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
cat >> confdefs.h <<\EOF
-#define HPUX10 1
+#define _PR_NEED_H_ERRNO 1
EOF
- ;;
- hpuxB.10.10*)
+ fi
+
+ if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
cat >> confdefs.h <<\EOF
-#define HPUX10 1
+#define HAVE_INT_LOCALTIME_R 1
EOF
+ fi
+
+ if echo "$OS_RELEASE" | egrep '^(B.10.30|B.11.00)' >/dev/null; then
cat >> confdefs.h <<\EOF
-#define HPUX10_10 1
+#define HAVE_POINTER_LOCALTIME_R 1
EOF
+ fi
+
+ if test "$OS_RELEASE" = "B.10.01"; then
cat >> confdefs.h <<\EOF
-#define HAVE_INT_LOCALTIME_R 1
+#define HPUX10 1
EOF
- USE_PTHREADS=1
- USE_NSPR_THREADS=
- ;;
- hpuxB.10.20*)
+ DEFAULT_IMPL_STRATEGY=_EMU
+ fi
+
+ if test "$OS_RELEASE" = "B.10.10"; then
cat >> confdefs.h <<\EOF
#define HPUX10 1
EOF
cat >> confdefs.h <<\EOF
-#define HPUX10_20 1
+#define HPUX10_10 1
EOF
+ DEFAULT_IMPL_STRATEGY=_PTH
+ fi
+
+ if test "$OS_RELEASE" = "B.10.20"; then
cat >> confdefs.h <<\EOF
-#define HAVE_INT_LOCALTIME_R 1
+#define HPUX10 1
EOF
- if test -z "$GNU_CC"; then
+ cat >> confdefs.h <<\EOF
+#define HPUX10_20 1
+EOF
+
+ if test -z "$GNU_CC" && test 0 = 1; then
CFLAGS="$CFLAGS +DAportable +DS1.1"
CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
fi
- USE_PTHREADS=1
- USE_NSPR_THREADS=
- ;;
- hpuxB.10.30*)
+ DEFAULT_IMPL_STRATEGY=_EMU
+ fi
+
+ if test "$OS_RELEASE" = "B.10.30"; then
cat >> confdefs.h <<\EOF
-#define HAVE_POINTER_LOCALTIME_R 1
+#define HPUX10 1
EOF
- if test -z "$GNU_CC"; then
+ cat >> confdefs.h <<\EOF
+#define HPUX10_30 1
+EOF
+
+ #CXX="/opt/aCC/bin/aCC -ext"
+ if test -z "$GNU_CC" && test 0 = 1; then
CFLAGS="$CFLAGS +DAportable +DS1.1"
CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
fi
- USE_PTHREADS=1
- USE_NSPR_THREADS=
- ;;
- hpuxB.11.00*)
+ DEFAULT_IMPL_STRATEGY=_PTH
+ fi
+
+ if test "$OS_RELEASE" = "B.11.00"; then
cat >> confdefs.h <<\EOF
#define HPUX10 1
EOF
@@ -2699,6 +3103,7 @@ EOF
EOF
if test -z "$GNU_CC"; then
+ if test 0 = 1; then
if test -z "$USE_64"; then
CFLAGS="$CFLAGS +DAportable +DS2.0"
CXXFLAGS="$CXXFLAGS +DAportable +DS2.0"
@@ -2706,24 +3111,23 @@ EOF
CFLAGS="$CFLAGS +DA2.0W +DS2.0"
CXXFLAGS="$CXXFLAGS +DA2.0W +DS2.0"
fi
+ fi
fi
- USE_PTHREADS=1
- USE_NSPR_THREADS=
- ;;
- esac
- case "${target_os}" in
- hpuxB.10*)
- cat >> confdefs.h <<\EOF
-#define _PR_NO_LARGE_FILES 1
-EOF
-
- ;;
- esac
- if test -n "$USE_NSPR_THREADS"; then
- cat >> confdefs.h <<\EOF
-#define _PR_LOCAL_THREADS_ONLY 1
-EOF
+ DEFAULT_IMPL_STRATEGY=_PTH
+ fi
+ if test "$DEFAULT_IMPL_STRATEGY" = "_EMU"; then
+ USE_NSPR_THREADS=1
+ USE_PTHREADS=
+ USE_USER_THREADS=
+ elif test "$DEFAULT_IMPL_STRATEGY" = "_PTH"; then
+ USE_PTHREADS=1
+ if test "$MOZILLA_CLIENT"; then
+ USE_PTHREADS=
+ fi
+ if test "$USE_USER_PTHREADS"; then
+ USE_PTHREADS=
+ fi
fi
;;
@@ -2746,19 +3150,30 @@ EOF
PR_MD_CSRCS=irix.c
PR_MD_ASFILES=os_Irix.s
- MKSHLIB='$(LD) $(SHLIB_LD_OPTS) -rdata_shared -shared -soname $(notdir $@) -o $@'
- DSO_LDOPTS='-elf -shared -all'
+ MKSHLIB='$(LD) $(DSO_LDOPTS) -rdata_shared -shared -soname $(notdir $@) -o $@'
+ #DSO_LDOPTS='-elf -shared -all'
+ STRIP="$STRIP -f"
if test -n "$USE_64"; then
MDCPUCFG_H=_irix64.cfg
else
MDCPUCFG_H=_irix32.cfg
fi
case "${target_os}" in
+ irix6*)
+ cat >> confdefs.h <<\EOF
+#define IRIX6 1
+EOF
+
+ USE_PTHREADS=1
+ ;;
irix5*)
+ cat >> confdefs.h <<\EOF
+#define IRIX5 1
+EOF
+
USE_NSPR_THREADS=1
;;
*)
- USE_N32=1
USE_PTHREADS=1
;;
esac
@@ -2767,7 +3182,11 @@ EOF
CFLAGS="$CFLAGS -Wall -Wno-format"
_OPTIMIZE_FLAGS="-O6"
else
- AS="as -D_ASM $(INCLUDES) -n32"
+ if test -n "$USE_N32"; then
+ AS='as -D_ASM $(INCLUDES) -n32'
+ else
+ AS='as -D_ASM $(INCLUDES)'
+ fi
CFLAGS="$CFLAGS -fullwarn -xansi"
if test "$USE_N32"; then
_OPTIMIZE_FLAGS="-O -OPT:Olimit=4000"
@@ -2780,14 +3199,14 @@ EOF
case "$target}" in
*-irix6.*)
CFLAGS="$CFLAGS -multigot"
- SHLIB_LD_OPTS="-no_unresolved"
- if test "USE_N32"; then
+ DSO_LDOPTS="-no_unresolved"
+ if test "$USE_N32"; then
CFLAGS="$CFLAGS -n32 -woff 1209"
LDFLAGS="$LDFLAGS -n32"
- SHLIB_LD_OPTS="$SHLIB_LD_OPTS -n32"
+ DSO_LDOPTS="$DSO_LDOPTS -n32"
if test "${target_os}" = "irix6.2"; then
LDFLAGS="$LDFLAGS -Wl,-woff,85"
- SHLIB_LD_OPTS="$SHLIB_LD_OPTS -woff 85"
+ DSO_LDOPTS="$DSO_LDOPTS -woff 85"
fi
else
if test "$USE_64"; then
@@ -2877,6 +3296,7 @@ EOF
MKSHLIB='$(LD) $(DSO_LDOPTS) -soname $(notdir $@) -o $@'
DSO_CFLAGS=-fPIC
DSO_LDOPTS=-shared
+ OS_LIBS="$OS_LIBS -lc"
case "${target_cpu}" in
alpha)
cat >> confdefs.h <<\EOF
@@ -2891,6 +3311,10 @@ EOF
CXXFLAGS="$CXXFLAGS -mieee"
_OPTIMIZE_FLAGS=-O2
;;
+ i?86)
+ PR_MD_ASFILES=os_Linux_x86.s
+ _OPTIMIZE_FLAGS=-O2
+ ;;
m68k)
_OPTIMIZE_FLAGS=-O
CFLAGS="$CFLAGS -m68020-40"
@@ -2902,55 +3326,155 @@ EOF
esac
;;
-*-mingw*)
+*-mingw*|*-cygwin*|*-msvc*)
cat >> confdefs.h <<\EOF
#define XP_PC 1
EOF
cat >> confdefs.h <<\EOF
-#define NONAMELESSUNION 1
+#define WIN32 1
EOF
PR_MD_ARCH_DIR=windows
- if test -z "$GNU_CC"; then
+ RESOLVE_LINK_SYMBOLS=1
+
+ if test -n "$GNU_CC"; then
+ cat >> confdefs.h <<\EOF
+#define NONAMELESSUNION 1
+EOF
+
+ MKSHLIB='$(DLLTOOL) --as=$(AS) -k --dllname $*.dll --output-lib $@'
+ else
+ CC=cl
+ CXX=cl
+ LD=link
+ AR='lib -NOLOGO -OUT:"$@"'
+ AR_FLAGS=
+ RANLIB='echo not_ranlib'
+ STRIP='echo not_strip'
+ NSINSTALL=nsinstall
+ RC=rc.exe
+ GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
OBJ_SUFFIX=obj
LIB_SUFFIX=lib
DLL_SUFFIX=dll
+
+ CFLAGS="$CFLAGS -W3 -nologo -GF -Gy"
+ _DEBUG_FLAGS=
+
+ if test -n "$MOZ_OPTIMIZE"; then
+ CFLAGS="$CFLAGS -MD"
+ OPTIMIZER=-O2
+ DLLFLAGS='-OUT:"$@"'
+ OBJDIR_TAG=_OPT
+
+ if test -n "$MOZ_PROFILE"; then
+ OPTIMIZER="$OPTIMIZER -Z7"
+ DLLFLAGS="$DLLFLAGS -DEBUG -DEBUGTYPE:CV"
+ LDFLAGS="$LDFLAGS -DEBUG -DEBUGTYPE:CV"
+ fi
+ else
+ if test -n "$USE_DEBUG_RTL"; then
+ CFLAGS="$CFLAGS -MDd"
+ else
+ CFLAGS="$CFLAGS -MD"
+ fi
+ OPTIMIZER="-Od -Z7"
+ DLLFLAGS='-DEBUG -DEBUGTYPE:CV -OUT:"$@"'
+ if test -n "$GLOWCODE"; then
+ DLLFLAGS='-DEBUG -DEBUGTYPE:both -INCLUDE:_GlowCode -OUT:"$@"'
+ DLL_LIBS='$(GLOWDIR)/glowcode.lib'
+ fi
+ OBJDIR_TAG=_DBG
+ LDFLAGS="$LDFLAGS -DEBUG -DEBUGTYPE:CV"
+ if test -n "$PROFILE"; then
+ LDFLAGS="$LDFLAGS -PROFILE -MAP"
+ DLLFLAGS="$DLLFLAGS -PROFILE -MAP"
+ fi
+ fi
+
+ if test "$OS_TARGET" = "WINNT"; then
+ CFLAGS="$CFLAGS -GT"
+ LIBNSPR='$(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
+ LIBPLC='$(dist_libdir)/libplc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
+ else
+ LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
+ LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
+ fi
+ fi # GNU_CC
+
+ if test -n "$USE_STATIC_TLS"; then
+ cat >> confdefs.h <<\EOF
+#define _PR_USE_STATIC_TLS 1
+EOF
+
+ fi
+
+ if test "$OS_TARGET" = "WINNT"; then
+ if test "$CPU_ARCH" = "x86"; then
+ CFLAGS="$CFLAGS -G5"
+ fi
+ cat >> confdefs.h <<\EOF
+#define WINNT 1
+EOF
+
+ else
+ cat >> confdefs.h <<\EOF
+#define WIN95 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_GLOBAL_THREADS_ONLY 1
+EOF
+
+ fi
+
+ if test "$CPU_ARCH" = "x86"; then
+ CPU_ARCH_TAG=
+ else
+ CPU_ARCH_TAG=$CPU_ARCH
fi
- MKSHLIB='$(DLLTOOL) --as=$(AS) -k --dllname $*.dll --output-lib $@'
- case "$MOZ_TARGET" in
+ if test -n "$USE_DEBUG_RTL"; then
+ OBJDIR_SUFFIX=OBJD
+ else
+ OBJDIR_SUFFIX=OBJ
+ fi
+
+ OBJDIR_NAME="${OS_CONFIG}${CPU_ARCH_TAG}${OBJDIR_TAG}.${OBJDIR_SUFFIX}"
+ OBJDIR='${OBJDIR_NAME}'
+
+ OS_DLLFLAGS='-nologo -DLL -SUBSYSTEM:WINDOWS -PDB:NONE'
+
+ case "$MOZ_WIN32_TARGET" in
WINNT)
- DEFINES="$DEFINES -DWIN32 -DWINNT -DWin32_Winsock"
MDCPUCFG_H=_winnt.cfg
;;
WIN95)
- DEFINES="$DEFINES -UWINNT -DWIN32 -DWIN95 -DWin32_Winsock -D_PR_GLOBAL_THREADS_ONLY"
MDCPUCFG_H=_win95.cfg
;;
WIN16)
- DEFINES="$DEFINES -UWINNT"
MDCPUCFG_H=_win16.cfg
;;
*)
- { echo "configure: error: Missing MOZ_TARGET for ${target}. Use --enable-target to set." 1>&2; exit 1; }
+ { echo "configure: error: Missing MOZ_WIN32_TARGET for ${target}. Use --enable-win32-target to set." 1>&2; exit 1; }
;;
esac
- case "$target" in
- i?86-*)
+ case "$target_cpu" in
+ i?86)
cat >> confdefs.h <<\EOF
#define _X86_ 1
EOF
;;
- alpha-*)
+ alpha)
cat >> confdefs.h <<\EOF
#define _ALPHA_ 1
EOF
;;
- mips-*)
+ mips)
cat >> confdefs.h <<\EOF
#define _MIPS_ 1
EOF
@@ -2963,29 +3487,496 @@ EOF
;;
esac
+
;;
+*-ncr-sysv*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SVR4 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SYSV 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define NCR 1
+EOF
+
+ USE_NSPR_THREADS=1
+ if test "$OS_RELEASE" = "2.03"; then
+ cat >> confdefs.h <<\EOF
+#define _PR_STAT_HAS_ST_ATIM 1
+EOF
+
+ else
+ cat >> confdefs.h <<\EOF
+#define _PR_STAT_HAS_ST_ATIM_UNION 1
+EOF
+
+ fi
+
+ if test -z "$GNU_CC"; then
+ CFLAGS="$CFLAGS -Hnocopyr"
+ CXXFLAGS="$CXXFLAGS -Hnocopyr"
+ else
+ CFLAGS="$CFLAGS -fPIC -Wall -pipe"
+ CXXFLAGS="$CXXFLAGS -fPIC -Wall -pipe"
+ DSO_LDOPTS=-G
+ fi
+ MDCPUCFG_H=_ncr.cfg
+ PR_MD_CSRCS=ncr.c
+ ;;
+
+mips-nec-sysv*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SVR4 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define __SVR4 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define NEC 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define nec_ews 1
+EOF
+
+ USE_NSPR_THREADS=1
+ if test -z "$GNU_CC"; then
+ CC='$(NSDEPTH)/build/hcc cc -Xa -KGnum=0 -KOlimit=4000'
+ CXX=g++
+ fi
+ OS_LIBS="$OS_LIBS -lsocket -lnsl -ldl"
+ DSO_LDOPTS=-G
+ MDCPUCFG_H=_nec.cfg
+ PR_MD_CSRCS=nec.c
+ ;;
+
+*-netbsd*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define NETBSD 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_BSD_FLOCK 1
+EOF
+
+ if test -z "$OBJECT_FMT"; then
+ if echo __ELF__ | ${CC-cc} -E - | grep -q __ELF__ 2>/dev/null; then
+ OBJECT_FMT=a.out;
+ else
+ OBJECT_FMT=ELF
+ fi
+ fi
+ if test "$OBJECT_FMT" = "ELF"; then
+ DLL_SUFFIX=so
+ else
+ DLL_SUFFIX=so.1.0
+ fi
+ CFLAGS="$CFLAGS -ansi -Wall -pipe"
+ CXXFLAGS="$CXXFLAGS -ansi -Wall -pipe"
+ DSO_CFLAGS='-fPIC -DPIC'
+ DSO_LDOPTS='-x -shared'
+ if test "$LIBRUNPATH"; then
+ DSO_LDOPTS="$DSO_LDOPTS -R$(LIBRUNPATH)"
+ fi
+ MDCPUCFG_H=_netbsd.cfg
+ PR_MD_CSRCS=netbsd.c
+ ;;
+
+mips-sony-newsos*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SONY 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SYSV 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SVR4 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define __svr4 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define __svr4__ 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_SVID_GETTOD 1
+EOF
+
+ USE_NSPR_THREADS=1
+ CFLAGS="$CFLAGS -Xa -fullwarn"
+ CXXFLAGS="$CXXFLAGS -Xa -fullwarn"
+ DSO_LDOPTS=-G
+ MDCPUCFG_H=_sony.cfg
+ PR_MD_CSRCS=sony.c
+ ;;
+
+*-nextstep*|*-openstep*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define NEXTSTEP 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_BSD_FLOCK 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _POSIX_SOURCE 1
+EOF
+
+ CFLAGS="$CFLAGS -Wall -fno-common -pipe -traditional-cpp -posix"
+ CXXFLAGS="$CXXFLAGS -Wall -fno-common -pipe -traditional-cpp -posix"
+ USE_NSPR_THREADS=1
+ DLL_SUFFIX=dylib
+ MDCPUCFG_H=_nextstep.cfg
+ PR_MD_CSRCS=nextstep.c
+ ;;
+
+
*-nto*)
cat >> confdefs.h <<\EOF
#define XP_UNIX 1
EOF
+ cat >> confdefs.h <<\EOF
+#define NTO 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _QNX_SOURCE 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_POINTER_LOCALTIME_R 1
+EOF
+
MDCPUCFG_H=_nto.cfg
PR_MD_CSRCS=nto.c
- MKSHLIB='qcc -Vgcc_ntox86 -shared -Wl,-h$(@:$(OBJDIR)/%.so=%.so) -o $(@:$(OBJDIR)/%.so=%.so)'
- CFLAGS="$CFLAGS -Wc,-Wall -Wc,-Wno-parentheses -DNTO -D_QNX_SOURCE -DHAVE_POINTER_LOCALTIME_R -shared"
- OS_LIBS="-lsocket"
- _OPTIMIZE_FLAGS="-O2"
- _DEBUG_FLAGS="-O2 -gdwarf-2"
+ MKSHLIB='qcc -Vgcc_ntox86 -shared -Wl,-h$(@:$(OBJDIR)/%.so=%.so) -M -o $(@:$(OBJDIR)/%.so=%.so)'
+ CFLAGS="$CFLAGS -Wc,-Wall -Wc,-Wno-parentheses -shared"
+ OS_LIBS="$OS_LIBS -lsocket"
+ _OPTIMIZE_FLAGS="-O1"
+ _DEBUG_FLAGS="-O1 -gstabs"
COMPILER_TAG="_qcc"
CC="qcc -Vgcc_ntox86 -w"
- CXX="QCC -Vgcc_ntox86 -w"
- CPP="qcc -Vgcc_ntox86 -w"
+ CXX='$(CC)'
LD="qcc -Vgcc_ntox86 -nostdlib"
- AR="qcc -Vgcc_ntox86 -M -a "
- AR_FLAGS="$@"
+ AR="qcc -Vgcc_ntox86 -M -a $@"
+ AR_FLAGS=
;;
+*-openbsd*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define OPENBSD 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_BSD_FLOCK 1
+EOF
+
+ CFLAGS="$CFLAGS -ansi -Wall -pipe"
+ CXXFLAGS="$CXXFLAGS -ansi -Wall -pipe"
+ DLL_SUFFIX=so.1.0
+ DSO_CFLAGS=-fPIC
+ MDCPUCFG_H=_openbsd.cfg
+ PR_MD_CSRCS=openbsd.c
+ USE_NSPR_THREADS=1
+ case "$OS_TEST" in
+ alpha|mips|pmax)
+ DSO_LDOPTS=-shared ;;
+ *)
+ DSO_LDOPTS=-Bshareable ;;
+ esac
+ ;;
+
+*-openvms*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define VMS 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define VMS_AS_IS 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define GENERIC_PTHREAD_REDEFINES 1
+EOF
+
+ RESOLVE_LINK_SYMBOLS=1
+ CROSS_COMPILE=1
+ _HAVE_PTHREADS=1
+ HOST_CC=c89
+ HOST_CXX=cxx
+ HOST_CFLAGS=-O
+ HOST_CXXFLAGS=-O
+ CC=ccc
+ CXX=ccc
+ CFLAGS="$CFLAGS -Wc,names=\(short,as\)"
+ CXXFLAGS="$CXXFLAGS -Wc,names=\(short,as\)"
+ MDCPUCFG_H=_openvms.cfg
+ PR_MD_CSRCS=openvms.c
+ MKSHLIB='vmsld $(OPTIMIZER)'
+ ;;
+
+*-osf*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define OSF1 1
+EOF
+
+
+ if echo "$OS_RELEASE" | egrep -c '(V2.0|V3.2)' 2>/dev/null ; then
+ USE_NSPR_THREADS=1
+ fi
+
+ if test -z "$GNU_CC"; then
+ CC="$CC -std1 -ieee_with_inexact"
+ if test "$OS_RELEASE" = "V2.0"; then
+ CC="$CC -readonly_strings"
+ fi
+ _OPTIMIZE_FLAGS='-Olimit 4000'
+ fi
+
+ if echo $OS_RELEASE | egrep -c '(V2.0|V3.2)' 2>/dev/null; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_INT_LOCALTIME_R 1
+EOF
+
+ else
+ cat >> confdefs.h <<\EOF
+#define HAVE_POINTER_LOCALTIME_R 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define OSF1_HAVE_MACHINE_BUILTINS_H 1
+EOF
+
+ fi
+ DSO_LDOPTS='-shared -all -expect_unresolved "*" -soname $(notdir $@)'
+ MDCPUCFG_H=_osf1.cfg
+ PR_MD_CSRCS=osf1.c
+ ;;
+
+*-qnx*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define QNX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_NEED_H_ERRNO 1
+EOF
+
+ USE_NSPR_THREADS=1
+ MDCPUCFG_H=_qnx.cfg
+ PR_MD_CSRCS=qnx.c
+ ;;
+
+*-rhapsody*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define RHAPSODY 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_BSD_FLOCK 1
+EOF
+
+ CFLAGS="$CFLAGS -Wmost -fno-common -pipe"
+ if echo $OS_TEST | grep -c 86 2>/dev/null; then
+ CFLAGS="$CFLAGS -mno-486"
+ cat >> confdefs.h <<\EOF
+#define i386 1
+EOF
+
+ CPU_ARCH=i386
+ else
+ cat >> confdefs.h <<\EOF
+#define ppc 1
+EOF
+
+ CPU_ARCH=ppc
+ fi
+ DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load'
+ MKSHLIB='$(CC) -arch $(CPU_ARCH) $(DSO_LDOPTS) -o $@'
+ DLL_SUFFIX=dylib
+ USE_PTHREADS=1
+ MDCPUCFG_H=_rhapsody.cfg
+ PR_MD_CSRCS=rhapsody.c
+ ;;
+
+*-*-sco*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SCO 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define sco 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SYSV 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _SVID3 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_NEED_H_ERRNO 1
+EOF
+
+ CC='cc -b elf -KPIC'
+ CXX='$(NSDEPTH)/build/hcpp CC +.cpp +w'
+ USE_NSPR_THREADS=1
+ CPU_ARCH=x86
+ DSO_LDOPTS='-b elf -G'
+ MDCPUCFG_H=_scoos.cfg
+ PR_MD_SRCS=scoos.c
+ ;;
+
+*-sinix*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SVR4 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SNI 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define RELIANTUNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define sinix 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_SVID_GETTOD 1
+EOF
+
+ if echo "$OS_TEST" | grep -c 86 2>/dev/null; then
+ cat >> confdefs.h <<\EOF
+#define i386 1
+EOF
+
+ CPU_ARCH=x86
+ else
+ CPU_ARCH=mips
+ fi
+
+ if test "$GNU_CC"; then
+ AS='$(CC) -x assembler-with-cpp'
+ if test "$CPU_ARCH" = "mips"; then
+ LD=gld
+ CFLAGS="$CFLAGS -pipe"
+ fi
+ CFLAGS="$CFLAGS -Wall -Wno-format"
+ else
+ AS='/usr/bin/cc'
+ _OPTIMIZE_FLAGS='-O -F Olimit,4000'
+ fi
+
+ DSO_LDOPTS='-G -z defs -h $(@:$(OBJDIR)/%.so=%.so)'
+
+ if test "$OS_RELEASE" = "5.43"; then
+ cat >> confdefs.h <<\EOF
+#define IP_MULTICAST 1
+EOF
+
+ fi
+
+ OS_LIBS="$OS_LIBS -lsocket -lnsl -lresolv -ldl -lc"
+ USE_NSPR_THREADS=1
+ MDCPUCFG_H=_reliantunix.cfg
+ PR_MD_CSRCS=reliantunix.c
+ if test "${OS_ARCH}" = "mips"; then
+ PR_MD_ASFILES=os_ReliantUNIX.s
+ fi
+ ;;
+
+*-sunos*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SUNOS4 1
+EOF
+
+ CFLAGS="$CFLAGS -Wall -Wno-format"
+ if test "$USE_MDUPDATE"; then
+ CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
+ fi
+ CPU_ARCH=sparc
+ DLL_SUFFIX=so.1.0
+ DSO_LDOPTS=
+ DSO_CFLAGS=-fPIC
+ USE_NSPR_THREADS=1
+ if test "$OS_RELEASE" = "4.1.3_U1"; then
+ _OPTIMIZE_FLAGS=
+ OS_LIBS="$OS_LIBS -lm"
+ fi
+ MDCPUCFG_H=_sunos4.cfg
+ PR_MD_CSRCS=sunos4.c
+ ;;
+
*-solaris*)
cat >> confdefs.h <<\EOF
#define XP_UNIX 1
@@ -3027,11 +4018,10 @@ EOF
if test -z "$GNU_AS"; then
ASFLAGS="$ASFLAGS -Wa,-P"
fi
- NOSUCHFILE=/no-such-file
if test -n "$GNU_CC"; then
if test -n "$USE_MDUPDATE"; then
- CFLAGS="$CFLAGS -MDupdate"
- CXXFLAGS="$CXXFLAGS -MDupdate"
+ CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
+ CXXFLAGS="$CXXFLAGS -MDupdate \$(DEPENDENCIES)"
fi
else
CC="$CC -xstrconst"
@@ -3045,7 +4035,7 @@ EOF
CC="$CC -xarch=v9"
CXX="$CXX -xarch=v9"
fi
- if test "${target_cpu}" = "i386"; then
+ if test "$OS_TEST" = "i86pc"; then
cat >> confdefs.h <<\EOF
#define i386 1
EOF
@@ -3089,13 +4079,165 @@ EOF
fi
;;
esac
- if test "${target_cpu}" = "sun4u"; then
+ if test "$OS_TEST" = "sun4u"; then
ULTRASPARC_LIBRARY=ultrasparc
ULTRASPARC_FILTER_LIBRARY=libatomic.so
DSO_LDOPTS="$DSO_LDOPTS -f "'$(ULTRASPARC_FILTER_LIBRARY)'
fi
;;
+*-sco-sysv5*)
+ cat >> confdefs.h <<\EOF
+#define XP_UNIX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define UNIXWARE 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SVR4 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define SYSV 1
+EOF
+
+ USE_NSPR_THREADS=1
+ if echo $OS_RELEASE | grep -c 2.1 2>/dev/null; then
+ cat >> confdefs.h <<\EOF
+#define _PR_NO_LARGE_FILES 1
+EOF
+
+ CC='$(NSDEPTH)/build/hcc cc'
+ CXX='$(NSDEPTH)/build/hcpp CC'
+ MDCPUCFG_H=_unixware.cfg
+ else
+ cat >> confdefs.h <<\EOF
+#define _LARGEFILE64_SOURCE 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_HAVE_OFF64_T 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_HAVE_SOCKADDR_LEN 1
+EOF
+
+ MDCPUCFG_H=_unixware7.cfg
+ fi
+ PR_MD_CSRCS=unixware.c
+ DSO_LDOPTS=-G
+ CPU_ARCH=x86
+ ;;
+
+*-os2*)
+ cat >> confdefs.h <<\EOF
+#define XP_OS2 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define BSD_SELECT 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define XP_PC 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_GLOBAL_THREADS_ONLY 1
+EOF
+
+ OBJ_SUFFIX=obj
+ LIB_SUFFIX=lib
+ DLL_SUFFIX=dll
+ DLLTOOL=''
+ RC=rc.exe
+ PR_MD_ARCH_DIR=os2
+ PROG_SUFFIX=.exe
+ NSINSTALL=nsinstall
+ MDCPUCFG_H=_os2.cfg
+ RESOLVE_LINK_SYMBOLS=1
+
+ case "$target" in
+ *-os2_emx)
+ cat >> confdefs.h <<\EOF
+#define XP_OS2_EMX 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define OS2 1
+EOF
+
+ AR=emxomfar
+ AR_FLAGS='-p256 r $@'
+ CFLAGS="-Zmtd -Zomf"
+ HOST_CFLAGS="$CFLAGS"
+ CXXFLAGS="-Zmtd -Zomf"
+ OS_LIBS="-lsocket -lemxio"
+ LD='$(CC)'
+ IMPLIB='emximp -o'
+ FILTER='emxexp'
+ OS_DLLFLAGS='$(DSO_LDOPTS) -o $@'
+ _OPTIMIZE_FLAGS=-O3
+ _DEBUG_FLAGS=-g
+ if test -n "$MOZ_DEBUG"; then
+ DLLFLAGS='-g'
+ EXEFLAGS='-g $(OMF_FLAG) -Zmtd -L$(DIST)/lib -o $@'
+ DSO_LDOPTS='-g -Zomf -Zdll -Zmt -Zcrtdll -Zlinker /NOO'
+ else
+ DLLFLAGS=
+ EXEFLAGS='-Zmtd -o $@'
+ DSO_LDOPTS='-Zomf -Zdll -Zmt -Zcrtdll -Zlinker /NOO'
+ fi
+ ;;
+ *-os2_vacpp)
+ cat >> confdefs.h <<\EOF
+#define XP_OS2_VACPP 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define OS2 4
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define TCPV40HDRS 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _X86_ 1
+EOF
+
+ AR=-ilib
+ AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
+ CFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Mp /Tl-'
+ HOST_CFLAGS="$CFLAGS"
+ OS_CFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Ge- /Tl-'
+ OS_EXE_CFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Ge+ /Tl-'
+ CXXFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Mp /Tl-'
+ OS_LIBS='so32dll.lib tcp32dll.lib'
+ LD='-ilink'
+ LDFLAGS='/FREE /DE /NOE /LINENUMBERS /nologo'
+ MKSHLIB='$(LD) $(DSO_LDOPTS)'
+ IMPLIB='implib -nologo -noignorecase'
+ FILTER='cppfilt -q -B -P'
+ _OPTIMIZE_FLAGS=/O+
+ _DEBUG_FLAGS=/Ti+
+ if test -n "$MOZ_DEBUG"; then
+ DLLFLAGS='/O:$@ /DLL /INC:_dllentry /MAP:$(@:.dll=.map) /nologo /DEBUG /NOE'
+ EXEFLAGS='/OUT:$@ /PMTYPE:VIO /MAP:$(@:.exe=.map) /nologo /DEBUG /NOE'
+ else
+ DLLFLAGS='/O:$@ /DLL /INC:_dllentry /MAP:$(@:.dll=.map) /nologo'
+ EXEFLAGS='/OUT:$@ /PMTYPE:VIO /MAP:$(@:.exe=.map) /nologo'
+ fi
+ LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
+ LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
+ ;;
+ esac
+
+ ;;
+
*)
cat >> confdefs.h <<\EOF
#define XP_UNIX 1
@@ -3109,11 +4251,103 @@ if test "$enable_shared" = no; then
MKSHLIB=
fi
+if test -z "$SKIP_LIBRARY_CHECKS"; then
+
+echo $ac_n "checking for dlopen""... $ac_c" 1>&6
+echo "configure:4258: checking for dlopen" >&5
+if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 4263 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+dlopen();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:4286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_dlopen=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_dlopen=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ :
+else
+ echo "$ac_t""no" 1>&6
+
+ echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
+echo "configure:4305: checking for dlopen in -ldl" >&5
+ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-ldl $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 4313 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen();
+
+int main() {
+dlopen()
+; return 0; }
+EOF
+if { (eval echo configure:4324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ OS_LIBS="-ldl $OS_LIBS"
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+
+fi
+
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:3117: checking how to run the C preprocessor" >&5
+echo "configure:4351: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -3128,13 +4362,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 3132 "configure"
+#line 4366 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3138: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4372: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -3145,13 +4379,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 3149 "configure"
+#line 4383 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3155: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -3162,13 +4396,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 3166 "configure"
+#line 4400 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3172: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4406: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -3194,13 +4428,13 @@ echo "$ac_t""$CPP" 1>&6
if test $ac_cv_prog_gcc = yes; then
echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:3198: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:4432: checking whether ${CC-cc} needs -traditional" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_pattern="Autoconf.*'x'"
cat > conftest.$ac_ext <<EOF
-#line 3204 "configure"
+#line 4438 "configure"
#include "confdefs.h"
#include <sgtty.h>
Autoconf TIOCGETP
@@ -3218,7 +4452,7 @@ rm -f conftest*
if test $ac_cv_prog_gcc_traditional = no; then
cat > conftest.$ac_ext <<EOF
-#line 3222 "configure"
+#line 4456 "configure"
#include "confdefs.h"
#include <termio.h>
Autoconf TCGETA
@@ -3242,12 +4476,12 @@ fi
for ac_func in lchown strerror
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3246: checking for $ac_func" >&5
+echo "configure:4480: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3251 "configure"
+#line 4485 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3270,7 +4504,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4508: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3297,129 +4531,110 @@ done
-echo $ac_n "checking for pthread_attr_init in -lpthread""... $ac_c" 1>&6
-echo "configure:3302: checking for pthread_attr_init in -lpthread" >&5
-ac_lib_var=`echo pthread'_'pthread_attr_init | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_save_LIBS="$LIBS"
-LIBS="-lpthread $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3310 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char pthread_attr_init();
-
-int main() {
-pthread_attr_init()
-; return 0; }
-EOF
-if { (eval echo configure:3321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for pthread_attr_init in -lc_r""... $ac_c" 1>&6
-echo "configure:3340: checking for pthread_attr_init in -lc_r" >&5
-ac_lib_var=`echo c_r'_'pthread_attr_init | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_save_LIBS="$LIBS"
-LIBS="-lc_r $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3348 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char pthread_attr_init();
-
-int main() {
-pthread_attr_init()
-; return 0; }
-EOF
-if { (eval echo configure:3359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for pthread_attr_init in -lc""... $ac_c" 1>&6
-echo "configure:3378: checking for pthread_attr_init in -lc" >&5
-ac_lib_var=`echo c'_'pthread_attr_init | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_save_LIBS="$LIBS"
-LIBS="-lc $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3386 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char pthread_attr_init();
-int main() {
-pthread_attr_init()
-; return 0; }
-EOF
-if { (eval echo configure:3397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- _HAVE_PTHREADS=1
-else
- echo "$ac_t""no" 1>&6
-fi
+echo $ac_n "checking for pthread_create in -lpthreads""... $ac_c" 1>&6
+echo "configure:4539: checking for pthread_create in -lpthreads" >&5
+echo "
+ #include <pthread.h>
+ void *foo(void *v) { int a = 1; }
+ int main() {
+ pthread_t t;
+ if (!pthread_create(&t, 0, &foo, 0)) {
+ pthread_join(t, 0);
+ }
+ exit(0);
+ }" > dummy.c ;
+ echo "${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -lpthreads $LDFLAGS $LIBS" 1>&5;
+ ${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -lpthreads $LDFLAGS $LIBS 2>&5;
+ _res=$? ;
+ rm -f dummy.c dummy${ac_exeext} ;
+ if test "$_res" = "0"; then
+ echo "$ac_t""yes" 1>&6
+ _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads"
+ else
+ echo "$ac_t""no" 1>&6
+
+echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
+echo "configure:4561: checking for pthread_create in -lpthread" >&5
+echo "
+ #include <pthread.h>
+ void *foo(void *v) { int a = 1; }
+ int main() {
+ pthread_t t;
+ if (!pthread_create(&t, 0, &foo, 0)) {
+ pthread_join(t, 0);
+ }
+ exit(0);
+ }" > dummy.c ;
+ echo "${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -lpthread $LDFLAGS $LIBS" 1>&5;
+ ${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -lpthread $LDFLAGS $LIBS 2>&5;
+ _res=$? ;
+ rm -f dummy.c dummy${ac_exeext} ;
+ if test "$_res" = "0"; then
+ echo "$ac_t""yes" 1>&6
+ _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread"
+ else
+ echo "$ac_t""no" 1>&6
+
+echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6
+echo "configure:4583: checking for pthread_create in -lc_r" >&5
+echo "
+ #include <pthread.h>
+ void *foo(void *v) { int a = 1; }
+ int main() {
+ pthread_t t;
+ if (!pthread_create(&t, 0, &foo, 0)) {
+ pthread_join(t, 0);
+ }
+ exit(0);
+ }" > dummy.c ;
+ echo "${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -lc_r $LDFLAGS $LIBS" 1>&5;
+ ${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -lc_r $LDFLAGS $LIBS 2>&5;
+ _res=$? ;
+ rm -f dummy.c dummy${ac_exeext} ;
+ if test "$_res" = "0"; then
+ echo "$ac_t""yes" 1>&6
+ _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r"
+ else
+ echo "$ac_t""no" 1>&6
+
+echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6
+echo "configure:4605: checking for pthread_create in -lc" >&5
+echo "
+ #include <pthread.h>
+ void *foo(void *v) { int a = 1; }
+ int main() {
+ pthread_t t;
+ if (!pthread_create(&t, 0, &foo, 0)) {
+ pthread_join(t, 0);
+ }
+ exit(0);
+ }" > dummy.c ;
+ echo "${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -lc $LDFLAGS $LIBS" 1>&5;
+ ${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -lc $LDFLAGS $LIBS 2>&5;
+ _res=$? ;
+ rm -f dummy.c dummy${ac_exeext} ;
+ if test "$_res" = "0"; then
+ echo "$ac_t""yes" 1>&6
+ _HAVE_PTHREADS=1
+
+ else
+ echo "$ac_t""no" 1>&6
+
+ fi
-fi
+ fi
-fi
+ fi
+
+ fi
+
# Check whether --with-pthreads or --without-pthreads was given.
if test "${with_pthreads+set}" = set; then
withval="$with_pthreads"
@@ -3498,6 +4713,8 @@ fi
;;
esac
+fi # SKIP_LIBRARY_CHECKS
+
# Check whether --enable-cplus or --disable-cplus was given.
if test "${enable_cplus+set}" = set; then
enableval="$enable_cplus"
@@ -3516,11 +4733,25 @@ if test "${enable_ipv6+set}" = set; then
fi
+
+# Check whether --enable-boehm or --disable-boehm was given.
+if test "${enable_boehm+set}" = set; then
+ enableval="$enable_boehm"
+ if test "$enableval" = "yes"; then
+ cat >> confdefs.h <<\EOF
+#define GC_LEAK_DETECTOR 1
+EOF
+
+ GC_LEAK_DETECTOR=1
+ fi
+fi
+
+
if test -n "$USE_PTHREADS"; then
rm -f conftest*
ac_cv_have_dash_pthread=no
echo $ac_n "checking whether ${CC-cc} accepts -pthread""... $ac_c" 1>&6
-echo "configure:3524: checking whether ${CC-cc} accepts -pthread" >&5
+echo "configure:4755: checking whether ${CC-cc} accepts -pthread" >&5
echo 'int main() { return 0; }' | cat > conftest.c
${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
if test $? -eq 0; then
@@ -3533,16 +4764,36 @@ echo "configure:3524: checking whether ${CC-cc} accepts -pthread" >&5
rm -f conftest*
echo "$ac_t""$ac_cv_have_dash_pthread" 1>&6
+ ac_cv_have_dash_pthreads=no
+ if test "$ac_cv_have_dash_pthread" = "no"; then
+ echo $ac_n "checking whether ${CC-cc} accepts -pthreads""... $ac_c" 1>&6
+echo "configure:4771: checking whether ${CC-cc} accepts -pthreads" >&5
+ echo 'int main() { return 0; }' | cat > conftest.c
+ ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
+ if test $? -eq 0; then
+ if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
+ ac_cv_have_dash_pthreads=yes
+ CFLAGS="$CFLAGS -pthreads"
+ CXXFLAGS="$CXXFLAGS -pthreads"
+ fi
+ fi
+ rm -f conftest*
+ echo "$ac_t""$ac_cv_have_dash_pthreads" 1>&6
+ fi
+
case "$target" in
- *-mingw*|*-cygwin*|*-uwin*)
+ *-mingw*|*-cygwin*|*-uwin*|*-msvc*)
;;
*-solaris*)
cat >> confdefs.h <<\EOF
#define _REENTRANT 1
EOF
+ if test "$ac_cv_have_dash_pthreads" = "yes"; then
+ _PTHREAD_LDFLAGS=
+ fi
;;
- *-freebsd*)
+ *-freebsd*|*-openbsd*|*-bsdi*|*-netbsd*)
cat >> confdefs.h <<\EOF
#define _REENTRANT 1
EOF
@@ -3552,35 +4803,9 @@ EOF
EOF
if test "$ac_cv_have_dash_pthread" = "yes"; then
- PTHREAD_LDFLAGS=
+ _PTHREAD_LDFLAGS=
fi
;;
- *-hpuxB.10.10*)
- cat >> confdefs.h <<\EOF
-#define _REENTRANT 1
-EOF
-
- cat >> confdefs.h <<\EOF
-#define _PR_DCETHREADS 1
-EOF
-
- ;;
- *-hpuxB.10.20*)
- cat >> confdefs.h <<\EOF
-#define _REENTRANT 1
-EOF
-
- cat >> confdefs.h <<\EOF
-#define _PR_DCETHREADS 1
-EOF
-
- ;;
- *-hpux*)
- cat >> confdefs.h <<\EOF
-#define _POSIX_C_SOURCE=199506L 1
-EOF
-
- ;;
*)
cat >> confdefs.h <<\EOF
#define _REENTRANT 1
@@ -3589,136 +4814,90 @@ EOF
;;
esac
- echo $ac_n "checking for pthread_create""... $ac_c" 1>&6
-echo "configure:3594: checking for pthread_create" >&5
-if eval "test \"`echo '$''{'ac_cv_func_pthread_create'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 3599 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char pthread_create(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char pthread_create();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_pthread_create) || defined (__stub___pthread_create)
-choke me
-#else
-pthread_create();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_pthread_create=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_pthread_create=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'pthread_create`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- :
-else
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
-echo "configure:3641: checking for pthread_create in -lpthread" >&5
-ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_save_LIBS="$LIBS"
-LIBS="-lpthread $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3649 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char pthread_create();
-
-int main() {
-pthread_create()
-; return 0; }
-EOF
-if { (eval echo configure:3660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- OS_LIBS="-lpthread $OS_LIBS"
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-fi
-
-
else
if test -n "$USE_USER_PTHREADS"; then
USE_PTHREADS=
USE_NSPR_THREADS=
else
- USE_NSPR_THREADS=1
- fi
+ _PTHREAD_LDFLAGS=
+ if test -n "$USE_NSPR_THREADS"; then
+ cat >> confdefs.h <<\EOF
+#define _PR_LOCAL_THREADS_ONLY 1
+EOF
+
+ fi
+ fi
fi
case "$target" in
-*-aix4.1*)
- if test -z "$USE_PTHREADS"; then
- cat >> confdefs.h <<\EOF
+*-aix*)
+ if test -n "$USE_NSPR_THREADS"; then
+ OS_LIBS="$OS_LIBS -lc"
+ else
+ OS_LIBS="$OS_LIBS -lc_r"
+ fi
+ case "$target_os" in
+ aix4.1*)
+ if test -z "$USE_PTHREADS"; then
+ cat >> confdefs.h <<\EOF
#define AIX_RENAME_SELECT 1
EOF
- fi
+ fi
+ ;;
+ aix4.23*)
+ if test -z "$USE_NSPR_THREADS"; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_POINTER_LOCALTIME_R 1
+EOF
+
+ fi
+ ;;
+ esac
;;
-*-aix4.23*)
- if test -z "$USE_NSPR_THREADS"; then
+*-bsdi*)
+ if test -n "$USE_PTHREADS"; then
cat >> confdefs.h <<\EOF
-#define HAVE_POINTER_LOCALTIME_R 1
+#define _PR_NEED_PTHREAD_INIT 1
EOF
fi
;;
*-hpux*)
- if test -n "$USE_USER_PTHREADS"; then
- cat >> confdefs.h <<\EOF
-#define _POSIX_C_SOURCE=199506L 1
+ if test "$USE_PTHREADS"; then
+ if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
+ cat >> confdefs.h <<\EOF
+#define REENTRANT 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define _PR_DCETHREADS 1
+EOF
+
+ else
+ cat >> confdefs.h <<EOF
+#define _POSIX_C_SOURCE 199506L
+EOF
+
+ fi
+ fi
+ if test "$USE_USER_PTHREADS"; then
+ cat >> confdefs.h <<EOF
+#define _POSIX_C_SOURCE 199506L
EOF
fi
;;
-*-mingw*|*-cygwin*|*-uwin*)
+*-mingw*|*-cygwin*|*-uwin*|*-msvc*)
USE_PTHREADS=
- PTHREAD_LDFLAGS=
+ _PTHREAD_LDFLAGS=
USE_USER_PTHREADS=
;;
+*-netbsd*)
+ if test -z "$USE_PTHREADS"; then
+ OS_LIBS="$OS_LIBS -lc"
+ fi
+ ;;
*-solaris*)
if test -n "$USE_NATIVE_THREADS"; then
cat >> confdefs.h <<\EOF
@@ -3742,7 +4921,7 @@ EOF
#define HAVE_POINTER_LOCALTIME_R 1
EOF
- if test "${target_cpu}" = "i386"; then
+ if test "$OS_TEST" = "i86pc"; then
PR_MD_ASFILES=os_SunOS_x86.s
else
PR_MD_ASFILES=os_SunOS.s
@@ -3754,106 +4933,30 @@ EOF
;;
esac
-echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-echo "configure:3759: checking for dlopen" >&5
-if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 3764 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen();
-
-int main() {
+OS_LIBS="$_PTHREAD_LDFLAGS $OS_LIBS"
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_dlopen) || defined (__stub___dlopen)
-choke me
-#else
-dlopen();
-#endif
+if test -n "$_SAVE_OPTIMIZE_FLAGS"; then
+ _OPTIMIZE_FLAGS="$_SAVE_OPTIMIZE_FLAGS"
+fi
-; return 0; }
-EOF
-if { (eval echo configure:3787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_dlopen=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_dlopen=no"
+if test -n "$MOZ_OPTIMIZE"; then
+ CFLAGS="$CFLAGS $_OPTIMIZE_FLAGS"
+ CXXFLAGS="$CXXFLAGS $_OPTIMIZE_FLAGS"
fi
-rm -f conftest*
+
+if test -n "$MOZ_DEBUG"; then
+ CFLAGS="$CFLAGS $_DEBUG_FLAGS"
+ CXXFLAGS="$CXXFLAGS $_DEBUG_FLAGS"
fi
-if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- :
-else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:3806: checking for dlopen in -ldl" >&5
-ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_save_LIBS="$LIBS"
-LIBS="-ldl $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3814 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen();
-int main() {
-dlopen()
-; return 0; }
-EOF
-if { (eval echo configure:3825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- OS_LIBS="-ldl $OS_LIBS"
-else
- echo "$ac_t""no" 1>&6
-fi
-fi
-if test -n "$MOZ_OPTIMIZE"; then
- CFLAGS="$CFLAGS $_OPTIMIZE_FLAGS"
- CXXFLAGS="$CXXFLAGS $_OPTIMIZE_FLAGS"
-fi
-if test -n "$MOZ_DEBUG"; then
- CFLAGS="$CFLAGS $_DEBUG_FLAGS"
- CXXFLAGS="$CXXFLAGS $_DEBUG_FLAGS"
-fi
@@ -3916,6 +5019,64 @@ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+MAKEFILES="
+Makefile
+config/Makefile
+config/autoconf.mk
+config/nsprincl.mk
+config/nsprincl.sh
+config/nspr-config
+lib/Makefile
+lib/ds/Makefile
+lib/libc/Makefile
+lib/libc/include/Makefile
+lib/libc/src/Makefile
+pr/Makefile
+pr/include/Makefile
+pr/include/md/Makefile
+pr/include/obsolete/Makefile
+pr/include/private/Makefile
+pr/src/Makefile
+pr/src/io/Makefile
+pr/src/linking/Makefile
+pr/src/malloc/Makefile
+pr/src/md/Makefile
+pr/src/md/${PR_MD_ARCH_DIR}/Makefile
+pr/src/memory/Makefile
+pr/src/misc/Makefile
+pr/src/threads/Makefile
+pr/tests/Makefile
+pr/tests/dll/Makefile
+"
+
+
+if test -z "$USE_PTHREADS" && test -z "$USE_BTHREADS"; then
+ MAKEFILES="$MAKEFILES pr/src/threads/combined/Makefile"
+elif test -n "$USE_PTHREADS"; then
+ MAKEFILES="$MAKEFILES pr/src/pthreads/Makefile"
+elif test -n "$USE_BTHREADS"; then
+ MAKEFILES="$MAKEFILES pr/src/bthreads/Makefile"
+fi
+
+if test -n "$USE_CPLUS"; then
+ MAKEFILES="$MAKEFILES pr/src/cplus/Makefile pr/src/cplus/tests/Makefile"
+fi
+
trap '' 1 2 15
cat > confcache <<\EOF
# This file is a shell script that caches the results of configure
@@ -4027,52 +5188,8 @@ do
done
ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-trap 'rm -fr `echo "
-Makefile
-config/Makefile
-config/autoconf.mk
-config/nsprincl.mk
-config/nsprincl.sh
-lib/Makefile
-lib/ds/Makefile
-lib/libc/Makefile
-lib/libc/include/Makefile
-lib/libc/src/Makefile
-lib/msgc/Makefile
-lib/msgc/include/Makefile
-lib/msgc/src/Makefile
-lib/msgc/tests/Makefile
-lib/prstreams/Makefile
-lib/tests/Makefile
-pr/Makefile
-pr/include/Makefile
-pr/include/md/Makefile
-pr/include/obsolete/Makefile
-pr/include/private/Makefile
-pr/src/Makefile
-pr/src/bthreads/Makefile
-pr/src/cplus/Makefile
-pr/src/cplus/tests/Makefile
-pr/src/io/Makefile
-pr/src/linking/Makefile
-pr/src/malloc/Makefile
-pr/src/md/Makefile
-pr/src/md/beos/Makefile
-pr/src/md/os2/Makefile
-pr/src/md/unix/Makefile
-pr/src/md/windows/Makefile
-pr/src/memory/Makefile
-pr/src/misc/Makefile
-pr/src/pthreads/Makefile
-pr/src/threads/Makefile
-pr/src/threads/combined/Makefile
-pr/tests/Makefile
-pr/tests/dll/Makefile
-pr/tests/w16gui/Makefile
-tools/Makefile
-" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+trap 'rm -fr `echo "$MAKEFILES" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
@@ -4119,6 +5236,10 @@ s%@build_alias@%$build_alias%g
s%@build_cpu@%$build_cpu%g
s%@build_vendor@%$build_vendor%g
s%@build_os@%$build_os%g
+s%@dist_prefix@%$dist_prefix%g
+s%@dist_bindir@%$dist_bindir%g
+s%@dist_includedir@%$dist_includedir%g
+s%@dist_libdir@%$dist_libdir%g
s%@WHOAMI@%$WHOAMI%g
s%@HOST_CC@%$HOST_CC%g
s%@CC@%$CC%g
@@ -4127,33 +5248,38 @@ s%@RANLIB@%$RANLIB%g
s%@AR@%$AR%g
s%@AS@%$AS%g
s%@LD@%$LD%g
+s%@STRIP@%$STRIP%g
s%@DLLTOOL@%$DLLTOOL%g
s%@WINDRES@%$WINDRES%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@LN_S@%$LN_S%g
s%@PERL@%$PERL%g
s%@CPP@%$CPP%g
s%@MOZILLA_CLIENT@%$MOZILLA_CLIENT%g
s%@HOST_CFLAGS@%$HOST_CFLAGS%g
s%@GNU_CC@%$GNU_CC%g
+s%@CROSS_COMPILE@%$CROSS_COMPILE%g
+s%@MOZ_OPTIMIZE@%$MOZ_OPTIMIZE%g
s%@USE_CPLUS@%$USE_CPLUS%g
s%@USE_IPV6@%$USE_IPV6%g
s%@USE_N32@%$USE_N32%g
s%@USE_64@%$USE_64%g
+s%@GC_LEAK_DETECTOR@%$GC_LEAK_DETECTOR%g
s%@USE_PTHREADS@%$USE_PTHREADS%g
s%@USE_BTHREADS@%$USE_BTHREADS%g
s%@USE_USER_PTHREADS@%$USE_USER_PTHREADS%g
s%@USE_NATIVE_THREADS@%$USE_NATIVE_THREADS%g
s%@USE_NSPR_THREADS@%$USE_NSPR_THREADS%g
-s%@NSPR_VERSION@%$NSPR_VERSION%g
+s%@LIBNSPR@%$LIBNSPR%g
+s%@LIBPLC@%$LIBPLC%g
+s%@MOD_MAJOR_VERSION@%$MOD_MAJOR_VERSION%g
+s%@MOD_MINOR_VERSION@%$MOD_MINOR_VERSION%g
+s%@MOD_REVISION_VERSION@%$MOD_REVISION_VERSION%g
s%@NSPR_MODNAME@%$NSPR_MODNAME%g
s%@MDCPUCFG_H@%$MDCPUCFG_H%g
-s%@MOZ_TARGET@%$MOZ_TARGET%g
+s%@MOZ_WIN32_TARGET@%$MOZ_WIN32_TARGET%g
s%@PR_MD_CSRCS@%$PR_MD_CSRCS%g
s%@PR_MD_ASFILES@%$PR_MD_ASFILES%g
s%@PR_MD_ARCH_DIR@%$PR_MD_ARCH_DIR%g
+s%@CPU_ARCH@%$CPU_ARCH%g
s%@OBJ_SUFFIX@%$OBJ_SUFFIX%g
s%@LIB_SUFFIX@%$LIB_SUFFIX%g
s%@DLL_SUFFIX@%$DLL_SUFFIX%g
@@ -4167,6 +5293,8 @@ s%@OS_TEST@%$OS_TEST%g
s%@DEFINES@%$DEFINES%g
s%@AR_FLAGS@%$AR_FLAGS%g
s%@ASFLAGS@%$ASFLAGS%g
+s%@FILTER@%$FILTER%g
+s%@IMPLIB@%$IMPLIB%g
s%@OS_LIBS@%$OS_LIBS%g
s%@RESOLVE_LINK_SYMBOLS@%$RESOLVE_LINK_SYMBOLS%g
s%@AIX_LINK_OPTS@%$AIX_LINK_OPTS%g
@@ -4174,6 +5302,15 @@ s%@NOSUCHFILE@%$NOSUCHFILE%g
s%@MOZ_OBJFORMAT@%$MOZ_OBJFORMAT%g
s%@ULTRASPARC_LIBRARY@%$ULTRASPARC_LIBRARY%g
s%@ULTRASPARC_FILTER_LIBRARY@%$ULTRASPARC_FILTER_LIBRARY%g
+s%@OBJDIR@%$OBJDIR%g
+s%@OBJDIR_NAME@%$OBJDIR_NAME%g
+s%@NSINSTALL@%$NSINSTALL%g
+s%@OPTIMIZER@%$OPTIMIZER%g
+s%@RC@%$RC%g
+s%@CPU_ARCH_TAG@%$CPU_ARCH_TAG%g
+s%@DLLFLAGS@%$DLLFLAGS%g
+s%@EXEFLAGS@%$EXEFLAGS%g
+s%@OS_DLLFLAGS@%$OS_DLLFLAGS%g
CEOF
EOF
@@ -4215,49 +5352,7 @@ EOF
cat >> $CONFIG_STATUS <<EOF
-CONFIG_FILES=\${CONFIG_FILES-"Makefile
-config/Makefile
-config/autoconf.mk
-config/nsprincl.mk
-config/nsprincl.sh
-lib/Makefile
-lib/ds/Makefile
-lib/libc/Makefile
-lib/libc/include/Makefile
-lib/libc/src/Makefile
-lib/msgc/Makefile
-lib/msgc/include/Makefile
-lib/msgc/src/Makefile
-lib/msgc/tests/Makefile
-lib/prstreams/Makefile
-lib/tests/Makefile
-pr/Makefile
-pr/include/Makefile
-pr/include/md/Makefile
-pr/include/obsolete/Makefile
-pr/include/private/Makefile
-pr/src/Makefile
-pr/src/bthreads/Makefile
-pr/src/cplus/Makefile
-pr/src/cplus/tests/Makefile
-pr/src/io/Makefile
-pr/src/linking/Makefile
-pr/src/malloc/Makefile
-pr/src/md/Makefile
-pr/src/md/beos/Makefile
-pr/src/md/os2/Makefile
-pr/src/md/unix/Makefile
-pr/src/md/windows/Makefile
-pr/src/memory/Makefile
-pr/src/misc/Makefile
-pr/src/pthreads/Makefile
-pr/src/threads/Makefile
-pr/src/threads/combined/Makefile
-pr/tests/Makefile
-pr/tests/dll/Makefile
-pr/tests/w16gui/Makefile
-tools/Makefile
-"}
+CONFIG_FILES=\${CONFIG_FILES-"$MAKEFILES"}
EOF
cat >> $CONFIG_STATUS <<\EOF
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
@@ -4292,10 +5387,6 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
top_srcdir="$ac_dots$ac_given_srcdir" ;;
esac
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
echo creating "$ac_file"
rm -f "$ac_file"
@@ -4311,7 +5402,6 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
s%@configure_input@%$configure_input%g
s%@srcdir@%$srcdir%g
s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
fi; done
rm -f conftest.s*
@@ -4321,11 +5411,10 @@ cat >> $CONFIG_STATUS <<EOF
EOF
cat >> $CONFIG_STATUS <<\EOF
-
+chmod +x config/nspr-config
exit 0
EOF
chmod +x $CONFIG_STATUS
rm -fr confdefs* $ac_clean_files
test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
diff --git a/configure.in b/configure.in
index aa7fa6a0..ca0df24b 100644
--- a/configure.in
+++ b/configure.in
@@ -23,16 +23,8 @@ dnl
AC_PREREQ(2.12)
AC_INIT(config/libc_r.h)
-d=`pwd`
-if test "${srcdir}" = "$d" || test "${srcdir}" = "." ; then
- echo "Do not build in the srcdir as it will override Makefiles used by non-autoconf build."
- exit 1;
-fi
-
AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
AC_CANONICAL_SYSTEM
-AC_VALIDATE_CACHED_SYSTEM_TUPLE
-AC_PREFIX_DEFAULT(\${MOD_DEPTH}/dist)
dnl Set this define to make fixes w/o breaking anything else.
AC_DEFINE(USE_AUTOCONF)
@@ -40,7 +32,9 @@ AC_DEFINE(USE_AUTOCONF)
dnl ========================================================
dnl = Defaults
dnl ========================================================
-NSPR_VERSION=4
+MOD_MAJOR_VERSION=4
+MOD_MINOR_VERSION=0
+MOD_REVISION_VERSION=1
NSPR_MODNAME=nspr20
_HAVE_PTHREADS=
USE_PTHREADS=
@@ -55,6 +49,13 @@ _OPTIMIZE_FLAGS=-O
_DEBUG_FLAGS=-g
MOZ_DEBUG=1
MOZ_OPTIMIZE=
+OBJDIR=.
+OBJDIR_NAME=.
+NSINSTALL='$(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall'
+NOSUCHFILE=/no-such-file
+LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)'
+LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)'
+
dnl Link in libraries necessary to resolve all symbols for shared libs
RESOLVE_LINK_SYMBOLS=
@@ -72,10 +73,69 @@ HOST_CFLAGS="${HOST_CFLAGS=}"
HOST_LDFLAGS="${HOST_LDFLAGS=}"
dnl ========================================================
+dnl = Irix 6.x should use n32 ABI by default
+dnl ========================================================
+case "$target" in
+*-irix6*)
+ USE_N32=1 ;;
+*-cygwin*)
+ # Check to see if we are really running in a msvc environemnt
+ _WIN32_MSVC=
+ if test "$CC" = "cl" || test "$CXX" = "cl"; then
+ _WIN32_MSVC=1
+ elif test -z "$CC"; then
+ echo 'main() { return 0; }' > dummy.c
+ cl -o dummy dummy.c
+ if test $? = 0; then
+ _WIN32_MSVC=1
+ fi
+ rm -f dummy dummy.o dummy.obj dummy.exe dummy.c
+ fi
+ ;;
+*-msvc*)
+ _WIN32_MSVC=1
+ ;;
+esac
+
+if test -n "$_WIN32_MSVC"; then
+ SKIP_PATH_CHECKS=1
+ SKIP_COMPILER_CHECKS=1
+ SKIP_LIBRARY_CHECKS=1
+fi
+
+dnl ========================================================
dnl =
dnl = Check options that may affect the compiler
dnl =
dnl ========================================================
+dist_prefix='${MOD_DEPTH}/dist'
+dist_bindir='${dist_prefix}/bin'
+dist_includedir='${dist_prefix}/include'
+dist_libdir='${dist_prefix}/lib'
+
+AC_ARG_WITH(dist-prefix,
+ [ --with-dist-prefix=DIST_PREFIX
+ place build files in DIST_PREFIX [dist]],
+ dist_prefix=$withval)
+
+AC_ARG_WITH(dist-bindir,
+ [ --with-dist-bindir=DIR build execuatables in DIR [DIST_PREFIX/bin]],
+ dist_bindir=$withval)
+
+AC_ARG_WITH(dist-includedir,
+ [ --with-dist-includedir=DIR
+ build include files in DIR [DIST_PREFIX/include]],
+ dist_includedir=$withval)
+
+AC_ARG_WITH(dist-libdir,
+ [ --with-dist-libdir=DIR build library files in DIR [DIST_PREFIX/lib]],
+ dist_libdir=$withval)
+
+AC_SUBST(dist_prefix)
+AC_SUBST(dist_bindir)
+AC_SUBST(dist_includedir)
+AC_SUBST(dist_libdir)
+
dnl Check if NSPR is being compiled for Mozilla
dnl Let --with-arg override environment setting
dnl
@@ -92,8 +152,14 @@ AC_ARG_WITH(mozilla,
fi])
AC_ARG_ENABLE(optimize,
- [ --enable-optimize Enable code optimizations],
- MOZ_OPTIMIZE=1)
+ [ --enable-optimize(=val) Enable code optimizations (val, ie. -O2) ],
+ [ if test "$enableval" != "no"; then
+ MOZ_OPTIMIZE=1
+ if test -n "$enableval" && test "$enableval" != "yes"; then
+ _OPTIMIZE_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
+ _SAVE_OPTIMIZE_FLAGS=$_OPTIMIZE_FLAGS
+ fi
+ fi ])
AC_ARG_ENABLE(debug,
[ --disable-debug Do not compile in debugging symbols],
@@ -101,18 +167,19 @@ AC_ARG_ENABLE(debug,
MOZ_DEBUG=
fi])
-AC_ARG_ENABLE(shared,
- [ --disable-shared Do not compile into shared libraries])
-
-AC_ARG_ENABLE(target,
- [ --enable-target=\$t Turn on features for target \$t when build has multiple targets],
- MOZ_TARGET=`echo $enableval | tr a-z A-Z`,
- MOZ_TARGET=)
+AC_ARG_ENABLE(win32-target,
+ [ --enable-win32-target=\$t
+ Specify win32 flavor. (WIN95 or WINNT)],
+ MOZ_WIN32_TARGET=`echo $enableval | tr a-z A-Z`,
+ MOZ_WIN32_TARGET=)
AC_ARG_ENABLE(n32,
- [ --enable-n32 Enable n32 support (IRIX only)],
+ [ --enable-n32 Enable n32 ABI support (IRIX only)],
[ if test "$enableval" = "yes"; then
USE_N32=1
+ else if test "$enableval" = "no"; then
+ USE_N32=
+ fi
fi ])
AC_ARG_ENABLE(64bit,
@@ -127,16 +194,22 @@ AC_ARG_ENABLE(mdupdate,
USE_MDUPDATE=1
fi ])
-AC_PATH_PROG(WHOAMI, whoami, :)
+if test -z "$SKIP_PATH_CHECKS"; then
+ AC_PATH_PROG(WHOAMI, $WHOAMI whoami, echo not_whoami)
+elif test -z "$WHOAMI"; then
+ WHOAMI=whoami
+fi
+
if test -n "$MOZ_DEBUG"; then
AC_DEFINE(DEBUG)
AC_DEFINE_UNQUOTED(DEBUG_`$WHOAMI`)
DEFINES="$DEFINES -UNDEBUG"
else
AC_DEFINE(NDEBUG)
- DEFINES="$DEFINES -UDEBUG"
+ DEFINES="$DEFINES -U_DEBUG -UDEBUG"
fi
+if test -z "$SKIP_COMPILER_CHECKS"; then
dnl ========================================================
dnl Checks for compilers.
dnl ========================================================
@@ -177,42 +250,51 @@ if test "$target" != "$host"; then
LDFLAGS=$_SAVE_LDFLAGS
if test -z "$CC"; then
- AC_CHECK_PROGS(CC, "${target_alias}-gcc" "${target}-gcc", :)
+ AC_CHECK_PROGS(CC, "${target_alias}-gcc" "${target}-gcc", echo)
fi
unset ac_cv_prog_CC
AC_PROG_CC
if test -z "$CXX"; then
- AC_CHECK_PROGS(CXX, "${target_alias}-g++" "${target}-g++", :)
+ AC_CHECK_PROGS(CXX, "${target_alias}-g++" "${target}-g++", echo)
fi
unset ac_cv_prog_CXX
AC_PROG_CXX
if test -z "$RANLIB"; then
- AC_CHECK_PROGS(RANLIB, "${target_alias}-ranlib" "${target}-ranlib", :)
+ AC_CHECK_PROGS(RANLIB, "${target_alias}-ranlib" "${target}-ranlib", echo)
fi
if test -z "$AR"; then
- AC_CHECK_PROGS(AR, "${target_alias}-ar" "${target}-ar", :)
+ AC_CHECK_PROGS(AR, "${target_alias}-ar" "${target}-ar", echo)
fi
if test -z "$AS"; then
- AC_CHECK_PROGS(AS, "${target_alias}-as" "${target}-as", :)
+ AC_CHECK_PROGS(AS, "${target_alias}-as" "${target}-as", echo)
fi
if test -z "$LD"; then
- AC_CHECK_PROGS(LD, "${target_alias}-ld" "${target}-ld", :)
+ AC_CHECK_PROGS(LD, "${target_alias}-ld" "${target}-ld", echo)
+ fi
+ if test -z "$STRIP"; then
+ AC_CHECK_PROGS(STRIP, "${target_alias}-strip" "${target}-strip", echo)
fi
if test -z "$DLLTOOL"; then
- AC_CHECK_PROGS(DLLTOOL, "${target_alias}-dlltool" "${target}-dlltool", :)
+ AC_CHECK_PROGS(DLLTOOL, "${target_alias}-dlltool" "${target}-dlltool", echo)
fi
if test -z "$WINDRES"; then
- AC_CHECK_PROGS(WINDRES, "${target_alias}-windres" "${target}-windres", :)
+ AC_CHECK_PROGS(WINDRES, "${target_alias}-windres" "${target}-windres", echo)
fi
+
else
- AC_PROG_CC
AC_PROG_CXX
+ if test "$CXX" = "cl" -a -z "$CC"; then
+ CC=$CXX
+ else
+ AC_PROG_CC
+ fi
AC_PROG_RANLIB
AC_PATH_PROGS(AS, as, $CC)
- AC_PATH_PROGS(AR, ar, :)
- AC_PATH_PROGS(LD, ld, :)
- AC_PATH_PROGS(DLLTOOL, dlltool, :)
- AC_PATH_PROGS(WINDRES, windres, :)
+ AC_PATH_PROGS(AR, ar, echo not_ar)
+ AC_PATH_PROGS(LD, ld link, echo not_ld)
+ AC_PATH_PROGS(STRIP, strip, echo not_strip)
+ AC_PATH_PROGS(DLLTOOL, dlltool, echo not_dlltool)
+ AC_PATH_PROGS(WINDRES, windres, echo not_windres)
if test -z "$HOST_CC"; then
HOST_CC="$CC"
fi
@@ -229,12 +311,22 @@ if test "`echo | $AS -V 2>&1 | grep -c GNU`" != "0"; then
fi
rm -f a.out
+if test "$cross_compiling" = "yes"; then
+ CROSS_COMPILE=1
+else
+ CROSS_COMPILE=
+fi
+
+fi # SKIP_COMPILER_CHECKS
+
dnl ========================================================
dnl Checks for programs.
dnl ========================================================
-AC_PROG_INSTALL
-AC_PROG_LN_S
-AC_PATH_PROGS(PERL, perl5 perl, :)
+if test -z "$SKIP_PATH_CHECKS"; then
+ AC_PATH_PROGS(PERL, perl5 perl, echo not_perl)
+elif test -z "$PERL"; then
+ PERL=perl
+fi
dnl ========================================================
dnl Default platform specific options
@@ -247,21 +339,161 @@ PR_MD_ASFILES=
PR_MD_CSRCS=
PR_MD_ARCH_DIR=unix
AR_FLAGS='cr $@'
+AS='$(CC)'
-OS_TARGET=`uname -s`
OS_ARCH=`uname -s | sed -e 's|/|_|g'`
OS_RELEASE=`uname -r`
OS_TEST=`uname -m`
+if test "$OS_ARCH" = "IRIX64"; then
+ OS_ARCH=IRIX
+fi
+
+if test "$OS_ARCH" = "POSIX_for_OpenVMS_AXP"; then
+ OS_ARCH=OpenVMS
+fi
+
+#######################################################################
+# Master "Core Components" macros for getting the OS target #
+#######################################################################
+
+#
+# Note: OS_TARGET should be specified on the command line for gmake.
+# When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
+# The difference between the Win95 target and the WinNT target is that
+# the WinNT target uses Windows NT specific features not available
+# in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
+# at lesser performance (the Win95 target uses threads; the WinNT target
+# uses fibers).
+#
+# When OS_TARGET=WIN16 is specified, then a Windows 3.11 (16bit) target
+# is built. See: win16_3.11.mk for lots more about the Win16 target.
+#
+# If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
+# cross-compilation.
+#
+
+#
+# The following hack allows one to build on a WIN95 machine (as if
+# s/he were cross-compiling on a WINNT host for a WIN95 target).
+# It also accomodates for MKS's uname.exe. If you never intend
+# to do development on a WIN95 machine, you don't need this hack.
+#
+if test "$OS_ARCH" = "WIN95"; then
+ OS_ARCH=WINNT
+ OS_TARGET=WIN95
+elif test "$OS_ARCH" = 'Windows_95'; then
+ OS_ARCH=Windows_NT
+ OS_TARGET=WIN95
+elif test "$OS_ARCH" = 'Windows_98'; then
+ OS_ARCH=Windows_NT
+ OS_TARGET=WIN95
+elif test "$OS_ARCH" = "CYGWIN_95-4.0"; then
+ OS_ARCH='CYGWIN_NT-4.0'
+ OS_TARGET=WIN95
+elif test "$OS_ARCH" = "CYGWIN_98-4.10"; then
+ OS_ARCH='CYGWIN_NT-4.0'
+ OS_TARGET=WIN95
+elif test "$OS_ARCH" = "OS_2"; then
+ OS_ARCH=OS2
+ OS_TARGET=OS2
+fi
+
+#
+# On WIN32, we also define the variable CPU_ARCH.
+#
+
+if test "$OS_ARCH" = "WINNT"; then
+ CPU_ARCH=`uname -p`
+ if test "$CPU_ARCH" = "I386"; then
+ CPU_ARCH=x86
+ fi
+elif test "$OS_ARCH" = "Windows_NT"; then
+#
+# If uname -s returns "Windows_NT", we assume that we are using
+# the uname.exe in MKS toolkit.
+#
+# The -r option of MKS uname only returns the major version number.
+# So we need to use its -v option to get the minor version number.
+# Moreover, it doesn't have the -p option, so we need to use uname -m.
+#
+ OS_ARCH=WINNT
+# OS_MINOR_RELEASE=`uname -v`
+ if test "$OS_MINOR_RELEASE" = "00"; then
+ OS_MINOR_RELEASE=0
+ fi
+ OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
+ CPU_ARCH=`uname -m`
+ #
+ # MKS's uname -m returns "586" on a Pentium machine.
+ #
+ if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
+ CPU_ARCH=x86
+ fi
+elif echo "$OS_ARCH" | grep -c CYGWIN_NT >/dev/null; then
+#
+# If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
+# the uname.exe in the Cygwin tools.
+#
+ OS_RELEASE=`echo $OS_ARCH | sed 's|^CYGWIN_NT-||'`
+ OS_ARCH=WINNT
+ CPU_ARCH=`uname -m`
+ #
+ # Cygwin's uname -m returns "i686" on a Pentium Pro machine.
+ #
+ if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
+ CPU_ARCH=x86
+ fi
+elif test "$OS_ARCH" = "CYGWIN32_NT"; then
+#
+# Prior to the Beta 20 release, Cygwin was called GNU-Win32.
+# If uname -s returns "CYGWIN32/NT", we assume that we are using
+# the uname.exe in the GNU-Win32 tools.
+#
+ OS_ARCH=WINNT
+ CPU_ARCH=`uname -m`
+ #
+ # GNU-Win32's uname -m returns "i686" on a Pentium Pro machine.
+ #
+ if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
+ CPU_ARCH=x86
+ fi
+fi
+
+if test -n "$MOZILLA_CLIENT" && test "$OS_ARCH" = "WINNT"; then
+ OS_TARGET=WIN95
+ MOZ_WIN32_TARGET=WIN95
+ if test -n "$MOZ_DEBUG"; then
+ USE_DEBUG_RTL=1
+ fi
+fi
+if test -z "$OS_TARGET"; then
+ OS_TARGET=$OS_ARCH
+fi
+if test "$OS_TARGET" = "WIN95"; then
+ OS_RELEASE="4.0"
+fi
+if test "$OS_TARGET" = "WIN16"; then
+ OS_RELEASE=
+fi
+if test -z "$MOZ_WIN32_TARGET"; then
+ MOZ_WIN32_TARGET=$OS_TARGET
+fi
+OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
+
+dnl ========================================================
+
dnl ========================================================
dnl Override of system specific host options
dnl ========================================================
case "$host" in
-*-mingw*)
+*-mingw*|*-cygwin*|*-msvc*)
;;
*-beos*)
HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE"
;;
+*os2*)
+ ;;
*)
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
;;
@@ -294,7 +526,9 @@ case "$target" in
AC_DEFINE(AIX4_1)
MKSHLIB=
DSO_LDOPTS=
+ USE_PTHREADS=1
AIX_LINK_OPTS='-bnso -berok'
+ LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)_shr'
;;
aix4.3*)
AC_DEFINE(AIX_HAVE_ATOMIC_OP_H)
@@ -303,6 +537,7 @@ case "$target" in
AC_DEFINE(AIX4_3)
AC_DEFINE(HAVE_SOCKLEN_T)
USE_IPV6=1
+ USE_PTHREADS=1
AIX_LINK_OPTS='-brtl -bnso -berok'
;;
*)
@@ -313,7 +548,7 @@ case "$target" in
;;
esac
CFLAGS="$CFLAGS -qro -qroconst"
- if test `grep -c xlC_r $CC`; then
+ if echo "$CC" | grep -c xlC_r; then
CFLAGS="$CFLAGS -qarch=com"
fi
AIX_WRAP='$(DIST)/lib/aixwrap.o'
@@ -328,6 +563,7 @@ case "$target" in
fi
fi
PR_MD_CSRCS=aix.c
+ RESOLVE_LINK_SYMBOLS=1
;;
*-beos*)
@@ -336,11 +572,91 @@ case "$target" in
AC_DEFINE(BEOS)
AC_DEFINE(_POSIX_SOURCE)
DSO_LDOPTS=-nostart
- MKSHLIB='$(CCC) $(DSO_LDOPTS) -o $@'
MDCPUCFG_H=_beos.cfg
USE_BTHREADS=1
PR_MD_ARCH_DIR=beos
RESOLVE_LINK_SYMBOLS=1
+ case "${target_cpu}" in
+ i?86)
+ _OPTIMIZE_FLAGS=-O2
+ _DEBUG_FLAGS='-gdwarf-2 -O0'
+ MKSHLIB='$(CCC) $(DSO_LDOPTS) -o $@'
+ ;;
+ powerpc)
+ CC=mwcc
+ CCC=mwcc
+ LD=mwld
+ DSO_LDOPTS='-xms -export pragma -init _init_routine_ -term _term_routine_ -lroot -lnet /boot/develop/lib/ppc/glue-noinit.a /boot/develop/lib/ppc/init_term_dyn.o /boot/develop/lib/ppc/start_dyn.o'
+ _OPTIMIZE_FLAGS=-O2
+ _DEBUG_FLAGS='-g -O0'
+ ;;
+ esac
+ ;;
+
+*-bsdi*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(BSDI)
+ AC_DEFINE(NEED_BSDREGEX)
+
+ CFLAGS="$CFLAGS -Wall -Wno-format"
+ CXXFLAGS="$CXXFLAGS -Wall -Wno-format"
+
+ if echo "$OS_TEST" | grep -c 86 >/dev/null; then
+ CPU_ARCH=x86
+ elif echo "$OS_TEST" | grep -c sparc >/dev/null; then
+ CPU_ARCH=sparc
+ fi
+
+ MDCPUCFG_H=_bsdi.cfg
+ PR_MD_CSRCS=bsdi.c
+
+ DSO_LDOPTS=-r
+
+ case "$target_os" in
+ bsdi1.1*)
+ AC_DEFINE(_PR_BSDI_JMPBUF_IS_ARRAY)
+ AC_DEFINE(_PR_STAT_HAS_ONLY_ST_ATIME)
+ AC_DEFINE(_PR_NEED_H_ERRNO)
+ MKSHLIB=
+ DSO_CFLAGS=
+ DSO_LDOPTS=
+ ;;
+
+ bsdi2.1*)
+ AC_DEFINE(_PR_TIMESPEC_HAS_TS_SEC)
+ AC_DEFINE(_PR_BSDI_JMPBUF_IS_ARRAY)
+ AC_DEFINE(HAVE_DLL)
+ AC_DEFINE(USE_DLFCN)
+ AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
+ PR_MD_ASFILES=os_BSD_OS_386_2.s
+ ;;
+
+ bsdi4.*)
+ AC_DEFINE(_PR_SELECT_CONST_TIMEVAL)
+ AC_DEFINE(_PR_BSDI_JMPBUF_IS_STRUCT)
+ AC_DEFINE(HAVE_DLL)
+ AC_DEFINE(USE_DLFCN)
+ AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
+ MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)'
+ DSO_CFLAGS=-fPIC
+ DSO_LDOPTS='-shared -Wl,-soname,$(@:$(OBJDIR)/%.so=%.so)'
+ STRIP="$STRIP -d"
+ case "$target_os" in
+ bsdi4.2*)
+ AC_DEFINE(_PR_HAVE_GETPROTO_R)
+ AC_DEFINE(_PR_HAVE_GETPROTO_R_POINTER)
+ ;;
+ esac
+ ;;
+ *)
+ AC_DEFINE(_PR_SELECT_CONST_TIMEVAL)
+ AC_DEFINE(_PR_BSDI_JMPBUF_IS_STRUCT)
+ AC_DEFINE(HAVE_DLL)
+ AC_DEFINE(USE_DLFCN)
+ AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
+ ;;
+ esac
+
;;
*-dgux*)
@@ -351,9 +667,7 @@ case "$target" in
AC_DEFINE(DGUX)
AC_DEFINE(_DGUX_SOURCE)
AC_DEFINE(_POSIX4A_DRAFT6_SOURCE)
- MKSHLIB='$(LD) $(DSO_LDOPTS)'
DSO_LDOPTS=-G
- NOSUCHFILE=/no-such-file
_OPTIMIZE_FLAGS=-O2
_DEBUG_FLAGS=
MDCPUCFG_H=_dgux.cfg
@@ -361,9 +675,7 @@ case "$target" in
;;
*-freebsd*)
- if test "${target_cpu}" != "alpha"; then
- AC_DEFINE(i386)
- fi
+ AC_DEFINE(XP_UNIX)
AC_DEFINE(FREEBSD)
AC_DEFINE(HAVE_BSD_FLOCK)
CFLAGS="$CFLAGS $(DSO_CFLAGS) -ansi -Wall -pipe"
@@ -380,12 +692,15 @@ case "$target" in
;;
*-hpux*)
+ AC_DEFINE(XP_UNIX)
AC_DEFINE(HPUX)
AC_DEFINE(_HPUX_SOURCE)
- DEFINES="$DEFINES -D${target_cpu}"
+ AC_DEFINE(hppa)
+ AC_DEFINE(hpux)
DLL_SUFFIX=sl
DSO_LDOPTS='-b +h $(notdir $@)'
PR_MD_CSRCS=hpux.c
+ PR_MD_ASFILES=os_HPUX.s
if test -n "$USE_64"; then
MDCPUCFG_H=_hpux64.cfg
else
@@ -400,52 +715,74 @@ case "$target" in
else
DSO_CFLAGS=-fPIC
fi
+
if test -n "$MOZILLA_CLIENT"; then
- USE_NSPR_THREADS=1
+ DEFAULT_IMPL_STRATEGY=_EMU
fi
- case "${target_os}" in
- hpuxA.09*)
- AC_DEFINE(HPUX9)
+
+ if echo "$OS_RELEASE" | grep ^A.09 >/dev/null; then
AC_DEFINE(_PR_NEED_H_ERRNO)
+ AC_DEFINE(HPUX9)
+ DEFAULT_IMPL_STRATEGY=_EMU
+ USE_NSPR_THREADS=1
+ fi
+
+ if echo "$OS_RELEASE" | egrep '^(A.09|B.10)' >/dev/null; then
AC_DEFINE(_PR_NO_LARGE_FILES)
- ;;
- hpuxB.10.01*)
+ fi
+
+ if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
+ AC_DEFINE(_PR_NEED_H_ERRNO)
+ fi
+
+ if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
+ AC_DEFINE(HAVE_INT_LOCALTIME_R)
+ fi
+
+ if echo "$OS_RELEASE" | egrep '^(B.10.30|B.11.00)' >/dev/null; then
+ AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
+ fi
+
+ if test "$OS_RELEASE" = "B.10.01"; then
AC_DEFINE(HPUX10)
- ;;
- hpuxB.10.10*)
+ DEFAULT_IMPL_STRATEGY=_EMU
+ fi
+
+ if test "$OS_RELEASE" = "B.10.10"; then
AC_DEFINE(HPUX10)
AC_DEFINE(HPUX10_10)
- AC_DEFINE(HAVE_INT_LOCALTIME_R)
- USE_PTHREADS=1
- USE_NSPR_THREADS=
- ;;
- hpuxB.10.20*)
+ DEFAULT_IMPL_STRATEGY=_PTH
+ fi
+
+ if test "$OS_RELEASE" = "B.10.20"; then
AC_DEFINE(HPUX10)
AC_DEFINE(HPUX10_20)
- AC_DEFINE(HAVE_INT_LOCALTIME_R)
- if test -z "$GNU_CC"; then
+ if test -z "$GNU_CC" && test 0 = 1; then
CFLAGS="$CFLAGS +DAportable +DS1.1"
CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
fi
- USE_PTHREADS=1
- USE_NSPR_THREADS=
- ;;
- hpuxB.10.30*)
- AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
- if test -z "$GNU_CC"; then
+ DEFAULT_IMPL_STRATEGY=_EMU
+ fi
+
+ if test "$OS_RELEASE" = "B.10.30"; then
+ AC_DEFINE(HPUX10)
+ AC_DEFINE(HPUX10_30)
+ #CXX="/opt/aCC/bin/aCC -ext"
+ if test -z "$GNU_CC" && test 0 = 1; then
CFLAGS="$CFLAGS +DAportable +DS1.1"
CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
fi
- USE_PTHREADS=1
- USE_NSPR_THREADS=
- ;;
- hpuxB.11.00*)
+ DEFAULT_IMPL_STRATEGY=_PTH
+ fi
+
+ if test "$OS_RELEASE" = "B.11.00"; then
AC_DEFINE(HPUX10)
AC_DEFINE(HPUX11)
AC_DEFINE(_LARGEFILE64_SOURCE)
AC_DEFINE(_PR_HAVE_OFF64_T)
AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
if test -z "$GNU_CC"; then
+ if test 0 = 1; then
if test -z "$USE_64"; then
CFLAGS="$CFLAGS +DAportable +DS2.0"
CXXFLAGS="$CXXFLAGS +DAportable +DS2.0"
@@ -453,18 +790,23 @@ case "$target" in
CFLAGS="$CFLAGS +DA2.0W +DS2.0"
CXXFLAGS="$CXXFLAGS +DA2.0W +DS2.0"
fi
+ fi
fi
+ DEFAULT_IMPL_STRATEGY=_PTH
+ fi
+
+ if test "$DEFAULT_IMPL_STRATEGY" = "_EMU"; then
+ USE_NSPR_THREADS=1
+ USE_PTHREADS=
+ USE_USER_THREADS=
+ elif test "$DEFAULT_IMPL_STRATEGY" = "_PTH"; then
USE_PTHREADS=1
- USE_NSPR_THREADS=
- ;;
- esac
- case "${target_os}" in
- hpuxB.10*)
- AC_DEFINE(_PR_NO_LARGE_FILES)
- ;;
- esac
- if test -n "$USE_NSPR_THREADS"; then
- AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
+ if test "$MOZILLA_CLIENT"; then
+ USE_PTHREADS=
+ fi
+ if test "$USE_USER_PTHREADS"; then
+ USE_PTHREADS=
+ fi
fi
;;
@@ -475,19 +817,24 @@ case "$target" in
AC_DEFINE(_SGI_MP_SOURCE)
PR_MD_CSRCS=irix.c
PR_MD_ASFILES=os_Irix.s
- MKSHLIB='$(LD) $(SHLIB_LD_OPTS) -rdata_shared -shared -soname $(notdir $@) -o $@'
- DSO_LDOPTS='-elf -shared -all'
+ MKSHLIB='$(LD) $(DSO_LDOPTS) -rdata_shared -shared -soname $(notdir $@) -o $@'
+ #DSO_LDOPTS='-elf -shared -all'
+ STRIP="$STRIP -f"
if test -n "$USE_64"; then
MDCPUCFG_H=_irix64.cfg
else
MDCPUCFG_H=_irix32.cfg
fi
case "${target_os}" in
+ irix6*)
+ AC_DEFINE(IRIX6)
+ USE_PTHREADS=1
+ ;;
irix5*)
+ AC_DEFINE(IRIX5)
USE_NSPR_THREADS=1
;;
*)
- USE_N32=1
USE_PTHREADS=1
;;
esac
@@ -496,7 +843,11 @@ case "$target" in
CFLAGS="$CFLAGS -Wall -Wno-format"
_OPTIMIZE_FLAGS="-O6"
else
- AS="as -D_ASM $(INCLUDES) -n32"
+ if test -n "$USE_N32"; then
+ AS='as -D_ASM $(INCLUDES) -n32'
+ else
+ AS='as -D_ASM $(INCLUDES)'
+ fi
CFLAGS="$CFLAGS -fullwarn -xansi"
if test "$USE_N32"; then
_OPTIMIZE_FLAGS="-O -OPT:Olimit=4000"
@@ -509,14 +860,14 @@ case "$target" in
case "$target}" in
*-irix6.*)
CFLAGS="$CFLAGS -multigot"
- SHLIB_LD_OPTS="-no_unresolved"
- if test "USE_N32"; then
+ DSO_LDOPTS="-no_unresolved"
+ if test "$USE_N32"; then
CFLAGS="$CFLAGS -n32 -woff 1209"
LDFLAGS="$LDFLAGS -n32"
- SHLIB_LD_OPTS="$SHLIB_LD_OPTS -n32"
+ DSO_LDOPTS="$DSO_LDOPTS -n32"
if test "${target_os}" = "irix6.2"; then
LDFLAGS="$LDFLAGS -Wl,-woff,85"
- SHLIB_LD_OPTS="$SHLIB_LD_OPTS -woff 85"
+ DSO_LDOPTS="$DSO_LDOPTS -woff 85"
fi
else
if test "$USE_64"; then
@@ -570,6 +921,7 @@ case "$target" in
MKSHLIB='$(LD) $(DSO_LDOPTS) -soname $(notdir $@) -o $@'
DSO_CFLAGS=-fPIC
DSO_LDOPTS=-shared
+ OS_LIBS="$OS_LIBS -lc"
case "${target_cpu}" in
alpha)
AC_DEFINE(_ALPHA_)
@@ -578,6 +930,10 @@ case "$target" in
CXXFLAGS="$CXXFLAGS -mieee"
_OPTIMIZE_FLAGS=-O2
;;
+ i?86)
+ PR_MD_ASFILES=os_Linux_x86.s
+ _OPTIMIZE_FLAGS=-O2
+ ;;
m68k)
_OPTIMIZE_FLAGS=-O
CFLAGS="$CFLAGS -m68020-40"
@@ -589,69 +945,429 @@ case "$target" in
esac
;;
-*-mingw*)
+*-mingw*|*-cygwin*|*-msvc*)
AC_DEFINE(XP_PC)
- AC_DEFINE(NONAMELESSUNION)
+ AC_DEFINE(WIN32)
PR_MD_ARCH_DIR=windows
- if test -z "$GNU_CC"; then
+ RESOLVE_LINK_SYMBOLS=1
+
+ if test -n "$GNU_CC"; then
+ AC_DEFINE(NONAMELESSUNION)
+ MKSHLIB='$(DLLTOOL) --as=$(AS) -k --dllname $*.dll --output-lib $@'
+ else
+ CC=cl
+ CXX=cl
+ LD=link
+ AR='lib -NOLOGO -OUT:"$@"'
+ AR_FLAGS=
+ RANLIB='echo not_ranlib'
+ STRIP='echo not_strip'
+ NSINSTALL=nsinstall
+ RC=rc.exe
+ GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
OBJ_SUFFIX=obj
LIB_SUFFIX=lib
DLL_SUFFIX=dll
+
+ CFLAGS="$CFLAGS -W3 -nologo -GF -Gy"
+ _DEBUG_FLAGS=
+
+ if test -n "$MOZ_OPTIMIZE"; then
+ CFLAGS="$CFLAGS -MD"
+ OPTIMIZER=-O2
+ DLLFLAGS='-OUT:"$@"'
+ OBJDIR_TAG=_OPT
+
+ if test -n "$MOZ_PROFILE"; then
+ OPTIMIZER="$OPTIMIZER -Z7"
+ DLLFLAGS="$DLLFLAGS -DEBUG -DEBUGTYPE:CV"
+ LDFLAGS="$LDFLAGS -DEBUG -DEBUGTYPE:CV"
+ fi
+ else
+ if test -n "$USE_DEBUG_RTL"; then
+ CFLAGS="$CFLAGS -MDd"
+ else
+ CFLAGS="$CFLAGS -MD"
+ fi
+ OPTIMIZER="-Od -Z7"
+ DLLFLAGS='-DEBUG -DEBUGTYPE:CV -OUT:"$@"'
+ if test -n "$GLOWCODE"; then
+ DLLFLAGS='-DEBUG -DEBUGTYPE:both -INCLUDE:_GlowCode -OUT:"$@"'
+ DLL_LIBS='$(GLOWDIR)/glowcode.lib'
+ fi
+ OBJDIR_TAG=_DBG
+ LDFLAGS="$LDFLAGS -DEBUG -DEBUGTYPE:CV"
+ if test -n "$PROFILE"; then
+ LDFLAGS="$LDFLAGS -PROFILE -MAP"
+ DLLFLAGS="$DLLFLAGS -PROFILE -MAP"
+ fi
+ fi
+
+ if test "$OS_TARGET" = "WINNT"; then
+ CFLAGS="$CFLAGS -GT"
+ LIBNSPR='$(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
+ LIBPLC='$(dist_libdir)/libplc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
+ else
+ LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
+ LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
+ fi
+ fi # GNU_CC
+
+ if test -n "$USE_STATIC_TLS"; then
+ AC_DEFINE(_PR_USE_STATIC_TLS)
+ fi
+
+ if test "$OS_TARGET" = "WINNT"; then
+ if test "$CPU_ARCH" = "x86"; then
+ CFLAGS="$CFLAGS -G5"
+ fi
+ AC_DEFINE(WINNT)
+ else
+ AC_DEFINE(WIN95)
+ AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
+ fi
+
+ if test "$CPU_ARCH" = "x86"; then
+ CPU_ARCH_TAG=
+ else
+ CPU_ARCH_TAG=$CPU_ARCH
fi
- MKSHLIB='$(DLLTOOL) --as=$(AS) -k --dllname $*.dll --output-lib $@'
- case "$MOZ_TARGET" in
+ if test -n "$USE_DEBUG_RTL"; then
+ OBJDIR_SUFFIX=OBJD
+ else
+ OBJDIR_SUFFIX=OBJ
+ fi
+
+ OBJDIR_NAME="${OS_CONFIG}${CPU_ARCH_TAG}${OBJDIR_TAG}.${OBJDIR_SUFFIX}"
+ OBJDIR='${OBJDIR_NAME}'
+
+ OS_DLLFLAGS='-nologo -DLL -SUBSYSTEM:WINDOWS -PDB:NONE'
+
+ case "$MOZ_WIN32_TARGET" in
WINNT)
- DEFINES="$DEFINES -DWIN32 -DWINNT -DWin32_Winsock"
MDCPUCFG_H=_winnt.cfg
;;
WIN95)
- DEFINES="$DEFINES -UWINNT -DWIN32 -DWIN95 -DWin32_Winsock -D_PR_GLOBAL_THREADS_ONLY"
MDCPUCFG_H=_win95.cfg
;;
WIN16)
- DEFINES="$DEFINES -UWINNT"
MDCPUCFG_H=_win16.cfg
;;
*)
- AC_MSG_ERROR([Missing MOZ_TARGET for ${target}. Use --enable-target to set.])
+ AC_MSG_ERROR([Missing MOZ_WIN32_TARGET for ${target}. Use --enable-win32-target to set.])
;;
esac
- case "$target" in
- i?86-*)
+ case "$target_cpu" in
+ i?86)
AC_DEFINE(_X86_)
;;
- alpha-*)
+ alpha)
AC_DEFINE(_ALPHA_)
;;
- mips-*)
+ mips)
AC_DEFINE(_MIPS_)
;;
*)
AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
;;
esac
+
;;
+*-ncr-sysv*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(SVR4)
+ AC_DEFINE(SYSV)
+ AC_DEFINE(NCR)
+ USE_NSPR_THREADS=1
+ if test "$OS_RELEASE" = "2.03"; then
+ AC_DEFINE(_PR_STAT_HAS_ST_ATIM)
+ else
+ AC_DEFINE(_PR_STAT_HAS_ST_ATIM_UNION)
+ fi
+
+ if test -z "$GNU_CC"; then
+ CFLAGS="$CFLAGS -Hnocopyr"
+ CXXFLAGS="$CXXFLAGS -Hnocopyr"
+ else
+ CFLAGS="$CFLAGS -fPIC -Wall -pipe"
+ CXXFLAGS="$CXXFLAGS -fPIC -Wall -pipe"
+ DSO_LDOPTS=-G
+ fi
+ MDCPUCFG_H=_ncr.cfg
+ PR_MD_CSRCS=ncr.c
+ ;;
+
+mips-nec-sysv*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(SVR4)
+ AC_DEFINE(__SVR4)
+ AC_DEFINE(NEC)
+ AC_DEFINE(nec_ews)
+ USE_NSPR_THREADS=1
+ if test -z "$GNU_CC"; then
+ CC='$(NSDEPTH)/build/hcc cc -Xa -KGnum=0 -KOlimit=4000'
+ CXX=g++
+ fi
+ OS_LIBS="$OS_LIBS -lsocket -lnsl -ldl"
+ DSO_LDOPTS=-G
+ MDCPUCFG_H=_nec.cfg
+ PR_MD_CSRCS=nec.c
+ ;;
+
+*-netbsd*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(NETBSD)
+ AC_DEFINE(HAVE_BSD_FLOCK)
+ if test -z "$OBJECT_FMT"; then
+ if echo __ELF__ | ${CC-cc} -E - | grep -q __ELF__ 2>/dev/null; then
+ OBJECT_FMT=a.out;
+ else
+ OBJECT_FMT=ELF
+ fi
+ fi
+ if test "$OBJECT_FMT" = "ELF"; then
+ DLL_SUFFIX=so
+ else
+ DLL_SUFFIX=so.1.0
+ fi
+ CFLAGS="$CFLAGS -ansi -Wall -pipe"
+ CXXFLAGS="$CXXFLAGS -ansi -Wall -pipe"
+ DSO_CFLAGS='-fPIC -DPIC'
+ DSO_LDOPTS='-x -shared'
+ if test "$LIBRUNPATH"; then
+ DSO_LDOPTS="$DSO_LDOPTS -R$(LIBRUNPATH)"
+ fi
+ MDCPUCFG_H=_netbsd.cfg
+ PR_MD_CSRCS=netbsd.c
+ ;;
+
+mips-sony-newsos*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(SONY)
+ AC_DEFINE(SYSV)
+ AC_DEFINE(SVR4)
+ AC_DEFINE(__svr4)
+ AC_DEFINE(__svr4__)
+ AC_DEFINE(HAVE_SVID_GETTOD)
+ USE_NSPR_THREADS=1
+ CFLAGS="$CFLAGS -Xa -fullwarn"
+ CXXFLAGS="$CXXFLAGS -Xa -fullwarn"
+ DSO_LDOPTS=-G
+ MDCPUCFG_H=_sony.cfg
+ PR_MD_CSRCS=sony.c
+ ;;
+
+*-nextstep*|*-openstep*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(NEXTSTEP)
+ AC_DEFINE(HAVE_BSD_FLOCK)
+ AC_DEFINE(_POSIX_SOURCE)
+ CFLAGS="$CFLAGS -Wall -fno-common -pipe -traditional-cpp -posix"
+ CXXFLAGS="$CXXFLAGS -Wall -fno-common -pipe -traditional-cpp -posix"
+ USE_NSPR_THREADS=1
+ DLL_SUFFIX=dylib
+ MDCPUCFG_H=_nextstep.cfg
+ PR_MD_CSRCS=nextstep.c
+ ;;
+
+
*-nto*)
AC_DEFINE(XP_UNIX)
+ AC_DEFINE(NTO)
+ AC_DEFINE(_QNX_SOURCE)
+ AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
MDCPUCFG_H=_nto.cfg
PR_MD_CSRCS=nto.c
- MKSHLIB='qcc -Vgcc_ntox86 -shared -Wl,-h$(@:$(OBJDIR)/%.so=%.so) -o $(@:$(OBJDIR)/%.so=%.so)'
- CFLAGS="$CFLAGS -Wc,-Wall -Wc,-Wno-parentheses -DNTO -D_QNX_SOURCE -DHAVE_POINTER_LOCALTIME_R -shared"
- OS_LIBS="-lsocket"
- _OPTIMIZE_FLAGS="-O2"
- _DEBUG_FLAGS="-O2 -gdwarf-2"
+ MKSHLIB='qcc -Vgcc_ntox86 -shared -Wl,-h$(@:$(OBJDIR)/%.so=%.so) -M -o $(@:$(OBJDIR)/%.so=%.so)'
+ CFLAGS="$CFLAGS -Wc,-Wall -Wc,-Wno-parentheses -shared"
+ OS_LIBS="$OS_LIBS -lsocket"
+ _OPTIMIZE_FLAGS="-O1"
+ _DEBUG_FLAGS="-O1 -gstabs"
COMPILER_TAG="_qcc"
CC="qcc -Vgcc_ntox86 -w"
- CXX="QCC -Vgcc_ntox86 -w"
- CPP="qcc -Vgcc_ntox86 -w"
+ CXX='$(CC)'
LD="qcc -Vgcc_ntox86 -nostdlib"
- AR="qcc -Vgcc_ntox86 -M -a "
- AR_FLAGS="$@"
+ AR="qcc -Vgcc_ntox86 -M -a $@"
+ AR_FLAGS=
;;
+*-openbsd*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(OPENBSD)
+ AC_DEFINE(HAVE_BSD_FLOCK)
+ CFLAGS="$CFLAGS -ansi -Wall -pipe"
+ CXXFLAGS="$CXXFLAGS -ansi -Wall -pipe"
+ DLL_SUFFIX=so.1.0
+ DSO_CFLAGS=-fPIC
+ MDCPUCFG_H=_openbsd.cfg
+ PR_MD_CSRCS=openbsd.c
+ USE_NSPR_THREADS=1
+ case "$OS_TEST" in
+ alpha|mips|pmax)
+ DSO_LDOPTS=-shared ;;
+ *)
+ DSO_LDOPTS=-Bshareable ;;
+ esac
+ ;;
+
+*-openvms*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(VMS)
+ AC_DEFINE(VMS_AS_IS)
+ AC_DEFINE(GENERIC_PTHREAD_REDEFINES)
+ RESOLVE_LINK_SYMBOLS=1
+ CROSS_COMPILE=1
+ _HAVE_PTHREADS=1
+ HOST_CC=c89
+ HOST_CXX=cxx
+ HOST_CFLAGS=-O
+ HOST_CXXFLAGS=-O
+ CC=ccc
+ CXX=ccc
+ CFLAGS="$CFLAGS -Wc,names=\(short,as\)"
+ CXXFLAGS="$CXXFLAGS -Wc,names=\(short,as\)"
+ MDCPUCFG_H=_openvms.cfg
+ PR_MD_CSRCS=openvms.c
+ MKSHLIB='vmsld $(OPTIMIZER)'
+ ;;
+
+*-osf*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(OSF1)
+
+ if echo "$OS_RELEASE" | egrep -c '(V2.0|V3.2)' 2>/dev/null ; then
+ USE_NSPR_THREADS=1
+ fi
+
+ if test -z "$GNU_CC"; then
+ CC="$CC -std1 -ieee_with_inexact"
+ if test "$OS_RELEASE" = "V2.0"; then
+ CC="$CC -readonly_strings"
+ fi
+ _OPTIMIZE_FLAGS='-Olimit 4000'
+ fi
+
+ if echo $OS_RELEASE | egrep -c '(V2.0|V3.2)' 2>/dev/null; then
+ AC_DEFINE(HAVE_INT_LOCALTIME_R)
+ else
+ AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
+ AC_DEFINE(OSF1_HAVE_MACHINE_BUILTINS_H)
+ fi
+ DSO_LDOPTS='-shared -all -expect_unresolved "*" -soname $(notdir $@)'
+ MDCPUCFG_H=_osf1.cfg
+ PR_MD_CSRCS=osf1.c
+ ;;
+
+*-qnx*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(QNX)
+ AC_DEFINE(_PR_NEED_H_ERRNO)
+ USE_NSPR_THREADS=1
+ MDCPUCFG_H=_qnx.cfg
+ PR_MD_CSRCS=qnx.c
+ ;;
+
+*-rhapsody*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(RHAPSODY)
+ AC_DEFINE(HAVE_BSD_FLOCK)
+ CFLAGS="$CFLAGS -Wmost -fno-common -pipe"
+ if echo $OS_TEST | grep -c 86 2>/dev/null; then
+ CFLAGS="$CFLAGS -mno-486"
+ AC_DEFINE(i386)
+ CPU_ARCH=i386
+ else
+ AC_DEFINE(ppc)
+ CPU_ARCH=ppc
+ fi
+ DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load'
+ MKSHLIB='$(CC) -arch $(CPU_ARCH) $(DSO_LDOPTS) -o $@'
+ DLL_SUFFIX=dylib
+ USE_PTHREADS=1
+ MDCPUCFG_H=_rhapsody.cfg
+ PR_MD_CSRCS=rhapsody.c
+ ;;
+
+*-*-sco*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(SCO)
+ AC_DEFINE(sco)
+ AC_DEFINE(SYSV)
+ AC_DEFINE(_SVID3)
+ AC_DEFINE(_PR_NEED_H_ERRNO)
+ CC='cc -b elf -KPIC'
+ CXX='$(NSDEPTH)/build/hcpp CC +.cpp +w'
+ USE_NSPR_THREADS=1
+ CPU_ARCH=x86
+ DSO_LDOPTS='-b elf -G'
+ MDCPUCFG_H=_scoos.cfg
+ PR_MD_SRCS=scoos.c
+ ;;
+
+*-sinix*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(SVR4)
+ AC_DEFINE(SNI)
+ AC_DEFINE(RELIANTUNIX)
+ AC_DEFINE(sinix)
+ AC_DEFINE(HAVE_SVID_GETTOD)
+ if echo "$OS_TEST" | grep -c 86 2>/dev/null; then
+ AC_DEFINE(i386)
+ CPU_ARCH=x86
+ else
+ CPU_ARCH=mips
+ fi
+
+ if test "$GNU_CC"; then
+ AS='$(CC) -x assembler-with-cpp'
+ if test "$CPU_ARCH" = "mips"; then
+ LD=gld
+ CFLAGS="$CFLAGS -pipe"
+ fi
+ CFLAGS="$CFLAGS -Wall -Wno-format"
+ else
+ AS='/usr/bin/cc'
+ _OPTIMIZE_FLAGS='-O -F Olimit,4000'
+ fi
+
+ DSO_LDOPTS='-G -z defs -h $(@:$(OBJDIR)/%.so=%.so)'
+
+ if test "$OS_RELEASE" = "5.43"; then
+ AC_DEFINE(IP_MULTICAST)
+ fi
+
+ OS_LIBS="$OS_LIBS -lsocket -lnsl -lresolv -ldl -lc"
+ USE_NSPR_THREADS=1
+ MDCPUCFG_H=_reliantunix.cfg
+ PR_MD_CSRCS=reliantunix.c
+ if test "${OS_ARCH}" = "mips"; then
+ PR_MD_ASFILES=os_ReliantUNIX.s
+ fi
+ ;;
+
+*-sunos*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(SUNOS4)
+ CFLAGS="$CFLAGS -Wall -Wno-format"
+ if test "$USE_MDUPDATE"; then
+ CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
+ fi
+ CPU_ARCH=sparc
+ DLL_SUFFIX=so.1.0
+ DSO_LDOPTS=
+ DSO_CFLAGS=-fPIC
+ USE_NSPR_THREADS=1
+ if test "$OS_RELEASE" = "4.1.3_U1"; then
+ _OPTIMIZE_FLAGS=
+ OS_LIBS="$OS_LIBS -lm"
+ fi
+ MDCPUCFG_H=_sunos4.cfg
+ PR_MD_CSRCS=sunos4.c
+ ;;
+
*-solaris*)
AC_DEFINE(XP_UNIX)
AC_DEFINE(SVR4)
@@ -675,11 +1391,10 @@ case "$target" in
if test -z "$GNU_AS"; then
ASFLAGS="$ASFLAGS -Wa,-P"
fi
- NOSUCHFILE=/no-such-file
if test -n "$GNU_CC"; then
if test -n "$USE_MDUPDATE"; then
- CFLAGS="$CFLAGS -MDupdate"
- CXXFLAGS="$CXXFLAGS -MDupdate"
+ CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
+ CXXFLAGS="$CXXFLAGS -MDupdate \$(DEPENDENCIES)"
fi
else
CC="$CC -xstrconst"
@@ -693,7 +1408,7 @@ case "$target" in
CC="$CC -xarch=v9"
CXX="$CXX -xarch=v9"
fi
- if test "${target_cpu}" = "i386"; then
+ if test "$OS_TEST" = "i86pc"; then
AC_DEFINE(i386)
if test -n "$MOZ_DEBUG" && test -n "$GNU_CC"; then
_DEBUG_FLAGS="$_DEBUG_FLAGS -gstabs"
@@ -719,13 +1434,111 @@ case "$target" in
fi
;;
esac
- if test "${target_cpu}" = "sun4u"; then
+ if test "$OS_TEST" = "sun4u"; then
ULTRASPARC_LIBRARY=ultrasparc
ULTRASPARC_FILTER_LIBRARY=libatomic.so
DSO_LDOPTS="$DSO_LDOPTS -f "'$(ULTRASPARC_FILTER_LIBRARY)'
fi
;;
+*-sco-sysv5*)
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(UNIXWARE)
+ AC_DEFINE(SVR4)
+ AC_DEFINE(SYSV)
+ USE_NSPR_THREADS=1
+ if echo $OS_RELEASE | grep -c 2.1 2>/dev/null; then
+ AC_DEFINE(_PR_NO_LARGE_FILES)
+ CC='$(NSDEPTH)/build/hcc cc'
+ CXX='$(NSDEPTH)/build/hcpp CC'
+ MDCPUCFG_H=_unixware.cfg
+ else
+ AC_DEFINE(_LARGEFILE64_SOURCE)
+ AC_DEFINE(_PR_HAVE_OFF64_T)
+ AC_DEFINE(_PR_HAVE_SOCKADDR_LEN)
+ MDCPUCFG_H=_unixware7.cfg
+ fi
+ PR_MD_CSRCS=unixware.c
+ DSO_LDOPTS=-G
+ CPU_ARCH=x86
+ ;;
+
+*-os2*)
+ AC_DEFINE(XP_OS2)
+ AC_DEFINE(BSD_SELECT)
+ AC_DEFINE(XP_PC)
+ AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
+ OBJ_SUFFIX=obj
+ LIB_SUFFIX=lib
+ DLL_SUFFIX=dll
+ DLLTOOL=''
+ RC=rc.exe
+ PR_MD_ARCH_DIR=os2
+ PROG_SUFFIX=.exe
+ NSINSTALL=nsinstall
+ MDCPUCFG_H=_os2.cfg
+ RESOLVE_LINK_SYMBOLS=1
+
+ case "$target" in
+ *-os2_emx)
+ AC_DEFINE(XP_OS2_EMX)
+ AC_DEFINE(OS2)
+ AR=emxomfar
+ AR_FLAGS='-p256 r $@'
+ CFLAGS="-Zmtd -Zomf"
+ HOST_CFLAGS="$CFLAGS"
+ CXXFLAGS="-Zmtd -Zomf"
+ OS_LIBS="-lsocket -lemxio"
+ LD='$(CC)'
+ IMPLIB='emximp -o'
+ FILTER='emxexp'
+ OS_DLLFLAGS='$(DSO_LDOPTS) -o $@'
+ _OPTIMIZE_FLAGS=-O3
+ _DEBUG_FLAGS=-g
+ if test -n "$MOZ_DEBUG"; then
+ DLLFLAGS='-g'
+ EXEFLAGS='-g $(OMF_FLAG) -Zmtd -L$(DIST)/lib -o $@'
+ DSO_LDOPTS='-g -Zomf -Zdll -Zmt -Zcrtdll -Zlinker /NOO'
+ else
+ DLLFLAGS=
+ EXEFLAGS='-Zmtd -o $@'
+ DSO_LDOPTS='-Zomf -Zdll -Zmt -Zcrtdll -Zlinker /NOO'
+ fi
+ ;;
+ *-os2_vacpp)
+ AC_DEFINE(XP_OS2_VACPP)
+ AC_DEFINE(OS2,4)
+ AC_DEFINE(TCPV40HDRS)
+ AC_DEFINE(_X86_)
+ AR=-ilib
+ AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
+ CFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Mp /Tl-'
+ HOST_CFLAGS="$CFLAGS"
+ OS_CFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Ge- /Tl-'
+ OS_EXE_CFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Ge+ /Tl-'
+ CXXFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Mp /Tl-'
+ OS_LIBS='so32dll.lib tcp32dll.lib'
+ LD='-ilink'
+ LDFLAGS='/FREE /DE /NOE /LINENUMBERS /nologo'
+ MKSHLIB='$(LD) $(DSO_LDOPTS)'
+ IMPLIB='implib -nologo -noignorecase'
+ FILTER='cppfilt -q -B -P'
+ _OPTIMIZE_FLAGS=/O+
+ _DEBUG_FLAGS=/Ti+
+ if test -n "$MOZ_DEBUG"; then
+ DLLFLAGS='/O:$@ /DLL /INC:_dllentry /MAP:$(@:.dll=.map) /nologo /DEBUG /NOE'
+ EXEFLAGS='/OUT:$@ /PMTYPE:VIO /MAP:$(@:.exe=.map) /nologo /DEBUG /NOE'
+ else
+ DLLFLAGS='/O:$@ /DLL /INC:_dllentry /MAP:$(@:.dll=.map) /nologo'
+ EXEFLAGS='/OUT:$@ /PMTYPE:VIO /MAP:$(@:.exe=.map) /nologo'
+ fi
+ LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
+ LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
+ ;;
+ esac
+
+ ;;
+
*)
AC_DEFINE(XP_UNIX)
;;
@@ -737,6 +1550,7 @@ if test "$enable_shared" = no; then
MKSHLIB=
fi
+if test -z "$SKIP_LIBRARY_CHECKS"; then
dnl ========================================================
dnl Check for system libraries
dnl ========================================================
@@ -764,6 +1578,10 @@ dnl AC_CHECK_LIB(svld, main)
dnl AC_CHECK_LIB(thread, main)
dnl AC_CHECK_LIB(vms_jackets, main)
+AC_CHECK_FUNC(dlopen,,[
+ AC_CHECK_LIB(dl, dlopen, [OS_LIBS="-ldl $OS_LIBS"])
+])
+
dnl ========================================================
dnl Check for system header files.
dnl ========================================================
@@ -806,15 +1624,51 @@ dnl ========================================================
dnl Check options
dnl ========================================================
-AC_CHECK_LIB(pthread, pthread_attr_init,
- _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
- AC_CHECK_LIB(c_r, pthread_attr_init,
- _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
- AC_CHECK_LIB(c, pthread_attr_init,
- _HAVE_PTHREADS=1 )
+dnl
+dnl Apparently, some systems cannot properly check for the pthread
+dnl library unless <pthread.h> is included so we need to test
+dnl using it
+dnl
+dnl MOZ_CHECK_PTHREADS(lib, success, failure)
+AC_DEFUN(MOZ_CHECK_PTHREADS,
+[
+AC_MSG_CHECKING([for pthread_create in -l$1])
+echo "
+ #include <pthread.h>
+ void *foo(void *v) { int a = 1; }
+ int main() {
+ pthread_t t;
+ if (!pthread_create(&t, 0, &foo, 0)) {
+ pthread_join(t, 0);
+ }
+ exit(0);
+ }" > dummy.c ;
+ echo "${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -l[$1] $LDFLAGS $LIBS" 1>&5;
+ ${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -l[$1] $LDFLAGS $LIBS 2>&5;
+ _res=$? ;
+ rm -f dummy.c dummy${ac_exeext} ;
+ if test "$_res" = "0"; then
+ AC_MSG_RESULT([yes])
+ [$2]
+ else
+ AC_MSG_RESULT([no])
+ [$3]
+ fi
+])
+
+MOZ_CHECK_PTHREADS(pthreads,
+ _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
+ MOZ_CHECK_PTHREADS(pthread,
+ _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
+ MOZ_CHECK_PTHREADS(c_r,
+ _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
+ MOZ_CHECK_PTHREADS(c,
+ _HAVE_PTHREADS=1
+ )
)
)
-
+)
+
AC_ARG_WITH(pthreads,
[ --with-pthreads Use system pthreads library as thread subsystem],
[ if test "$withval" = "yes"; then
@@ -877,8 +1731,10 @@ case "$target" in
;;
esac
+fi # SKIP_LIBRARY_CHECKS
+
AC_ARG_ENABLE(cplus,
- [ --enable-cplus Use cplus for whatever reason],
+ [ --enable-cplus Enable some c++ api routines],
[ if test "$enableval" = "yes"; then
USE_CPLUS=1
fi])
@@ -889,6 +1745,14 @@ AC_ARG_ENABLE(ipv6,
USE_IPV6=1
fi])
+
+AC_ARG_ENABLE(boehm,
+ [ --enable-boehm Enable the Boehm Garbage Collector],
+ [ if test "$enableval" = "yes"; then
+ AC_DEFINE(GC_LEAK_DETECTOR)
+ GC_LEAK_DETECTOR=1
+ fi])
+
if test -n "$USE_PTHREADS"; then
dnl See if -pthread is supported.
rm -f conftest*
@@ -906,73 +1770,109 @@ if test -n "$USE_PTHREADS"; then
rm -f conftest*
AC_MSG_RESULT($ac_cv_have_dash_pthread)
+ dnl
+ dnl See if -pthreads is supported.
+ dnl
+ ac_cv_have_dash_pthreads=no
+ if test "$ac_cv_have_dash_pthread" = "no"; then
+ AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
+ echo 'int main() { return 0; }' | cat > conftest.c
+ ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
+ if test $? -eq 0; then
+ if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
+ ac_cv_have_dash_pthreads=yes
+ CFLAGS="$CFLAGS -pthreads"
+ CXXFLAGS="$CXXFLAGS -pthreads"
+ fi
+ fi
+ rm -f conftest*
+ AC_MSG_RESULT($ac_cv_have_dash_pthreads)
+ fi
+
case "$target" in
- *-mingw*|*-cygwin*|*-uwin*)
+ *-mingw*|*-cygwin*|*-uwin*|*-msvc*)
;;
*-solaris*)
AC_DEFINE(_REENTRANT)
+ if test "$ac_cv_have_dash_pthreads" = "yes"; then
+ _PTHREAD_LDFLAGS=
+ fi
;;
- *-freebsd*)
+ *-freebsd*|*-openbsd*|*-bsdi*|*-netbsd*)
AC_DEFINE(_REENTRANT)
AC_DEFINE(_THREAD_SAFE)
dnl -pthread links in -lc_r, so don't specify it explicitly.
if test "$ac_cv_have_dash_pthread" = "yes"; then
- PTHREAD_LDFLAGS=
+ _PTHREAD_LDFLAGS=
fi
;;
- *-hpuxB.10.10*)
- AC_DEFINE(_REENTRANT)
- AC_DEFINE(_PR_DCETHREADS)
- ;;
- *-hpuxB.10.20*)
- AC_DEFINE(_REENTRANT)
- AC_DEFINE(_PR_DCETHREADS)
- ;;
- *-hpux*)
- AC_DEFINE(_POSIX_C_SOURCE=199506L)
- ;;
*)
AC_DEFINE(_REENTRANT)
;;
esac
- AC_CHECK_FUNC(pthread_create,,[
- AC_CHECK_LIB(pthread, pthread_create, [OS_LIBS="-lpthread $OS_LIBS"])
- ])
-
else
if test -n "$USE_USER_PTHREADS"; then
USE_PTHREADS=
USE_NSPR_THREADS=
else
- USE_NSPR_THREADS=1
- dnl AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
+ _PTHREAD_LDFLAGS=
+ if test -n "$USE_NSPR_THREADS"; then
+ AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
+ fi
fi
fi
dnl Special thread exceptions
case "$target" in
-*-aix4.1*)
- if test -z "$USE_PTHREADS"; then
- AC_DEFINE(AIX_RENAME_SELECT)
+*-aix*)
+ if test -n "$USE_NSPR_THREADS"; then
+ OS_LIBS="$OS_LIBS -lc"
+ else
+ OS_LIBS="$OS_LIBS -lc_r"
fi
+ case "$target_os" in
+ aix4.1*)
+ if test -z "$USE_PTHREADS"; then
+ AC_DEFINE(AIX_RENAME_SELECT)
+ fi
+ ;;
+ aix4.[23]*)
+ if test -z "$USE_NSPR_THREADS"; then
+ AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
+ fi
+ ;;
+ esac
;;
-*-aix4.[23]*)
- if test -z "$USE_NSPR_THREADS"; then
- AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
+*-bsdi*)
+ if test -n "$USE_PTHREADS"; then
+ AC_DEFINE(_PR_NEED_PTHREAD_INIT)
fi
;;
*-hpux*)
- if test -n "$USE_USER_PTHREADS"; then
- AC_DEFINE(_POSIX_C_SOURCE=199506L)
+ if test "$USE_PTHREADS"; then
+ if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
+ AC_DEFINE(REENTRANT)
+ AC_DEFINE(_PR_DCETHREADS)
+ else
+ AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
+ fi
+ fi
+ if test "$USE_USER_PTHREADS"; then
+ AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
fi
;;
-*-mingw*|*-cygwin*|*-uwin*)
+*-mingw*|*-cygwin*|*-uwin*|*-msvc*)
dnl win32 does not use pthreads
USE_PTHREADS=
- PTHREAD_LDFLAGS=
+ _PTHREAD_LDFLAGS=
USE_USER_PTHREADS=
;;
+*-netbsd*)
+ if test -z "$USE_PTHREADS"; then
+ OS_LIBS="$OS_LIBS -lc"
+ fi
+ ;;
*-solaris*)
if test -n "$USE_NATIVE_THREADS"; then
AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
@@ -984,7 +1884,7 @@ case "$target" in
if test -z "$USE_USER_PTHREADS"; then
AC_DEFINE(_REENTRANT)
AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
- if test "${target_cpu}" = "i386"; then
+ if test "$OS_TEST" = "i86pc"; then
PR_MD_ASFILES=os_SunOS_x86.s
else
PR_MD_ASFILES=os_SunOS.s
@@ -996,9 +1896,13 @@ case "$target" in
;;
esac
-AC_CHECK_FUNC(dlopen,,[
- AC_CHECK_LIB(dl, dlopen, [OS_LIBS="-ldl $OS_LIBS"])
-])
+OS_LIBS="$_PTHREAD_LDFLAGS $OS_LIBS"
+
+dnl If the user passed in arg to --enable-optimize,
+dnl make sure that we use it.
+if test -n "$_SAVE_OPTIMIZE_FLAGS"; then
+ _OPTIMIZE_FLAGS="$_SAVE_OPTIMIZE_FLAGS"
+fi
if test -n "$MOZ_OPTIMIZE"; then
CFLAGS="$CFLAGS $_OPTIMIZE_FLAGS"
@@ -1018,15 +1922,20 @@ AC_SUBST(CC)
AC_SUBST(CXX)
AC_SUBST(CFLAGS)
AC_SUBST(CXXFLAGS)
+AC_SUBST(CPPFLAGS)
AC_SUBST(HOST_CC)
AC_SUBST(HOST_CFLAGS)
AC_SUBST(LDFLAGS)
AC_SUBST(GNU_CC)
+AC_SUBST(CROSS_COMPILE)
+
+AC_SUBST(MOZ_OPTIMIZE)
AC_SUBST(USE_CPLUS)
AC_SUBST(USE_IPV6)
AC_SUBST(USE_N32)
AC_SUBST(USE_64)
+AC_SUBST(GC_LEAK_DETECTOR)
AC_SUBST(USE_PTHREADS)
AC_SUBST(USE_BTHREADS)
@@ -1034,13 +1943,19 @@ AC_SUBST(USE_USER_PTHREADS)
AC_SUBST(USE_NATIVE_THREADS)
AC_SUBST(USE_NSPR_THREADS)
-AC_SUBST(NSPR_VERSION)
+AC_SUBST(LIBNSPR)
+AC_SUBST(LIBPLC)
+
+AC_SUBST(MOD_MAJOR_VERSION)
+AC_SUBST(MOD_MINOR_VERSION)
+AC_SUBST(MOD_REVISION_VERSION)
AC_SUBST(NSPR_MODNAME)
AC_SUBST(MDCPUCFG_H)
-AC_SUBST(MOZ_TARGET)
+AC_SUBST(MOZ_WIN32_TARGET)
AC_SUBST(PR_MD_CSRCS)
AC_SUBST(PR_MD_ASFILES)
AC_SUBST(PR_MD_ARCH_DIR)
+AC_SUBST(CPU_ARCH)
AC_SUBST(OBJ_SUFFIX)
AC_SUBST(LIB_SUFFIX)
@@ -1065,6 +1980,9 @@ AC_SUBST(DLLTOOL)
AC_SUBST(WINDRES)
AC_SUBST(RANLIB)
AC_SUBST(PERL)
+AC_SUBST(STRIP)
+AC_SUBST(FILTER)
+AC_SUBST(IMPLIB)
AC_SUBST(OS_LIBS)
AC_SUBST(RESOLVE_LINK_SYMBOLS)
@@ -1074,53 +1992,63 @@ AC_SUBST(MOZ_OBJFORMAT)
AC_SUBST(ULTRASPARC_LIBRARY)
AC_SUBST(ULTRASPARC_FILTER_LIBRARY)
+AC_SUBST(OBJDIR)
+AC_SUBST(OBJDIR_NAME)
+AC_SUBST(NSINSTALL)
+AC_SUBST(OPTIMIZER)
+AC_SUBST(RC)
+AC_SUBST(CPU_ARCH_TAG)
+AC_SUBST(DLLFLAGS)
+AC_SUBST(EXEFLAGS)
+AC_SUBST(OS_DLLFLAGS)
+
dnl ========================================================
dnl Generate output files.
dnl ========================================================
-AC_OUTPUT([
+MAKEFILES="
Makefile
config/Makefile
config/autoconf.mk
config/nsprincl.mk
config/nsprincl.sh
+config/nspr-config
lib/Makefile
lib/ds/Makefile
lib/libc/Makefile
lib/libc/include/Makefile
lib/libc/src/Makefile
-lib/msgc/Makefile
-lib/msgc/include/Makefile
-lib/msgc/src/Makefile
-lib/msgc/tests/Makefile
-lib/prstreams/Makefile
-lib/tests/Makefile
pr/Makefile
pr/include/Makefile
pr/include/md/Makefile
pr/include/obsolete/Makefile
pr/include/private/Makefile
pr/src/Makefile
-pr/src/bthreads/Makefile
-pr/src/cplus/Makefile
-pr/src/cplus/tests/Makefile
pr/src/io/Makefile
pr/src/linking/Makefile
pr/src/malloc/Makefile
pr/src/md/Makefile
-pr/src/md/beos/Makefile
-pr/src/md/os2/Makefile
-pr/src/md/unix/Makefile
-pr/src/md/windows/Makefile
+pr/src/md/${PR_MD_ARCH_DIR}/Makefile
pr/src/memory/Makefile
pr/src/misc/Makefile
-pr/src/pthreads/Makefile
pr/src/threads/Makefile
-pr/src/threads/combined/Makefile
pr/tests/Makefile
pr/tests/dll/Makefile
-pr/tests/w16gui/Makefile
-tools/Makefile
-])
+"
+
+dnl lib/tests/Makefile
+dnl pr/tests/w16gui/Makefile
+dnl tools/Makefile
+
+if test -z "$USE_PTHREADS" && test -z "$USE_BTHREADS"; then
+ MAKEFILES="$MAKEFILES pr/src/threads/combined/Makefile"
+elif test -n "$USE_PTHREADS"; then
+ MAKEFILES="$MAKEFILES pr/src/pthreads/Makefile"
+elif test -n "$USE_BTHREADS"; then
+ MAKEFILES="$MAKEFILES pr/src/bthreads/Makefile"
+fi
+
+if test -n "$USE_CPLUS"; then
+ MAKEFILES="$MAKEFILES pr/src/cplus/Makefile pr/src/cplus/tests/Makefile"
+fi
-dnl lib/prstreams/tests/testprstrm/Makefile
-dnl lib/tests/windows/makefile
+AC_OUTPUT([$MAKEFILES], [chmod +x config/nspr-config])
diff --git a/gmakefile.win b/gmakefile.win
new file mode 100644
index 00000000..f3a27f15
--- /dev/null
+++ b/gmakefile.win
@@ -0,0 +1,76 @@
+#!gmake
+# -*- Mode: Makefile -*-
+#
+# The contents of this file are subject to the Mozilla Public License
+# Version 1.1 (the "MPL"); you may not use this file except in
+# compliance with the MPL. You may obtain a copy of the MPL at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the MPL is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL
+# for the specific language governing rights and limitations under the
+# NPL.
+#
+# The Initial Developer of this code under the MPL is Netscape
+# Communications Corporation. Portions created by Netscape are
+# Copyright (C) 2001 Netscape Communications Corporation. All Rights
+# Reserved.
+#
+
+
+ifndef MOZ_SRC_FLIPPED
+$(error MOZ_SRC_FLIPPED is not set)
+endif
+
+ifndef MOZ_TOP
+MOZ_TOP=mozilla
+endif
+
+MOZ_DIST_FLIPPED = $(MOZ_SRC_FLIPPED)/mozilla/dist
+
+ifdef MOZ_DEBUG
+MOZ_OBJDIR = WIN32_D.OBJ
+else
+MOZ_OBJDIR = WIN32_O.OBJ
+endif
+
+NSPR_CONFIGURE := ../configure \
+ --with-mozilla \
+ --with-dist-prefix=$(MOZ_DIST_FLIPPED) \
+ --with-dist-bindir=$(MOZ_DIST_FLIPPED)/$(MOZ_OBJDIR)/bin \
+ --with-dist-libdir=$(MOZ_DIST_FLIPPED)/$(MOZ_OBJDIR)/lib
+
+ifeq (,$(MOZ_DEBUG))
+NSPR_CONFIGURE := $(NSPR_CONFIGURE) --enable-optimize --disable-debug
+endif
+
+define MAKE_OBJDIR
+if test ! -d $(@D) ; then rm -rf $(@D) ; nsinstall -D $(@D) ; fi
+endef
+
+
+all:: build_all
+
+# Argh. nmake keeps the cwd from cmd to cmd and gmake does not
+# Furthermore, shmsdos doesn't support '&&' so there's a chance the
+# 'cd' could fail and configure would be run in the wrong dir
+#
+$(MOZ_OBJDIR)/config.status: configure configure.in
+ @$(MAKE_OBJDIR)
+ cd $(MOZ_OBJDIR)/ ; \
+ sh $(NSPR_CONFIGURE)
+
+build_all: $(MOZ_OBJDIR)/config.status check_old
+ gmake -C $(MOZ_OBJDIR)
+
+clobber_all: $(MOZ_OBJDIR)/config.status check_old
+ gmake -C $(MOZ_OBJDIR) clobber_all
+
+distclean: check_old
+ rm -rf WIN32_D.OBJ WIN32_O.OBJ
+
+check_old:
+ @if test -f Makefile; then gmake distclean; fi
+
+
+
diff --git a/lib/.cvsignore b/lib/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/lib/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lib/Makefile b/lib/Makefile
deleted file mode 100644
index 9bb7d95c..00000000
--- a/lib/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ..
-
-export NSPR20=1
-
-include $(MOD_DEPTH)/config/config.mk
-
-DIRS = ds libc
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
diff --git a/lib/Makefile.in b/lib/Makefile.in
index e6a1c312..826001ec 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -34,4 +34,3 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/lib/ds/.cvsignore b/lib/ds/.cvsignore
new file mode 100644
index 00000000..bcab60f5
--- /dev/null
+++ b/lib/ds/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+_pl_bld.h
diff --git a/lib/ds/Makefile b/lib/ds/Makefile
deleted file mode 100644
index 2c5881d0..00000000
--- a/lib/ds/Makefile
+++ /dev/null
@@ -1,174 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include
-
-CSRCS = \
- plarena.c \
- plhash.c \
- plvrsion.c \
- $(NULL)
-
-HEADERS = \
- plarenas.h \
- plarena.h \
- plhash.h \
- $(NULL)
-
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET), WIN16)
-# OS_CFLAGS = $(OS_EXE_CFLAGS)
-EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).$(LIB_SUFFIX)
-else
-DLLBASE=/BASE:0x30000000
-RES=$(OBJDIR)/plds.res
-RESNAME=plds.rc
-OS_LIBS = user32.lib
-ifeq ($(OS_TARGET),WIN95)
-EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).lib
-else
-EXTRA_LIBS = $(DIST)/lib/libnspr$(MOD_VERSION).lib
-endif
-
-ifdef MOZ_DEBUG
-ifdef GLOWCODE
-EXTRA_LIBS += $(GLOWDIR)/glowcode.lib
-endif
-endif
-endif
-
-else
-ifeq ($(MOZ_OS2_TOOLS),VACPP)
-EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).$(LIB_SUFFIX)
-
-else
-ifeq ($(OS_ARCH), AIX)
-ifeq ($(CLASSIC_NSPR),1)
-OS_LIBS += -lc
-else
-OS_LIBS += -lc_r
-endif
-endif
-ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)_shr
-else
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)
-endif
-endif
-endif
-
-# On NCR and SCOOS, we can't link with extra libraries when
-# we build a shared library. If we do so, the linker doesn't
-# complain, but we would run into weird problems at run-time.
-# Therefore on these platforms, we link just the .o files.
-ifeq ($(OS_ARCH),NCR)
-EXTRA_LIBS =
-endif
-ifeq ($(OS_ARCH),SCOOS)
-EXTRA_LIBS =
-endif
-
-LIBRARY_NAME = plds
-LIBRARY_VERSION = $(MOD_VERSION)
-
-RELEASE_HEADERS = $(HEADERS)
-RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)
-RELEASE_LIBS = $(TARGETS)
-
-include $(MOD_DEPTH)/config/rules.mk
-
-#
-# Version information generation (begin)
-#
-ECHO = echo
-TINC = $(OBJDIR)/_pl_bld.h
-PROD = $(notdir $(SHARED_LIBRARY))
-NOW = $(MOD_DEPTH)/config/$(OBJDIR)/now
-SH_DATE = $(shell date)
-SH_NOW = $(shell $(NOW))
-
-ifeq ($(OS_ARCH), WINNT)
- SUF = i64
-else
- SUF = LL
-endif
-
-$(TINC):
- @$(MAKE_OBJDIR)
- @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
- @if test ! -z "$(SH_NOW)"; then \
- $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \
- else \
- true; \
- fi
- @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC)
-
-
-$(OBJDIR)/plvrsion.$(OBJ_SUFFIX): plvrsion.c $(TINC)
-ifeq ($(OS_ARCH), WINNT)
- $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) plvrsion.c
-else
-ifeq ($(MOZ_OS2_TOOLS), VACPP)
- $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) plvrsion.c
-else
- $(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) plvrsion.c
-endif
-endif
-#
-# Version information generation (end)
-#
-
-#
-# The Client build wants the shared libraries in $(DIST)/bin,
-# so we also install them there.
-#
-
-export:: $(TARGETS)
- $(INSTALL) -m 444 $(HEADERS) $(DIST)/include
- $(INSTALL) -m 444 $(TARGETS) $(DIST)/lib
-ifdef SHARED_LIBRARY
-ifeq ($(OS_ARCH),HP-UX)
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/lib
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/bin
-else
- $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/bin
-endif
-ifeq ($(OS_ARCH), OpenVMS)
- $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(DIST)/lib
-endif
-endif
-ifeq ($(MOZ_BITS),16)
- $(INSTALL) -m 444 $(HEADERS) $(MOZ_INCL)
- $(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/lib
- $(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/bin
-endif
-
-install:: export
-
diff --git a/lib/ds/Makefile.in b/lib/ds/Makefile.in
index 0240723c..f300d04b 100644
--- a/lib/ds/Makefile.in
+++ b/lib/ds/Makefile.in
@@ -26,16 +26,7 @@ include $(MOD_DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/config.mk
-ifndef USE_AUTOCONF
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-endif #!USE_AUTOCONF
-
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include
CSRCS = \
plarena.c \
@@ -51,66 +42,21 @@ HEADERS = \
HEADERS := $(addprefix $(srcdir)/, $(HEADERS))
-ifndef USE_AUTOCONF
ifeq ($(OS_ARCH), WINNT)
-ifeq (,$(filter-out WIN16 OS2,$(OS_TARGET)))
-# OS_CFLAGS = $(OS_EXE_CFLAGS)
-ifdef XP_OS2_EMX
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)
-else
-EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).$(LIB_SUFFIX)
-endif
-else
DLLBASE=/BASE:0x30000000
RES=$(OBJDIR)/plds.res
RESNAME=plds.rc
OS_LIBS = user32.lib
-ifeq ($(OS_TARGET),WIN95)
-EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).lib
-else
-EXTRA_LIBS = $(DIST)/lib/libnspr$(MOD_VERSION).lib
-endif
-
-ifdef MOZ_DEBUG
-ifdef GLOWCODE
-EXTRA_LIBS += $(GLOWDIR)/glowcode.lib
-endif
-endif
-
-endif
-else
-ifeq ($(OS_ARCH), AIX)
-ifeq ($(CLASSIC_NSPR),1)
-OS_LIBS += -lc
-else
-OS_LIBS += -lc_r
-endif
-endif
-ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)_shr
-else
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)
-endif
-endif
+endif # WINNT
-# On NCR and SCOOS, we can't link with extra libraries when
-# we build a shared library. If we do so, the linker doesn't
-# complain, but we would run into weird problems at run-time.
-# Therefore on these platforms, we link just the .o files.
-ifeq ($(OS_ARCH),NCR)
-EXTRA_LIBS =
-endif
-ifeq ($(OS_ARCH),SCOOS)
-EXTRA_LIBS =
-endif
-endif #!USE_AUTOCONF
+EXTRA_LIBS = $(LIBNSPR)
ifdef RESOLVE_LINK_SYMBOLS
-EXTRA_LIBS := -L$(DIST)/lib -lnspr$(MOD_VERSION)
+EXTRA_LIBS += $(OS_LIBS)
endif
LIBRARY_NAME = plds
-LIBRARY_VERSION = $(MOD_VERSION)
+LIBRARY_VERSION = $(MOD_MAJOR_VERSION)
RELEASE_HEADERS = $(HEADERS)
RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)
@@ -131,11 +77,7 @@ SH_DATE = $(shell date)
SH_NOW = $(shell $(NOW))
ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET),OS2)
- SUF =
-else
SUF = i64
-endif
else
SUF = LL
endif
@@ -153,35 +95,36 @@ $(TINC):
$(OBJDIR)/plvrsion.$(OBJ_SUFFIX): plvrsion.c $(TINC)
ifeq ($(OS_ARCH), WINNT)
-ifdef XP_OS2_EMX
- $(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) $<
+ $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) $<
else
+ifeq ($(MOZ_OS2_TOOLS), VACPP)
$(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) $<
-endif
else
$(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) $<
endif
+endif
#
# Version information generation (end)
#
#
-# The Client build wants the shared libraries in $(DIST)/bin,
+# The Client build wants the shared libraries in $(dist_bindir),
# so we also install them there.
#
export:: $(TARGETS)
- $(INSTALL) -m 444 $(HEADERS) $(DIST)/include
- $(INSTALL) -m 444 $(TARGETS) $(DIST)/lib
+ $(INSTALL) -m 444 $(HEADERS) $(dist_includedir)
+ $(INSTALL) -m 444 $(TARGETS) $(dist_libdir)
ifdef SHARED_LIBRARY
ifeq ($(OS_ARCH),HP-UX)
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/lib
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/bin
+ $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_libdir)
+ $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_bindir)
else
- $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/bin
+ $(INSTALL) -m 444 $(SHARED_LIBRARY) $(dist_bindir)
endif
ifeq ($(OS_ARCH), OpenVMS)
- $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(DIST)/lib
+ $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(dist_libdir)
+ $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(dist_bindir)
endif
endif
ifeq ($(MOZ_BITS),16)
@@ -190,5 +133,4 @@ ifeq ($(MOZ_BITS),16)
$(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/bin
endif
-install:: export
diff --git a/lib/ds/plhash.c b/lib/ds/plhash.c
index 30b46fdc..c5837603 100644
--- a/lib/ds/plhash.c
+++ b/lib/ds/plhash.c
@@ -195,6 +195,34 @@ PL_HashTableRawLookup(PLHashTable *ht, PLHashNumber keyHash, const void *key)
return hep;
}
+/*
+** Same as PL_HashTableRawLookup but doesn't reorder the hash entries.
+*/
+PR_IMPLEMENT(PLHashEntry **)
+PL_HashTableRawLookupConst(PLHashTable *ht, PLHashNumber keyHash,
+ const void *key)
+{
+ PLHashEntry *he, **hep;
+ PLHashNumber h;
+
+#ifdef HASHMETER
+ ht->nlookups++;
+#endif
+ h = keyHash * GOLDEN_RATIO;
+ h >>= ht->shift;
+ hep = &ht->buckets[h];
+ while ((he = *hep) != 0) {
+ if (he->keyHash == keyHash && (*ht->keyCompare)(key, he->key)) {
+ break;
+ }
+ hep = &he->next;
+#ifdef HASHMETER
+ ht->nsteps++;
+#endif
+ }
+ return hep;
+}
+
PR_IMPLEMENT(PLHashEntry *)
PL_HashTableRawAdd(PLHashTable *ht, PLHashEntry **hep,
PLHashNumber keyHash, const void *key, void *value)
@@ -349,6 +377,23 @@ PL_HashTableLookup(PLHashTable *ht, const void *key)
}
/*
+** Same as PL_HashTableLookup but doesn't reorder the hash entries.
+*/
+PR_IMPLEMENT(void *)
+PL_HashTableLookupConst(PLHashTable *ht, const void *key)
+{
+ PLHashNumber keyHash;
+ PLHashEntry *he, **hep;
+
+ keyHash = (*ht->keyHash)(key);
+ hep = PL_HashTableRawLookupConst(ht, keyHash, key);
+ if ((he = *hep) != 0) {
+ return he->value;
+ }
+ return 0;
+}
+
+/*
** Iterate over the entries in the hash table calling func for each
** entry found. Stop if "f" says to (return value & PR_ENUMERATE_STOP).
** Return a count of the number of elements scanned.
diff --git a/lib/ds/plhash.h b/lib/ds/plhash.h
index 3110d8ab..e3cd7a63 100644
--- a/lib/ds/plhash.h
+++ b/lib/ds/plhash.h
@@ -104,6 +104,9 @@ PL_HashTableRemove(PLHashTable *ht, const void *key);
PR_EXTERN(void *)
PL_HashTableLookup(PLHashTable *ht, const void *key);
+PR_EXTERN(void *)
+PL_HashTableLookupConst(PLHashTable *ht, const void *key);
+
PR_EXTERN(PRIntn)
PL_HashTableEnumerateEntries(PLHashTable *ht, PLHashEnumerator f, void *arg);
@@ -123,6 +126,10 @@ PL_CompareValues(const void *v1, const void *v2);
PR_EXTERN(PLHashEntry **)
PL_HashTableRawLookup(PLHashTable *ht, PLHashNumber keyHash, const void *key);
+PR_EXTERN(PLHashEntry **)
+PL_HashTableRawLookupConst(PLHashTable *ht, PLHashNumber keyHash,
+ const void *key);
+
PR_EXTERN(PLHashEntry *)
PL_HashTableRawAdd(PLHashTable *ht, PLHashEntry **hep, PLHashNumber keyHash,
const void *key, void *value);
diff --git a/lib/libc/.cvsignore b/lib/libc/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/lib/libc/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lib/libc/Makefile.in b/lib/libc/Makefile.in
index 05cef709..8e059acc 100644
--- a/lib/libc/Makefile.in
+++ b/lib/libc/Makefile.in
@@ -34,4 +34,3 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/lib/libc/include/.cvsignore b/lib/libc/include/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/lib/libc/include/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lib/libc/include/Makefile b/lib/libc/include/Makefile
deleted file mode 100644
index b00ff300..00000000
--- a/lib/libc/include/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-include $(MOD_DEPTH)/config/config.mk
-
-HEADERS = $(wildcard *.h)
-
-RELEASE_HEADERS = $(HEADERS)
-RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(HEADERS)
- $(INSTALL) -m 444 $(HEADERS) $(DIST)/include
-ifeq ($(MOZ_BITS),16)
- $(INSTALL) -m 444 $(HEADERS) $(MOZ_INCL)
-endif
-
-install:: export
-
diff --git a/lib/libc/include/Makefile.in b/lib/libc/include/Makefile.in
index f4b1838d..8fe6997d 100644
--- a/lib/libc/include/Makefile.in
+++ b/lib/libc/include/Makefile.in
@@ -33,10 +33,9 @@ RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)
include $(topsrcdir)/config/rules.mk
export:: $(HEADERS)
- $(INSTALL) -m 444 $(HEADERS) $(DIST)/include
+ $(INSTALL) -m 444 $(HEADERS) $(dist_includedir)
ifeq ($(MOZ_BITS),16)
$(INSTALL) -m 444 $(HEADERS) $(MOZ_INCL)
endif
-install:: export
diff --git a/lib/libc/src/.cvsignore b/lib/libc/src/.cvsignore
new file mode 100644
index 00000000..bcab60f5
--- /dev/null
+++ b/lib/libc/src/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+_pl_bld.h
diff --git a/lib/libc/src/Makefile b/lib/libc/src/Makefile
deleted file mode 100644
index 9fb0a22a..00000000
--- a/lib/libc/src/Makefile
+++ /dev/null
@@ -1,174 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-INCLUDES = -I$(DIST)/include
-
-CSRCS =\
- plvrsion.c \
- strlen.c \
- strcpy.c \
- strdup.c \
- strcat.c \
- strcmp.c \
- strccmp.c \
- strchr.c \
- strpbrk.c \
- strstr.c \
- strcstr.c \
- base64.c \
- plerror.c \
- plgetopt.c \
- $(NULL)
-
-LIBRARY_NAME = plc
-LIBRARY_VERSION = $(MOD_VERSION)
-
-RELEASE_LIBS = $(TARGETS)
-
-ifeq ($(OS_ARCH),WINNT)
-ifeq ($(OS_TARGET), WIN16)
-EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).lib
-else
-DLLBASE=/BASE:0x30000000
-RES=$(OBJDIR)/plc.res
-RESNAME=plc.rc
-ifeq ($(OS_TARGET),WIN95)
-EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).lib
-else
-EXTRA_LIBS = $(DIST)/lib/libnspr$(MOD_VERSION).lib
-endif
-
-ifdef MOZ_DEBUG
-ifdef GLOWCODE
-EXTRA_LIBS += $(GLOWDIR)/glowcode.lib
-endif
-endif
-endif
-
-else
-ifeq ($(MOZ_OS2_TOOLS),VACPP)
-EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).$(LIB_SUFFIX)
-
-else
-ifeq ($(OS_ARCH), AIX)
-ifeq ($(CLASSIC_NSPR),1)
-OS_LIBS += -lc
-else
-OS_LIBS += -lc_r
-endif
-endif
-ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)_shr
-else
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)
-endif
-endif
-endif
-
-# On NCR and SCOOS, we can't link with extra libraries when
-# we build a shared library. If we do so, the linker doesn't
-# complain, but we would run into weird problems at run-time.
-# Therefore on these platforms, we link just the .o files.
-ifeq ($(OS_ARCH),NCR)
-EXTRA_LIBS =
-endif
-ifeq ($(OS_ARCH),SCOOS)
-EXTRA_LIBS =
-endif
-
-include $(MOD_DEPTH)/config/rules.mk
-
-#
-# Version information generation (begin)
-#
-ECHO = echo
-TINC = $(OBJDIR)/_pl_bld.h
-PROD = $(notdir $(SHARED_LIBRARY))
-NOW = $(MOD_DEPTH)/config/$(OBJDIR)/now
-SH_DATE = $(shell date)
-SH_NOW = $(shell $(NOW))
-
-ifeq ($(OS_ARCH), WINNT)
- SUF = i64
-else
- SUF = LL
-endif
-
-GARBAGE += $(TINC)
-
-$(TINC):
- @$(MAKE_OBJDIR)
- @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
- @if test ! -z "$(SH_NOW)"; then \
- $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \
- else \
- true; \
- fi
- @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC)
-
-
-$(OBJDIR)/plvrsion.$(OBJ_SUFFIX): plvrsion.c $(TINC)
-ifeq ($(OS_ARCH), WINNT)
- $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) plvrsion.c
-else
-ifeq ($(MOZ_OS2_TOOLS), VACPP)
- $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) plvrsion.c
-else
- $(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) plvrsion.c
-endif
-endif
-#
-# Version information generation (end)
-#
-
-#
-# The Client build wants the shared libraries in $(DIST)/bin,
-# so we also install them there.
-#
-
-export:: $(TARGETS)
- $(INSTALL) -m 444 $(TARGETS) $(DIST)/lib
-ifdef SHARED_LIBRARY
-ifeq ($(OS_ARCH),HP-UX)
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/lib
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/bin
-else
- $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/bin
-endif
-ifeq ($(OS_ARCH), OpenVMS)
- $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(DIST)/lib
-endif
-endif
-ifeq ($(MOZ_BITS),16)
- $(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/lib
- $(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/bin
-endif
-
-install:: export
diff --git a/lib/libc/src/Makefile.in b/lib/libc/src/Makefile.in
index ffd13253..c7b56c1a 100644
--- a/lib/libc/src/Makefile.in
+++ b/lib/libc/src/Makefile.in
@@ -26,16 +26,7 @@ include $(MOD_DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/config.mk
-ifndef USE_AUTOCONF
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-endif #!USE_AUTOCONF
-
-INCLUDES = -I$(DIST)/include
+INCLUDES = -I$(dist_includedir)
CSRCS =\
plvrsion.c \
@@ -55,64 +46,20 @@ CSRCS =\
$(NULL)
LIBRARY_NAME = plc
-LIBRARY_VERSION = $(MOD_VERSION)
+LIBRARY_VERSION = $(MOD_MAJOR_VERSION)
RELEASE_LIBS = $(TARGETS)
-ifndef USE_AUTOCONF
ifeq ($(OS_ARCH),WINNT)
-ifeq (,$(filter-out WIN16 OS2,$(OS_TARGET)))
-ifdef XP_OS2_EMX
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)
-else
-EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).lib
-endif
-else
DLLBASE=/BASE:0x30000000
RES=$(OBJDIR)/plc.res
RESNAME=plc.rc
-ifeq ($(OS_TARGET),WIN95)
-EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).lib
-else
-EXTRA_LIBS = $(DIST)/lib/libnspr$(MOD_VERSION).lib
-endif
-
-ifdef MOZ_DEBUG
-ifdef GLOWCODE
-EXTRA_LIBS += $(GLOWDIR)/glowcode.lib
-endif
-endif
-
-endif
-else
-ifeq ($(OS_ARCH), AIX)
-ifeq ($(CLASSIC_NSPR),1)
-OS_LIBS += -lc
-else
-OS_LIBS += -lc_r
-endif
-endif
-ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)_shr
-else
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)
-endif
-endif
+endif # WINNT
-# On NCR and SCOOS, we can't link with extra libraries when
-# we build a shared library. If we do so, the linker doesn't
-# complain, but we would run into weird problems at run-time.
-# Therefore on these platforms, we link just the .o files.
-ifeq ($(OS_ARCH),NCR)
-EXTRA_LIBS =
-endif
-ifeq ($(OS_ARCH),SCOOS)
-EXTRA_LIBS =
-endif
-endif #!USE_AUTOCONF
+EXTRA_LIBS = $(LIBNSPR)
ifdef RESOLVE_LINK_SYMBOLS
-EXTRA_LIBS := -L$(DIST)/lib -lnspr$(MOD_VERSION)
+EXTRA_LIBS += $(OS_LIBS)
endif
GARBAGE += $(TINC)
@@ -130,11 +77,7 @@ SH_DATE = $(shell date)
SH_NOW = $(shell $(NOW))
ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET),OS2)
- SUF =
-else
SUF = i64
-endif
else
SUF = LL
endif
@@ -152,34 +95,35 @@ $(TINC):
$(OBJDIR)/plvrsion.$(OBJ_SUFFIX): plvrsion.c $(TINC)
ifeq ($(OS_ARCH), WINNT)
-ifdef XP_OS2_EMX
- $(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) $<
+ $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) $<
else
+ifeq ($(MOZ_OS2_TOOLS), VACPP)
$(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) $<
-endif
else
$(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) $<
endif
+endif
#
# Version information generation (end)
#
#
-# The Client build wants the shared libraries in $(DIST)/bin,
+# The Client build wants the shared libraries in $(dist_bindir),
# so we also install them there.
#
export:: $(TARGETS)
- $(INSTALL) -m 444 $(TARGETS) $(DIST)/lib
+ $(INSTALL) -m 444 $(TARGETS) $(dist_libdir)
ifdef SHARED_LIBRARY
ifeq ($(OS_ARCH),HP-UX)
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/lib
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/bin
+ $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_libdir)
+ $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_bindir)
else
- $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/bin
+ $(INSTALL) -m 444 $(SHARED_LIBRARY) $(dist_bindir)
endif
ifeq ($(OS_ARCH), OpenVMS)
- $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(DIST)/lib
+ $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(dist_libdir)
+ $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(dist_bindir)
endif
endif
ifeq ($(MOZ_BITS),16)
@@ -187,4 +131,3 @@ ifeq ($(MOZ_BITS),16)
$(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/bin
endif
-install:: export
diff --git a/lib/libc/src/strccmp.c b/lib/libc/src/strccmp.c
index 58ba559c..7d1e620c 100644
--- a/lib/libc/src/strccmp.c
+++ b/lib/libc/src/strccmp.c
@@ -35,7 +35,23 @@ static const unsigned char uc[] =
'`', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', '{', '|', '}', '~', '\177'
+ 'X', 'Y', 'Z', '{', '|', '}', '~', '\177',
+ '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
+ '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
+ '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
+ '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
+ '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
+ '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
+ '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
+ '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
+ '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307',
+ '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317',
+ '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327',
+ '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337',
+ '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
+ '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
+ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
+ '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377'
};
PR_IMPLEMENT(PRIntn)
diff --git a/lib/msgc/.cvsignore b/lib/msgc/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/lib/msgc/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lib/msgc/Makefile b/lib/msgc/Makefile
deleted file mode 100644
index 85028460..00000000
--- a/lib/msgc/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-MOD_DEPTH = ../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-DIRS = include src tests
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
diff --git a/lib/msgc/Makefile.in b/lib/msgc/Makefile.in
index 317908c0..d0f47c4c 100644
--- a/lib/msgc/Makefile.in
+++ b/lib/msgc/Makefile.in
@@ -30,4 +30,3 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/lib/msgc/include/.cvsignore b/lib/msgc/include/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/lib/msgc/include/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lib/msgc/include/Makefile b/lib/msgc/include/Makefile
deleted file mode 100644
index 6a560871..00000000
--- a/lib/msgc/include/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-include $(MOD_DEPTH)/config/config.mk
-
-EXPORT_HEADERS = prgc.h
-HEADERS = $(EXPORT_HEADERS) gcint.h
-
-RELEASE_HEADERS = $(EXPORT_HEADERS)
-RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(EXPORT_HEADERS)
- $(INSTALL) -m 444 $(EXPORT_HEADERS) $(DIST)/include
-ifeq ($(MOZ_BITS),16)
- $(INSTALL) -m 444 $(EXPORT_HEADERS) $(MOZ_INCL)
-endif
-
-install:: export
diff --git a/lib/msgc/include/Makefile.in b/lib/msgc/include/Makefile.in
index 2ed3a284..51514dab 100644
--- a/lib/msgc/include/Makefile.in
+++ b/lib/msgc/include/Makefile.in
@@ -34,9 +34,8 @@ RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)
include $(topsrcdir)/config/rules.mk
export:: $(EXPORT_HEADERS)
- $(INSTALL) -m 444 $(EXPORT_HEADERS) $(DIST)/include
+ $(INSTALL) -m 444 $(EXPORT_HEADERS) $(dist_includedir)
ifeq ($(MOZ_BITS),16)
$(INSTALL) -m 444 $(EXPORT_HEADERS) $(MOZ_INCL)
endif
-install:: export
diff --git a/lib/msgc/src/.cvsignore b/lib/msgc/src/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/lib/msgc/src/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lib/msgc/src/Makefile b/lib/msgc/src/Makefile
deleted file mode 100644
index bf1b2d93..00000000
--- a/lib/msgc/src/Makefile
+++ /dev/null
@@ -1,121 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-INCLUDES = -I$(DIST)/include -I../include
-
-CSRCS = prgcapi.c prmsgc.c
-
-ifeq ($(OS_ARCH),WINNT)
-ifeq ($(OS_TARGET),WIN16)
-CSRCS += win16gc.c
-else
-CSRCS += win32gc.c
-endif
-else
-ifeq ($(OS_ARCH),OS2)
-CSRCS += os2gc.c
-else
-CSRCS += unixgc.c
-endif
-endif
-
-NSPR_VERSION = $(MOD_VERSION)
-
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET), WIN16)
-EXTRA_LIBS = $(DIST)/lib/nspr$(NSPR_VERSION).lib
-else
-DLLBASE=/BASE:0x30000000
-#RES=$(OBJDIR)/ds.res
-#RESNAME=$(MOD_DEPTH)/pr/src/nspr.rc
-#OS_LIBS = user32.lib
-EXTRA_LIBS = $(DIST)/lib/libnspr$(NSPR_VERSION).lib
-
-ifdef MOZ_DEBUG
-ifdef GLOWCODE
-EXTRA_LIBS += $(GLOWDIR)/glowcode.lib
-endif
-endif
-endif
-
-else
-ifeq ($(MOZ_OS2_TOOLS),VACPP)
-EXTRA_LIBS = $(DIST)/lib/nspr$(NSPR_VERSION).$(LIB_SUFFIX)
-
-else
-ifeq ($(OS_ARCH), AIX)
-ifeq ($(CLASSIC_NSPR),1)
-OS_LIBS += -lc
-else
-OS_LIBS += -lc_r
-endif
-endif
-ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(NSPR_VERSION)_shr
-else
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(NSPR_VERSION)
-endif
-endif
-endif
-
-# On NCR and SCOOS, we can't link with extra libraries when
-# we build a shared library. If we do so, the linker doesn't
-# complain, but we would run into weird problems at run-time.
-# Therefore on these platforms, we link just the .o files.
-ifeq ($(OS_ARCH),NCR)
-EXTRA_LIBS =
-endif
-ifeq ($(OS_ARCH),SCOOS)
-EXTRA_LIBS =
-endif
-
-LIBRARY_NAME = msgc
-LIBRARY_VERSION = $(MOD_VERSION)
-
-RELEASE_LIBS = $(TARGETS)
-
-include $(MOD_DEPTH)/config/rules.mk
-
-#
-# The Client build wants the shared libraries in $(DIST)/bin,
-# so we also install them there.
-#
-
-export:: $(TARGETS)
- $(INSTALL) -m 444 $(TARGETS) $(DIST)/lib
-ifdef SHARED_LIBRARY
- $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/bin
-endif
-ifeq ($(MOZ_BITS),16)
- $(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/lib
- $(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/bin
-endif
-
-install:: export
diff --git a/lib/msgc/src/Makefile.in b/lib/msgc/src/Makefile.in
index d486acc9..685d028d 100644
--- a/lib/msgc/src/Makefile.in
+++ b/lib/msgc/src/Makefile.in
@@ -26,96 +26,54 @@ include $(MOD_DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/config.mk
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-INCLUDES = -I$(DIST)/include -I../include
+INCLUDES = -I$(dist_includedir) -I../include
CSRCS = prgcapi.c prmsgc.c
ifeq ($(OS_ARCH),WINNT)
-ifeq ($(OS_TARGET),WIN16)
-CSRCS += win16gc.c
+CSRCS += win32gc.c
else
-ifeq ($(OS_TARGET),OS2)
+ifeq ($(OS_ARCH),OS2)
CSRCS += os2gc.c
else
-CSRCS += win32gc.c
-endif
-endif
-else
CSRCS += unixgc.c
endif
+endif
-NSPR_VERSION = $(MOD_VERSION)
+NSPR_VERSION = $(MOD_MAJOR_VERSION)
+
+EXTRA_LIBS = $(LIBNSPR)
+
+ifdef RESOLVE_LINK_SYMBOLS
+EXTRA_LIBS += $(OS_LIBS)
+endif
ifeq ($(OS_ARCH), WINNT)
-ifeq (,$(filter-out WIN16 OS2,$(OS_TARGET)))
-EXTRA_LIBS = $(DIST)/lib/nspr$(NSPR_VERSION).lib
-else
DLLBASE=/BASE:0x30000000
#RES=$(OBJDIR)/ds.res
#RESNAME=$(MOD_DEPTH)/pr/src/nspr.rc
#OS_LIBS = user32.lib
-EXTRA_LIBS = $(DIST)/lib/libnspr$(NSPR_VERSION).lib
-
-ifdef MOZ_DEBUG
-ifdef GLOWCODE
-EXTRA_LIBS += $(GLOWDIR)/glowcode.lib
-endif
-endif
-
-endif
-else
-ifeq ($(OS_ARCH), AIX)
-ifeq ($(CLASSIC_NSPR),1)
-OS_LIBS += -lc
-else
-OS_LIBS += -lc_r
-endif
-endif
-ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(NSPR_VERSION)_shr
-else
-EXTRA_LIBS = -L$(DIST)/lib -lnspr$(NSPR_VERSION)
-endif
-endif
-
-# On NCR and SCOOS, we can't link with extra libraries when
-# we build a shared library. If we do so, the linker doesn't
-# complain, but we would run into weird problems at run-time.
-# Therefore on these platforms, we link just the .o files.
-ifeq ($(OS_ARCH),NCR)
-EXTRA_LIBS =
-endif
-ifeq ($(OS_ARCH),SCOOS)
-EXTRA_LIBS =
-endif
+endif # WINNT
LIBRARY_NAME = msgc
-LIBRARY_VERSION = $(MOD_VERSION)
+LIBRARY_VERSION = $(MOD_MAJOR_VERSION)
RELEASE_LIBS = $(TARGETS)
include $(topsrcdir)/config/rules.mk
#
-# The Client build wants the shared libraries in $(DIST)/bin,
+# The Client build wants the shared libraries in $(dist_bindir),
# so we also install them there.
#
export:: $(TARGETS)
- $(INSTALL) -m 444 $(TARGETS) $(DIST)/lib
+ $(INSTALL) -m 444 $(TARGETS) $(dist_libdir)
ifdef SHARED_LIBRARY
- $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/bin
+ $(INSTALL) -m 444 $(SHARED_LIBRARY) $(dist_bindir)
endif
ifeq ($(MOZ_BITS),16)
$(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/lib
$(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/bin
endif
-install:: export
diff --git a/lib/msgc/tests/.cvsignore b/lib/msgc/tests/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/lib/msgc/tests/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lib/msgc/tests/Makefile b/lib/msgc/tests/Makefile
deleted file mode 100644
index 6716ead8..00000000
--- a/lib/msgc/tests/Makefile
+++ /dev/null
@@ -1,290 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-ifeq ($(OS_TARGET), WIN16)
-OS_CFLAGS = $(OS_EXE_CFLAGS)
-W16STDIO = $(MOD_DEPTH)/pr/src/md/windows/$(OBJDIR)/w16stdio.$(OBJ_SUFFIX)
-endif
-
-ifeq ($(OS_TARGET), OS2)
-OS_CFLAGS = $(OS_EXE_CFLAGS)
-endif
-
-CSRCS = gc1.c thrashgc.c
-
-ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
-PROG_SUFFIX = .exe
-else
-PROG_SUFFIX =
-endif
-
-PROGS = $(addprefix $(OBJDIR)/, $(CSRCS:.c=$(PROG_SUFFIX)))
-
-TARGETS = $(PROGS) $(OBJS)
-
-INCLUDES = -I$(DIST)/include
-
-# Setting the variables LDOPTS and LIBPR. We first initialize
-# them to the default values, then adjust them for some platforms.
-LDOPTS = -L$(DIST)/lib
-NSPR_VERSION = $(MOD_VERSION)
-GC_VERSION = $(MOD_VERSION)
-LIBPR = -lnspr$(NSPR_VERSION)
-LIBPLC = -lplc$(NSPR_VERSION)
-LIBGC = -lmsgc$(GC_VERSION)
-
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET), WIN16)
- LIBPR = $(DIST)/lib/nspr$(NSPR_VERSION).lib
- LIBPLC = $(DIST)/lib/plc$(NSPR_VERSION).lib
- LIBGC= $(DIST)/lib/msgc$(GC_VERSION).lib
-else
- LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
- LIBPR = $(DIST)/lib/libnspr$(NSPR_VERSION).$(LIB_SUFFIX)
- LIBPLC = $(DIST)/lib/libplc$(NSPR_VERSION).$(LIB_SUFFIX)
- LIBGC= $(DIST)/lib/libmsgc$(GC_VERSION).$(LIB_SUFFIX)
-endif
-endif
-
-ifeq ($(OS_ARCH),OS2)
-ifeq ($(MOZ_OS2_TOOLS),VACPP)
- LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO
- LIBPR = $(DIST)/lib/nspr$(NSPR_VERSION).lib
- LIBPLC = $(DIST)/lib/plc$(NSPR_VERSION).lib
- LIBGC= $(DIST)/lib/msgc$(GC_VERSION).lib
-else
- LDOPTS += -Zomf -Zlinker /PM:VIO
-endif
-endif
-
-ifneq ($(OS_ARCH), WINNT)
-PWD = $(shell pwd)
-endif
-
-ifeq ($(OS_ARCH), IRIX)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib -rdata_shared
-
-# For 6.x machines, include this flag
-ifeq ($(basename $(OS_RELEASE)),6)
-ifeq ($(USE_N32),1)
-LDOPTS += -n32
-else
-LDOPTS += -32
-endif
-endif
-
-endif
-
-ifeq ($(OS_ARCH), OSF1)
-# I haven't figured out how to pass -rpath to cc on OSF1 V3.2, so
-# we do static linking.
-ifeq ($(OS_RELEASE), V3.2)
- LIBPR = $(DIST)/lib/libnspr$(NSPR_VERSION).a
- LIBPLC = $(DIST)/lib/libplc$(NSPR_VERSION).a
- LIBGC = $(DIST)/lib/libmsgc$(GC_VERSION).a
- EXTRA_LIBS = -lc_r
-else
- LDOPTS += -rpath $(PWD)/$(DIST)/lib
-endif
-endif
-
-ifeq ($(OS_ARCH), HP-UX)
-LDOPTS += -z -Wl,+s,+b,$(PWD)/$(DIST)/lib
-endif
-
-# AIX
-ifeq ($(OS_ARCH),AIX)
-LDOPTS += -blibpath:$(PWD)/$(DIST)/lib:/usr/lib:/lib
-ifeq ($(OS_ARCH)$(OS_RELEASE),AIX4.1)
-LIBPR = -lnspr$(NSPR_VERSION)_shr
-LIBPLC = -lplc$(NSPR_VERSION)_shr
-LIBGC = -lmsgc$(GC_VERSION)_shr
-else
-LDOPTS += -brtl
-EXTRA_LIBS = -ldl
-endif
-endif
-
-# Solaris
-ifeq ($(OS_ARCH), SunOS)
-ifneq ($(OS_RELEASE), 4.1.3_U1)
-ifdef NS_USE_GCC
-LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(DIST)/lib
-else
-LDOPTS += -R $(PWD)/$(DIST)/lib
-endif
-endif
-
-ifneq ($(LOCAL_THREADS_ONLY),1)
-# SunOS 5.4 and 5.5 need to link with -lthread or -lpthread,
-# even though we already linked with these system libraries
-# when we built libnspr.so.
-ifeq ($(OS_RELEASE), 5.4)
-EXTRA_LIBS = -lthread
-endif
-
-ifeq ($(OS_RELEASE), 5.5)
-ifdef USE_PTHREADS
-EXTRA_LIBS = -lpthread
-else
-EXTRA_LIBS = -lthread
-endif
-endif
-endif # LOCAL_THREADS_ONLY
-endif # SunOS
-
-ifeq ($(OS_ARCH),NEC)
-EXTRA_LIBS = $(OS_LIBS)
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), NCR)
-# XXX: We see some strange problems when we link with libnspr.so.
-# So for now we use static libraries on NCR. The shared library
-# stuff below is commented out.
-LIBPR = $(DIST)/lib/libnspr$(NSPR_VERSION).a
-LIBPLC = $(DIST)/lib/libplc$(NSPR_VERSION).a
-LIBGC = $(DIST)/lib/libmsgc$(GC_VERSION).a
-EXTRA_LIBS = -lsocket -lnsl -ldl
-
-# NCR needs to link against -lsocket -lnsl (and -lc, which is linked
-# implicitly by $(CC)) again even though we already linked with these
-# system libraries when we built libnspr.so.
-#EXTRA_LIBS = -lsocket -lnsl
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-#export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), Linux)
-ifeq ($(OS_RELEASE), 1.2)
-EXTRA_LIBS = -ldl
-endif
-endif
-
-ifeq ($(OS_ARCH), SCOOS)
-# SCO Unix needs to link against -lsocket again even though we
-# already linked with these system libraries when we built libnspr.so.
-EXTRA_LIBS = -lsocket
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH),SINIX)
-EXTRA_LIBS = -lsocket -lnsl -lresolv -ldl
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), UNIXWARE)
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH),BSD_OS)
-EXTRA_LIBS = -ldl
-endif
-
-ifeq ($(OS_ARCH),DGUX)
-EXTRA_LIBS = -lsocket -lnsl -ldl
-endif
-
-#####################################################
-#
-# The rules
-#
-#####################################################
-
-include $(MOD_DEPTH)/config/rules.mk
-
-AIX_PRE_4_2 = 0
-ifeq ($(OS_ARCH),AIX)
-ifneq ($(OS_RELEASE),4.2)
-ifneq ($(USE_PTHREADS), 1)
-#AIX_PRE_4_2 = 1
-endif
-endif
-endif
-
-ifeq ($(AIX_PRE_4_2),1)
-
-# AIX releases prior to 4.2 need a special two-step linking hack
-# in order to both override the system select() and be able to
-# get at the original system select().
-#
-# We use a pattern rule in ns/nspr20/config/rules.mk to generate
-# the .$(OBJ_SUFFIX) file from the .c source file, then do the
-# two-step linking hack below.
-
-$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
- rm -f $@ $(AIX_TMP)
- $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(DIST)/lib/libnspr$(NSPR_VERSION).a
- $(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
- rm -f $(AIX_TMP)
-
-else
-
-# All platforms that are not AIX pre-4.2.
-
-$(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET),WIN16)
- echo system windows >w16link
- echo name $@ >>w16link
- echo option map >>w16link
-# echo option CASEEXACT >>w16link
- echo option stack=16K >>w16link
- echo debug $(DEBUGTYPE) all >>w16link
- echo file >>w16link
- echo $< , >>w16link
- echo $(W16STDIO) >>w16link
- echo library >>w16link
- echo $(LIBPR), >>w16link
- echo $(LIBPLC), >>w16link
- echo $(LIBGC), >>w16link
- echo winsock.lib >>w16link
- wlink @w16link.
-else
- link $(LDOPTS) $< $(LIBGC) $(LIBPLC) $(LIBPR) wsock32.lib -out:$@
-else
-ifeq ($(OS_ARCH),OS2)
- $(LINK) $(LDOPTS) $< $(LIBGC) $(LIBPLC) $(LIBPR) $(OS_LIBS) $(EXTRA_LIBS) -o $@
-else
- $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBGC) $(LIBPLC) $(LIBPR) $(EXTRA_LIBS) -o $@
-endif
-endif
-endif
-
-export:: $(TARGETS)
-export:: install
-clean::
- rm -f $(TARGETS)
diff --git a/lib/msgc/tests/Makefile.in b/lib/msgc/tests/Makefile.in
index 6d1e8b42..bd437a79 100644
--- a/lib/msgc/tests/Makefile.in
+++ b/lib/msgc/tests/Makefile.in
@@ -37,7 +37,7 @@ endif
CSRCS = gc1.c thrashgc.c
-ifeq ($(OS_ARCH), WINNT)
+ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
PROG_SUFFIX = .exe
else
PROG_SUFFIX =
@@ -47,34 +47,38 @@ PROGS = $(addprefix $(OBJDIR)/, $(CSRCS:.c=$(PROG_SUFFIX)))
TARGETS = $(PROGS) $(OBJS)
-INCLUDES = -I$(DIST)/include
+INCLUDES = -I$(dist_includedir)
# Setting the variables LDOPTS and LIBPR. We first initialize
# them to the default values, then adjust them for some platforms.
-LDOPTS = -L$(DIST)/lib
-NSPR_VERSION = $(MOD_VERSION)
-GC_VERSION = $(MOD_VERSION)
+LDOPTS = -L$(dist_libdir)
+NSPR_VERSION = $(MOD_MAJOR_VERSION)
+GC_VERSION = $(MOD_MAJOR_VERSION)
LIBPR = -lnspr$(NSPR_VERSION)
LIBPLC = -lplc$(NSPR_VERSION)
LIBGC = -lmsgc$(GC_VERSION)
ifeq ($(OS_ARCH), WINNT)
ifeq ($(OS_TARGET), WIN16)
- LIBPR = $(DIST)/lib/nspr$(NSPR_VERSION).lib
- LIBPLC = $(DIST)/lib/plc$(NSPR_VERSION).lib
- LIBGC= $(DIST)/lib/msgc$(GC_VERSION).lib
-else
-ifeq ($(OS_TARGET),OS2)
- LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO
- LIBPR = $(DIST)/lib/nspr$(NSPR_VERSION).lib
- LIBPLC = $(DIST)/lib/plc$(NSPR_VERSION).lib
- LIBGC= $(DIST)/lib/msgc$(GC_VERSION).lib
+ LIBPR = $(dist_libdir)/nspr$(NSPR_VERSION).lib
+ LIBPLC = $(dist_libdir)/plc$(NSPR_VERSION).lib
+ LIBGC= $(dist_libdir)/msgc$(GC_VERSION).lib
else
LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
- LIBPR = $(DIST)/lib/libnspr$(NSPR_VERSION).$(LIB_SUFFIX)
- LIBPLC = $(DIST)/lib/libplc$(NSPR_VERSION).$(LIB_SUFFIX)
- LIBGC= $(DIST)/lib/libmsgc$(GC_VERSION).$(LIB_SUFFIX)
+ LIBPR = $(dist_libdir)/libnspr$(NSPR_VERSION).$(LIB_SUFFIX)
+ LIBPLC = $(dist_libdir)/libplc$(NSPR_VERSION).$(LIB_SUFFIX)
+ LIBGC= $(dist_libdir)/libmsgc$(GC_VERSION).$(LIB_SUFFIX)
+endif
endif
+
+ifeq ($(OS_ARCH),OS2)
+ifeq ($(MOZ_OS2_TOOLS),VACPP)
+ LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO
+ LIBPR = $(dist_libdir)/nspr$(NSPR_VERSION).lib
+ LIBPLC = $(dist_libdir)/plc$(NSPR_VERSION).lib
+ LIBGC= $(dist_libdir)/msgc$(GC_VERSION).lib
+else
+ LDOPTS += -Zomf -Zlinker /PM:VIO
endif
endif
@@ -83,7 +87,7 @@ PWD = $(shell pwd)
endif
ifeq ($(OS_ARCH), IRIX)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib -rdata_shared
+LDOPTS += -rpath $(PWD)/$(dist_libdir) -rdata_shared
# For 6.x machines, include this flag
ifeq ($(basename $(OS_RELEASE)),6)
@@ -100,22 +104,22 @@ ifeq ($(OS_ARCH), OSF1)
# I haven't figured out how to pass -rpath to cc on OSF1 V3.2, so
# we do static linking.
ifeq ($(OS_RELEASE), V3.2)
- LIBPR = $(DIST)/lib/libnspr$(NSPR_VERSION).a
- LIBPLC = $(DIST)/lib/libplc$(NSPR_VERSION).a
- LIBGC = $(DIST)/lib/libmsgc$(GC_VERSION).a
+ LIBPR = $(dist_libdir)/libnspr$(NSPR_VERSION).a
+ LIBPLC = $(dist_libdir)/libplc$(NSPR_VERSION).a
+ LIBGC = $(dist_libdir)/libmsgc$(GC_VERSION).a
EXTRA_LIBS = -lc_r
else
- LDOPTS += -rpath $(PWD)/$(DIST)/lib
+ LDOPTS += -rpath $(PWD)/$(dist_libdir)
endif
endif
ifeq ($(OS_ARCH), HP-UX)
-LDOPTS += -z -Wl,+s,+b,$(PWD)/$(DIST)/lib
+LDOPTS += -z -Wl,+s,+b,$(PWD)/$(dist_libdir)
endif
# AIX
ifeq ($(OS_ARCH),AIX)
-LDOPTS += -blibpath:$(PWD)/$(DIST)/lib:/usr/lib:/lib
+LDOPTS += -blibpath:$(PWD)/$(dist_libdir):/usr/lib:/lib
ifeq ($(OS_ARCH)$(OS_RELEASE),AIX4.1)
LIBPR = -lnspr$(NSPR_VERSION)_shr
LIBPLC = -lplc$(NSPR_VERSION)_shr
@@ -130,9 +134,9 @@ endif
ifeq ($(OS_ARCH), SunOS)
ifneq ($(OS_RELEASE), 4.1.3_U1)
ifdef NS_USE_GCC
-LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(DIST)/lib
+LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(dist_libdir)
else
-LDOPTS += -R $(PWD)/$(DIST)/lib
+LDOPTS += -R $(PWD)/$(dist_libdir)
endif
endif
@@ -159,16 +163,16 @@ EXTRA_LIBS = $(OS_LIBS)
# This hardcodes in the executable programs the directory to find
# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), NCR)
# XXX: We see some strange problems when we link with libnspr.so.
# So for now we use static libraries on NCR. The shared library
# stuff below is commented out.
-LIBPR = $(DIST)/lib/libnspr$(NSPR_VERSION).a
-LIBPLC = $(DIST)/lib/libplc$(NSPR_VERSION).a
-LIBGC = $(DIST)/lib/libmsgc$(GC_VERSION).a
+LIBPR = $(dist_libdir)/libnspr$(NSPR_VERSION).a
+LIBPLC = $(dist_libdir)/libplc$(NSPR_VERSION).a
+LIBGC = $(dist_libdir)/libmsgc$(GC_VERSION).a
EXTRA_LIBS = -lsocket -lnsl -ldl
# NCR needs to link against -lsocket -lnsl (and -lc, which is linked
@@ -178,7 +182,7 @@ EXTRA_LIBS = -lsocket -lnsl -ldl
# This hardcodes in the executable programs the directory to find
# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
# option for ld on other platforms.
-#export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+#export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), Linux)
@@ -194,7 +198,7 @@ EXTRA_LIBS = -lsocket
# This hardcodes in the executable programs the directory to find
# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH),SINIX)
@@ -202,11 +206,11 @@ EXTRA_LIBS = -lsocket -lnsl -lresolv -ldl
# This hardcodes in the executable programs the directory to find
# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), UNIXWARE)
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH),BSD_OS)
@@ -247,7 +251,7 @@ ifeq ($(AIX_PRE_4_2),1)
$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
@$(MAKE_OBJDIR)
rm -f $@ $(AIX_TMP)
- $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(DIST)/lib/libnspr$(NSPR_VERSION).a
+ $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(dist_libdir)/libnspr$(NSPR_VERSION).a
$(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
rm -f $(AIX_TMP)
@@ -275,16 +279,14 @@ ifeq ($(OS_TARGET),WIN16)
echo winsock.lib >>w16link
wlink @w16link.
else
-ifeq ($(OS_TARGET),OS2)
- $(LINK) $(LDOPTS) $< $(LIBGC) $(LIBPLC) $(LIBPR) so32dll.lib tcp32dll.lib -MAP:$(@:.exe=.map) -out:$@
-else
link $(LDOPTS) $< $(LIBGC) $(LIBPLC) $(LIBPR) wsock32.lib -out:$@
-endif
-endif
+else
+ifeq ($(OS_ARCH),OS2)
+ $(LINK) $(LDOPTS) $< $(LIBGC) $(LIBPLC) $(LIBPR) $(OS_LIBS) $(EXTRA_LIBS) -o $@
else
$(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBGC) $(LIBPLC) $(LIBPR) $(EXTRA_LIBS) -o $@
endif
-
+endif
endif
export:: $(TARGETS)
diff --git a/lib/prstreams/.cvsignore b/lib/prstreams/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/lib/prstreams/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lib/prstreams/Makefile b/lib/prstreams/Makefile
deleted file mode 100644
index a4718ed1..00000000
--- a/lib/prstreams/Makefile
+++ /dev/null
@@ -1,199 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
- ifeq ($(OS_RELEASE),4.1.3_U1)
- OPTIMIZER =
- else
- # The C++ compiler in Workshop 5.0 uses standard
- # iostreams as default. -library=iostream will
- # allow Workshop 5.0 to work with classic iostreams.
- ifndef NS_USE_GCC
- CCC_VERSION := $(shell $(CCC) -V 2>&1)
- ifneq (,$(findstring 5.0,$(CCC_VERSION)))
- CCC_ONLY_FLAGS += -library=iostream
- endif
- endif
- endif
-endif
-
-ifeq ($(OS_ARCH), IRIX)
- ifneq ($(OS_RELEASE),5.3)
- CCC_ONLY_FLAGS += -exceptions
- endif
-endif
-
-ifeq ($(OS_ARCH), BeOS)
- CFLAGS += -frtti -fexceptions
-endif
-
-INCLUDES = -I$(DIST)/include
-
-HEADERS = $(wildcard *.h)
-
-CSRCS = \
- plvrsion.c \
- $(NULL)
-
-CXXSRCS = \
- prstrms.cpp \
- $(NULL)
-
-OBJS = $(addprefix $(OBJDIR)/,$(CSRCS:.c=.$(OBJ_SUFFIX)) $(CXXSRCS:.cpp=.$(OBJ_SUFFIX)))
-
-ifeq ($(OS_ARCH), WINNT)
- ifeq ($(OS_TARGET), WIN16)
- EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).lib
- else
- DLLBASE=/BASE:0x30000000
- RES=$(OBJDIR)/prstrms.res
- RESNAME=prstrms.rc
- OS_LIBS = user32.lib
- ifeq ($(OS_TARGET), WIN95)
- EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).lib
- else
- EXTRA_LIBS = $(DIST)/lib/libnspr$(MOD_VERSION).lib
- endif
- endif
-else
- ifeq ($(OS_ARCH),OS2)
- ifeq ($(MOZ_OS2_TOOLS),VACPP)
- EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).$(LIB_SUFFIX)
- else
- EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION) -lstdcpp
- endif
- else
- ifeq ($(OS_ARCH), AIX)
- ifeq ($(OS_RELEASE), 4.1)
- ifeq ($(CLASSIC_NSPR),1)
- OS_LIBS += -lC -lc
- else
- OS_LIBS += -lC_r -lc_r
- endif
- else
- # makeC++SharedLib(_r) is in either /usr/lpp/xlC/bin
- # or /usr/ibmcxx/bin.
- ifeq ($(CLASSIC_NSPR),1)
- MKSHLIB = makeC++SharedLib -p 0
- else
- MKSHLIB = makeC++SharedLib_r -p 0
- endif
- OS_LIBS += -ldl
- endif
- endif
- ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
- EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)_shr
- else
- EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)
- endif
-endif
-endif
-
-# On NCR and SCOOS, we can't link with extra libraries when
-# we build a shared library. If we do so, the linker doesn't
-# complain, but we would run into weird problems at run-time.
-# Therefore on these platforms, we link just the object files.
-ifeq ($(OS_ARCH),NCR)
- EXTRA_LIBS =
-endif
-ifeq ($(OS_ARCH),SCOOS)
- EXTRA_LIBS =
-endif
-ifeq ($(OS_ARCH),BeOS)
- EXTRA_LIBS = -lstdc++.r4 -L$(DIST)/lib -lnspr$(MOD_VERSION)
-endif
-
-ifeq ($(OS_ARCH), UNIXWARE)
- OS_LIBS += -lC
-endif
-
-LIBRARY_NAME = prstrms
-LIBRARY_VERSION = $(MOD_VERSION)
-
-RELEASE_HEADERS = $(HEADERS)
-RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)
-RELEASE_LIBS = $(TARGETS)
-
-include $(MOD_DEPTH)/config/rules.mk
-
-#
-# Version information generation (begin)
-#
-ECHO = echo
-TINC = $(OBJDIR)/_pl_bld.h
-PROD = $(notdir $(SHARED_LIBRARY))
-NOW = $(MOD_DEPTH)/config/$(OBJDIR)/now
-SH_DATE = $(shell date)
-SH_NOW = $(shell $(NOW))
-
-ifeq ($(OS_ARCH), WINNT)
- SUF = i64
-else
- SUF = LL
-endif
-
-$(TINC):
- @$(MAKE_OBJDIR)
- @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
- @if test ! -z "$(SH_NOW)"; then \
- $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \
- else \
- true; \
- fi
- @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC)
-
-
-$(OBJDIR)/plvrsion.$(OBJ_SUFFIX): plvrsion.c $(TINC)
-ifeq ($(OS_ARCH), WINNT)
- $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) plvrsion.c
-else
-ifeq ($(MOZ_OS2_TOOLS), VACPP)
- $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) plvrsion.c
-else
- $(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) plvrsion.c
-endif
-endif
-#
-# Version information generation (end)
-#
-
-export:: $(TARGETS) $(HEADERS)
- $(INSTALL) -m 444 $(HEADERS) $(DIST)/include
- $(INSTALL) -m 444 $(TARGETS) $(DIST)/lib
-ifeq ($(OS_ARCH),OS2)
- $(INSTALL) -m 444 $(TARGETS) $(DIST)/bin
-endif
-ifeq ($(OS_ARCH),HP-UX)
-ifdef SHARED_LIBRARY
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/lib
-endif
-endif
-ifeq ($(OS_ARCH),OpenVMS)
- $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/lib
-ifdef SHARED_LIBRARY
- $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(DIST)/lib
-endif
-endif
-
-install:: export
diff --git a/lib/prstreams/Makefile.in b/lib/prstreams/Makefile.in
index 8e64814b..7bfc3358 100644
--- a/lib/prstreams/Makefile.in
+++ b/lib/prstreams/Makefile.in
@@ -26,36 +26,34 @@ include $(MOD_DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/config.mk
-ifndef USE_AUTOCONF
# Disable optimization of the nspr on SunOS4.1.3
ifeq ($(OS_ARCH),SunOS)
ifeq ($(OS_RELEASE),4.1.3_U1)
OPTIMIZER =
else
- # The C++ compiler in Workshop 5.0 uses standard
- # iostreams as default. -library=iostream will
- # allow Workshop 5.0 to work with classic iostreams.
- ifndef NS_USE_GCC
- CCC_VERSION := $(shell $(CCC) -V 2>&1)
- ifneq (,$(findstring 5.0,$(CCC_VERSION)))
- CCC_ONLY_FLAGS += -library=iostream
- endif
- endif
+ # The C++ compiler in Workshop 5.0 uses standard
+ # iostreams as default. -library=iostream will
+ # allow Workshop 5.0 to work with classic iostreams.
+ ifndef NS_USE_GCC
+ CCC_VERSION := $(shell $(CCC) -V 2>&1)
+ ifneq (,$(findstring 5.0,$(CCC_VERSION)))
+ CCC_ONLY_FLAGS += -library=iostream
+ endif
+ endif
endif
endif
ifeq ($(OS_ARCH), IRIX)
ifneq ($(OS_RELEASE),5.3)
- CCC_ONLY_FLAGS += -exceptions
+ CCC_ONLY_FLAGS += -exceptions
endif
endif
ifeq ($(OS_ARCH), BeOS)
CFLAGS += -frtti -fexceptions
endif
-endif # !USE_AUTOCONF
-INCLUDES = -I$(DIST)/include
+INCLUDES = -I$(dist_includedir)
HEADERS = $(wildcard $(srcdir)/*.h)
@@ -69,21 +67,19 @@ CXXSRCS = \
OBJS = $(addprefix $(OBJDIR)/,$(CSRCS:.c=.$(OBJ_SUFFIX)) $(CXXSRCS:.cpp=.$(OBJ_SUFFIX)))
-ifndef USE_AUTOCONF
+LIBRARY_NAME = prstrms
+LIBRARY_VERSION = $(MOD_MAJOR_VERSION)
+
+RELEASE_HEADERS = $(HEADERS)
+RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)
+RELEASE_LIBS = $(TARGETS)
+
+include $(topsrcdir)/config/rules.mk
+
ifeq ($(OS_ARCH), WINNT)
- ifeq (,$(filter-out WIN16 OS2,$(OS_TARGET)))
- EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).lib
- else
- DLLBASE=/BASE:0x30000000
+ DLLBASE=/BASE:0x30000000
RES=$(OBJDIR)/prstrms.res
RESNAME=prstrms.rc
- OS_LIBS = user32.lib
- ifeq ($(OS_TARGET), WIN95)
- EXTRA_LIBS = $(DIST)/lib/nspr$(MOD_VERSION).lib
- else
- EXTRA_LIBS = $(DIST)/lib/libnspr$(MOD_VERSION).lib
- endif
- endif
else
ifeq ($(OS_ARCH), AIX)
ifeq ($(OS_RELEASE), 4.1)
@@ -103,11 +99,6 @@ else
OS_LIBS += -ldl
endif
endif
- ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
- EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)_shr
- else
- EXTRA_LIBS = -L$(DIST)/lib -lnspr$(MOD_VERSION)
- endif
endif
# On NCR and SCOOS, we can't link with extra libraries when
@@ -121,26 +112,23 @@ ifeq ($(OS_ARCH),SCOOS)
EXTRA_LIBS =
endif
ifeq ($(OS_ARCH),BeOS)
- EXTRA_LIBS = -lstdc++.r4 -L$(DIST)/lib -lnspr$(MOD_VERSION)
+ EXTRA_LIBS = -lstdc++.r4 -L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)
endif
ifeq ($(OS_ARCH), UNIXWARE)
OS_LIBS += -lC
endif
-endif # !USE_AUTOCONF
-ifdef RESOLVE_LINK_SYMBOLS
-EXTRA_LIBS := -L$(DIST)/lib -lnspr$(MOD_VERSION)
+ifeq ($(OS_ARCH),WINNT)
+OS_LIBS += user32.lib
endif
-LIBRARY_NAME = prstrms
-LIBRARY_VERSION = $(MOD_VERSION)
+EXTRA_LIBS = $(LIBNSPR)
-RELEASE_HEADERS = $(HEADERS)
-RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)
-RELEASE_LIBS = $(TARGETS)
+ifdef RESOLVE_LINK_SYMBOLS
+EXTRA_LIBS += $(OS_LIBS)
+endif
-include $(topsrcdir)/config/rules.mk
#
# Version information generation (begin)
@@ -153,11 +141,7 @@ SH_DATE = $(shell date)
SH_NOW = $(shell $(NOW))
ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET),OS2)
- SUF =
-else
SUF = i64
-endif
else
SUF = LL
endif
@@ -175,31 +159,34 @@ $(TINC):
$(OBJDIR)/plvrsion.$(OBJ_SUFFIX): plvrsion.c $(TINC)
ifeq ($(OS_ARCH), WINNT)
-ifdef XP_OS2_EMX
$(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) $<
else
+ifeq ($(MOZ_OS2_TOOLS), VACPP)
$(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) $<
-endif
else
$(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) $<
endif
+endif
#
# Version information generation (end)
#
export:: $(TARGETS) $(HEADERS)
- $(INSTALL) -m 444 $(HEADERS) $(DIST)/include
- $(INSTALL) -m 444 $(TARGETS) $(DIST)/lib
+ $(INSTALL) -m 444 $(HEADERS) $(dist_includedir)
+ $(INSTALL) -m 444 $(TARGETS) $(dist_libdir)
+ifeq ($(OS_ARCH),OS2)
+ $(INSTALL) -m 444 $(TARGETS) $(dist_bindir)
+endif
ifeq ($(OS_ARCH),HP-UX)
ifdef SHARED_LIBRARY
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/lib
+ $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_libdir)
endif
endif
ifeq ($(OS_ARCH),OpenVMS)
- $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/lib
+ $(INSTALL) -m 444 $(SHARED_LIBRARY) $(dist_libdir)
ifdef SHARED_LIBRARY
- $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(DIST)/lib
+ $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(dist_libdir)
+ $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(dist_bindir)
endif
endif
-install:: export
diff --git a/lib/prstreams/tests/testprstrm/.cvsignore b/lib/prstreams/tests/testprstrm/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/lib/prstreams/tests/testprstrm/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lib/prstreams/tests/testprstrm/Makefile b/lib/prstreams/tests/testprstrm/Makefile
deleted file mode 100644
index a14e1878..00000000
--- a/lib/prstreams/tests/testprstrm/Makefile
+++ /dev/null
@@ -1,230 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-ifeq ($(OS_TARGET), WIN16)
-OS_CFLAGS = $(OS_EXE_CFLAGS)
-endif
-
-CXXSRCS = \
- testprstrm.cpp \
- $(NULL)
-
-OBJS = $(addprefix $(OBJDIR)/,$(CXXSRCS:.cpp=.$(OBJ_SUFFIX)))
-
-ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
-PROG_SUFFIX = .exe
-else
-PROG_SUFFIX =
-endif
-
-PROGS = $(addprefix $(OBJDIR)/, $(CXXSRCS:.cpp=$(PROG_SUFFIX)))
-
-TARGETS = $(PROGS) $(OBJS)
-
-INCLUDES = -I$(DIST)/include
-
-# Setting the variables LDOPTS and LIBPR. We first initialize
-# them to the default values, then adjust them for some platforms.
-LDOPTS = -L$(DIST)/lib
-LIBPR = -lnspr$(MOD_VERSION)
-LIBPRSTRMS = -lprstrms$(MOD_VERSION)
-
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET), WIN16)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPRSTRMS = $(DIST)/lib/prstrms$(MOD_VERSION).lib
-else
- LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
- ifeq ($(OS_TARGET), WIN95)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPRSTRMS = $(DIST)/lib/prstrms$(MOD_VERSION).$(LIB_SUFFIX)
- else
- LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPRSTRMS = $(DIST)/lib/libprstrms$(MOD_VERSION).$(LIB_SUFFIX)
- endif
-endif
-endif
-
-ifeq ($(OS_ARCH),OS2)
- ifeq ($(MOZ_OS2_TOOLS),VACPP)
- LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO /S:32768
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPRSTRMS = $(DIST)/lib/prstrms$(MOD_VERSION).$(LIB_SUFFIX)
- else
- LDOPTS += -Zomf -Zlinker /PM:VIO -lstdcpp
- endif
-endif
-
-ifneq ($(OS_ARCH), WINNT)
-PWD = $(shell pwd)
-endif
-
-ifeq ($(OS_ARCH), IRIX)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), OSF1)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), HP-UX)
-LDOPTS += -Wl,+s,+b,$(PWD)/$(DIST)/lib
-endif
-
-# AIX
-ifeq ($(OS_ARCH),AIX)
-LDOPTS += -blibpath:$(PWD)/$(DIST)/lib:/usr/lib:/lib
-ifeq ($(OS_ARCH)$(OS_RELEASE),AIX4.1)
-LIBPR = -lnspr$(MOD_VERSION)_shr
-LIBPRSTRMS = -lprstrms$(MOD_VERSION)_shr
-else
-LDOPTS += -brtl
-EXTRA_LIBS = -ldl
-endif
-endif
-
-# Solaris
-ifeq ($(OS_ARCH), SunOS)
-ifneq ($(OS_RELEASE), 4.1.3_U1)
-ifdef NS_USE_GCC
-LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(DIST)/lib
-else
-LDOPTS += -R $(PWD)/$(DIST)/lib
-# CC on SunOS 5.4 and 5.5.x need to link with -lthread or -lpthread
-# (or use the -mt switch) even though we already linked with these
-# system libraries when we built libnspr.so.
-ifdef USE_PTHREADS
-EXTRA_LIBS = -lpthread
-else
-EXTRA_LIBS = -lthread
-endif # USE_PTHREADS
-endif # NS_USE_GCC
-endif # 4.1.3_U1
-endif # SunOS
-
-ifeq ($(OS_ARCH), NCR)
-# XXX: We see some strange problems when we link with libnspr.so.
-# So for now we use static libraries on NCR. The shared library
-# stuff below is commented out.
-LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).a
-LIBPRSTRMS = $(DIST)/lib/libprstrms$(MOD_VERSION).a
-EXTRA_LIBS = -lsocket -lnsl -ldl
-
-# NCR needs to link against -lsocket -lnsl (and -lc, which is linked
-# implicitly by $(CC)) again even though we already linked with these
-# system libraries when we built libnspr.so.
-#EXTRA_LIBS = -lsocket -lnsl
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-#export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), SCOOS)
-# SCO Unix needs to link against -lsocket again even though we
-# already linked with these system libraries when we built libnspr.so.
-EXTRA_LIBS = -lsocket
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), UNIXWARE)
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-#####################################################
-#
-# The rules
-#
-#####################################################
-
-include $(MOD_DEPTH)/config/rules.mk
-
-AIX_PRE_4_2 = 0
-ifeq ($(OS_ARCH),AIX)
-ifneq ($(OS_RELEASE),4.2)
-ifneq ($(USE_PTHREADS), 1)
-#AIX_PRE_4_2 = 1
-endif
-endif
-endif
-
-ifeq ($(AIX_PRE_4_2),1)
-
-# AIX releases prior to 4.2 need a special two-step linking hack
-# in order to both override the system select() and be able to
-# get at the original system select().
-#
-# We use a pattern rule in ns/nspr20/config/rules.mk to generate
-# the .$(OBJ_SUFFIX) file from the .c source file, then do the
-# two-step linking hack below.
-
-$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
- rm -f $@ $(AIX_TMP)
- $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(DIST)/lib/libnspr$(MOD_VERSION).a
- $(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
- rm -f $(AIX_TMP)
-
-else
-
-# All platforms that are not AIX pre-4.2.
-
-$(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET),WIN16)
- echo system windows >w16link
- echo option map >>w16link
- echo option stack=10K >>w16link
- echo option heapsize=32K >>w16link
- echo debug $(DEBUGTYPE) all >>w16link
- echo name $@ >>w16link
- echo file >>w16link
- echo $< >>w16link
- echo library >>w16link
- echo $(LIBPR), >>w16link
- echo $(LIBPRSTRMS), >>w16link
- echo winsock.lib >>w16link
- wlink @w16link.
-else
- link $(LDOPTS) $< $(LIBPR) $(LIBPRSTRMS) wsock32.lib -out:$@
-endif
-else
-ifeq ($(OS_ARCH),OS2)
- $(LINK) $(EXEFLAGS) $(LDOPTS) $< $(LIBPR) $(LIBPRSTRMS) $(OS_LIBS) $(EXTRA_LIBS)
-else
- $(CCC) $(XCFLAGS) $< $(LDOPTS) $(LIBPR) $(LIBPRSTRMS) $(EXTRA_LIBS) -o $@
-endif
-endif
-endif
-
-export:: $(TARGETS)
-install:: export
-clean::
- rm -f $(TARGETS)
-
-testlinker:
- echo $(LINK)
diff --git a/lib/prstreams/tests/testprstrm/Makefile.in b/lib/prstreams/tests/testprstrm/Makefile.in
index d71ab690..8c1f938f 100644
--- a/lib/prstreams/tests/testprstrm/Makefile.in
+++ b/lib/prstreams/tests/testprstrm/Makefile.in
@@ -36,7 +36,7 @@ CXXSRCS = \
OBJS = $(addprefix $(OBJDIR)/,$(CXXSRCS:.cpp=.$(OBJ_SUFFIX)))
-ifeq ($(OS_ARCH), WINNT)
+ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
PROG_SUFFIX = .exe
else
PROG_SUFFIX =
@@ -46,52 +46,62 @@ PROGS = $(addprefix $(OBJDIR)/, $(CXXSRCS:.cpp=$(PROG_SUFFIX)))
TARGETS = $(PROGS) $(OBJS)
-INCLUDES = -I$(DIST)/include
+INCLUDES = -I$(dist_includedir)
# Setting the variables LDOPTS and LIBPR. We first initialize
# them to the default values, then adjust them for some platforms.
-LDOPTS = -L$(DIST)/lib
-LIBPR = -lnspr$(MOD_VERSION)
-LIBPRSTRMS = -lprstrms$(MOD_VERSION)
+LDOPTS = -L$(dist_libdir)
+LIBPR = -lnspr$(MOD_MAJOR_VERSION)
+LIBPRSTRMS = -lprstrms$(MOD_MAJOR_VERSION)
ifeq ($(OS_ARCH), WINNT)
ifeq ($(OS_TARGET), WIN16)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPRSTRMS = $(DIST)/lib/prstrms$(MOD_VERSION).lib
+ LIBPR = $(dist_libdir)/nspr$(MOD_MAJOR_VERSION).lib
+ LIBPRSTRMS = $(dist_libdir)/prstrms$(MOD_MAJOR_VERSION).lib
else
LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
ifeq ($(OS_TARGET), WIN95)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPRSTRMS = $(DIST)/lib/prstrms$(MOD_VERSION).$(LIB_SUFFIX)
+ LIBPR = $(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
+ LIBPRSTRMS = $(dist_libdir)/prstrms$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
else
- LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPRSTRMS = $(DIST)/lib/libprstrms$(MOD_VERSION).$(LIB_SUFFIX)
+ LIBPR = $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
+ LIBPRSTRMS = $(dist_libdir)/libprstrms$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
endif
endif
endif
+ifeq ($(OS_ARCH),OS2)
+ ifeq ($(MOZ_OS2_TOOLS),VACPP)
+ LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO /S:32768
+ LIBPR = $(dist_libdir)/nspr$(MOD_MAJOR_VERSION).lib
+ LIBPRSTRMS = $(dist_libdir)/prstrms$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
+ else
+ LDOPTS += -Zomf -Zlinker /PM:VIO -lstdcpp
+ endif
+endif
+
ifneq ($(OS_ARCH), WINNT)
PWD = $(shell pwd)
endif
ifeq ($(OS_ARCH), IRIX)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib
+LDOPTS += -rpath $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), OSF1)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib
+LDOPTS += -rpath $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), HP-UX)
-LDOPTS += -Wl,+s,+b,$(PWD)/$(DIST)/lib
+LDOPTS += -Wl,+s,+b,$(PWD)/$(dist_libdir)
endif
# AIX
ifeq ($(OS_ARCH),AIX)
-LDOPTS += -blibpath:$(PWD)/$(DIST)/lib:/usr/lib:/lib
+LDOPTS += -blibpath:$(PWD)/$(dist_libdir):/usr/lib:/lib
ifeq ($(OS_ARCH)$(OS_RELEASE),AIX4.1)
-LIBPR = -lnspr$(MOD_VERSION)_shr
-LIBPRSTRMS = -lprstrms$(MOD_VERSION)_shr
+LIBPR = -lnspr$(MOD_MAJOR_VERSION)_shr
+LIBPRSTRMS = -lprstrms$(MOD_MAJOR_VERSION)_shr
else
LDOPTS += -brtl
EXTRA_LIBS = -ldl
@@ -102,9 +112,9 @@ endif
ifeq ($(OS_ARCH), SunOS)
ifneq ($(OS_RELEASE), 4.1.3_U1)
ifdef NS_USE_GCC
-LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(DIST)/lib
+LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(dist_libdir)
else
-LDOPTS += -R $(PWD)/$(DIST)/lib
+LDOPTS += -R $(PWD)/$(dist_libdir)
# CC on SunOS 5.4 and 5.5.x need to link with -lthread or -lpthread
# (or use the -mt switch) even though we already linked with these
# system libraries when we built libnspr.so.
@@ -121,8 +131,8 @@ ifeq ($(OS_ARCH), NCR)
# XXX: We see some strange problems when we link with libnspr.so.
# So for now we use static libraries on NCR. The shared library
# stuff below is commented out.
-LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).a
-LIBPRSTRMS = $(DIST)/lib/libprstrms$(MOD_VERSION).a
+LIBPR = $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).a
+LIBPRSTRMS = $(dist_libdir)/libprstrms$(MOD_MAJOR_VERSION).a
EXTRA_LIBS = -lsocket -lnsl -ldl
# NCR needs to link against -lsocket -lnsl (and -lc, which is linked
@@ -132,7 +142,7 @@ EXTRA_LIBS = -lsocket -lnsl -ldl
# This hardcodes in the executable programs the directory to find
# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
# option for ld on other platforms.
-#export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+#export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), SCOOS)
@@ -142,11 +152,11 @@ EXTRA_LIBS = -lsocket
# This hardcodes in the executable programs the directory to find
# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), UNIXWARE)
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
#####################################################
@@ -179,7 +189,7 @@ ifeq ($(AIX_PRE_4_2),1)
$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
@$(MAKE_OBJDIR)
rm -f $@ $(AIX_TMP)
- $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(DIST)/lib/libnspr$(MOD_VERSION).a
+ $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).a
$(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
rm -f $(AIX_TMP)
@@ -208,12 +218,17 @@ else
link $(LDOPTS) $< $(LIBPR) $(LIBPRSTRMS) wsock32.lib -out:$@
endif
else
+ifeq ($(OS_ARCH),OS2)
+ $(LINK) $(EXEFLAGS) $(LDOPTS) $< $(LIBPR) $(LIBPRSTRMS) $(OS_LIBS) $(EXTRA_LIBS)
+else
$(CCC) $(XCFLAGS) $< $(LDOPTS) $(LIBPR) $(LIBPRSTRMS) $(EXTRA_LIBS) -o $@
endif
-
+endif
endif
export:: $(TARGETS)
-install:: export
clean::
rm -f $(TARGETS)
+
+testlinker:
+ echo $(LINK)
diff --git a/lib/tests/.cvsignore b/lib/tests/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/lib/tests/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lib/tests/Makefile b/lib/tests/Makefile
deleted file mode 100644
index 5cafffa3..00000000
--- a/lib/tests/Makefile
+++ /dev/null
@@ -1,235 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-ifeq ($(OS_ARCH), WINNT)
-DIRS = windows
-endif
-
-ifeq ($(OS_TARGET), WIN16)
-OS_CFLAGS = $(OS_EXE_CFLAGS)
-endif
-
-CSRCS = \
- string.c \
- event.c \
- base64t.c
-
-ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
-CSRCS += arena.c
-endif
-
-ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
-PROG_SUFFIX = .exe
-else
-PROG_SUFFIX =
-endif
-
-PROGS = $(addprefix $(OBJDIR)/, $(CSRCS:.c=$(PROG_SUFFIX)))
-
-TARGETS = $(PROGS) $(OBJS)
-
-INCLUDES = -I$(DIST)/include
-
-# Setting the variables LDOPTS and LIBPR. We first initialize
-# them to the default values, then adjust them for some platforms.
-LDOPTS = -L$(DIST)/lib
-LIBPR = -lnspr$(MOD_VERSION)
-LIBPLC = -lplc$(MOD_VERSION)
-LIBPLDS = -lplds$(MOD_VERSION)
-
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET), WIN16)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPLC= $(DIST)/lib/plc$(MOD_VERSION).lib
- LIBPLDS= $(DIST)/lib/plds$(MOD_VERSION).lib
-else
- LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
- ifeq ($(OS_TARGET), WIN95)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPLC= $(DIST)/lib/plc$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPLDS= $(DIST)/lib/plds$(MOD_VERSION).$(LIB_SUFFIX)
- else
- LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPLC= $(DIST)/lib/libplc$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPLDS= $(DIST)/lib/libplds$(MOD_VERSION).$(LIB_SUFFIX)
- endif
-endif
-endif
-
-ifeq ($(OS_ARCH),OS2)
- ifeq ($(MOZ_OS2_TOOLS),VACPP)
- LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO /S:32768
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPLC = $(DIST)/lib/plc$(MOD_VERSION).lib
- LIBPLDS= $(DIST)/lib/plds$(MOD_VERSION).$(LIB_SUFFIX)
- else
- LDOPTS += -Zomf -Zlinker /PM:VIO
- endif
-endif
-
-ifneq ($(OS_ARCH), WINNT)
-PWD = $(shell pwd)
-endif
-
-ifeq ($(OS_ARCH), IRIX)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), Linux)
- ifeq ($(OS_RELEASE), 1.2)
- EXTRA_LIBS = -ldl
- else
- LDOPTS += -Xlinker -rpath $(PWD)/$(DIST)/lib
- ifeq ($(USE_PTHREADS),1)
- EXTRA_LIBS = -lpthread
- endif
- endif
-endif
-
-ifeq ($(OS_ARCH), OSF1)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib -lpthread
-endif
-
-ifeq ($(OS_ARCH), HP-UX)
-LDOPTS += -Wl,+s,+b,$(PWD)/$(DIST)/lib
-endif
-
-# AIX
-ifeq ($(OS_ARCH),AIX)
-LDOPTS += -blibpath:$(PWD)/$(DIST)/lib:/usr/lib:/lib
-LIBPR = -lnspr$(MOD_VERSION)_shr
-LIBPLC = -lplc$(MOD_VERSION)_shr
-endif
-
-# Solaris
-ifeq ($(OS_ARCH), SunOS)
-ifneq ($(OS_RELEASE), 4.1.3_U1)
-ifdef NS_USE_GCC
-LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(DIST)/lib
-else
-LDOPTS += -R $(PWD)/$(DIST)/lib
-endif
-endif
-
-# SunOS 5.4 and 5.5 need to link with -lthread or -lpthread,
-# even though we already linked with these system libraries
-# when we built libnspr.so.
-ifeq ($(OS_RELEASE), 5.4)
-EXTRA_LIBS = -lthread
-endif
-
-ifeq ($(OS_RELEASE), 5.5)
-ifdef USE_PTHREADS
-EXTRA_LIBS = -lpthread
-else
-EXTRA_LIBS = -lthread
-endif
-endif
-endif # SunOS
-
-ifeq ($(OS_ARCH), NCR)
-# NCR needs to link against -lsocket -lnsl (and -lc, which is linked
-# implicitly by $(CC)) again even though we already linked with these
-# system libraries when we built libnspr.so.
-EXTRA_LIBS = -lsocket -lnsl
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-#####################################################
-#
-# The rules
-#
-#####################################################
-
-include $(MOD_DEPTH)/config/rules.mk
-
-AIX_PRE_4_2 = 0
-ifeq ($(OS_ARCH),AIX)
-ifneq ($(OS_RELEASE),4.2)
-ifneq ($(USE_PTHREADS), 1)
-#AIX_PRE_4_2 = 1
-endif
-endif
-endif
-
-ifeq ($(AIX_PRE_4_2),1)
-
-# AIX releases prior to 4.2 need a special two-step linking hack
-# in order to both override the system select() and be able to
-# get at the original system select().
-#
-# We use a pattern rule in ns/nspr20/config/rules.mk to generate
-# the .$(OBJ_SUFFIX) file from the .c source file, then do the
-# two-step linking hack below.
-
-$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
- rm -f $@ $(AIX_TMP)
- $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(DIST)/lib/libnspr$(MOD_VERSION).a
- $(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
- rm -f $(AIX_TMP)
-
-else
-
-# All platforms that are not AIX pre-4.2.
-
-$(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
-
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET),WIN16)
- echo system windows >w16link
- echo option map >>w16link
- echo option stack=10K >>w16link
- echo option heapsize=32K >>w16link
- echo debug $(DEBUGTYPE) all >>w16link
- echo name $@ >>w16link
- echo file >>w16link
- echo $< >>w16link
- echo library >>w16link
- echo $(LIBPR), >>w16link
- echo $(LIBPLC), >>w16link
- echo winsock.lib >>w16link
- wlink @w16link.
-else
- link $(LDOPTS) $< $(LIBPLC) $(LIBPLDS) $(LIBPR) wsock32.lib -out:$@
-endif
-else
-ifeq ($(OS_ARCH),OS2)
- $(LINK) $(EXEFLAGS) $(LDOPTS) $< $(LIBPLC) $(LIBPLDS) $(LIBPR) $(OS_LIBS) $(EXTRA_LIBS)
-else
- $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPLDS) $(LIBPR) $(EXTRA_LIBS) -o $@
-endif
-endif
-endif
-
-export:: $(TARGETS)
-install:: export
-clean::
- rm -f $(TARGETS)
-
-
-
diff --git a/lib/tests/Makefile.in b/lib/tests/Makefile.in
index a2c8bb36..99b86089 100644
--- a/lib/tests/Makefile.in
+++ b/lib/tests/Makefile.in
@@ -39,7 +39,11 @@ CSRCS = \
event.c \
base64t.c
-ifeq ($(OS_ARCH), WINNT)
+ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
+CSRCS += arena.c
+endif
+
+ifeq (,$(filter-out WINNT OS2,$(OS_ARCH))
PROG_SUFFIX = .exe
else
PROG_SUFFIX =
@@ -49,47 +53,58 @@ PROGS = $(addprefix $(OBJDIR)/, $(CSRCS:.c=$(PROG_SUFFIX)))
TARGETS = $(PROGS) $(OBJS)
-INCLUDES = -I$(DIST)/include
+INCLUDES = -I$(dist_includedir)
# Setting the variables LDOPTS and LIBPR. We first initialize
# them to the default values, then adjust them for some platforms.
-LDOPTS = -L$(DIST)/lib
-LIBPR = -lnspr$(MOD_VERSION)
-LIBPLC = -lplc$(MOD_VERSION)
-LIBPLDS = -lplds$(MOD_VERSION)
+LDOPTS = -L$(dist_libdir)
+LIBPR = -lnspr$(MOD_MAJOR_VERSION)
+LIBPLC = -lplc$(MOD_MAJOR_VERSION)
+LIBPLDS = -lplds$(MOD_MAJOR_VERSION)
ifeq ($(OS_ARCH), WINNT)
ifeq ($(OS_TARGET), WIN16)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPLC= $(DIST)/lib/plc$(MOD_VERSION).lib
- LIBPLDS= $(DIST)/lib/plds$(MOD_VERSION).lib
+ LIBPR = $(dist_libdir)/nspr$(MOD_MAJOR_VERSION).lib
+ LIBPLC= $(dist_libdir)/plc$(MOD_MAJOR_VERSION).lib
+ LIBPLDS= $(dist_libdir)/plds$(MOD_MAJOR_VERSION).lib
else
LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
ifeq ($(OS_TARGET), WIN95)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPLC= $(DIST)/lib/plc$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPLDS= $(DIST)/lib/plds$(MOD_VERSION).$(LIB_SUFFIX)
+ LIBPR = $(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
+ LIBPLC= $(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
+ LIBPLDS= $(dist_libdir)/plds$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
else
- LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPLC= $(DIST)/lib/libplc$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPLDS= $(DIST)/lib/libplds$(MOD_VERSION).$(LIB_SUFFIX)
+ LIBPR = $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
+ LIBPLC= $(dist_libdir)/libplc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
+ LIBPLDS= $(dist_libdir)/libplds$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
endif
endif
endif
+ifeq ($(OS_ARCH),OS2)
+ ifeq ($(MOZ_OS2_TOOLS),VACPP)
+ LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO /S:32768
+ LIBPR = $(dist_libdir)/nspr$(MOD_MAJOR_VERSION).lib
+ LIBPLC = $(dist_libdir)/plc$(MOD_MAJOR_VERSION).lib
+ LIBPLDS= $(dist_libdir)/plds$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
+ else
+ LDOPTS += -Zomf -Zlinker /PM:VIO
+ endif
+endif
+
ifneq ($(OS_ARCH), WINNT)
PWD = $(shell pwd)
endif
ifeq ($(OS_ARCH), IRIX)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib
+LDOPTS += -rpath $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), Linux)
ifeq ($(OS_RELEASE), 1.2)
EXTRA_LIBS = -ldl
else
- LDOPTS += -Xlinker -rpath $(PWD)/$(DIST)/lib
+ LDOPTS += -Xlinker -rpath $(PWD)/$(dist_libdir)
ifeq ($(USE_PTHREADS),1)
EXTRA_LIBS = -lpthread
endif
@@ -97,27 +112,27 @@ ifeq ($(OS_ARCH), Linux)
endif
ifeq ($(OS_ARCH), OSF1)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib -lpthread
+LDOPTS += -rpath $(PWD)/$(dist_libdir) -lpthread
endif
ifeq ($(OS_ARCH), HP-UX)
-LDOPTS += -Wl,+s,+b,$(PWD)/$(DIST)/lib
+LDOPTS += -Wl,+s,+b,$(PWD)/$(dist_libdir)
endif
# AIX
ifeq ($(OS_ARCH),AIX)
-LDOPTS += -blibpath:$(PWD)/$(DIST)/lib:/usr/lib:/lib
-LIBPR = -lnspr$(MOD_VERSION)_shr
-LIBPLC = -lplc$(MOD_VERSION)_shr
+LDOPTS += -blibpath:$(PWD)/$(dist_libdir):/usr/lib:/lib
+LIBPR = -lnspr$(MOD_MAJOR_VERSION)_shr
+LIBPLC = -lplc$(MOD_MAJOR_VERSION)_shr
endif
# Solaris
ifeq ($(OS_ARCH), SunOS)
ifneq ($(OS_RELEASE), 4.1.3_U1)
ifdef NS_USE_GCC
-LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(DIST)/lib
+LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(dist_libdir)
else
-LDOPTS += -R $(PWD)/$(DIST)/lib
+LDOPTS += -R $(PWD)/$(dist_libdir)
endif
endif
@@ -145,7 +160,7 @@ EXTRA_LIBS = -lsocket -lnsl
# This hardcodes in the executable programs the directory to find
# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
#####################################################
@@ -178,7 +193,7 @@ ifeq ($(AIX_PRE_4_2),1)
$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
@$(MAKE_OBJDIR)
rm -f $@ $(AIX_TMP)
- $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(DIST)/lib/libnspr$(MOD_VERSION).a
+ $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).a
$(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
rm -f $(AIX_TMP)
@@ -208,13 +223,15 @@ else
link $(LDOPTS) $< $(LIBPLC) $(LIBPLDS) $(LIBPR) wsock32.lib -out:$@
endif
else
+ifeq ($(OS_ARCH),OS2)
+ $(LINK) $(EXEFLAGS) $(LDOPTS) $< $(LIBPLC) $(LIBPLDS) $(LIBPR) $(OS_LIBS) $(EXTRA_LIBS)
+else
$(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPLDS) $(LIBPR) $(EXTRA_LIBS) -o $@
endif
-
+endif
endif
export:: $(TARGETS)
-install:: export
clean::
rm -f $(TARGETS)
diff --git a/macbuild/NSPR20PPC.mcp b/macbuild/NSPR20PPC.mcp
index fa75d4da..a0a17543 100644
--- a/macbuild/NSPR20PPC.mcp
+++ b/macbuild/NSPR20PPC.mcp
Binary files differ
diff --git a/macbuild/NSPRCarbon.Prefix b/macbuild/NSPRCarbon.Prefix
new file mode 100644
index 00000000..d36f5663
--- /dev/null
+++ b/macbuild/NSPRCarbon.Prefix
@@ -0,0 +1,11 @@
+//
+// NSPR.Prefix
+//
+// Global prefix file for the non-debug NSPR project.
+//
+//
+
+
+#include "NSPRConfig.h"
+
+#define TARGET_CARBON 1
diff --git a/macbuild/NSPRCarbonDebug.Prefix b/macbuild/NSPRCarbonDebug.Prefix
new file mode 100644
index 00000000..4a67d9ef
--- /dev/null
+++ b/macbuild/NSPRCarbonDebug.Prefix
@@ -0,0 +1,12 @@
+//
+// NSPR.Prefix
+//
+// Global prefix file for the debug NSPR project.
+//
+//
+
+
+#define DEBUG 1
+#define DEVELOPER_DEBUG 1
+#include "NSPRConfig.h"
+#define TARGET_CARBON 1
diff --git a/macbuild/NSPRConfig.h b/macbuild/NSPRConfig.h
index 07a9783f..d63e59b9 100644
--- a/macbuild/NSPRConfig.h
+++ b/macbuild/NSPRConfig.h
@@ -24,4 +24,3 @@
#define FORCE_PR_LOG 1
#define NSPR20 1
#define NSPR_AS_SHARED_LIB
-
diff --git a/makefile.win b/makefile.win
deleted file mode 100644
index 5948366b..00000000
--- a/makefile.win
+++ /dev/null
@@ -1,105 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#
-# An NMAKE file to set up and adjust NSPR20's build system for
-# Client build. Client build should invoke NMAKE on this file
-# instead of invoking gmake directly.
-#
-
-DEPTH = ..
-include <$(DEPTH)\config\config.mak>
-
-#
-# Backslashes are escape characters to gmake, so flip all backslashes
-# in $(MOZ_TOOLS) to forward slashes and pass that to gmake.
-#
-
-GMAKE = $(MOZ_TOOLS)\bin\gmake.exe
-
-GMAKE_FLAGS = MOZ_TOOLS_FLIPPED=$(MOZ_TOOLS:\=/) PR_CLIENT_BUILD=1 PR_CLIENT_BUILD_WINDOWS=1
-
-#
-# The Client's debug build uses MSVC's debug runtime library (/MDd).
-#
-
-!ifdef MOZ_DEBUG
-!else
-GMAKE_FLAGS = $(GMAKE_FLAGS) BUILD_OPT=1
-!endif
-
-!if "$(MOZ_BITS)" == "16"
-GMAKE_FLAGS = $(GMAKE_FLAGS) OS_TARGET=WIN16
-!else
-
-GMAKE_FLAGS = $(GMAKE_FLAGS) OS_TARGET=WIN95
-!ifdef MOZ_DEBUG
-!ifdef MOZ_NO_DEBUG_RTL
-!IF "$(CPU)" == "ALPHA"
-PR_OBJDIR = WIN954.0ALPHA_DBG.OBJ
-!else
-PR_OBJDIR = WIN954.0_DBG.OBJ
-!endif
-!else
-GMAKE_FLAGS = $(GMAKE_FLAGS) USE_DEBUG_RTL=1
-!IF "$(CPU)" == "ALPHA"
-PR_OBJDIR = WIN954.0ALPHA_DBG.OBJD
-!else
-PR_OBJDIR = WIN954.0_DBG.OBJD
-!endif
-!endif
-!else
-!IF "$(CPU)" == "ALPHA"
-PR_OBJDIR = WIN954.0ALPHA_OPT.OBJ
-!else
-PR_OBJDIR = WIN954.0_OPT.OBJ
-!endif
-!endif
-
-!endif
-
-
-#
-# The rules. Simply invoke gmake with the same target.
-# The default target is 'all'. For Win16, set up the
-# environment to use the Watcom compiler, Watcom headers,
-# and Watcom libs.
-#
-
-all:: export libs install
-
-export libs install clobber clobber_all clean depend::
-!if "$(MOZ_BITS)" == "16"
- set PATH=%WATCPATH%
- set INCLUDE=%WATC_INC%
- set LIB=%WATC_LIB%
-!endif
- $(GMAKE) $(GMAKE_FLAGS) $@
-!if "$(MOZ_BITS)" == "16"
- set PATH=%MSVCPATH%
- set INCLUDE=%MSVC_INC%
- set LIB=%MSVC_LIB%
-!endif
-
-!if "$(MOZ_BITS)" != "16"
-export::
- $(MAKE_INSTALL) $(XPDIST)\$(PR_OBJDIR)\include\*.h $(DIST)\include
- $(MAKE_INSTALL) $(XPDIST)\$(PR_OBJDIR)\include\obsolete\*.h $(DIST)\include\obsolete
- $(MAKE_INSTALL) $(XPDIST)\$(PR_OBJDIR)\include\private\*.h $(DIST)\include\private
- $(MAKE_INSTALL) $(XPDIST)\$(PR_OBJDIR)\lib\*.lib $(DIST)\lib
- $(MAKE_INSTALL) $(XPDIST)\$(PR_OBJDIR)\lib\*.dll $(DIST)\bin
-!endif
diff --git a/pr/.cvsignore b/pr/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/Makefile b/pr/Makefile
deleted file mode 100644
index d56a49bd..00000000
--- a/pr/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ..
-
-DIRS = include src
-
-include $(MOD_DEPTH)/config/rules.mk
diff --git a/pr/include/.cvsignore b/pr/include/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/include/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/include/Makefile b/pr/include/Makefile
deleted file mode 100644
index 92fd718a..00000000
--- a/pr/include/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../..
-
-DIRS = md private obsolete
-
-include $(MOD_DEPTH)/config/config.mk
-
-HEADERS = $(wildcard *.h)
-
-RELEASE_HEADERS = $(HEADERS)
-RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(RELEASE_HEADERS)
- $(INSTALL) -m 444 $(RELEASE_HEADERS) $(DIST)/include
-ifeq ($(MOZ_BITS),16)
- $(INSTALL) -m 444 $(RELEASE_HEADERS) $(MOZ_INCL)
-endif
diff --git a/pr/include/Makefile.in b/pr/include/Makefile.in
index d3f4a846..7ef8196f 100644
--- a/pr/include/Makefile.in
+++ b/pr/include/Makefile.in
@@ -36,7 +36,4 @@ RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)
include $(topsrcdir)/config/rules.mk
export:: $(RELEASE_HEADERS)
- $(INSTALL) -m 444 $(RELEASE_HEADERS) $(DIST)/include
-ifeq ($(MOZ_BITS),16)
- $(INSTALL) -m 444 $(RELEASE_HEADERS) $(MOZ_INCL)
-endif
+ $(INSTALL) -m 444 $(RELEASE_HEADERS) $(dist_includedir)
diff --git a/pr/include/md/.cvsignore b/pr/include/md/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/include/md/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/include/md/Makefile b/pr/include/md/Makefile
deleted file mode 100644
index 08b0efc7..00000000
--- a/pr/include/md/Makefile
+++ /dev/null
@@ -1,189 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-HEADERS = $(wildcard *.h)
-
-include $(MOD_DEPTH)/config/rules.mk
-
-ifeq ($(OS_ARCH),IRIX)
-ifeq ($(USE_64), 1)
-MDCPUCFG_H = _irix64.cfg
-else
-MDCPUCFG_H = _irix32.cfg
-endif
-endif
-
-ifeq ($(OS_ARCH),WINNT)
-ifeq ($(OS_TARGET), WIN95)
-MDCPUCFG_H = _win95.cfg
-else
-ifeq ($(OS_TARGET), WIN16)
-MDCPUCFG_H = _win16.cfg
-else
-MDCPUCFG_H = _winnt.cfg
-endif
-endif
-endif
-
-ifeq ($(OS_ARCH),OS2)
-MDCPUCFG_H = _os2.cfg
-endif
-
-ifeq ($(OS_ARCH),AIX)
-ifeq ($(USE_64),1)
-MDCPUCFG_H = _aix64.cfg
-else
-ifeq ($(USE_IPV6),1)
-MDCPUCFG_H = _aix32in6.cfg
-else
-MDCPUCFG_H = _aix32.cfg
-endif
-endif
-endif
-
-ifeq ($(OS_ARCH),BSD_OS)
-MDCPUCFG_H = _bsdi.cfg
-endif
-
-ifeq ($(OS_ARCH),FreeBSD)
-MDCPUCFG_H = _freebsd.cfg
-endif
-
-ifeq ($(OS_ARCH),OpenBSD)
-MDCPUCFG_H = _openbsd.cfg
-endif
-
-ifeq ($(OS_ARCH),OpenVMS)
-MDCPUCFG_H = _openvms.cfg
-endif
-
-ifeq ($(OS_ARCH),NetBSD)
-MDCPUCFG_H = _netbsd.cfg
-endif
-
-ifeq ($(OS_ARCH),HP-UX)
-ifeq ($(USE_64), 1)
-MDCPUCFG_H = _hpux64.cfg
-else
-MDCPUCFG_H = _hpux32.cfg
-endif
-endif
-
-ifeq ($(OS_ARCH),Linux)
-MDCPUCFG_H = _linux.cfg
-endif
-
-ifeq ($(OS_ARCH),OSF1)
-MDCPUCFG_H = _osf1.cfg
-endif
-
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-MDCPUCFG_H = _sunos4.cfg
-else
-ifeq ($(USE_64),1)
-MDCPUCFG_H = _solaris64.cfg
-else
-MDCPUCFG_H = _solaris32.cfg
-endif
-endif
-endif
-
-ifeq ($(OS_ARCH),SINIX)
-MDCPUCFG_H = _reliantunix.cfg
-endif
-
-ifeq ($(OS_ARCH),Rhapsody)
-MDCPUCFG_H = _rhapsody.cfg
-endif
-
-ifeq ($(OS_ARCH),NEXTSTEP)
-MDCPUCFG_H = _nextstep.cfg
-endif
-
-ifeq ($(OS_ARCH),NEWS-OS)
-MDCPUCFG_H = _sony.cfg
-endif
-
-ifeq ($(OS_ARCH),NEC)
-MDCPUCFG_H = _nec.cfg
-endif
-
-ifeq ($(OS_ARCH),SCOOS)
-MDCPUCFG_H = _scoos.cfg
-endif
-
-ifeq ($(OS_ARCH),UNIXWARE)
-ifeq (,$(filter-out 2.1,$(OS_RELEASE)))
-MDCPUCFG_H = _unixware.cfg
-else
-MDCPUCFG_H = _unixware7.cfg
-endif
-endif
-
-ifeq ($(OS_ARCH),NCR)
-MDCPUCFG_H = _ncr.cfg
-endif
-
-ifeq ($(OS_ARCH),DGUX)
-MDCPUCFG_H = _dgux.cfg
-endif
-
-ifeq ($(OS_ARCH),QNX)
-MDCPUCFG_H = _qnx.cfg
-endif
-
-ifeq ($(OS_TARGET),NTO)
-MDCPUCFG_H = _nto.cfg
-endif
-
-ifeq ($(OS_ARCH),BeOS)
-MDCPUCFG_H = _beos.cfg
-endif
-
-export:: $(MDCPUCFG_H)
- $(INSTALL) -m 444 $(MDCPUCFG_H) $(DIST)/include
-ifeq ($(MOZ_BITS),16)
- cp $(DIST)/include/$(MDCPUCFG_H) $(DIST)/include/prcpucfg.h
- $(INSTALL) -m 444 $(MDCPUCFG_H) $(MOZ_INCL)
- mv -f $(DIST)/include/$(MDCPUCFG_H) $(MOZ_INCL)/prcpucfg.h
-else
-ifneq ($(OS_ARCH),OpenVMS)
- mv -f $(DIST)/include/$(MDCPUCFG_H) $(DIST)/include/prcpucfg.h
-else
-# mv'ing a link causes the file itself to move, not the link.
- rm -f $(DIST)/include/$(MDCPUCFG_H)
- rm -f $(DIST)/include/prcpucfg.h
- ln -fs `pwd`/$(MDCPUCFG_H) $(DIST)/include/prcpucfg.h
-endif
-endif
-
-release:: export
- @echo "Copying machine-dependent prcpucfg.h"
- @if test -z "$(BUILD_NUMBER)"; then \
- echo "BUILD_NUMBER must be defined"; \
- false; \
- fi
- @if test ! -d $(RELEASE_INCLUDE_DIR); then \
- rm -rf $(RELEASE_INCLUDE_DIR); \
- $(NSINSTALL) -D $(RELEASE_INCLUDE_DIR);\
- fi
- cp $(MDCPUCFG_H) $(RELEASE_INCLUDE_DIR)/prcpucfg.h
diff --git a/pr/include/md/Makefile.in b/pr/include/md/Makefile.in
index 0ab32b1d..2f3962c7 100644
--- a/pr/include/md/Makefile.in
+++ b/pr/include/md/Makefile.in
@@ -29,158 +29,23 @@ CONFIGS = $(wildcard $(srcdir)/*.cfg)
include $(topsrcdir)/config/rules.mk
-ifndef USE_AUTOCONF
-
-ifeq ($(OS_ARCH),IRIX)
-ifeq ($(USE_64), 1)
-MDCPUCFG_H = _irix64.cfg
-else
-MDCPUCFG_H = _irix32.cfg
-endif
-endif
-
-ifeq ($(OS_ARCH),WINNT)
-ifeq ($(OS_TARGET), WIN95)
-MDCPUCFG_H = _win95.cfg
-else
-ifeq ($(OS_TARGET), WIN16)
-MDCPUCFG_H = _win16.cfg
-else
-ifeq ($(OS_TARGET),OS2)
-MDCPUCFG_H = _os2.cfg
-else
-MDCPUCFG_H = _winnt.cfg
-endif
-endif
-endif
-endif
-
-ifeq ($(OS_ARCH),AIX)
-ifeq ($(USE_64),1)
-MDCPUCFG_H = _aix64.cfg
-else
-ifeq ($(USE_IPV6),1)
-MDCPUCFG_H = _aix32in6.cfg
-else
-MDCPUCFG_H = _aix32.cfg
-endif
-endif
-endif
-
-ifeq ($(OS_ARCH),BSD_OS)
-MDCPUCFG_H = _bsdi.cfg
-endif
-
-ifeq ($(OS_ARCH),FreeBSD)
-MDCPUCFG_H = _freebsd.cfg
-endif
-
-ifeq ($(OS_ARCH),OpenBSD)
-MDCPUCFG_H = _openbsd.cfg
-endif
-
-ifeq ($(OS_ARCH),OpenVMS)
-MDCPUCFG_H = _openvms.cfg
-endif
-
-ifeq ($(OS_ARCH),NetBSD)
-MDCPUCFG_H = _netbsd.cfg
-endif
-
-ifeq ($(OS_ARCH),HP-UX)
-ifeq ($(USE_64), 1)
-MDCPUCFG_H = _hpux64.cfg
-else
-MDCPUCFG_H = _hpux32.cfg
-endif
-endif
-
-ifeq ($(OS_ARCH),Linux)
-MDCPUCFG_H = _linux.cfg
-endif
-
-ifeq ($(OS_ARCH),OSF1)
-MDCPUCFG_H = _osf1.cfg
-endif
-
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-MDCPUCFG_H = _sunos4.cfg
-else
-ifeq ($(USE_64),1)
-MDCPUCFG_H = _solaris64.cfg
-else
-MDCPUCFG_H = _solaris32.cfg
-endif
-endif
-endif
-
-ifeq ($(OS_ARCH),SINIX)
-MDCPUCFG_H = _reliantunix.cfg
-endif
-
-ifeq ($(OS_ARCH),Rhapsody)
-MDCPUCFG_H = _rhapsody.cfg
-endif
-
-ifeq ($(OS_ARCH),NEXTSTEP)
-MDCPUCFG_H = _nextstep.cfg
-endif
-
-ifeq ($(OS_ARCH),NEWS-OS)
-MDCPUCFG_H = _sony.cfg
-endif
-
-ifeq ($(OS_ARCH),NEC)
-MDCPUCFG_H = _nec.cfg
-endif
-
-ifeq ($(OS_ARCH),SCOOS)
-MDCPUCFG_H = _scoos.cfg
-endif
-
-ifeq ($(OS_ARCH),UNIXWARE)
-ifeq (,$(filter-out 2.1,$(OS_RELEASE)))
-MDCPUCFG_H = _unixware.cfg
-else
-MDCPUCFG_H = _unixware7.cfg
-endif
-endif
-
-ifeq ($(OS_ARCH),NCR)
-MDCPUCFG_H = _ncr.cfg
-endif
-
-ifeq ($(OS_ARCH),DGUX)
-MDCPUCFG_H = _dgux.cfg
-endif
-
-ifeq ($(OS_ARCH),QNX)
-MDCPUCFG_H = _qnx.cfg
-endif
-
-ifeq ($(OS_TARGET),NTO)
-MDCPUCFG_H = _nto.cfg
-endif
-
-ifeq ($(OS_ARCH),BeOS)
-MDCPUCFG_H = _beos.cfg
-endif
-
-endif # ! USE_AUTOCONF
-
export:: $(MDCPUCFG_H)
- $(INSTALL) -m 444 $(CONFIGS) $(DIST)/include/md
- $(INSTALL) -m 444 $(srcdir)/$(MDCPUCFG_H) $(DIST)/include
+ $(INSTALL) -m 444 $(CONFIGS) $(dist_includedir)/md
+ $(INSTALL) -m 444 $(srcdir)/$(MDCPUCFG_H) $(dist_includedir)
ifneq ($(OS_ARCH),OpenVMS)
- mv -f $(DIST)/include/$(MDCPUCFG_H) $(DIST)/include/prcpucfg.h
+ mv -f $(dist_includedir)/$(MDCPUCFG_H) $(dist_includedir)/prcpucfg.h
else
# mv'ing a link causes the file itself to move, not the link.
- rm -f $(DIST)/include/$(MDCPUCFG_H)
- rm -f $(DIST)/include/prcpucfg.h
- ln -fs `pwd`/$(MDCPUCFG_H) $(DIST)/include/prcpucfg.h
+ rm -f $(dist_includedir)/$(MDCPUCFG_H)
+ rm -f $(dist_includedir)/prcpucfg.h
+ ln -fs $(srcdir)/$(MDCPUCFG_H) $(dist_includedir)/prcpucfg.h
endif
+real_install::
+ $(NSINSTALL) -D $(DESTDIR)$(includedir)/md
+ cp $(srcdir)/$(MDCPUCFG_H) $(DESTDIR)$(includedir)/prcpucfg.h
+ $(NSINSTALL) -t -m 644 $(CONFIGS) $(HEADERS) $(DESTDIR)$(includedir)/md
+
release:: export
@echo "Copying machine-dependent prcpucfg.h"
@if test -z "$(BUILD_NUMBER)"; then \
diff --git a/pr/include/md/_aix32in6.cfg b/pr/include/md/_aix32in6.cfg
index 0385e86a..fcaec9d9 100644
--- a/pr/include/md/_aix32in6.cfg
+++ b/pr/include/md/_aix32in6.cfg
@@ -73,9 +73,6 @@
#undef HAVE_ALIGNED_DOUBLES
#undef HAVE_ALIGNED_LONGLONGS
-#ifndef _PR_INET6
-#define _PR_INET6
-#endif
#define PR_AF_INET6 24 /* same as AF_INET6 */
#ifndef NO_NSPR_10_SUPPORT
diff --git a/pr/include/md/_aix64.cfg b/pr/include/md/_aix64.cfg
index 59bb1a79..8606ff74 100644
--- a/pr/include/md/_aix64.cfg
+++ b/pr/include/md/_aix64.cfg
@@ -74,9 +74,6 @@
#undef HAVE_ALIGNED_DOUBLES
#undef HAVE_ALIGNED_LONGLONGS
-#ifndef _PR_INET6
-#define _PR_INET6
-#endif
#define PR_AF_INET6 24 /* same as AF_INET6 */
#ifndef NO_NSPR_10_SUPPORT
diff --git a/pr/include/md/_beos.cfg b/pr/include/md/_beos.cfg
index a1e3d89d..cbdaecdd 100644
--- a/pr/include/md/_beos.cfg
+++ b/pr/include/md/_beos.cfg
@@ -27,6 +27,8 @@
#define BEOS
#endif
+#define PR_AF_INET6 5 /* same as AF_INET6 */
+
#ifdef __powerpc__
#undef IS_LITTLE_ENDIAN
#define IS_BIG_ENDIAN 1
diff --git a/pr/include/md/_beos.h b/pr/include/md/_beos.h
index 8b56dec3..2cb25407 100644
--- a/pr/include/md/_beos.h
+++ b/pr/include/md/_beos.h
@@ -72,8 +72,9 @@
/* Define threading functions and objects as native BeOS */
struct _MDThread {
thread_id tid; /* BeOS thread handle */
- bool is_joinable; /* TRUE if PR_JOINABLE */
- bool is_joining; /* TRUE if we were woken up to join */
+ sem_id joinSem; /* sems used to synchronzie joining */
+ PRBool is_joining; /* TRUE if someone is currently waiting to
+ join this thread */
};
struct _MDThreadStack {
diff --git a/pr/include/md/_bsdi.cfg b/pr/include/md/_bsdi.cfg
index 8a9839a4..5b7fa33f 100644
--- a/pr/include/md/_bsdi.cfg
+++ b/pr/include/md/_bsdi.cfg
@@ -27,6 +27,8 @@
#define BSDI
#endif
+#define PR_AF_INET6 24 /* same as AF_INET6 */
+
#if defined(__i386__)
#define IS_LITTLE_ENDIAN 1
diff --git a/pr/include/md/_darwin.cfg b/pr/include/md/_darwin.cfg
index 87a76c95..33da779e 100644
--- a/pr/include/md/_darwin.cfg
+++ b/pr/include/md/_darwin.cfg
@@ -27,6 +27,8 @@
#define RHAPOSDY
#endif
+#define PR_AF_INET6 30 /* same as AF_INET6 */
+
#if defined(i386)
#undef IS_BIG_ENDIAN
#define IS_LITTLE_ENDIAN 1
diff --git a/pr/include/md/_darwin.h b/pr/include/md/_darwin.h
index d97e6a3c..98a2f1ed 100644
--- a/pr/include/md/_darwin.h
+++ b/pr/include/md/_darwin.h
@@ -42,8 +42,8 @@
#define USE_MACH_DYLD
#define _PR_HAVE_SOCKADDR_LEN
#define _PR_STAT_HAS_ST_ATIMESPEC
-#define _PR_TIMESPEC_HAS_TS_SEC
#define _PR_NO_LARGE_FILES
+#define PR_HAVE_SYSV_NAMED_SHARED_MEMORY
#define USE_SETJMP
diff --git a/pr/include/md/_freebsd.cfg b/pr/include/md/_freebsd.cfg
index b61641cf..167cf8b6 100644
--- a/pr/include/md/_freebsd.cfg
+++ b/pr/include/md/_freebsd.cfg
@@ -33,6 +33,8 @@
#undef HAVE_ALIGNED_DOUBLES
#undef HAVE_ALIGNED_LONGLONGS
+#define PR_AF_INET6 28 /* same as AF_INET6 */
+
#if defined(__i386__)
#define PR_BYTES_PER_BYTE 1
diff --git a/pr/include/md/_linux.cfg b/pr/include/md/_linux.cfg
index 33fa2683..6ad20d1b 100644
--- a/pr/include/md/_linux.cfg
+++ b/pr/include/md/_linux.cfg
@@ -65,9 +65,9 @@
#define PR_ALIGN_OF_SHORT 2
#define PR_ALIGN_OF_INT 4
#define PR_ALIGN_OF_LONG 4
-#define PR_ALIGN_OF_INT64 4
+#define PR_ALIGN_OF_INT64 8
#define PR_ALIGN_OF_FLOAT 4
-#define PR_ALIGN_OF_DOUBLE 4
+#define PR_ALIGN_OF_DOUBLE 8
#define PR_ALIGN_OF_POINTER 4
#define PR_ALIGN_OF_WORD 4
@@ -359,11 +359,12 @@
#endif
#define HAVE_LONG_LONG
-/*
- * XXX These two macros need to be investigated for different architectures.
- */
-#undef HAVE_ALIGNED_DOUBLES
-#undef HAVE_ALIGNED_LONGLONGS
+#if PR_ALIGN_OF_DOUBLE == 8
+#define HAVE_ALIGNED_DOUBLES
+#endif
+#if PR_ALIGN_OF_INT64 == 8
+#define HAVE_ALIGNED_LONGLONGS
+#endif
#ifndef NO_NSPR_10_SUPPORT
diff --git a/pr/include/md/_linux.h b/pr/include/md/_linux.h
index 11885b41..96905cf2 100644
--- a/pr/include/md/_linux.h
+++ b/pr/include/md/_linux.h
@@ -59,6 +59,19 @@
#define HAVE_DLL
#define USE_DLFCN
+#if defined(__i386__)
+#define _PR_HAVE_ATOMIC_OPS
+#define _MD_INIT_ATOMIC()
+extern PRInt32 _PR_x86_AtomicIncrement(PRInt32 *val);
+#define _MD_ATOMIC_INCREMENT _PR_x86_AtomicIncrement
+extern PRInt32 _PR_x86_AtomicDecrement(PRInt32 *val);
+#define _MD_ATOMIC_DECREMENT _PR_x86_AtomicDecrement
+extern PRInt32 _PR_x86_AtomicAdd(PRInt32 *ptr, PRInt32 val);
+#define _MD_ATOMIC_ADD _PR_x86_AtomicAdd
+extern PRInt32 _PR_x86_AtomicSet(PRInt32 *val, PRInt32 newval);
+#define _MD_ATOMIC_SET _PR_x86_AtomicSet
+#endif
+
#define USE_SETJMP
#if defined(__GLIBC__) && __GLIBC__ >= 2
#define _PR_POLL_AVAILABLE
@@ -70,7 +83,8 @@
#else
#define _PR_NO_LARGE_FILES
#endif
-#ifdef _PR_INET6
+#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
+#define _PR_INET6
#define _PR_HAVE_GETHOSTBYNAME2
#define _PR_INET6_PROBE
#endif
@@ -97,11 +111,11 @@ extern void _MD_CleanupBeforeExit(void);
* On the PowerPC, the new style jmp_buf isn't used until glibc
* 2.1.
*/
-#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
+#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
#define _MD_GET_SP(_t) (_t)->md.context[0].__jmpbuf[JB_GPR1]
#else
#define _MD_GET_SP(_t) (_t)->md.context[0].__jmpbuf[0].__misc[0]
-#endif /* __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 */
+#endif /* glibc 2.1 or later */
#define _MD_SET_FP(_t, val)
#define _MD_GET_SP_PTR(_t) &(_MD_GET_SP(_t))
#define _MD_GET_FP_PTR(_t) ((void *) 0)
diff --git a/pr/include/md/_macos.h b/pr/include/md/_macos.h
index cf38977f..43318527 100644
--- a/pr/include/md/_macos.h
+++ b/pr/include/md/_macos.h
@@ -91,7 +91,7 @@ typedef struct _MDSocketCallerInfo {
struct _MDFileDesc {
PRInt32 osfd;
- PRBool connectionOpen;
+ PRBool orderlyDisconnect;
PRBool readReady;
PRBool writeReady;
PRBool exceptReady;
@@ -103,6 +103,7 @@ struct _MDFileDesc {
_MDSocketCallerInfo misc;
_MDSocketCallerInfo read;
_MDSocketCallerInfo write;
+ _MDSocketCallerInfo poll;
};
/*
@@ -382,6 +383,19 @@ extern char* _MD_ReadDir(struct _MDDir *md,PRIntn flags);
** Socket I/O Related definitions
*/
+#if UNIVERSAL_INTERFACES_VERSION >= 0x0330
+/* In Universal Interfaces 3.3 and later, these are enums. */
+#define IP_TTL IP_TTL
+#define IP_TOS IP_TOS
+#define IP_ADD_MEMBERSHIP IP_ADD_MEMBERSHIP
+#define IP_DROP_MEMBERSHIP IP_DROP_MEMBERSHIP
+#define IP_MULTICAST_IF IP_MULTICAST_IF
+#define IP_MULTICAST_TTL IP_MULTICAST_TTL
+#define IP_MULTICAST_LOOP IP_MULTICAST_LOOP
+#define TCP_NODELAY TCP_NODELAY
+#define TCP_MAXSEG TCP_MAXSEG
+#endif
+
#define _MD_SOCKET _MD_socket
#define _MD_BIND _MD_bind
#define _MD_LISTEN _MD_listen
diff --git a/pr/include/md/_netbsd.cfg b/pr/include/md/_netbsd.cfg
index ef52198e..92a0b81c 100644
--- a/pr/include/md/_netbsd.cfg
+++ b/pr/include/md/_netbsd.cfg
@@ -27,7 +27,9 @@
#define NETBSD
#endif
-#if defined(__i386__) || defined(__arm32__)
+#define PR_AF_INET6 24 /* same as AF_INET6 */
+
+#if defined(__i386__) || defined(__arm32__) || defined(__MIPSEL__)
#define IS_LITTLE_ENDIAN 1
#undef IS_BIG_ENDIAN
@@ -73,9 +75,9 @@
#define PR_ALIGN_OF_DOUBLE 4
#define PR_ALIGN_OF_POINTER 4
-#elif defined(__sparc__) || defined(__mips__)
+#elif defined(__sparc__) || defined(__MIPSEB__)
-#undef IS_LITTLE_ENDIAN 1
+#undef IS_LITTLE_ENDIAN
#define IS_BIG_ENDIAN 1
#define HAVE_LONG_LONG
#define HAVE_ALIGNED_DOUBLES
diff --git a/pr/include/md/_netbsd.h b/pr/include/md/_netbsd.h
index 49aca74b..5145a664 100644
--- a/pr/include/md/_netbsd.h
+++ b/pr/include/md/_netbsd.h
@@ -20,6 +20,7 @@
#define nspr_netbsd_defs_h___
#include <sys/syscall.h>
+#include <sys/param.h> /* for __NetBSD_Version__ */
#define PR_LINKER_ARCH "netbsd"
#define _PR_SI_SYSNAME "NetBSD"
@@ -39,7 +40,11 @@
#define _PR_SI_ARCHITECTURE "arm32"
#endif
+#if defined(__ELF__)
+#define PR_DLL_SUFFIX ".so"
+#else
#define PR_DLL_SUFFIX ".so.1.0"
+#endif
#define _PR_VMBASE 0x30000000
#define _PR_STACK_VMBASE 0x50000000
@@ -52,9 +57,17 @@
#define _PR_HAVE_SOCKADDR_LEN
#define _PR_NO_LARGE_FILES
#define _PR_STAT_HAS_ST_ATIMESPEC
+#define _PR_POLL_AVAILABLE
+#define _PR_USE_POLL
#define _PR_HAVE_SYSV_SEMAPHORES
#define PR_HAVE_SYSV_NAMED_SHARED_MEMORY
+#if __NetBSD_Version__ >= 105000000
+#define _PR_INET6
+#define _PR_HAVE_GETHOSTBYNAME2
+#define _PR_INET6_PROBE
+#endif
+
#define USE_SETJMP
#ifndef _PR_PTHREADS
@@ -64,40 +77,89 @@
#define CONTEXT(_th) ((_th)->md.context)
-#if defined(__i386__) || defined(__sparc__) || defined(__m68k__) || defined(__powerpc__)
-#define JB_SP_INDEX 2
-#elif defined(__mips__)
-#define JB_SP_INDEX 4
-#elif defined(__alpha__)
-#define JB_SP_INDEX 34
-#elif defined(__arm32__)
/*
- * On the arm32, the jmpbuf regs underwent a name change after NetBSD 1.3.
- */
-#ifdef JMPBUF_REG_R13
-#define JB_SP_INDEX JMPBUF_REG_R13
-#else
-#define JB_SP_INDEX _JB_REG_R13
+** Initialize a thread context to run "_main()" when started
+*/
+#ifdef __i386__
+#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \
+{ \
+ sigsetjmp(CONTEXT(_thread), 1); \
+ CONTEXT(_thread)[2] = (unsigned char*) ((_sp) - 128); \
+ CONTEXT(_thread)[0] = (int) _main; \
+ *status = PR_TRUE; \
+}
+#define _MD_GET_SP(_thread) CONTEXT(_thread)[2]
#endif
-#else
-#error "Need to define SP index in jmp_buf here"
+#ifdef __sparc__
+#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \
+{ \
+ sigsetjmp(CONTEXT(_thread), 1); \
+ CONTEXT(_thread)[2] = (unsigned char*) ((_sp) - 128); \
+ CONTEXT(_thread)[3] = (int) _main; \
+ CONTEXT(_thread)[4] = (int) _main + 4; \
+ *status = PR_TRUE; \
+}
+#define _MD_GET_SP(_thread) CONTEXT(_thread)[2]
+#endif
+#ifdef __powerpc__
+#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \
+{ \
+ sigsetjmp(CONTEXT(_thread), 1); \
+ CONTEXT(_thread)[3] = (unsigned char*) ((_sp) - 128); \
+ CONTEXT(_thread)[4] = (int) _main; \
+ *status = PR_TRUE; \
+}
+#define _MD_GET_SP(_thread) CONTEXT(_thread)[3]
+#endif
+#ifdef __m68k__
+#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \
+{ \
+ sigsetjmp(CONTEXT(_thread), 1); \
+ CONTEXT(_thread)[2] = (unsigned char*) ((_sp) - 128); \
+ CONTEXT(_thread)[5] = (int) _main; \
+ *status = PR_TRUE; \
+}
+#define _MD_GET_SP(_thread) CONTEXT(_thread)[2]
+#endif
+#ifdef __mips__
+#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \
+{ \
+ sigsetjmp(CONTEXT(_thread), 1); \
+ CONTEXT(_thread)[32] = (unsigned char*) ((_sp) - 128); \
+ CONTEXT(_thread)[2] = (int) _main; \
+ CONTEXT(_thread)[28] = (int) _main; \
+ *status = PR_TRUE; \
+}
+#define _MD_GET_SP(_thread) CONTEXT(_thread)[32]
+#endif
+#ifdef __arm32__
+#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \
+{ \
+ sigsetjmp(CONTEXT(_thread), 1); \
+ CONTEXT(_thread)[23] = (unsigned char*) ((_sp) - 128); \
+ CONTEXT(_thread)[24] = (int) _main; \
+ *status = PR_TRUE; \
+}
+#define _MD_GET_SP(_thread) CONTEXT(_thread)[23]
+#endif
+#ifdef __alpha__
+#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \
+{ \
+ sigsetjmp(CONTEXT(_thread), 1); \
+ CONTEXT(_thread)[34] = (unsigned char*) ((_sp) - 128); \
+ CONTEXT(_thread)[2] = (long) _main; \
+ CONTEXT(_thread)[30] = (long) _main; \
+ CONTEXT(_thread)[31] = (long) _main; \
+ *status = PR_TRUE; \
+}
+#define _MD_GET_SP(_thread) CONTEXT(_thread)[34]
+#endif
+#ifndef _MD_INIT_CONTEXT
+#error "Need to define _MD_INIT_CONTEXT for this platform"
#endif
-#define _MD_GET_SP(_th) (_th)->md.context[JB_SP_INDEX]
#define PR_NUM_GCREGS _JBLEN
-/*
-** Initialize a thread context to run "_main()" when started
-*/
-#define _MD_INIT_CONTEXT(_thread, _sp, _main, status) \
-{ \
- *status = PR_TRUE; \
- if (sigsetjmp(CONTEXT(_thread), 1)) { \
- _main(); \
- } \
- _MD_GET_SP(_thread) = (unsigned char*) ((_sp) - 64); \
-}
-
#define _MD_SWITCH_CONTEXT(_thread) \
if (!sigsetjmp(CONTEXT(_thread), 1)) { \
(_thread)->md.errcode = errno; \
@@ -210,7 +272,10 @@ struct _MDCPU {
* unwrapped version.
*/
#define _MD_SELECT(nfds,r,w,e,tv) syscall(SYS_select,nfds,r,w,e,tv)
+#if defined(_PR_POLL_AVAILABLE)
+#include <poll.h>
#define _MD_POLL(fds,nfds,timeout) syscall(SYS_poll,fds,nfds,timeout)
+#endif
#if NetBSD1_3 == 1L
typedef unsigned int nfds_t;
diff --git a/pr/include/md/_nto.cfg b/pr/include/md/_nto.cfg
index dd3a5aef..cae799f7 100644
--- a/pr/include/md/_nto.cfg
+++ b/pr/include/md/_nto.cfg
@@ -27,6 +27,8 @@
#define NTO
#endif
+#define PR_AF_INET6 24 /* same as AF_INET6 */
+
#ifdef __i386__
#define IS_LITTLE_ENDIAN 1
diff --git a/pr/include/md/_nto.h b/pr/include/md/_nto.h
index c3720ab3..c23d9f8a 100644
--- a/pr/include/md/_nto.h
+++ b/pr/include/md/_nto.h
@@ -46,6 +46,9 @@
#define PR_HAVE_POSIX_NAMED_SHARED_MEMORY
#define _PR_HAVE_POSIX_SEMAPHORES
+#define FD_SETSIZE 4096
+#include <sys/time.h>
+#include <sys/types.h>
#include <sys/select.h>
#undef HAVE_STACK_GROWING_UP
@@ -190,9 +193,6 @@ struct _MDCPU {
** We wrapped the select() call. _MD_SELECT refers to the built-in,
** unwrapped version.
*/
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/select.h>
#define _MD_SELECT select
#endif /* nspr_nto_defs_h___ */
diff --git a/pr/include/md/_openbsd.cfg b/pr/include/md/_openbsd.cfg
index ae3bfcda..994daf32 100644
--- a/pr/include/md/_openbsd.cfg
+++ b/pr/include/md/_openbsd.cfg
@@ -27,6 +27,8 @@
#define OPENBSD
#endif
+#define PR_AF_INET6 24 /* same as AF_INET6 */
+
#if defined(__i386__) || defined(__arm32__)
#define IS_LITTLE_ENDIAN 1
diff --git a/pr/include/md/_openvms.cfg b/pr/include/md/_openvms.cfg
index b9dd6d97..17548c27 100644
--- a/pr/include/md/_openvms.cfg
+++ b/pr/include/md/_openvms.cfg
@@ -36,6 +36,8 @@
#undef IS_64
#endif
+#define PR_AF_INET6 26 /* same as AF_INET6 */
+
#define PR_BYTES_PER_BYTE 1
#define PR_BYTES_PER_SHORT 2
#define PR_BYTES_PER_INT 4
diff --git a/pr/include/md/_openvms.h b/pr/include/md/_openvms.h
index 6f888b72..97f55aa6 100644
--- a/pr/include/md/_openvms.h
+++ b/pr/include/md/_openvms.h
@@ -40,6 +40,7 @@
#define _PR_VMBASE 0x30000000
#define _PR_STACK_VMBASE 0x50000000
#define _MD_DEFAULT_STACK_SIZE 131072L
+#define _MD_MINIMUM_STACK_SIZE 131072L
/*
** This is not defined on OpenVMS. I believe its only used in GC code, and
@@ -81,6 +82,17 @@ struct ip_mreq {
#define _PR_STAT_HAS_ONLY_ST_ATIME
#define _PR_NO_LARGE_FILES
+/* IPv6 support */
+#define _PR_HAVE_GETIPNODEBYNAME
+#define _PR_HAVE_GETIPNODEBYADDR
+#define _PR_INET6_PROBE
+#ifndef _PR_INET6
+#define AF_INET6 26
+#define AI_V4MAPPED 0x00000010
+#define AI_ALL 0x00000008
+#define AI_ADDRCONFIG 0x00000020
+#endif
+
#undef USE_SETJMP
#include <setjmp.h>
diff --git a/pr/include/md/_os2.cfg b/pr/include/md/_os2.cfg
index f72eab69..a11e7cf3 100644
--- a/pr/include/md/_os2.cfg
+++ b/pr/include/md/_os2.cfg
@@ -39,6 +39,8 @@
#define HAVE_LONG_LONG 1
#endif
+#define PR_AF_INET6 24 /* same as AF_INET6 */
+
#define PR_BYTES_PER_BYTE 1
#define PR_BYTES_PER_SHORT 2
#define PR_BYTES_PER_INT 4
diff --git a/pr/include/md/_os2.h b/pr/include/md/_os2.h
index 70e8d112..bcee5cbc 100644
--- a/pr/include/md/_os2.h
+++ b/pr/include/md/_os2.h
@@ -251,7 +251,14 @@ extern PRInt32 _MD_CloseSocket(PRInt32 osfd);
#define _MD_GETPEERNAME (_PR_MD_GETPEERNAME)
#define _MD_GETSOCKOPT (_PR_MD_GETSOCKOPT)
#define _MD_SETSOCKOPT (_PR_MD_SETSOCKOPT)
+
+#ifdef XP_OS2_EMX
+extern PRInt32 _MD_SELECT(int nfds, fd_set *readfds, fd_set *writefds,
+ fd_set *exceptfds, struct timeval *timeout);
+#else
#define _MD_SELECT select
+#endif
+
#define _MD_FSYNC _PR_MD_FSYNC
#define _MD_SET_FD_INHERITABLE (_PR_MD_SET_FD_INHERITABLE)
diff --git a/pr/include/md/_pth.h b/pr/include/md/_pth.h
index 6e2e90c0..2fe641ff 100644
--- a/pr/include/md/_pth.h
+++ b/pr/include/md/_pth.h
@@ -93,7 +93,7 @@
#elif defined(IRIX) || defined(OSF1) || defined(AIX) || defined(SOLARIS) \
|| defined(HPUX) || defined(LINUX) || defined(FREEBSD) \
|| defined(NETBSD) || defined(OPENBSD) || defined(BSDI) \
- || defined(VMS) || defined(NTO)
+ || defined(VMS) || defined(NTO) || defined(RHAPSODY)
#define _PT_PTHREAD_ZERO_THR_HANDLE(t) (t) = 0
#define _PT_PTHREAD_THR_HANDLE_IS_ZERO(t) (t) == 0
#define _PT_PTHREAD_COPY_THR_HANDLE(st, dt) (dt) = (st)
@@ -204,7 +204,7 @@
#define PT_PRIO_MIN 1
#define PT_PRIO_MAX 127
#elif defined(FREEBSD) || defined(NETBSD) || defined(OPENBSD) \
- || defined(BSDI) /* XXX */
+ || defined(BSDI) || defined(RHAPSODY) /* XXX */
#define PT_PRIO_MIN 0
#define PT_PRIO_MAX 126
#else
@@ -237,7 +237,7 @@ extern int (*_PT_aix_yield_fcn)();
PR_END_MACRO
#elif defined(HPUX) || defined(LINUX) || defined(SOLARIS) \
|| defined(FREEBSD) || defined(NETBSD) || defined(OPENBSD) \
- || defined(BSDI) || defined(NTO)
+ || defined(BSDI) || defined(NTO) || defined(RHAPSODY)
#define _PT_PTHREAD_YIELD() sched_yield()
#else
#error "Need to define _PT_PTHREAD_YIELD for this platform"
diff --git a/pr/include/md/_rhapsody.cfg b/pr/include/md/_rhapsody.cfg
index 87a76c95..33da779e 100644
--- a/pr/include/md/_rhapsody.cfg
+++ b/pr/include/md/_rhapsody.cfg
@@ -27,6 +27,8 @@
#define RHAPOSDY
#endif
+#define PR_AF_INET6 30 /* same as AF_INET6 */
+
#if defined(i386)
#undef IS_BIG_ENDIAN
#define IS_LITTLE_ENDIAN 1
diff --git a/pr/include/md/_rhapsody.h b/pr/include/md/_rhapsody.h
index d97e6a3c..98a2f1ed 100644
--- a/pr/include/md/_rhapsody.h
+++ b/pr/include/md/_rhapsody.h
@@ -42,8 +42,8 @@
#define USE_MACH_DYLD
#define _PR_HAVE_SOCKADDR_LEN
#define _PR_STAT_HAS_ST_ATIMESPEC
-#define _PR_TIMESPEC_HAS_TS_SEC
#define _PR_NO_LARGE_FILES
+#define PR_HAVE_SYSV_NAMED_SHARED_MEMORY
#define USE_SETJMP
diff --git a/pr/include/md/_solaris.h b/pr/include/md/_solaris.h
index 081636e0..88c5a44e 100644
--- a/pr/include/md/_solaris.h
+++ b/pr/include/md/_solaris.h
@@ -70,8 +70,13 @@
#define _PR_POLL_AVAILABLE
#define _PR_USE_POLL
#define _PR_STAT_HAS_ST_ATIM
+#ifdef SOLARIS2_5
+#define _PR_HAVE_SYSV_SEMAPHORES
+#define PR_HAVE_SYSV_NAMED_SHARED_MEMORY
+#else
#define _PR_HAVE_POSIX_SEMAPHORES
#define PR_HAVE_POSIX_NAMED_SHARED_MEMORY
+#endif
#define _PR_HAVE_GETIPNODEBYNAME
#define _PR_HAVE_GETIPNODEBYADDR
#define _PR_INET6_PROBE
@@ -81,6 +86,24 @@
#define AI_V4MAPPED 0x0001
#define AI_ALL 0x0002
#define AI_ADDRCONFIG 0x0004
+#define _PR_HAVE_MD_SOCKADDR_IN6
+/* isomorphic to struct in6_addr on Solaris 8 */
+struct _md_in6_addr {
+ union {
+ PRUint8 _S6_u8[16];
+ PRUint32 _S6_u32[4];
+ PRUint32 __S6_align;
+ } _S6_un;
+};
+/* isomorphic to struct sockaddr_in6 on Solaris 8 */
+struct _md_sockaddr_in6 {
+ PRUint16 sin6_family;
+ PRUint16 sin6_port;
+ PRUint32 sin6_flowinfo;
+ struct _md_in6_addr sin6_addr;
+ PRUint32 sin6_scope_id;
+ PRUint32 __sin6_src_id;
+};
#endif
#include "prinrval.h"
diff --git a/pr/include/obsolete/.cvsignore b/pr/include/obsolete/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/include/obsolete/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/include/obsolete/Makefile b/pr/include/obsolete/Makefile
deleted file mode 100644
index 2aba1bae..00000000
--- a/pr/include/obsolete/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-HEADERS = $(wildcard *.h)
-
-RELEASE_HEADERS = $(HEADERS)
-RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)/obsolete
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(RELEASE_HEADERS)
- $(INSTALL) -m 444 $(RELEASE_HEADERS) $(DIST)/include/obsolete
-ifeq ($(MOZ_BITS),16)
- $(INSTALL) -m 444 $(RELEASE_HEADERS) $(MOZ_INCL)/obsolete
-endif
diff --git a/pr/include/obsolete/Makefile.in b/pr/include/obsolete/Makefile.in
index 1f7fc4b4..fd33428b 100644
--- a/pr/include/obsolete/Makefile.in
+++ b/pr/include/obsolete/Makefile.in
@@ -31,10 +31,9 @@ HEADERS = $(wildcard $(srcdir)/*.h)
RELEASE_HEADERS = $(HEADERS)
RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)/obsolete
+includedir := $(includedir)/obsolete
+
include $(topsrcdir)/config/rules.mk
export:: $(RELEASE_HEADERS)
- $(INSTALL) -m 444 $(RELEASE_HEADERS) $(DIST)/include/obsolete
-ifeq ($(MOZ_BITS),16)
- $(INSTALL) -m 444 $(RELEASE_HEADERS) $(MOZ_INCL)/obsolete
-endif
+ $(INSTALL) -m 444 $(RELEASE_HEADERS) $(dist_includedir)/obsolete
diff --git a/pr/include/obsolete/protypes.h b/pr/include/obsolete/protypes.h
index 631137e4..23be3aa2 100644
--- a/pr/include/obsolete/protypes.h
+++ b/pr/include/obsolete/protypes.h
@@ -51,7 +51,8 @@ typedef PRIntn intn;
/* SVR4 typedef of uint is commonly found on UNIX machines. */
#ifdef XP_UNIX
#include <sys/types.h>
-#else
+#endif
+#if !defined(XP_UNIX) || defined(NTO)
typedef PRUintn uint;
#endif
diff --git a/pr/include/prinet.h b/pr/include/prinet.h
index 440352ed..994ce806 100644
--- a/pr/include/prinet.h
+++ b/pr/include/prinet.h
@@ -75,7 +75,7 @@ struct sockaddr_dl;
* socket headers.
*/
#if defined(OS2) && !defined(INADDR_LOOPBACK)
-#define INADDR_LOOPBACK gethostid()
+#define INADDR_LOOPBACK 0x7f000001
#endif
/*
diff --git a/pr/include/prinit.h b/pr/include/prinit.h
index 500182c3..dd319360 100644
--- a/pr/include/prinit.h
+++ b/pr/include/prinit.h
@@ -44,11 +44,11 @@ PR_BEGIN_EXTERN_C
** The format of the version string is
** "<major version>.<minor version> <build date>"
*/
-#define PR_VERSION "4.0"
+#define PR_VERSION "4.0.2 Beta"
#define PR_VMAJOR 4
#define PR_VMINOR 0
-#define PR_VPATCH 0
-#define PR_BETA PR_FALSE
+#define PR_VPATCH 2
+#define PR_BETA PR_TRUE
/*
** PRVersionCheck
diff --git a/pr/include/prio.h b/pr/include/prio.h
index 36017128..015e9be2 100644
--- a/pr/include/prio.h
+++ b/pr/include/prio.h
@@ -179,34 +179,6 @@ union PRNetAddr {
};
/*
-** The PR_NETADDR_SIZE macro can only be called on a PRNetAddr union
-** whose 'family' field is set. It returns the size of the union
-** member corresponding to the specified address family.
-*/
-
-#if defined(_PR_INET6)
-
-#define PR_NETADDR_SIZE(_addr) PR_NetAddrSize(_addr)
-
-#else
-
-#if defined(XP_UNIX)
-#define PR_NETADDR_SIZE(_addr) \
- ((_addr)->raw.family == PR_AF_INET \
- ? sizeof((_addr)->inet) \
- : ((_addr)->raw.family == PR_AF_INET6 \
- ? sizeof((_addr)->ipv6) \
- : sizeof((_addr)->local)))
-#else
-#define PR_NETADDR_SIZE(_addr) \
- ((_addr)->raw.family == PR_AF_INET \
- ? sizeof((_addr)->inet) \
- : sizeof((_addr)->ipv6))
-#endif /* defined(XP_UNIX) */
-
-#endif /* defined(_PR_INET6) */
-
-/*
***************************************************************************
** PRSockOption
**
@@ -1108,8 +1080,6 @@ NSPR_API(PRStatus) PR_MakeDir(const char *name, PRIntn mode);
NSPR_API(PRStatus) PR_RmDir(const char *name);
-NSPR_API(PRUintn) PR_NetAddrSize(const PRNetAddr* addr);
-
/*
*************************************************************************
* FUNCTION: PR_NewUDPSocket
diff --git a/pr/include/private/.cvsignore b/pr/include/private/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/include/private/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/include/private/Makefile b/pr/include/private/Makefile
deleted file mode 100644
index 25c6909a..00000000
--- a/pr/include/private/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-RELEASE_HEADERS = pprio.h pprthred.h prpriv.h
-RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)/private
-
-HEADERS = $(RELEASE_HEADERS) pprmwait.h primpl.h
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(RELEASE_HEADERS)
- $(INSTALL) -m 444 $(RELEASE_HEADERS) $(DIST)/include/private
-ifeq ($(MOZ_BITS),16)
- $(INSTALL) -m 444 $(RELEASE_HEADERS) $(MOZ_INCL)/private
-endif
diff --git a/pr/include/private/Makefile.in b/pr/include/private/Makefile.in
index 4197dbb5..8325ef72 100644
--- a/pr/include/private/Makefile.in
+++ b/pr/include/private/Makefile.in
@@ -32,10 +32,9 @@ RELEASE_HEADERS_DEST = $(RELEASE_INCLUDE_DIR)/private
HEADERS = $(RELEASE_HEADERS) $(srcdir)/pprmwait.h $(srcdir)/primpl.h
+includedir := $(includedir)/private
+
include $(topsrcdir)/config/rules.mk
export:: $(RELEASE_HEADERS)
- $(INSTALL) -m 444 $(RELEASE_HEADERS) $(DIST)/include/private
-ifeq ($(MOZ_BITS),16)
- $(INSTALL) -m 444 $(RELEASE_HEADERS) $(MOZ_INCL)/private
-endif
+ $(INSTALL) -m 444 $(RELEASE_HEADERS) $(dist_includedir)/private
diff --git a/pr/include/private/primpl.h b/pr/include/private/primpl.h
index 926c2585..8c1d3e12 100644
--- a/pr/include/private/primpl.h
+++ b/pr/include/private/primpl.h
@@ -172,6 +172,14 @@ struct _PT_Notified
(thr->interrupt_blocked = 1)
#define _PT_THREAD_UNBLOCK_INTERRUPT(thr) \
(thr->interrupt_blocked = 0)
+
+#ifdef GC_LEAK_DETECTOR
+/* All threads are GCable. */
+#define _PT_IS_GCABLE_THREAD(thr) 1
+#else
+#define _PT_IS_GCABLE_THREAD(thr) ((thr)->state & PT_THREAD_GCABLE)
+#endif /* GC_LEAK_DETECTOR */
+
/*
** Possible values for thread's suspend field
** Note that the first two can be the same as they are really mutually exclusive,
@@ -1268,6 +1276,69 @@ extern PRFileDesc *_PR_InvalidDesc(void);
extern PRIOMethods _pr_faulty_methods;
+/*
+** The PR_NETADDR_SIZE macro can only be called on a PRNetAddr union
+** whose 'family' field is set. It returns the size of the union
+** member corresponding to the specified address family.
+*/
+
+extern PRUintn _PR_NetAddrSize(const PRNetAddr* addr);
+
+#if defined(_PR_INET6)
+
+#define PR_NETADDR_SIZE(_addr) _PR_NetAddrSize(_addr)
+
+#elif defined(_PR_HAVE_MD_SOCKADDR_IN6)
+
+/*
+** Under the following conditions:
+** 1. _PR_INET6 is not defined;
+** 2. _PR_INET6_PROBE is defined;
+** 3. struct sockaddr_in6 has nonstandard fields at the end
+** (e.g., on Solaris 8),
+** (_addr)->ipv6 is smaller than struct sockaddr_in6, and
+** hence we can't pass sizeof((_addr)->ipv6) to socket
+** functions such as connect because they would fail with
+** EINVAL.
+**
+** To pass the correct socket address length to socket
+** functions, define the macro _PR_HAVE_MD_SOCKADDR_IN6 and
+** define struct _md_sockaddr_in6 to be isomorphic to
+** struct sockaddr_in6.
+*/
+
+#if defined(XP_UNIX)
+#define PR_NETADDR_SIZE(_addr) \
+ ((_addr)->raw.family == PR_AF_INET \
+ ? sizeof((_addr)->inet) \
+ : ((_addr)->raw.family == PR_AF_INET6 \
+ ? sizeof(struct _md_sockaddr_in6) \
+ : sizeof((_addr)->local)))
+#else
+#define PR_NETADDR_SIZE(_addr) \
+ ((_addr)->raw.family == PR_AF_INET \
+ ? sizeof((_addr)->inet) \
+ : sizeof(struct _md_sockaddr_in6)
+#endif /* defined(XP_UNIX) */
+
+#else
+
+#if defined(XP_UNIX)
+#define PR_NETADDR_SIZE(_addr) \
+ ((_addr)->raw.family == PR_AF_INET \
+ ? sizeof((_addr)->inet) \
+ : ((_addr)->raw.family == PR_AF_INET6 \
+ ? sizeof((_addr)->ipv6) \
+ : sizeof((_addr)->local)))
+#else
+#define PR_NETADDR_SIZE(_addr) \
+ ((_addr)->raw.family == PR_AF_INET \
+ ? sizeof((_addr)->inet) \
+ : sizeof((_addr)->ipv6))
+#endif /* defined(XP_UNIX) */
+
+#endif /* defined(_PR_INET6) */
+
extern PRStatus _PR_MapOptionName(
PRSockOption optname, PRInt32 *level, PRInt32 *name);
extern void _PR_InitThreads(
diff --git a/pr/include/prtypes.h b/pr/include/prtypes.h
index 02ea6412..b84682ca 100644
--- a/pr/include/prtypes.h
+++ b/pr/include/prtypes.h
@@ -158,13 +158,9 @@
#define PR_IMPLEMENT(__type) __type
#define PR_EXTERN_DATA(__type) extern __type
#define PR_IMPLEMENT_DATA(__type) __type
-#define PR_CALLBACK
+#define PR_CALLBACK _Optlink
#define PR_CALLBACK_DECL
-#ifndef XP_OS2_VACPP
-#define PR_STATIC_CALLBACK(__x) static __x
-#else
-#define PR_STATIC_CALLBACK(__x) static __x _Optlink
-#endif
+#define PR_STATIC_CALLBACK(__x) static __x PR_CALLBACK
#else /* Unix */
diff --git a/pr/src/.cvsignore b/pr/src/.cvsignore
new file mode 100644
index 00000000..41a1bd2b
--- /dev/null
+++ b/pr/src/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+_pr_bld.h
diff --git a/pr/src/Makefile b/pr/src/Makefile
deleted file mode 100644
index 9f584e48..00000000
--- a/pr/src/Makefile
+++ /dev/null
@@ -1,431 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-DIRS = io linking malloc md memory misc threads
-
-# For VAC++ 4 geticcdata rule in config/OS2.mk
-ifeq ($(MOZ_OS2_TOOLS),VACPP)
-CSRCS = prvrsion.c
-endif
-
-ifeq ($(USE_PTHREADS), 1)
- DIRS += pthreads
-endif
-
-ifeq ($(USE_BTHREADS), 1)
- DIRS += bthreads
-endif
-
-ifeq ($(USE_CPLUS), 1)
- DIRS += cplus
-endif
-
-#
-# Define platform-dependent OS_LIBS
-#
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-export OPTIMIZER
-OS_LIBS = -lm
-else # 4.1.3_U1
-ifdef USE_PTHREADS
-OS_LIBS = -lpthread -lthread -lposix4 -lsocket -lnsl -ldl
-else
-ifdef LOCAL_THREADS_ONLY
-OS_LIBS = -lsocket -lnsl -ldl
-else
-OS_LIBS = -lthread -lposix4 -lsocket -lnsl -ldl
-endif # LOCAL_THREADS_ONLY
-endif # USE_PTHREADS
-endif # 4.1.3_U1
-endif # SunOS
-
-ifeq ($(OS_ARCH), IRIX)
-ifeq ($(USE_PTHREADS), 1)
-OS_LIBS = -lpthread
-endif
-endif
-
-ifeq ($(OS_ARCH),AIX)
-ifeq ($(CLASSIC_NSPR),1)
-ifeq ($(OS_RELEASE),4.1)
-OS_LIBS = -lsvld -lc
-else
-OS_LIBS = -ldl -lc
-endif
-else
-ifeq ($(OS_RELEASE),4.1)
-OS_LIBS = -lpthreads -lsvld -lC_r -lC -lc_r -lm /usr/lib/libc.a
-else
-OS_LIBS = -lpthreads -ldl -lC_r -lC -lc_r -lm /usr/lib/libc.a
-endif
-endif
-endif
-
-# On AIX, we override malloc in non-pthread versions. On AIX 4.2 or
-# above, this requires that we use the rtl-enabled version of libc.a.
-ifeq ($(OS_ARCH),AIX)
-ifneq (,$(filter-out 3.2 4.1,$(OS_RELEASE)))
-ifneq ($(USE_PTHREADS),1)
-BUILD_AIX_RTL_LIBC = 1
-AIX_RTL_LIBC = $(OBJDIR)/libc.a
-endif
-endif
-endif
-
-ifeq ($(OS_ARCH),OSF1)
-ifeq ($(USE_PTHREADS), 1)
-OS_LIBS = -lpthread -lrt
-endif
-ifneq ($(OS_RELEASE),V2.0)
-OS_LIBS += -lc_r
-endif
-endif
-
-ifeq ($(OS_ARCH),Linux)
-ifeq ($(USE_PTHREADS), 1)
-OS_LIBS = -lpthread -ldl -lc
-else
-OS_LIBS = -ldl -lc
-endif
-endif
-
-ifeq ($(OS_ARCH),HP-UX)
-ifeq ($(USE_PTHREADS), 1)
-ifeq (,$(filter-out B.10.10 B.10.20,$(OS_RELEASE)))
-OS_LIBS = -ldce
-else
-OS_LIBS = -lpthread -lrt
-endif
-endif
-ifeq ($(PTHREADS_USER), 1)
-OS_LIBS = -lpthread
-endif
-ifeq ($(basename $(OS_RELEASE)),A.09)
-OS_LIBS += -ldld -L/lib/pa1.1 -lm
-else
-OS_LIBS += -ldld -lm -lc
-endif
-endif
-
-ifeq ($(OS_ARCH),UNIXWARE)
-OS_LIBS = -lsocket -lc
-endif
-
-ifeq ($(OS_ARCH),NEWS-OS)
-OS_LIBS = -lsocket -lnsl -lgen -lresolv
-endif
-
-ifeq ($(OS_ARCH),WINNT)
-ifneq ($(OS_TARGET),WIN16)
-OS_LIBS = advapi32.lib wsock32.lib winmm.lib
-endif
-endif
-
-#
-# Define platform-dependent OBJS
-#
-
-OBJS = \
- $(OBJDIR)/prvrsion.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prfdcach.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prmwait.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prmapopt.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/priometh.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/pripv6.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prlayer.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prlog.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prmmap.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prpolevt.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prprf.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prscanf.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prstdio.$(OBJ_SUFFIX) \
- threads/$(OBJDIR)/prcmon.$(OBJ_SUFFIX) \
- threads/$(OBJDIR)/prrwlock.$(OBJ_SUFFIX) \
- threads/$(OBJDIR)/prtpd.$(OBJ_SUFFIX) \
- linking/$(OBJDIR)/prlink.$(OBJ_SUFFIX) \
- malloc/$(OBJDIR)/prmem.$(OBJ_SUFFIX) \
- md/$(OBJDIR)/prosdep.$(OBJ_SUFFIX) \
- memory/$(OBJDIR)/prshm.$(OBJ_SUFFIX) \
- memory/$(OBJDIR)/prshma.$(OBJ_SUFFIX) \
- memory/$(OBJDIR)/prseg.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/pralarm.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/pratom.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prcountr.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prdtoa.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prenv.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prerr.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prerror.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prerrortable.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prinit.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prinrval.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/pripc.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prlog2.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prlong.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prnetdb.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prolock.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prrng.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prsystem.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prthinfo.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prtpool.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prtrace.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/prtime.$(OBJ_SUFFIX)
-
-# ilib now rejects empty objects
-ifneq ($(MOZ_OS2_TOOLS),VACPP)
-OBJS += malloc/$(OBJDIR)/prmalloc.$(OBJ_SUFFIX)
-endif
-
-ifdef USE_PTHREADS
-OBJS += \
- pthreads/$(OBJDIR)/ptsynch.$(OBJ_SUFFIX) \
- pthreads/$(OBJDIR)/ptio.$(OBJ_SUFFIX) \
- pthreads/$(OBJDIR)/ptthread.$(OBJ_SUFFIX) \
- pthreads/$(OBJDIR)/ptmisc.$(OBJ_SUFFIX)
-else
-OBJS += \
- io/$(OBJDIR)/prdir.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prfile.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prio.$(OBJ_SUFFIX) \
- io/$(OBJDIR)/prsocket.$(OBJ_SUFFIX) \
- misc/$(OBJDIR)/pripcsem.$(OBJ_SUFFIX)
-
-ifndef USE_BTHREADS
-OBJS += \
- threads/$(OBJDIR)/prcthr.$(OBJ_SUFFIX) \
- threads/$(OBJDIR)/prdump.$(OBJ_SUFFIX) \
- threads/$(OBJDIR)/prmon.$(OBJ_SUFFIX) \
- threads/$(OBJDIR)/prsem.$(OBJ_SUFFIX) \
- threads/combined/$(OBJDIR)/prucpu.$(OBJ_SUFFIX) \
- threads/combined/$(OBJDIR)/prucv.$(OBJ_SUFFIX) \
- threads/combined/$(OBJDIR)/prulock.$(OBJ_SUFFIX) \
- threads/combined/$(OBJDIR)/prustack.$(OBJ_SUFFIX) \
- threads/combined/$(OBJDIR)/pruthr.$(OBJ_SUFFIX)
-endif
-
-endif
-
-ifeq ($(USE_CPLUS), 1)
-OBJS += \
- cplus/$(OBJDIR)/rcbase.$(OBJ_SUFFIX) \
- cplus/$(OBJDIR)/rccv.$(OBJ_SUFFIX) \
- cplus/$(OBJDIR)/rcfileio.$(OBJ_SUFFIX) \
- cplus/$(OBJDIR)/rcinrval.$(OBJ_SUFFIX) \
- cplus/$(OBJDIR)/rcio.$(OBJ_SUFFIX) \
- cplus/$(OBJDIR)/rclock.$(OBJ_SUFFIX) \
- cplus/$(OBJDIR)/rcnetdb.$(OBJ_SUFFIX) \
- cplus/$(OBJDIR)/rcnetio.$(OBJ_SUFFIX) \
- cplus/$(OBJDIR)/rcthread.$(OBJ_SUFFIX) \
- cplus/$(OBJDIR)/rctime.$(OBJ_SUFFIX)
-endif
-
-ifeq ($(OS_ARCH), WINNT)
-ifneq ($(OS_TARGET),WIN16)
-DLLBASE=/BASE:0x30000000
-RES=$(OBJDIR)/nspr.res
-RESNAME=nspr.rc
-ifdef MOZ_DEBUG
-ifdef GLOWCODE
-EXTRA_LIBS += $(GLOWDIR)/glowcode.lib
-endif
-endif
-endif
-
-ifeq ($(OS_TARGET), WIN16)
-OBJS += md/windows/$(OBJDIR)/w16null.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16proc.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16thred.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16fmem.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16sock.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16mem.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16io.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16gc.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16error.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16callb.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntinrval.$(OBJ_SUFFIX)
-EXTRA_LIBS += $(MOD_DEPTH)/tools/winsock.lib
-W16_EXPORTS = EXPORT _malloc.2=_PR_MD_malloc RESIDENT, \
- _realloc.3=_PR_MD_realloc RESIDENT, \
- _calloc.4=_PR_MD_calloc RESIDENT, \
- _free.5=_PR_MD_free RESIDENT, \
- _getenv.9=_PR_MD_getenv RESIDENT, \
- _printf.11=_PR_MD_printf RESIDENT, \
- _strftime.13=_PR_MD_strftime RESIDENT, \
- _sscanf.33=_PR_MD_sscanf RESIDENT, \
- _putenv.10=_PR_MD_putenv RESIDENT, \
- _fprintf.12=_PR_MD_fprintf RESIDENT
-else
-ifeq ($(OS_TARGET), WIN95)
-OBJS += md/windows/$(OBJDIR)/w95io.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w95sock.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w95thred.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w95cv.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntgc.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntmisc.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntinrval.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntsec.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntsem.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/win32_errors.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32ipcsem.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32poll.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32rng.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32shm.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w95dllmain.$(OBJ_SUFFIX)
-else
-OBJS += md/windows/$(OBJDIR)/ntdllmn.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntio.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntgc.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntthread.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntmisc.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntinrval.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntsec.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntsem.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/win32_errors.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32ipcsem.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32rng.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32shm.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32poll.$(OBJ_SUFFIX)
-endif
-endif
-
-else
-
-ifeq ($(OS_ARCH),OS2)
-OBJS += md/os2/$(OBJDIR)/os2io.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2sock.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2thred.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2cv.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2gc.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2misc.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2inrval.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2sem.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2_errors.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2poll.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2rng.$(OBJ_SUFFIX)
-else
-
-ifeq ($(OS_ARCH), BeOS)
- include md/beos/objs.mk
- include bthreads/objs.mk
-else
- # Unix
- include md/unix/objs.mk
-endif
-endif
-endif
-
-LIBRARY_NAME = nspr
-LIBRARY_VERSION = $(MOD_VERSION)
-
-RELEASE_LIBS = $(TARGETS)
-
-include $(MOD_DEPTH)/config/rules.mk
-
-ifeq ($(BUILD_AIX_RTL_LIBC),1)
-TARGETS += $(AIX_RTL_LIBC)
-# XXX is this a shared library?
-endif
-
-#
-# Version information generation (begin)
-#
-ECHO = echo
-INCLUDES = -I$(DIST)/include
-TINC = $(OBJDIR)/_pr_bld.h
-
-ifeq ($(OS_TARGET),OS2)
-PROD = nspr$(MOD_VERSION).$(DLL_SUFFIX)
-else
-PROD = $(notdir $(SHARED_LIBRARY))
-endif
-
-NOW = $(MOD_DEPTH)/config/$(OBJDIR)/now
-SH_DATE = $(shell date)
-SH_NOW = $(shell $(NOW))
-
-ifeq ($(OS_ARCH), WINNT)
- SUF = i64
-else
- SUF = LL
-endif
-
-DEFINES += -D_NSPR_BUILD_
-
-$(TINC):
- @$(MAKE_OBJDIR)
- @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
- @if test ! -z "$(SH_NOW)"; then \
- $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \
- else \
- true; \
- fi
- @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC)
-
-
-$(OBJDIR)/prvrsion.$(OBJ_SUFFIX): prvrsion.c $(TINC)
-ifeq ($(OS_ARCH), WINNT)
- $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) prvrsion.c
-else
-ifeq ($(MOZ_OS2_TOOLS), VACPP)
- $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) prvrsion.c
-else
- $(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) prvrsion.c
-endif
-endif
-#
-# Version information generation (end)
-#
-
-
-#
-# The Client build wants the shared libraries in $(DIST)/bin,
-# so we also install them there.
-#
-
-export:: $(TARGETS)
- $(INSTALL) -m 444 $(TARGETS) $(DIST)/lib
-ifdef SHARED_LIBRARY
-ifeq ($(OS_ARCH),HP-UX)
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/lib
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/bin
-else
- $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/bin
-endif
-ifeq ($(OS_ARCH), OpenVMS)
- $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(DIST)/lib
-endif
-endif
-ifeq ($(MOZ_BITS),16)
- $(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/lib
- $(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/bin
-endif
-
-ifeq ($(BUILD_AIX_RTL_LIBC),1)
-$(AIX_RTL_LIBC): /usr/ccs/lib/libc.a
- rtl_enable -o $@ $<
-endif
-
-install:: export
diff --git a/pr/src/Makefile.in b/pr/src/Makefile.in
index bad88779..55e96907 100644
--- a/pr/src/Makefile.in
+++ b/pr/src/Makefile.in
@@ -28,6 +28,11 @@ include $(topsrcdir)/config/config.mk
DIRS = io linking malloc md memory misc threads
+# For VAC++ 4 geticcdata rule in config/OS2.mk
+ifeq ($(MOZ_OS2_TOOLS),VACPP)
+CSRCS = prvrsion.c
+endif
+
ifeq ($(USE_PTHREADS), 1)
DIRS += pthreads
endif
@@ -40,8 +45,6 @@ ifeq ($(USE_CPLUS), 1)
DIRS += cplus
endif
-ifndef USE_AUTOCONF
-
#
# Define platform-dependent OS_LIBS
#
@@ -49,8 +52,6 @@ ifndef USE_AUTOCONF
# Disable optimization of the nspr on SunOS4.1.3
ifeq ($(OS_ARCH),SunOS)
ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-export OPTIMIZER
OS_LIBS = -lm
else # 4.1.3_U1
ifdef USE_PTHREADS
@@ -100,7 +101,7 @@ endif
ifeq ($(OS_ARCH),OSF1)
ifeq ($(USE_PTHREADS), 1)
-OS_LIBS = -lpthread
+OS_LIBS = -lpthread -lrt
endif
ifneq ($(OS_RELEASE),V2.0)
OS_LIBS += -lc_r
@@ -120,7 +121,7 @@ ifeq ($(USE_PTHREADS), 1)
ifeq (,$(filter-out B.10.10 B.10.20,$(OS_RELEASE)))
OS_LIBS = -ldce
else
-OS_LIBS = -lpthread
+OS_LIBS = -lpthread -lrt
endif
endif
ifeq ($(PTHREADS_USER), 1)
@@ -142,16 +143,15 @@ OS_LIBS = -lsocket -lnsl -lgen -lresolv
endif
ifeq ($(OS_ARCH),WINNT)
-ifeq ($(OS_TARGET),OS2)
-# We define this in os2.mk.
-else
-ifneq ($(OS_TARGET),WIN16)
-OS_LIBS = wsock32.lib winmm.lib
-endif
+OS_LIBS = advapi32.lib wsock32.lib
endif
+
+ifdef GC_LEAK_DETECTOR
+EXTRA_LIBS = -L$(dist_libdir) -lboehm
endif
-endif # USE_AUTOCONF
+EXTRA_LIBS += $(OS_LIBS)
+
#
# Define platform-dependent OBJS
#
@@ -174,7 +174,6 @@ OBJS = \
threads/$(OBJDIR)/prrwlock.$(OBJ_SUFFIX) \
threads/$(OBJDIR)/prtpd.$(OBJ_SUFFIX) \
linking/$(OBJDIR)/prlink.$(OBJ_SUFFIX) \
- malloc/$(OBJDIR)/prmalloc.$(OBJ_SUFFIX) \
malloc/$(OBJDIR)/prmem.$(OBJ_SUFFIX) \
md/$(OBJDIR)/prosdep.$(OBJ_SUFFIX) \
memory/$(OBJDIR)/prshm.$(OBJ_SUFFIX) \
@@ -198,9 +197,15 @@ OBJS = \
misc/$(OBJDIR)/prrng.$(OBJ_SUFFIX) \
misc/$(OBJDIR)/prsystem.$(OBJ_SUFFIX) \
misc/$(OBJDIR)/prthinfo.$(OBJ_SUFFIX) \
+ misc/$(OBJDIR)/prtpool.$(OBJ_SUFFIX) \
misc/$(OBJDIR)/prtrace.$(OBJ_SUFFIX) \
misc/$(OBJDIR)/prtime.$(OBJ_SUFFIX)
+# ilib now rejects empty objects
+ifneq ($(MOZ_OS2_TOOLS),VACPP)
+OBJS += malloc/$(OBJDIR)/prmalloc.$(OBJ_SUFFIX)
+endif
+
ifdef USE_PTHREADS
OBJS += \
pthreads/$(OBJDIR)/ptsynch.$(OBJ_SUFFIX) \
@@ -244,109 +249,23 @@ OBJS += \
cplus/$(OBJDIR)/rctime.$(OBJ_SUFFIX)
endif
-ifdef USE_AUTOCONF
-
-include $(srcdir)/md/$(PR_MD_ARCH_DIR)/objs.mk
-ifdef USE_BTHREADS
-include $(srcdir)/bthreads/objs.mk
+ifdef GC_LEAK_DETECTOR
+OBJS += memory/$(OBJDIR)/prgcleak.$(OBJ_SUFFIX)
endif
-else
-
ifeq ($(OS_ARCH), WINNT)
-ifneq (,$(filter-out WIN16 OS2,$(OS_TARGET)))
DLLBASE=/BASE:0x30000000
RES=$(OBJDIR)/nspr.res
RESNAME=nspr.rc
-ifdef MOZ_DEBUG
-ifdef GLOWCODE
-EXTRA_LIBS += $(GLOWDIR)/glowcode.lib
-endif
-endif
-endif
-
-ifeq ($(OS_TARGET), WIN16)
-OBJS += md/windows/$(OBJDIR)/w16null.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16proc.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16thred.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16fmem.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16sock.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16mem.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16io.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16gc.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16error.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w16callb.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntinrval.$(OBJ_SUFFIX)
-EXTRA_LIBS += $(MOD_DEPTH)/tools/winsock.lib
-W16_EXPORTS = EXPORT _malloc.2=_PR_MD_malloc RESIDENT, \
- _realloc.3=_PR_MD_realloc RESIDENT, \
- _calloc.4=_PR_MD_calloc RESIDENT, \
- _free.5=_PR_MD_free RESIDENT, \
- _getenv.9=_PR_MD_getenv RESIDENT, \
- _printf.11=_PR_MD_printf RESIDENT, \
- _strftime.13=_PR_MD_strftime RESIDENT, \
- _sscanf.33=_PR_MD_sscanf RESIDENT, \
- _putenv.10=_PR_MD_putenv RESIDENT, \
- _fprintf.12=_PR_MD_fprintf RESIDENT
-else
-ifeq ($(OS_TARGET), WIN95)
-OBJS += md/windows/$(OBJDIR)/w95io.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w95sock.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w95thred.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w95cv.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntgc.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntmisc.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntinrval.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntsem.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/win32_errors.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32ipcsem.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32poll.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32rng.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32shm.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w95dllmain.$(OBJ_SUFFIX)
-else
-ifeq ($(OS_TARGET),OS2)
-OBJS += md/os2/$(OBJDIR)/os2io.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2sock.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2thred.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2cv.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2gc.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2misc.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2inrval.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2sem.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2_errors.$(OBJ_SUFFIX) \
- md/os2/$(OBJDIR)/os2poll.$(OBJ_SUFFIX)
-else
-OBJS += md/windows/$(OBJDIR)/ntdllmn.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntio.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntgc.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntthread.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntmisc.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntinrval.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/ntsem.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/win32_errors.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32ipcsem.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32rng.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32shm.$(OBJ_SUFFIX) \
- md/windows/$(OBJDIR)/w32poll.$(OBJ_SUFFIX)
-endif
-endif
-endif
-
-else
+endif # WINNT
-ifeq ($(OS_ARCH), BeOS)
- include $(srcdir)/md/beos/objs.mk
- include $(srcdir)/bthreads/objs.mk
-else
- # Unix
- include $(srcdir)/md/unix/objs.mk
-endif
+include $(srcdir)/md/$(PR_MD_ARCH_DIR)/objs.mk
+ifdef USE_BTHREADS
+include $(srcdir)/bthreads/objs.mk
endif
-endif # !USE_AUTOCONF
LIBRARY_NAME = nspr
-LIBRARY_VERSION = $(MOD_VERSION)
+LIBRARY_VERSION = $(MOD_MAJOR_VERSION)
RELEASE_LIBS = $(TARGETS)
@@ -361,25 +280,29 @@ endif
# Version information generation (begin)
#
ECHO = echo
-INCLUDES = -I$(DIST)/include
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
TINC = $(OBJDIR)/_pr_bld.h
+
+ifeq ($(OS_TARGET),OS2)
+PROD = nspr$(MOD_MAJOR_VERSION).$(DLL_SUFFIX)
+else
PROD = $(notdir $(SHARED_LIBRARY))
+endif
+
NOW = $(MOD_DEPTH)/config/$(OBJDIR)/now
SH_DATE = $(shell date)
SH_NOW = $(shell $(NOW))
ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET),OS2)
- SUF =
-else
SUF = i64
-endif
else
SUF = LL
endif
DEFINES += -D_NSPR_BUILD_
+GARBAGE += $(TINC)
+
$(TINC):
@$(MAKE_OBJDIR)
@$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
@@ -393,35 +316,36 @@ $(TINC):
$(OBJDIR)/prvrsion.$(OBJ_SUFFIX): prvrsion.c $(TINC)
ifeq ($(OS_ARCH), WINNT)
-ifdef XP_OS2_EMX
- $(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) $<
+ $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) $<
else
+ifeq ($(MOZ_OS2_TOOLS), VACPP)
$(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) $<
-endif
else
$(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) $<
endif
+endif
#
# Version information generation (end)
#
#
-# The Client build wants the shared libraries in $(DIST)/bin,
+# The Client build wants the shared libraries in $(dist_bindir)
# so we also install them there.
#
export:: $(TARGETS)
- $(INSTALL) -m 444 $(TARGETS) $(DIST)/lib
+ $(INSTALL) -m 444 $(TARGETS) $(dist_libdir)
ifdef SHARED_LIBRARY
ifeq ($(OS_ARCH),HP-UX)
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/lib
- $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DIST)/bin
+ $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_libdir)
+ $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_bindir)
else
- $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/bin
+ $(INSTALL) -m 444 $(SHARED_LIBRARY) $(dist_bindir)
endif
ifeq ($(OS_ARCH), OpenVMS)
- $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(DIST)/lib
+ $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(dist_libdir)
+ $(INSTALL) -m 444 $(SHARED_LIBRARY:.$(DLL_SUFFIX)=.vms) $(dist_bindir)
endif
endif
ifeq ($(MOZ_BITS),16)
@@ -434,5 +358,4 @@ $(AIX_RTL_LIBC): /usr/ccs/lib/libc.a
rtl_enable -o $@ $<
endif
-install:: export
diff --git a/pr/src/bthreads/.cvsignore b/pr/src/bthreads/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/bthreads/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/bthreads/Makefile b/pr/src/bthreads/Makefile
deleted file mode 100644
index 1bddbdc0..00000000
--- a/pr/src/bthreads/Makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# The contents of this file are subject to the Mozilla Public License
-# Version 1.1 (the "MPL"); you may not use this file except in
-# compliance with the MPL. You may obtain a copy of the MPL at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the MPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL
-# for the specific language governing rights and limitations under the
-# MPL.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-include bsrcs.mk
-CSRCS += $(BTCSRCS)
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-include $(MOD_DEPTH)/config/rules.mk
-
-DEFINES += -D_NSPR_BUILD_
-
-export:: $(TARGETS)
-
-install:: export
-
diff --git a/pr/src/bthreads/Makefile.in b/pr/src/bthreads/Makefile.in
index e0300039..14f2acdd 100644
--- a/pr/src/bthreads/Makefile.in
+++ b/pr/src/bthreads/Makefile.in
@@ -26,7 +26,7 @@ CSRCS += $(BTCSRCS)
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
include $(topsrcdir)/config/rules.mk
@@ -34,5 +34,4 @@ DEFINES += -D_NSPR_BUILD_
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/bthreads/btcvar.c b/pr/src/bthreads/btcvar.c
index 9e77e27b..b151f332 100644
--- a/pr/src/bthreads/btcvar.c
+++ b/pr/src/bthreads/btcvar.c
@@ -88,34 +88,46 @@ PR_IMPLEMENT(PRStatus)
PR_WaitCondVar (PRCondVar *cvar, PRIntervalTime timeout)
{
status_t result;
-
- /*
- ** This is an entirely stupid bug, but... If you call
- ** acquire_sem_etc with a timeout of exactly 1,000,000 microseconds
- ** it returns immediately with B_NO_ERROR. 1,000,010 microseconds
- ** returns as expected. Running BeOS/Intel R3.1 at this time.
- ** Forwarded to Be, Inc. for resolution, Bug ID 980624-225956
- **
- ** Update: Be couldn't reproduce it, but removing timeout++ still
- ** exhibits the problem on BeOS/Intel R4 and BeOS/PPC R4.
- */
-
- timeout++;
+ bigtime_t interval;
PR_Unlock( cvar->lock );
- if( PR_INTERVAL_NO_WAIT != timeout )
- {
- if( PR_INTERVAL_NO_TIMEOUT == timeout )
- {
- if( acquire_sem( cvar->isem ) != B_NO_ERROR ) return PR_FAILURE;
-
- } else
- {
- result = acquire_sem_etc( cvar->isem, 1, B_TIMEOUT, PR_IntervalToMicroseconds( timeout ) );
- if( result != B_NO_ERROR && result != B_TIMED_OUT )
- return PR_FAILURE;
- }
+ switch (timeout) {
+ case PR_INTERVAL_NO_WAIT:
+ /* nothing to do */
+ break;
+
+ case PR_INTERVAL_NO_TIMEOUT:
+ /* wait as long as necessary */
+ if( acquire_sem( cvar->isem ) != B_NO_ERROR ) return PR_FAILURE;
+ break;
+
+ default:
+ interval = (bigtime_t)PR_IntervalToMicroseconds(timeout);
+
+ /*
+ ** in R5, this problem seems to have been resolved, so we
+ ** won't bother with it
+ */
+#if !defined(B_BEOS_VERSION_5) || (B_BEOS_VERSION < B_BEOS_VERSION_5)
+ /*
+ ** This is an entirely stupid bug, but... If you call
+ ** acquire_sem_etc with a timeout of exactly 1,000,000 microseconds
+ ** it returns immediately with B_NO_ERROR. 1,000,010 microseconds
+ ** returns as expected. Running BeOS/Intel R3.1 at this time.
+ ** Forwarded to Be, Inc. for resolution, Bug ID 980624-225956
+ **
+ ** Update: Be couldn't reproduce it, but removing timeout++ still
+ ** exhibits the problem on BeOS/Intel R4 and BeOS/PPC R4.
+ */
+ if (interval == 1000000)
+ interval = 1000010;
+#endif /* !defined(B_BEOS_VERSION_5) || (B_BEOS_VERSION < B_BEOS_VERSION_5) */
+
+ result = acquire_sem_etc( cvar->isem, 1, B_RELATIVE_TIMEOUT, interval);
+ if( result != B_NO_ERROR && result != B_TIMED_OUT )
+ return PR_FAILURE;
+ break;
}
PR_Lock( cvar->lock );
@@ -162,4 +174,6 @@ PR_IMPLEMENT(PRStatus)
if( release_sem_etc( cvar->isem, semInfo.count, 0 ) != B_NO_ERROR )
return PR_FAILURE;
+
+ return PR_SUCCESS;
}
diff --git a/pr/src/bthreads/btthread.c b/pr/src/bthreads/btthread.c
index fde9189a..35fdba38 100644
--- a/pr/src/bthreads/btthread.c
+++ b/pr/src/bthreads/btthread.c
@@ -12,6 +12,7 @@
*/
#include <kernel/OS.h>
+#include <support/TLS.h>
#include "prlog.h"
#include "primpl.h"
@@ -22,67 +23,63 @@
#include <string.h>
#include <signal.h>
+/* values for PRThread.state */
#define BT_THREAD_PRIMORD 0x01 /* this is the primordial thread */
#define BT_THREAD_SYSTEM 0x02 /* this is a system thread */
+#define BT_THREAD_JOINABLE 0x04 /* this is a joinable thread */
struct _BT_Bookeeping
{
PRLock *ml; /* a lock to protect ourselves */
- PRCondVar *cv; /* used to signal global things */
+ sem_id cleanUpSem; /* the primoridal thread will block on this
+ sem while waiting for the user threads */
PRInt32 threadCount; /* user thred count */
-} bt_book = { 0 };
+} bt_book = { NULL, B_ERROR, 0 };
-/*
-** A structure at the root of the thread private data. Each member of
-** the array keys[] points to a hash table based on the thread's ID.
-*/
-struct _BT_PrivateData
-{
- PRLock *lock; /* A lock to coordinate access */
- struct _BT_PrivateHash *keys[128]; /* Up to 128 keys, pointing to a hash table */
+#define BT_TPD_LIMIT 128 /* number of TPD slots we'll provide (arbitrary) */
-} bt_privateRoot = { 0 };
+/* these will be used to map an index returned by PR_NewThreadPrivateIndex()
+ to the corresponding beos native TLS slot number, and to the destructor
+ for that slot - note that, because it is allocated globally, this data
+ will be automatically zeroed for us when the program begins */
+static int32 tpd_beosTLSSlots[BT_TPD_LIMIT];
+static PRThreadPrivateDTOR tpd_dtors[BT_TPD_LIMIT];
-/*
-** A dynamically allocated structure that contains 256 hash buckets that
-** contain a linked list of thread IDs. The hash is simply the last 8 bits
-** of the thread_id. ( current thread_id & 0x000000FF )
-*/
+static vint32 tpd_slotsUsed=0; /* number of currently-allocated TPD slots */
+static int32 tls_prThreadSlot; /* TLS slot in which PRThread will be stored */
-struct _BT_PrivateHash
-{
- void (PR_CALLBACK *destructor)(void *arg); /* The destructor */
- struct _BT_PrivateEntry *next[256]; /* Pointer to the first element in the list */
-};
+/* this mutex will be used to synchronize access to every
+ PRThread.md.joinSem and PRThread.md.is_joining (we could
+ actually allocate one per thread, but that seems a bit excessive,
+ especially considering that there will probably be little
+ contention, PR_JoinThread() is allowed to block anyway, and the code
+ protected by the mutex is short/fast) */
+static PRLock *joinSemLock;
-/*
-** A dynamically allocated structure that is a member of a linked list of
-** thread IDs.
-*/
-
-struct _BT_PrivateEntry
-{
- struct _BT_PrivateEntry *next; /* Pointer to the next thread */
- thread_id threadID; /* The BeOS thread ID */
- void *data; /* The data */
-};
-
-PRUint32 _bt_mapPriority( PRThreadPriority priority );
-PR_IMPLEMENT(void *) _bt_getThreadPrivate(PRUintn index);
+static PRUint32 _bt_MapNSPRToNativePriority( PRThreadPriority priority );
+static PRThreadPriority _bt_MapNativeToNSPRPriority( PRUint32 priority );
+static void _bt_CleanupThread(void *arg);
+static PRThread *_bt_AttachThread();
void
_PR_InitThreads (PRThreadType type, PRThreadPriority priority,
PRUintn maxPTDs)
{
PRThread *primordialThread;
- PRLock *tempLock;
- PRUintn tempKey;
PRUint32 beThreadPriority;
+ /* allocate joinSem mutex */
+ joinSemLock = PR_NewLock();
+ if (joinSemLock == NULL)
+ {
+ PR_SetError(PR_OUT_OF_MEMORY_ERROR, 0);
+ return;
+ }
+
/*
- ** Create a NSPR structure for our primordial thread.
+ ** Create and initialize NSPR structure for our primordial thread.
*/
primordialThread = PR_NEWZAP(PRThread);
@@ -92,82 +89,75 @@ _PR_InitThreads (PRThreadType type, PRThreadPriority priority,
return;
}
+ primordialThread->md.joinSem = B_ERROR;
+
/*
** Set the priority to the desired level.
*/
- beThreadPriority = _bt_mapPriority( priority );
+ beThreadPriority = _bt_MapNSPRToNativePriority( priority );
set_thread_priority( find_thread( NULL ), beThreadPriority );
- primordialThread->state |= BT_THREAD_PRIMORD;
primordialThread->priority = priority;
- /*
- ** Initialize the thread tracking data structures
- */
- bt_privateRoot.lock = PR_NewLock();
- if( NULL == bt_privateRoot.lock )
- {
- PR_SetError( PR_OUT_OF_MEMORY_ERROR, 0 );
- return;
- }
+ /* set the thread's state - note that the thread is not joinable */
+ primordialThread->state |= BT_THREAD_PRIMORD;
+ if (type == PR_SYSTEM_THREAD)
+ primordialThread->state |= BT_THREAD_SYSTEM;
/*
- ** Grab a key. We're guaranteed to be key #0, since we are
- ** always the first one in.
+ ** Allocate a TLS slot for the PRThread structure (just using
+ ** native TLS, as opposed to NSPR TPD, will make PR_GetCurrentThread()
+ ** somewhat faster, and will leave one more TPD slot for our client)
*/
-
- if( PR_NewThreadPrivateIndex( &tempKey, NULL ) != PR_SUCCESS )
- {
- PR_SetError( PR_OUT_OF_MEMORY_ERROR, 0 );
- return;
- }
- PR_ASSERT( tempKey == 0 );
+ tls_prThreadSlot = tls_allocate();
/*
** Stuff our new PRThread structure into our thread specific
** slot.
*/
-
- if( PR_SetThreadPrivate( (PRUint8) 0, (void *) primordialThread ) == PR_FAILURE )
- {
- PR_SetError( PR_OUT_OF_MEMORY_ERROR, 0 );
- return;
- }
- /*
- ** Allocate some memory to hold our global lock. We never clean it
- ** up later, but BeOS automatically frees memory when the thread
- ** dies.
- */
+ tls_set(tls_prThreadSlot, primordialThread);
+ /* allocate lock for bt_book */
bt_book.ml = PR_NewLock();
if( NULL == bt_book.ml )
{
PR_SetError( PR_OUT_OF_MEMORY_ERROR, 0 );
return;
}
+}
- tempLock = PR_NewLock();
- if( NULL == tempLock )
+PRUint32
+_bt_MapNSPRToNativePriority( PRThreadPriority priority )
{
- PR_SetError( PR_OUT_OF_MEMORY_ERROR, 0 );
- return;
+ switch( priority )
+ {
+ case PR_PRIORITY_LOW: return( B_LOW_PRIORITY );
+ case PR_PRIORITY_NORMAL: return( B_NORMAL_PRIORITY );
+ case PR_PRIORITY_HIGH: return( B_DISPLAY_PRIORITY );
+ case PR_PRIORITY_URGENT: return( B_URGENT_DISPLAY_PRIORITY );
+ default: return( B_NORMAL_PRIORITY );
}
+}
- bt_book.cv = PR_NewCondVar( tempLock );
- if( NULL == bt_book.cv )
+PRThreadPriority
+_bt_MapNativeToNSPRPriority(PRUint32 priority)
{
- PR_SetError( PR_OUT_OF_MEMORY_ERROR, 0 );
- return;
- }
+ if (priority < B_NORMAL_PRIORITY)
+ return PR_PRIORITY_LOW;
+ if (priority < B_DISPLAY_PRIORITY)
+ return PR_PRIORITY_NORMAL;
+ if (priority < B_URGENT_DISPLAY_PRIORITY)
+ return PR_PRIORITY_HIGH;
+ return PR_PRIORITY_URGENT;
}
PRUint32
-_bt_mapPriority( PRThreadPriority priority )
+_bt_mapNativeToNSPRPriority( int32 priority )
{
switch( priority )
{
@@ -179,97 +169,97 @@ _bt_mapPriority( PRThreadPriority priority )
}
}
-/**
- * This is a wrapper that all threads invoke that allows us to set some
- * things up prior to a thread's invocation and clean up after a thread has
- * exited.
- */
-static void*
-_bt_root (void* arg)
+/* This method is called by all NSPR threads as they exit */
+void _bt_CleanupThread(void *arg)
{
- PRThread *thred = (PRThread*)arg;
- PRIntn rv;
- void *privData;
- status_t result;
- int i;
-
- struct _BT_PrivateHash *hashTable;
-
- /* Set within the current thread the pointer to our object. This
- object will be deleted when the thread termintates. */
+ PRThread *me = PR_GetCurrentThread();
+ int32 i;
- result = PR_SetThreadPrivate( 0, (void *) thred );
- PR_ASSERT( result == PR_SUCCESS );
+ /* first, clean up all thread-private data */
+ for (i = 0; i < tpd_slotsUsed; i++)
+ {
+ void *oldValue = tls_get(tpd_beosTLSSlots[i]);
+ if ( oldValue != NULL && tpd_dtors[i] != NULL )
+ (*tpd_dtors[i])(oldValue);
+ }
- thred->startFunc(thred->arg); /* run the dang thing */
+ /* if this thread is joinable, wait for someone to join it */
+ if (me->state & BT_THREAD_JOINABLE)
+ {
+ /* protect access to our joinSem */
+ PR_Lock(joinSemLock);
- /*
- ** Call the destructor, if available.
- */
+ if (me->md.is_joining)
+ {
+ /* someone is already waiting to join us (they've
+ allocated a joinSem for us) - let them know we're
+ ready */
+ delete_sem(me->md.joinSem);
- PR_Lock( bt_privateRoot.lock );
+ PR_Unlock(joinSemLock);
- for( i = 0; i < 128; i++ )
+ }
+ else
{
- hashTable = bt_privateRoot.keys[i];
+ /* noone is currently waiting for our demise - it
+ is our responsibility to allocate the joinSem
+ and block on it */
+ me->md.joinSem = create_sem(0, "join sem");
- if( hashTable != NULL )
- {
- if( hashTable->destructor != NULL )
- {
- privData = _bt_getThreadPrivate( i );
+ /* we're done accessing our joinSem */
+ PR_Unlock(joinSemLock);
- if( privData != NULL )
- {
- PR_Unlock( bt_privateRoot.lock );
- hashTable->destructor( privData );
- PR_Lock( bt_privateRoot.lock );
- }
+ /* wait for someone to join us */
+ while (acquire_sem(me->md.joinSem) == B_INTERRUPTED);
}
}
- }
-
- PR_Unlock( bt_privateRoot.lock );
-
- /* decrement our thread counters */
+ /* if this is a user thread, we must update our books */
+ if ((me->state & BT_THREAD_SYSTEM) == 0)
+ {
+ /* synchronize access to bt_book */
PR_Lock( bt_book.ml );
- if (thred->state & BT_THREAD_SYSTEM) {
-#if 0
- bt_book.system -= 1;
-#endif
- } else
- {
+ /* decrement the number of currently-alive user threads */
bt_book.threadCount--;
- if( 0 == bt_book.threadCount )
- {
- PR_NotifyAllCondVar(bt_book.cv);
+ if (bt_book.threadCount == 0 && bt_book.cleanUpSem != B_ERROR) {
+ /* we are the last user thread, and the primordial thread is
+ blocked in PR_Cleanup() waiting for us to finish - notify
+ it */
+ delete_sem(bt_book.cleanUpSem);
}
- }
PR_Unlock( bt_book.ml );
+ }
- if( thred->md.is_joinable == 1 )
- {
- /*
- ** This is a joinable thread. Keep suspending
- ** until is_joining is set to 1
- */
+ /* finally, delete this thread's PRThread */
+ PR_DELETE(me);
+}
- if( thred->md.is_joining == 0 )
+/**
+ * This is a wrapper that all threads invoke that allows us to set some
+ * things up prior to a thread's invocation and clean up after a thread has
+ * exited.
+ */
+static void*
+_bt_root (void* arg)
{
- suspend_thread( thred->md.tid );
- }
- }
+ PRThread *thred = (PRThread*)arg;
+ PRIntn rv;
+ void *privData;
+ status_t result;
+ int i;
+
+ /* save our PRThread object into our TLS */
+ tls_set(tls_prThreadSlot, thred);
- /* delete the thread object */
- PR_DELETE(thred);
+ thred->startFunc(thred->arg); /* run the dang thing */
+
+ /* clean up */
+ _bt_CleanupThread(NULL);
- result = PR_SetThreadPrivate( (PRUint8) 0, (void *) NULL );
- PR_ASSERT( result == PR_SUCCESS );
- exit_thread( NULL );
+ return 0;
}
PR_IMPLEMENT(PRThread*)
@@ -279,62 +269,70 @@ PR_IMPLEMENT(PRThread*)
{
PRUint32 bePriority;
- PRThread* thred = PR_NEWZAP(PRThread);
+ PRThread* thred;
if (!_pr_initialized) _PR_ImplicitInitialization();
- if (thred != NULL) {
+ thred = PR_NEWZAP(PRThread);
+ if (thred == NULL)
+ {
+ PR_SetError(PR_OUT_OF_MEMORY_ERROR, 0);
+ return NULL;
+ }
+
+ thred->md.joinSem = B_ERROR;
+
thred->arg = arg;
thred->startFunc = start;
thred->priority = priority;
if( state == PR_JOINABLE_THREAD )
{
- thred->md.is_joinable = 1;
- }
- else
- {
- thred->md.is_joinable = 0;
+ thred->state |= BT_THREAD_JOINABLE;
}
- thred->md.is_joining = 0;
-
/* keep some books */
PR_Lock( bt_book.ml );
- if (PR_SYSTEM_THREAD == type) {
- thred->state |= BT_THREAD_SYSTEM;
-#if 0
- bt_book.system += 1;
-#endif
- } else {
+ if (type == PR_USER_THREAD)
+ {
bt_book.threadCount++;
}
PR_Unlock( bt_book.ml );
- bePriority = _bt_mapPriority( priority );
+ bePriority = _bt_MapNSPRToNativePriority( priority );
thred->md.tid = spawn_thread((thread_func)_bt_root, "moz-thread",
bePriority, thred);
if (thred->md.tid < B_OK) {
PR_SetError(PR_UNKNOWN_ERROR, thred->md.tid);
PR_DELETE(thred);
- thred = NULL;
+ return NULL;
}
if (resume_thread(thred->md.tid) < B_OK) {
PR_SetError(PR_UNKNOWN_ERROR, 0);
PR_DELETE(thred);
- thred = NULL;
+ return NULL;
}
- } else {
- PR_SetError(PR_OUT_OF_MEMORY_ERROR, 0);
+ return thred;
}
- return thred;
+PR_IMPLEMENT(PRThread*)
+ PR_AttachThread(PRThreadType type, PRThreadPriority priority,
+ PRThreadStack *stack)
+{
+ /* PR_GetCurrentThread() will attach a thread if necessary */
+ return PR_GetCurrentThread();
+}
+
+PR_IMPLEMENT(void)
+ PR_DetachThread()
+{
+ /* we don't support detaching */
}
PR_IMPLEMENT(PRStatus)
@@ -344,36 +342,71 @@ PR_IMPLEMENT(PRStatus)
PR_ASSERT(thred != NULL);
- if( thred->md.is_joinable != 1 )
+ if ((thred->state & BT_THREAD_JOINABLE) == 0)
{
- PR_SetError( PR_UNKNOWN_ERROR, 0 );
+ PR_SetError( PR_INVALID_ARGUMENT_ERROR, 0 );
return( PR_FAILURE );
}
- thred->md.is_joining = 1;
+ /* synchronize access to the thread's joinSem */
+ PR_Lock(joinSemLock);
+
+ if (thred->md.is_joining)
+ {
+ /* another thread is already waiting to join the specified
+ thread - we must fail */
+ PR_Unlock(joinSemLock);
+ return PR_FAILURE;
+ }
+
+ /* let others know we are waiting to join */
+ thred->md.is_joining = PR_TRUE;
+
+ if (thred->md.joinSem == B_ERROR)
+ {
+ /* the thread hasn't finished yet - it is our responsibility to
+ allocate a joinSem and wait on it */
+ thred->md.joinSem = create_sem(0, "join sem");
- status = wait_for_thread(thred->md.tid, &eval);
+ /* we're done changing the joinSem now */
+ PR_Unlock(joinSemLock);
- if (status < B_NO_ERROR) {
+ /* wait for the thread to finish */
+ while (acquire_sem(thred->md.joinSem) == B_INTERRUPTED);
- PR_SetError(PR_UNKNOWN_ERROR, status);
- return PR_FAILURE;
+ }
+ else
+ {
+ /* the thread has already finished, and has allocated the
+ joinSem itself - let it know it can finally die */
+ delete_sem(thred->md.joinSem);
+
+ PR_Unlock(joinSemLock);
}
+ /* make sure the thread is dead */
+ wait_for_thread(thred->md.tid, &eval);
+
return PR_SUCCESS;
}
PR_IMPLEMENT(PRThread*)
PR_GetCurrentThread ()
{
- void* thred;
+ PRThread* thred;
if (!_pr_initialized) _PR_ImplicitInitialization();
- thred = PR_GetThreadPrivate( (PRUint8) 0 );
+ thred = (PRThread *)tls_get( tls_prThreadSlot);
+ if (thred == NULL)
+ {
+ /* this thread doesn't have a PRThread structure (it must be
+ a native thread not created by the NSPR) - assimilate it */
+ thred = _bt_AttachThread();
+ }
PR_ASSERT(NULL != thred);
- return (PRThread*)thred;
+ return thred;
}
PR_IMPLEMENT(PRThreadScope)
@@ -395,7 +428,8 @@ PR_IMPLEMENT(PRThreadState)
PR_GetThreadState (const PRThread* thred)
{
PR_ASSERT(thred != NULL);
- return PR_JOINABLE_THREAD;
+ return (thred->state & BT_THREAD_JOINABLE)?
+ PR_JOINABLE_THREAD: PR_UNJOINABLE_THREAD;
}
PR_IMPLEMENT(PRThreadPriority)
@@ -413,7 +447,7 @@ PR_IMPLEMENT(void) PR_SetThreadPriority(PRThread *thred,
PR_ASSERT( thred != NULL );
thred->priority = newPri;
- bePriority = _bt_mapPriority( newPri );
+ bePriority = _bt_MapNSPRToNativePriority( newPri );
set_thread_priority( thred->md.tid, bePriority );
}
@@ -421,56 +455,28 @@ PR_IMPLEMENT(PRStatus)
PR_NewThreadPrivateIndex (PRUintn* newIndex,
PRThreadPrivateDTOR destructor)
{
- PRUintn index;
- struct _BT_PrivateHash *tempPointer;
+ int32 index;
if (!_pr_initialized) _PR_ImplicitInitialization();
- /*
- ** Grab the lock, or hang until it is free. This is critical code,
- ** and only one thread at a time should be going through it.
- */
-
- PR_Lock( bt_privateRoot.lock );
-
- /*
- ** Run through the array of keys, find the first one that's zero.
- ** Exit if we hit the top of the array.
- */
-
- index = 0;
-
- while( bt_privateRoot.keys[index] != 0 )
- {
- index++;
-
- if( 128 == index )
+ /* reserve the next available tpd slot */
+ index = atomic_add( &tpd_slotsUsed, 1 );
+ if (index >= BT_TPD_LIMIT)
{
- PR_Unlock( bt_privateRoot.lock );
+ /* no slots left - decrement value, then fail */
+ atomic_add( &tpd_slotsUsed, -1 );
+ PR_SetError( PR_TPD_RANGE_ERROR, 0 );
return( PR_FAILURE );
}
- }
-
- /*
- ** Index has the first available zeroed slot. Allocate a
- ** _BT_PrivateHash structure, all zeroed. Assuming that goes
- ** well, return the index.
- */
-
- tempPointer = PR_NEWZAP( struct _BT_PrivateHash );
-
- if( 0 == tempPointer ) {
-
- PR_Unlock( bt_privateRoot.lock );
- return( PR_FAILURE );
- }
- bt_privateRoot.keys[index] = tempPointer;
- tempPointer->destructor = destructor;
+ /* allocate a beos-native TLS slot for this index (the new slot
+ automatically contains NULL) */
+ tpd_beosTLSSlots[index] = tls_allocate();
- PR_Unlock( bt_privateRoot.lock );
+ /* remember the destructor */
+ tpd_dtors[index] = destructor;
- *newIndex = index;
+ *newIndex = (PRUintn)index;
return( PR_SUCCESS );
}
@@ -478,195 +484,44 @@ PR_IMPLEMENT(PRStatus)
PR_IMPLEMENT(PRStatus)
PR_SetThreadPrivate (PRUintn index, void* priv)
{
- thread_id currentThread;
- PRUint8 hashBucket;
- void *tempPointer;
-
- struct _BT_PrivateHash *hashTable;
- struct _BT_PrivateEntry *currentEntry;
- struct _BT_PrivateEntry *previousEntry;
+ void *oldValue;
/*
** Sanity checking
*/
- if( index < 0 || index > 127 ) return( PR_FAILURE );
-
- /*
- ** Grab the thread ID for this thread. Assign it to a hash bucket.
- */
-
- currentThread = find_thread( NULL );
- hashBucket = currentThread & 0x000000FF;
-
- /*
- ** Lock out all other threads then grab the proper hash table based
- ** on the passed index.
- */
-
- PR_Lock( bt_privateRoot.lock );
-
- hashTable = bt_privateRoot.keys[index];
-
- if( 0 == hashTable )
+ if(index < 0 || index >= tpd_slotsUsed || index >= BT_TPD_LIMIT)
{
- PR_Unlock( bt_privateRoot.lock );
+ PR_SetError( PR_TPD_RANGE_ERROR, 0 );
return( PR_FAILURE );
}
- /*
- ** Search through the linked list the end is reached or an existing
- ** entry is found.
- */
-
- currentEntry = hashTable->next[ hashBucket ];
- previousEntry = NULL;
+ /* if the old value isn't NULL, and the dtor for this slot isn't
+ NULL, we must destroy the data */
+ oldValue = tls_get(tpd_beosTLSSlots[index]);
+ if (oldValue != NULL && tpd_dtors[index] != NULL)
+ (*tpd_dtors[index])(oldValue);
- while( currentEntry != 0 )
- {
- if( currentEntry->threadID == currentThread )
- {
- /*
- ** Found a structure previously created for this thread.
- ** Is there a destructor to be called?
- */
-
- if( hashTable->destructor != NULL )
- {
- if( currentEntry->data != NULL )
- {
- PR_Unlock( bt_privateRoot.lock );
- hashTable->destructor( currentEntry->data );
- PR_Lock( bt_privateRoot.lock );
- }
- }
-
- /*
- ** If the data was not NULL, and there was a destructor,
- ** it has already been called. Overwrite the existing
- ** data and return with success.
- */
+ /* save new value */
+ tls_set(tpd_beosTLSSlots[index], priv);
- currentEntry->data = priv;
- PR_Unlock( bt_privateRoot.lock );
return( PR_SUCCESS );
}
- previousEntry = currentEntry;
- currentEntry = previousEntry->next;
- }
-
- /*
- ** If we're here, we didn't find an entry for this thread. Create
- ** one and attach it to the end of the list.
- */
-
- currentEntry = PR_NEWZAP( struct _BT_PrivateEntry );
-
- if( 0 == currentEntry )
- {
- PR_Unlock( bt_privateRoot.lock );
- return( PR_FAILURE );
- }
-
- currentEntry->threadID = currentThread;
- currentEntry->data = priv;
-
- if( 0 == previousEntry )
- {
- /*
- ** This is a special case. This is the first entry in the list
- ** so set the hash table to point to this entry.
- */
-
- hashTable->next[ hashBucket ] = currentEntry;
- }
- else
- {
- previousEntry->next = currentEntry;
- }
-
- PR_Unlock( bt_privateRoot.lock );
-
- return( PR_SUCCESS );
-}
-
PR_IMPLEMENT(void*)
- _bt_getThreadPrivate(PRUintn index)
+ PR_GetThreadPrivate (PRUintn index)
{
- thread_id currentThread;
- PRUint8 hashBucket;
- void *tempPointer;
-
- struct _BT_PrivateHash *hashTable;
- struct _BT_PrivateEntry *currentEntry;
-
- /*
- ** Sanity checking
- */
-
- if( index < 0 || index > 127 ) return( NULL );
-
- /*
- ** Grab the thread ID for this thread. Assign it to a hash bucket.
- */
-
- currentThread = find_thread( NULL );
- hashBucket = currentThread & 0x000000FF;
-
- /*
- ** Grab the proper hash table based on the passed index.
- */
-
- hashTable = bt_privateRoot.keys[index];
-
- if( 0 == hashTable )
+ /* make sure the index is valid */
+ if (index < 0 || index >= tpd_slotsUsed || index >= BT_TPD_LIMIT)
{
- return( NULL );
+ PR_SetError( PR_TPD_RANGE_ERROR, 0 );
+ return NULL;
}
- /*
- ** Search through the linked list the end is reached or an existing
- ** entry is found.
- */
-
- currentEntry = hashTable->next[ hashBucket ];
-
- while( currentEntry != 0 )
- {
- if( currentEntry->threadID == currentThread )
- {
- /*
- ** Found a structure previously created for this thread.
- ** Copy out the data, unlock, and return.
- */
-
- tempPointer = currentEntry->data;
- return( tempPointer );
+ /* return the value */
+ return tls_get( tpd_beosTLSSlots[index] );
}
- currentEntry = currentEntry->next;
- }
-
- /*
- ** Ooops, we ran out of entries. This thread isn't listed.
- */
-
- return( NULL );
-}
-
-PR_IMPLEMENT(void*)
- PR_GetThreadPrivate (PRUintn index)
-{
- void *returnValue;
-
- PR_Lock( bt_privateRoot.lock );
- returnValue = _bt_getThreadPrivate( index );
- PR_Unlock( bt_privateRoot.lock );
-
- return( returnValue );
-}
-
PR_IMPLEMENT(PRStatus)
PR_Interrupt (PRThread* thred)
@@ -674,38 +529,34 @@ PR_IMPLEMENT(PRStatus)
PRIntn rv;
PR_ASSERT(thred != NULL);
- rv = resume_thread( thred->md.tid );
- if( rv == B_BAD_THREAD_STATE )
+ /*
+ ** there seems to be a bug in beos R5 in which calling
+ ** resume_thread() on a blocked thread returns B_OK instead
+ ** of B_BAD_THREAD_STATE (beos bug #20000422-19095). as such,
+ ** to interrupt a thread, we will simply suspend then resume it
+ ** (no longer call resume_thread(), check for B_BAD_THREAD_STATE,
+ ** the suspend/resume to wake up a blocked thread). this wakes
+ ** up blocked threads properly, and doesn't hurt unblocked threads
+ ** (they simply get stopped then re-started immediately)
+ */
+
+ rv = suspend_thread( thred->md.tid );
+ if( rv != B_NO_ERROR )
{
- /*
- ** We have a thread that's not suspended, but is
- ** blocked. Suspend it THEN resume it. The
- ** function call that's hanging will return
- ** B_INTERRUPTED
- */
-
- rv = suspend_thread( thred->md.tid );
- if( rv != B_NO_ERROR )
- {
- PR_SetError( PR_UNKNOWN_ERROR, rv );
- return( PR_FAILURE );
- }
- rv = resume_thread( thred->md.tid );
- if( rv != B_NO_ERROR )
- {
- PR_SetError( PR_UNKNOWN_ERROR, rv );
- return( PR_FAILURE );
- }
+ /* this doesn't appear to be a valid thread_id */
+ PR_SetError( PR_UNKNOWN_ERROR, rv );
+ return PR_FAILURE;
}
+ rv = resume_thread( thred->md.tid );
if( rv != B_NO_ERROR )
{
- PR_SetError( PR_UNKNOWN_ERROR, rv );
- return( PR_FAILURE );
+ PR_SetError( PR_UNKNOWN_ERROR, rv );
+ return PR_FAILURE;
}
- return( PR_SUCCESS );
+ return PR_SUCCESS;
}
PR_IMPLEMENT(void)
@@ -752,25 +603,19 @@ PR_IMPLEMENT(PRStatus)
PR_Lock( bt_book.ml );
- while( bt_book.threadCount > 0 )
+ if (bt_book.threadCount != 0)
{
- PR_Unlock( bt_book.ml );
- PR_WaitCondVar(bt_book.cv, PR_INTERVAL_NO_TIMEOUT);
- PR_Lock( bt_book.ml );
+ /* we'll have to wait for some threads to finish - create a
+ sem to block on */
+ bt_book.cleanUpSem = create_sem(0, "cleanup sem");
}
PR_Unlock( bt_book.ml );
-#if 0
- /* I am not sure if it's safe to delete the cv and lock here, since
- * there may still be "system" threads around. If this call isn't
- * immediately prior to exiting, then there's a problem. */
- if (0 == bt_book.system) {
- PR_DestroyCondVar(bt_book.cv); bt_book.cv = NULL;
- PR_DestroyLock(bt_book.ml); bt_book.ml = NULL;
- }
- PR_DELETE(me);
-#endif
+ /* note that, if all the user threads were already dead, we
+ wouldn't have created a sem above, so this acquire_sem()
+ will fail immediately */
+ while (acquire_sem(bt_book.cleanUpSem) == B_INTERRUPTED);
return PR_SUCCESS;
}
@@ -780,3 +625,46 @@ PR_IMPLEMENT(void)
{
exit(status);
}
+
+PRThread *_bt_AttachThread()
+{
+ PRThread *thread;
+ thread_info tInfo;
+
+ /* make sure this thread doesn't already have a PRThread structure */
+ PR_ASSERT(tls_get(tls_prThreadSlot) == NULL);
+
+ /* allocate a PRThread structure for this thread */
+ thread = PR_NEWZAP(PRThread);
+ if (thread == NULL)
+ {
+ PR_SetError(PR_OUT_OF_MEMORY_ERROR, 0);
+ return NULL;
+ }
+
+ /* get the native thread's current state */
+ get_thread_info(find_thread(NULL), &tInfo);
+
+ /* initialize new PRThread */
+ thread->md.tid = tInfo.thread;
+ thread->md.joinSem = B_ERROR;
+ thread->priority = _bt_MapNativeToNSPRPriority(tInfo.priority);
+
+ /* attached threads are always non-joinable user threads */
+ thread->state = 0;
+
+ /* increment user thread count */
+ PR_Lock(bt_book.ml);
+ bt_book.threadCount++;
+ PR_Unlock(bt_book.ml);
+
+ /* store this thread's PRThread */
+ tls_set(tls_prThreadSlot, thread);
+
+ /* the thread must call _bt_CleanupThread() before it dies, in order
+ to clean up its PRThread, synchronize with the primordial thread,
+ etc. */
+ on_exit_thread(_bt_CleanupThread, NULL);
+
+ return thread;
+}
diff --git a/pr/src/cplus/.cvsignore b/pr/src/cplus/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/cplus/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/cplus/Makefile b/pr/src/cplus/Makefile
deleted file mode 100644
index fc75f115..00000000
--- a/pr/src/cplus/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-CXXSRCS = \
- rcbase.cpp \
- rccv.cpp \
- rcfileio.cpp \
- rcinrval.cpp \
- rcio.cpp \
- rclock.cpp \
- rcnetdb.cpp \
- rcnetio.cpp \
- rcthread.cpp \
- rctime.cpp \
- $(NULL)
-
-OBJS = $(addprefix $(OBJDIR)/,$(CXXSRCS:.cpp=.$(OBJ_SUFFIX)))
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include
-
-DEFINES += -D_NSPR_BUILD_
-
-include $(MOD_DEPTH)/config/rules.mk
-
-HEADERS = $(wildcard *.h)
-
-export:: $(TARGETS)
-
-install:: export
diff --git a/pr/src/cplus/Makefile.in b/pr/src/cplus/Makefile.in
index a7caae58..91a64d29 100644
--- a/pr/src/cplus/Makefile.in
+++ b/pr/src/cplus/Makefile.in
@@ -43,7 +43,7 @@ OBJS = $(addprefix $(OBJDIR)/,$(CXXSRCS:.cpp=.$(OBJ_SUFFIX)))
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include
+INCLUDES = -I$(dist_includedir)
include $(topsrcdir)/config/rules.mk
@@ -53,4 +53,3 @@ HEADERS = $(srcdir)/*.h
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/cplus/tests/.cvsignore b/pr/src/cplus/tests/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/cplus/tests/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/cplus/tests/Makefile b/pr/src/cplus/tests/Makefile
deleted file mode 100644
index b7e658d7..00000000
--- a/pr/src/cplus/tests/Makefile
+++ /dev/null
@@ -1,263 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-ifeq ($(OS_TARGET), WIN16)
-OS_CFLAGS = $(OS_EXE_CFLAGS)
-endif
-
-CXXSRCS = \
- ranfile.cpp \
- thread.cpp \
- interval.cpp \
- time.cpp \
- fileio.cpp \
- switch.cpp \
- tpd.cpp \
- $(NULL)
-
-OBJS = $(addprefix $(OBJDIR)/,$(CXXSRCS:.cpp=.$(OBJ_SUFFIX)))
-
-ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
-PROG_SUFFIX = .exe
-else
-PROG_SUFFIX =
-endif
-
-PROGS = $(addprefix $(OBJDIR)/, $(CXXSRCS:.cpp=$(PROG_SUFFIX)))
-
-TARGETS = $(PROGS) $(OBJS)
-
-INCLUDES = -I.. -I$(DIST)/include
-
-# Setting the variables LDOPTS and LIBPR. We first initialize
-# them to the default values, then adjust them for some platforms.
-LDOPTS = -L$(DIST)/lib
-LIBPR = -lnspr$(MOD_VERSION)
-LIBPL = -lplc$(MOD_VERSION)
-
-ifeq ($(OS_ARCH), IRIX)
- LDOPTS += -rpath $(PWD)/$(DIST)/lib -rdata_shared
- # For 6.x machines, include this flag
- ifeq ($(basename $(OS_RELEASE)),6)
- ifeq ($(USE_N32),1)
- LDOPTS += -n32
- else
- LDOPTS += -32
- endif
-
- ifeq ($(USE_PTHREADS), 1)
- ifeq ($(OS_RELEASE), 6.2)
- LDOPTS += -Wl,-woff,85
- endif
- endif
- endif
-endif
-
-# Solaris
-ifeq ($(OS_ARCH), SunOS)
- ifneq ($(OS_RELEASE), 4.1.3_U1)
- ifdef NS_USE_GCC
- LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(DIST)/lib
- else
- LDOPTS += -R $(PWD)/$(DIST)/lib
- endif
- endif
-
- ifneq ($(LOCAL_THREADS_ONLY),1)
-# SunOS 5.4 and 5.5 need to link with -lthread or -lpthread,
-# even though we already linked with these system libraries
-# when we built libnspr.so.
- ifeq ($(OS_RELEASE), 5.4)
- EXTRA_LIBS = -lthread
- endif
-
- ifeq ($(OS_RELEASE), 5.5)
- ifdef USE_PTHREADS
- EXTRA_LIBS = -lpthread
- else
- EXTRA_LIBS = -lthread
- endif
- endif
- endif # LOCAL_THREADS_ONLY
-endif # SunOS
-
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET), WIN16)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPL = $(DIST)/lib/plc$(MOD_VERSION).lib
-else
- LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
- LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPL = $(DIST)/lib/libplc$(MOD_VERSION).$(LIB_SUFFIX)
-endif
-endif
-
-ifeq ($(OS_ARCH),OS2)
- ifeq ($(MOZ_OS2_TOOLS),VACPP)
- LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPLC = $(DIST)/lib/plc$(MOD_VERSION).lib
- else
- LDOPTS += -Zomf -Zlinker /PM:VIO -lstdcpp
- endif
-endif
-
-ifneq ($(OS_ARCH), WINNT)
-PWD = $(shell pwd)
-endif
-
-ifeq ($(OS_ARCH), OSF1)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), HP-UX)
- LDOPTS += -Wl,+s,+b,$(PWD)/$(DIST)/lib
-endif
-
-# AIX
-ifeq ($(OS_ARCH),AIX)
- LDOPTS += -blibpath:$(PWD)/$(DIST)/lib:/usr/lib:/lib
- ifeq ($(OS_ARCH)$(OS_RELEASE),AIX4.1)
- LIBPR = -lnspr$(MOD_VERSION)_shr
- LIBPLC = -lplc$(MOD_VERSION)_shr
- else
- LDOPTS += -brtl
- EXTRA_LIBS = -ldl
- endif
-endif
-
-ifeq ($(OS_ARCH), Linux)
- ifeq ($(OS_RELEASE), 1.2)
- EXTRA_LIBS = -ldl
- else
- LDOPTS += -Xlinker -rpath $(PWD)/$(DIST)/lib
- ifeq ($(USE_PTHREADS),1)
- EXTRA_LIBS = -lpthread
- endif
- endif
-endif
-
-ifeq ($(OS_ARCH), NCR)
-# XXX: We see some strange problems when we link with libnspr.so.
-# So for now we use static libraries on NCR. The shared library
-# stuff below is commented out.
-LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).a
-LIBPL = $(DIST)/lib/libplc$(MOD_VERSION).a
-EXTRA_LIBS = -lsocket -lnsl -ldl
-
-# NCR needs to link against -lsocket -lnsl (and -lc, which is linked
-# implicitly by $(CC)) again even though we already linked with these
-# system libraries when we built libnspr.so.
-#EXTRA_LIBS = -lsocket -lnsl
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-#export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), SCO_SV)
-# SCO Unix needs to link against -lsocket again even though we
-# already linked with these system libraries when we built libnspr.so.
-EXTRA_LIBS = -lsocket
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), UNIXWARE)
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-#####################################################
-#
-# The rules
-#
-#####################################################
-
-include $(MOD_DEPTH)/config/rules.mk
-
-AIX_PRE_4_2 = 0
-ifeq ($(OS_ARCH),AIX)
-ifneq ($(OS_RELEASE),4.2)
-ifneq ($(USE_PTHREADS), 1)
-#AIX_PRE_4_2 = 1
-endif
-endif
-endif
-
-ifeq ($(AIX_PRE_4_2),1)
-
-# AIX releases prior to 4.2 need a special two-step linking hack
-# in order to both override the system select() and be able to
-# get at the original system select().
-#
-# We use a pattern rule in ns/nspr20/config/rules.mk to generate
-# the .$(OBJ_SUFFIX) file from the .c source file, then do the
-# two-step linking hack below.
-
-$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
- rm -f $@ $(AIX_TMP)
- $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(DIST)/lib/libnspr$(MOD_VERSION).a
- $(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
- rm -f $(AIX_TMP)
-
-else
-
-# All platforms that are not AIX pre-4.2.
-
-$(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET),WIN16)
- echo system windows >w16link
- echo option map >>w16link
- echo option stack=10K >>w16link
- echo option heapsize=32K >>w16link
- echo debug $(DEBUGTYPE) all >>w16link
- echo name $@ >>w16link
- echo file >>w16link
- echo $< >>w16link
- echo library >>w16link
- echo $(LIBPR), >>w16link
- echo $(LIBPL), >>w16link
- echo winsock.lib >>w16link
- wlink @w16link.
-else
- link $(LDOPTS) $< $(LIBPR) $(LIBPL) wsock32.lib -out:$@
-endif
-else
-ifeq ($(OS_ARCH),OS2)
- $(LINK) $(LDOPTS) $< $(LIBGC) $(LIBPLC) $(LIBPR) $(OS_LIBS) $(EXTRA_LIBS) -o $@
-else
- $(CCC) $(XCFLAGS) $< $(LDOPTS) $(LIBPR) $(LIBPL) $(EXTRA_LIBS) -o $@
-endif
-endif
-endif
-
-export:: $(TARGETS)
-install:: export
-clean::
- rm -f $(TARGETS)
-
diff --git a/pr/src/cplus/tests/Makefile.in b/pr/src/cplus/tests/Makefile.in
index 4a6f3907..371da8a6 100644
--- a/pr/src/cplus/tests/Makefile.in
+++ b/pr/src/cplus/tests/Makefile.in
@@ -42,7 +42,7 @@ CXXSRCS = \
OBJS = $(addprefix $(OBJDIR)/,$(CXXSRCS:.cpp=.$(OBJ_SUFFIX)))
-ifeq ($(OS_ARCH), WINNT)
+ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
PROG_SUFFIX = .exe
else
PROG_SUFFIX =
@@ -52,16 +52,16 @@ PROGS = $(addprefix $(OBJDIR)/, $(CXXSRCS:.cpp=$(PROG_SUFFIX)))
TARGETS = $(PROGS) $(OBJS)
-INCLUDES = -I.. -I$(DIST)/include
+INCLUDES = -I.. -I$(dist_includedir)
# Setting the variables LDOPTS and LIBPR. We first initialize
# them to the default values, then adjust them for some platforms.
-LDOPTS = -L$(DIST)/lib
-LIBPR = -lnspr$(MOD_VERSION)
-LIBPL = -lplc$(MOD_VERSION)
+LDOPTS = -L$(dist_libdir)
+LIBPR = -lnspr$(MOD_MAJOR_VERSION)
+LIBPL = -lplc$(MOD_MAJOR_VERSION)
ifeq ($(OS_ARCH), IRIX)
- LDOPTS += -rpath $(PWD)/$(DIST)/lib -rdata_shared
+ LDOPTS += -rpath $(PWD)/$(dist_libdir) -rdata_shared
# For 6.x machines, include this flag
ifeq ($(basename $(OS_RELEASE)),6)
ifeq ($(USE_N32),1)
@@ -82,9 +82,9 @@ endif
ifeq ($(OS_ARCH), SunOS)
ifneq ($(OS_RELEASE), 4.1.3_U1)
ifdef NS_USE_GCC
- LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(DIST)/lib
+ LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(dist_libdir)
else
- LDOPTS += -R $(PWD)/$(DIST)/lib
+ LDOPTS += -R $(PWD)/$(dist_libdir)
endif
endif
@@ -108,13 +108,23 @@ endif # SunOS
ifeq ($(OS_ARCH), WINNT)
ifeq ($(OS_TARGET), WIN16)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPL = $(DIST)/lib/plc$(MOD_VERSION).lib
+ LIBPR = $(dist_libdir)/nspr$(MOD_MAJOR_VERSION).lib
+ LIBPL = $(dist_libdir)/plc$(MOD_MAJOR_VERSION).lib
else
LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
- LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPL = $(DIST)/lib/libplc$(MOD_VERSION).$(LIB_SUFFIX)
+ LIBPR = $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
+ LIBPL = $(dist_libdir)/libplc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)
+endif
endif
+
+ifeq ($(OS_ARCH),OS2)
+ ifeq ($(MOZ_OS2_TOOLS),VACPP)
+ LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO
+ LIBPR = $(dist_libdir)/nspr$(MOD_MAJOR_VERSION).lib
+ LIBPLC = $(dist_libdir)/plc$(MOD_MAJOR_VERSION).lib
+ else
+ LDOPTS += -Zomf -Zlinker /PM:VIO -lstdcpp
+ endif
endif
ifneq ($(OS_ARCH), WINNT)
@@ -122,19 +132,19 @@ PWD = $(shell pwd)
endif
ifeq ($(OS_ARCH), OSF1)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib
+LDOPTS += -rpath $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), HP-UX)
- LDOPTS += -Wl,+s,+b,$(PWD)/$(DIST)/lib
+ LDOPTS += -Wl,+s,+b,$(PWD)/$(dist_libdir)
endif
# AIX
ifeq ($(OS_ARCH),AIX)
- LDOPTS += -blibpath:$(PWD)/$(DIST)/lib:/usr/lib:/lib
+ LDOPTS += -blibpath:$(PWD)/$(dist_libdir):/usr/lib:/lib
ifeq ($(OS_ARCH)$(OS_RELEASE),AIX4.1)
- LIBPR = -lnspr$(MOD_VERSION)_shr
- LIBPLC = -lplc$(MOD_VERSION)_shr
+ LIBPR = -lnspr$(MOD_MAJOR_VERSION)_shr
+ LIBPLC = -lplc$(MOD_MAJOR_VERSION)_shr
else
LDOPTS += -brtl
EXTRA_LIBS = -ldl
@@ -145,7 +155,7 @@ ifeq ($(OS_ARCH), Linux)
ifeq ($(OS_RELEASE), 1.2)
EXTRA_LIBS = -ldl
else
- LDOPTS += -Xlinker -rpath $(PWD)/$(DIST)/lib
+ LDOPTS += -Xlinker -rpath $(PWD)/$(dist_libdir)
ifeq ($(USE_PTHREADS),1)
EXTRA_LIBS = -lpthread
endif
@@ -156,8 +166,8 @@ ifeq ($(OS_ARCH), NCR)
# XXX: We see some strange problems when we link with libnspr.so.
# So for now we use static libraries on NCR. The shared library
# stuff below is commented out.
-LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).a
-LIBPL = $(DIST)/lib/libplc$(MOD_VERSION).a
+LIBPR = $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).a
+LIBPL = $(dist_libdir)/libplc$(MOD_MAJOR_VERSION).a
EXTRA_LIBS = -lsocket -lnsl -ldl
# NCR needs to link against -lsocket -lnsl (and -lc, which is linked
@@ -167,7 +177,7 @@ EXTRA_LIBS = -lsocket -lnsl -ldl
# This hardcodes in the executable programs the directory to find
# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
# option for ld on other platforms.
-#export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+#export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), SCO_SV)
@@ -177,11 +187,11 @@ EXTRA_LIBS = -lsocket
# This hardcodes in the executable programs the directory to find
# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), UNIXWARE)
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
#####################################################
@@ -214,7 +224,7 @@ ifeq ($(AIX_PRE_4_2),1)
$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
@$(MAKE_OBJDIR)
rm -f $@ $(AIX_TMP)
- $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(DIST)/lib/libnspr$(MOD_VERSION).a
+ $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).a
$(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
rm -f $(AIX_TMP)
@@ -243,13 +253,15 @@ else
link $(LDOPTS) $< $(LIBPR) $(LIBPL) wsock32.lib -out:$@
endif
else
+ifeq ($(OS_ARCH),OS2)
+ $(LINK) $(LDOPTS) $< $(LIBGC) $(LIBPLC) $(LIBPR) $(OS_LIBS) $(EXTRA_LIBS) -o $@
+else
$(CCC) $(XCFLAGS) $< $(LDOPTS) $(LIBPR) $(LIBPL) $(EXTRA_LIBS) -o $@
endif
-
+endif
endif
export:: $(TARGETS)
-install:: export
clean::
rm -f $(TARGETS)
diff --git a/pr/src/io/.cvsignore b/pr/src/io/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/io/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/io/Makefile b/pr/src/io/Makefile
deleted file mode 100644
index d9cc321b..00000000
--- a/pr/src/io/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-CSRCS = \
- prfdcach.c \
- prmwait.c \
- priometh.c \
- pripv6.c \
- prmapopt.c \
- prlayer.c \
- prlog.c \
- prmmap.c \
- prpolevt.c \
- prprf.c \
- prscanf.c \
- prstdio.c \
- $(NULL)
-
-ifndef USE_PTHREADS
- CSRCS += \
- prdir.c \
- prfile.c \
- prio.c \
- prsocket.c \
- $(NULL)
-endif
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-DEFINES += -D_NSPR_BUILD_
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
diff --git a/pr/src/io/Makefile.in b/pr/src/io/Makefile.in
index b4272a8a..3c3e57d8 100644
--- a/pr/src/io/Makefile.in
+++ b/pr/src/io/Makefile.in
@@ -59,7 +59,7 @@ endif
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
DEFINES += -D_NSPR_BUILD_
@@ -67,4 +67,3 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/io/pripv6.c b/pr/src/io/pripv6.c
index 485e449d..f5635a59 100644
--- a/pr/src/io/pripv6.c
+++ b/pr/src/io/pripv6.c
@@ -149,6 +149,7 @@ static PRFileDesc* PR_CALLBACK Ipv6ToIpv4SocketAccept (
PRFileDesc *newfd;
PRFileDesc *newstack;
PRNetAddr tmp_ipv4addr;
+ PRNetAddr *addrlower = NULL;
PR_ASSERT(fd != NULL);
PR_ASSERT(fd->lower != NULL);
@@ -161,13 +162,16 @@ static PRFileDesc* PR_CALLBACK Ipv6ToIpv4SocketAccept (
}
*newstack = *fd; /* make a copy of the accepting layer */
- newfd = (fd->lower->methods->accept)(fd->lower, &tmp_ipv4addr, timeout);
+ if (addr)
+ addrlower = &tmp_ipv4addr;
+ newfd = (fd->lower->methods->accept)(fd->lower, addrlower, timeout);
if (NULL == newfd)
{
PR_DELETE(newstack);
return NULL;
}
- _PR_ConvertToIpv6NetAddr(&tmp_ipv4addr, addr);
+ if (addr)
+ _PR_ConvertToIpv6NetAddr(&tmp_ipv4addr, addr);
rv = PR_PushIOLayer(newfd, PR_TOP_IO_LAYER, newstack);
PR_ASSERT(PR_SUCCESS == rv);
@@ -272,11 +276,29 @@ PRStatus _pr_init_ipv6()
#if !defined(_PR_INET6) && defined(_PR_HAVE_GETIPNODEBYNAME)
PRLibrary *lib;
- _pr_getipnodebyname_fp = PR_FindSymbolAndLibrary("getipnodebyname", &lib);
+#if defined(VMS)
+#define GETIPNODEBYNAME "DECC$GETIPNODEBYNAME"
+#define GETIPNODEBYADDR "DECC$GETIPNODEBYADDR"
+#define FREEHOSTENT "DECC$FREEHOSTENT"
+#define GAISTRERROR "DECC$GAISTRERROR"
+ typedef char * (*_pr_getstrerror_t)(int);
+ _pr_getstrerror_t _pr_gaistrerror_fp;
+ _pr_getipnodebyname_fp = NULL;
+ _pr_gaistrerror_fp = (_pr_getstrerror_t)PR_FindSymbolAndLibrary(GAISTRERROR, &lib);
+ if (NULL != _pr_gaistrerror_fp) {
+ if (NULL != (*_pr_gaistrerror_fp)(0))
+ _pr_getipnodebyname_fp = PR_FindSymbol(lib, GETIPNODEBYNAME);
+ }
+#else
+#define GETIPNODEBYNAME "getipnodebyname"
+#define GETIPNODEBYADDR "getipnodebyaddr"
+#define FREEHOSTENT "freehostent"
+ _pr_getipnodebyname_fp = PR_FindSymbolAndLibrary(GETIPNODEBYNAME, &lib);
+#endif
if (NULL != _pr_getipnodebyname_fp) {
- _pr_freehostent_fp = PR_FindSymbol(lib, "freehostent");
+ _pr_freehostent_fp = PR_FindSymbol(lib, FREEHOSTENT);
if (NULL != _pr_freehostent_fp) {
- _pr_getipnodebyaddr_fp = PR_FindSymbol(lib, "getipnodebyaddr");
+ _pr_getipnodebyaddr_fp = PR_FindSymbol(lib, GETIPNODEBYADDR);
if (NULL != _pr_getipnodebyaddr_fp)
_pr_ipv6_is_present = PR_TRUE;
else
diff --git a/pr/src/io/prlog.c b/pr/src/io/prlog.c
index a43fe5a3..398a2edd 100644
--- a/pr/src/io/prlog.c
+++ b/pr/src/io/prlog.c
@@ -14,6 +14,17 @@
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
+ *
+ * Contributors:
+ *
+ * This Original Code has been modified by IBM Corporation.
+ * Modifications made by IBM described herein are
+ * Copyright (c) International Business Machines Corporation, 2000.
+ * Modifications to Mozilla code or documentation identified per
+ * MPL Section 3.3
+ *
+ * Date Modified by Description of modification
+ * 04/10/2000 IBM Corp. Added DebugBreak() definitions for OS/2
*/
#include "primpl.h"
@@ -55,7 +66,7 @@ static PRLock *_pr_logLock;
#endif
-#if defined(XP_PC) && !defined(XP_OS2_VACPP)
+#if defined(XP_PC)
#define strcasecmp stricmp
#define strncasecmp strnicmp
#endif
@@ -104,7 +115,7 @@ static FILE *logFile = NULL;
static PRFileDesc *logFile = 0;
#endif
-#define LINE_BUF_SIZE 200
+#define LINE_BUF_SIZE 512
#define DEFAULT_BUF_SIZE 16384
#ifdef _PR_NEED_STRCASECMP
@@ -170,7 +181,7 @@ void _PR_InitLog(void)
PRInt32 bufSize = DEFAULT_BUF_SIZE;
while (pos < evlen) {
PRIntn level = 1, count = 0, delta = 0;
- count = sscanf(&ev[pos], "%64[A-Za-z0-9]%n:%d%n",
+ count = sscanf(&ev[pos], "%64[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]%n:%d%n",
module, &delta, &level, &delta);
pos += delta;
if (count == 0) break;
@@ -255,7 +266,7 @@ static void _PR_SetLogModuleLevel( PRLogModuleInfo *lm )
while (pos < evlen) {
PRIntn level = 1, count = 0, delta = 0;
- count = sscanf(&ev[pos], "%64[A-Za-z0-9]%n:%d%n",
+ count = sscanf(&ev[pos], "%64[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]%n:%d%n",
module, &delta, &level, &delta);
pos += delta;
if (count == 0) break;
@@ -432,6 +443,24 @@ PR_IMPLEMENT(void) PR_Abort(void)
}
#ifdef DEBUG
+#if defined(XP_OS2)
+/*
+ * Added definitions for DebugBreak() for 2 different OS/2 compilers.
+ * Doing the int3 on purpose for Visual Age so that a developer can
+ * step over the instruction if so desired. Not always possible if
+ * trapping due to exception handling IBM-AKR
+ */
+#if defined(XP_OS2_VACPP)
+#include <builtin.h>
+static void DebugBreak(void) { _interrupt(3); }
+#elif defined(XP_OS2_EMX)
+/* Force a trap */
+static void DebugBreak(void) { int *pTrap=NULL; *pTrap = 1; }
+#else
+static void DebugBreak(void) { }
+#endif
+#endif /* XP_OS2 */
+
PR_IMPLEMENT(void) PR_Assert(const char *s, const char *file, PRIntn ln)
{
PR_LogPrint("Assertion failure: %s, at %s:%d\n", s, file, ln);
@@ -441,7 +470,7 @@ PR_IMPLEMENT(void) PR_Assert(const char *s, const char *file, PRIntn ln)
#ifdef XP_MAC
dprintf("Assertion failure: %s, at %s:%d\n", s, file, ln);
#endif
-#ifdef WIN32
+#if defined(WIN32) || defined(XP_OS2)
DebugBreak();
#endif
#ifndef XP_MAC
diff --git a/pr/src/io/prprf.c b/pr/src/io/prprf.c
index 1da92e84..92856359 100644
--- a/pr/src/io/prprf.c
+++ b/pr/src/io/prprf.c
@@ -36,7 +36,9 @@
** and requires array notation.
*/
#if (defined(LINUX) && defined(__powerpc__)) || defined(WIN16) || \
- defined(QNX) || (defined(__NetBSD__) && defined(__powerpc__))
+ defined(QNX) || \
+ (defined(__NetBSD__) && defined(__powerpc__) && \
+ __NetBSD_Version__ < 105000000)
#define VARARGS_ASSIGN(foo, bar) foo[0] = bar[0]
#else
#define VARARGS_ASSIGN(foo, bar) (foo) = (bar)
diff --git a/pr/src/io/prsocket.c b/pr/src/io/prsocket.c
index 4ee568fd..8a3493bf 100644
--- a/pr/src/io/prsocket.c
+++ b/pr/src/io/prsocket.c
@@ -1304,7 +1304,7 @@ PR_IMPLEMENT(PRStatus) PR_NewTCPSocketPair(PRFileDesc *f[])
}
selfAddr.sin_family = AF_INET;
selfAddr.sin_port = 0;
- selfAddr.sin_addr.s_addr = htonl(INADDR_ANY);
+ selfAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); /* BugZilla: 35408 */
addrLen = sizeof(selfAddr);
if (bind(listenSock, (struct sockaddr *) &selfAddr,
addrLen) == SOCKET_ERROR) {
@@ -1382,7 +1382,7 @@ failed:
if (listenSock == NULL) {
goto failed;
}
- PR_InitializeNetAddr(PR_IpAddrAny, 0, &selfAddr);
+ PR_InitializeNetAddr(PR_IpAddrLoopback, 0, &selfAddr); /* BugZilla: 35408 */
if (PR_Bind(listenSock, &selfAddr) == PR_FAILURE) {
goto failed;
}
diff --git a/pr/src/linking/.cvsignore b/pr/src/linking/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/linking/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/linking/Makefile b/pr/src/linking/Makefile
deleted file mode 100644
index 26baca79..00000000
--- a/pr/src/linking/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-CSRCS = \
- prlink.c \
- $(NULL)
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-DEFINES += -D_NSPR_BUILD_
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
diff --git a/pr/src/linking/Makefile.in b/pr/src/linking/Makefile.in
index d518a886..56637fb2 100644
--- a/pr/src/linking/Makefile.in
+++ b/pr/src/linking/Makefile.in
@@ -39,7 +39,7 @@ CSRCS = \
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
DEFINES += -D_NSPR_BUILD_
@@ -47,4 +47,3 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/linking/prlink.c b/pr/src/linking/prlink.c
index e4d093f1..f10f6f94 100644
--- a/pr/src/linking/prlink.c
+++ b/pr/src/linking/prlink.c
@@ -64,7 +64,8 @@
* On these platforms, symbols have a leading '_'.
*/
#if defined(SUNOS4) || defined(RHAPSODY) || defined(NEXTSTEP) \
- || defined(OPENBSD) || defined(WIN16) || defined(NETBSD)
+ || defined(OPENBSD) || defined(WIN16) \
+ || (defined(NETBSD) && !defined(__ELF__))
#define NEED_LEADING_UNDERSCORE
#endif
@@ -480,6 +481,7 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
{
PRLibrary *lm;
PRLibrary* result;
+ PRInt32 oserr;
if (!_pr_initialized) _PR_ImplicitInitialization();
@@ -490,7 +492,10 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
if (result != NULL) goto unlock;
lm = PR_NEWZAP(PRLibrary);
- if (lm == NULL) goto unlock;
+ if (lm == NULL) {
+ oserr = _MD_ERRNO();
+ goto unlock;
+ }
lm->staticTable = NULL;
#ifdef XP_OS2 /* Why isn't all this stuff in MD code?! */
@@ -502,6 +507,7 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
retry:
ulRc = DosLoadModule(pszError, _MAX_PATH, (PSZ) name, &h);
if (ulRc != NO_ERROR) {
+ oserr = ulRc;
PR_DELETE(lm);
goto unlock;
}
@@ -519,6 +525,7 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
h = LoadLibrary(name);
if (h < (HINSTANCE)HINSTANCE_ERROR) {
+ oserr = _MD_ERRNO();
PR_DELETE(lm);
goto unlock;
}
@@ -538,7 +545,7 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
}
#endif /* WIN32 || WIN16 */
-#if defined(XP_MAC) && GENERATINGCFM
+#if defined(XP_MAC) && TARGET_RT_MAC_CFM
{
OSErr err;
Ptr main;
@@ -562,7 +569,7 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
if (strchr(name, PR_PATH_SEPARATOR) == NULL)
{
if (strchr(name, PR_DIRECTORY_SEPARATOR) == NULL)
- {
+ {
/*
* The name did not contain a ":", so it must be a
* library name. Convert the name to a Pascal string
@@ -594,7 +601,10 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
&connectionID, &main, errName);
#endif
if (err != noErr)
+ {
+ oserr = err;
goto unlock;
+ }
libName = name;
}
@@ -624,7 +634,10 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
/* Copy the name: we'll change it */
cMacPath = strdup(name);
if (cMacPath == NULL)
+ {
+ oserr = _MD_ERRNO();
goto unlock;
+ }
/* First, get the vRefNum */
position = strchr(cMacPath, PR_PATH_SEPARATOR);
@@ -646,6 +659,7 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
index--;
if (index == 0 || index == strlen(cMacPath))
{
+ oserr = _MD_ERRNO();
PR_DELETE(cMacPath);
goto unlock;
}
@@ -653,10 +667,8 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
cFileName = &(cMacPath[index + 1]);
/* Convert the path and name into Pascal strings */
- strcpy((char*) &pName, cMacPath);
- c2pstr((char*) &pName);
- strcpy((char*) &fileSpec.name, cFileName);
- c2pstr((char*) &fileSpec.name);
+ PStrFromCStr(cMacPath, pName);
+ PStrFromCStr(cFileName, fileSpec.name);
strcpy(cName, cFileName);
PR_DELETE(cMacPath);
cMacPath = NULL;
@@ -668,14 +680,20 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
pb.dirInfo.ioFDirIndex = 0;
err = PBGetCatInfoSync(&pb);
if (err != noErr)
+ {
+ oserr = err;
goto unlock;
+ }
fileSpec.parID = pb.dirInfo.ioDrDirID;
/* Resolve an alias if this was one */
err = ResolveAliasFile(&fileSpec, true, &tempUnusedBool,
&tempUnusedBool);
if (err != noErr)
+ {
+ oserr = err;
goto unlock;
+ }
/* Finally, try to load the library */
err = GetDiskFragment(&fileSpec, 0, kCFragGoesToEOF, fileSpec.name,
@@ -683,7 +701,10 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
libName = cName;
if (err != noErr)
+ {
+ oserr = err;
goto unlock;
+ }
}
lm->name = strdup(libName);
@@ -691,7 +712,7 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
lm->next = pr_loadmap;
pr_loadmap = lm;
}
-#elif defined(XP_MAC) && !GENERATINGCFM
+#elif defined(XP_MAC) && !TARGET_RT_MAC_CFM
{
}
@@ -734,12 +755,13 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
NSModule h = NULL;
if (NSCreateObjectFileImageFromFile(name, &ofi)
== NSObjectFileImageSuccess) {
- h = NSLinkModule(ofi, name, TRUE);
+ h = NSLinkModule(ofi, name, NSLINKMODULE_OPTION_PRIVATE);
}
#else
#error Configuration error
#endif
if (!h) {
+ oserr = _MD_ERRNO();
PR_DELETE(lm);
goto unlock;
}
@@ -758,21 +780,82 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
image_info info;
int32 cookie = 0;
image_id h = B_ERROR;
+ PRLibrary *p;
- while(get_next_image_info(0, &cookie, &info) == B_OK)
- if(strcmp(name, info.name + strlen(info.name) - strlen(name)) == 0) {
+ for (p = pr_loadmap; p != NULL; p = p->next) {
+ /* hopefully, our caller will always use the same string
+ to refer to the same library */
+ if (strcmp(name, p->name) == 0) {
+ /* we've already loaded this library */
h = info.id;
- lm->refCount++; /* it has been already loaded implcitly, so pretend it already had a control structure and ref */
+ lm->refCount++;
+ break;
}
+ }
- if(h == B_ERROR)
- h = load_add_on( name );
+ if(h == B_ERROR) {
+ /* it appears the library isn't yet loaded - load it now */
+ char stubName [B_PATH_NAME_LENGTH + 1];
+
+ /* the following is a work-around to a "bug" in the beos -
+ the beos system loader allows only 32M (system-wide)
+ to be used by code loaded as "add-ons" (code loaded
+ through the 'load_add_on()' system call, which includes
+ mozilla components), but allows 256M to be used by
+ shared libraries.
+
+ unfortunately, mozilla is too large to fit into the
+ "add-on" space, so we must trick the loader into
+ loading some of the components as shared libraries. this
+ is accomplished by creating a "stub" add-on (an empty
+ shared object), and linking it with the component
+ (the actual .so file generated by the build process,
+ without any modifications). when this stub is loaded
+ by load_add_on(), the loader will automatically load the
+ component into the shared library space.
+ */
+
+ strcpy(stubName, name);
+ strcat(stubName, ".stub");
+
+ /* first, attempt to load the stub (thereby loading the
+ component as a shared library */
+ if ((h = load_add_on(stubName)) > B_ERROR) {
+ /* the stub was loaded successfully. however, the stub
+ itself is useless (so useless, in fact, that we will
+ simply unload it) */
+ unload_add_on(h);
+ h = B_FILE_NOT_FOUND;
+
+ cookie = 0;
+ while (get_next_image_info(0, &cookie, &info) == B_OK) {
+ char *endOfSystemName = strrchr(info.name, '/');
+ char *endOfPassedName = strrchr(name, '/');
+ if( 0 == endOfSystemName )
+ endOfSystemName=info.name;
+ else
+ endOfSystemName++;
+ if( 0 == endOfPassedName )
+ endOfPassedName=name;
+ else
+ endOfPassedName++;
+ if (strcmp(endOfSystemName, endOfPassedName) == 0) {
+ /* this is the actual component - remember it */
+ h = info.id;
+ break;
+ }
+ }
+
+ } else {
+ /* we failed to load the "stub" - try to load the
+ component directly as an add-on */
+ h = load_add_on(name);
+ }
+ }
- if( h == B_ERROR || h <= 0 ) {
- h = 0;
- result = NULL;
+ if (h <= B_ERROR) {
+ oserr = h;
PR_DELETE( lm );
- lm = NULL;
goto unlock;
}
lm->name = strdup(name);
@@ -787,8 +870,8 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
unlock:
if (result == NULL) {
- PR_SetError(PR_LOAD_LIBRARY_ERROR, _MD_ERRNO());
- DLLErrorInternal(_MD_ERRNO()); /* sets error text */
+ PR_SetError(PR_LOAD_LIBRARY_ERROR, oserr);
+ DLLErrorInternal(oserr); /* sets error text */
}
PR_ExitMonitor(pr_linker_lock);
return result;
@@ -858,6 +941,8 @@ pr_Mac_LoadNamedFragment(const FSSpec *fileSpec, const char* fragmentName)
unlock:
if (result == NULL) {
+ if (newLib != NULL)
+ PR_DELETE(newLib);
PR_SetError(PR_LOAD_LIBRARY_ERROR, _MD_ERRNO());
DLLErrorInternal(_MD_ERRNO()); /* sets error text */
}
@@ -920,6 +1005,8 @@ pr_Mac_LoadIndexedFragment(const FSSpec *fileSpec, PRUint32 fragIndex)
unlock:
if (result == NULL) {
+ if (newLib != NULL)
+ PR_DELETE(newLib);
PR_SetError(PR_LOAD_LIBRARY_ERROR, _MD_ERRNO());
DLLErrorInternal(_MD_ERRNO()); /* sets error text */
}
@@ -976,7 +1063,7 @@ PR_UnloadLibrary(PRLibrary *lib)
}
#endif /* XP_PC */
-#if defined(XP_MAC) && GENERATINGCFM
+#if defined(XP_MAC) && TARGET_RT_MAC_CFM
/* Close the connection */
CloseConnection(&(lib->dlh));
#endif
@@ -1083,7 +1170,14 @@ pr_FindSymbolInLib(PRLibrary *lm, const char *name)
f = NULL;
}
#elif defined(USE_MACH_DYLD)
- f = NSAddressOfSymbol(NSLookupAndBindSymbol(name));
+ {
+ NSSymbol symbol;
+ symbol = NSLookupSymbolInModule(lm->dlh, name);
+ if (symbol != NULL)
+ f = NSAddressOfSymbol(symbol);
+ else
+ f = NULL;
+ }
#endif
#endif /* HAVE_DLL */
#endif /* XP_UNIX */
diff --git a/pr/src/malloc/.cvsignore b/pr/src/malloc/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/malloc/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/malloc/Makefile b/pr/src/malloc/Makefile
deleted file mode 100644
index 1e85dc5c..00000000
--- a/pr/src/malloc/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-DEFINES += -D_NSPR_BUILD_
-
-CSRCS = prmalloc.c prmem.c
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
diff --git a/pr/src/malloc/Makefile.in b/pr/src/malloc/Makefile.in
index d058996d..0dddedc5 100644
--- a/pr/src/malloc/Makefile.in
+++ b/pr/src/malloc/Makefile.in
@@ -35,7 +35,7 @@ endif
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
DEFINES += -D_NSPR_BUILD_
@@ -45,4 +45,3 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/md/.cvsignore b/pr/src/md/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/md/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/md/Makefile b/pr/src/md/Makefile
deleted file mode 100644
index cb047e20..00000000
--- a/pr/src/md/Makefile
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-ifeq ($(OS_ARCH),WINNT)
- DIRS = windows
-else
- ifeq ($(OS_ARCH),OS2)
- DIRS = os2
- else
- ifeq ($(OS_ARCH),BeOS)
- DIRS = beos
- else
- DIRS = unix
- endif
- endif
-endif
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-CSRCS = \
- prosdep.c \
- $(NULL)
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include
-
-DEFINES += -D_NSPR_BUILD_
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
diff --git a/pr/src/md/Makefile.in b/pr/src/md/Makefile.in
index 5e78b60b..f9157722 100644
--- a/pr/src/md/Makefile.in
+++ b/pr/src/md/Makefile.in
@@ -26,30 +26,7 @@ include $(MOD_DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/config.mk
-ifdef USE_AUTOCONF
DIRS = $(PR_MD_ARCH_DIR)
-else
-ifeq ($(OS_ARCH),WINNT)
- ifeq ($(OS_TARGET),OS2)
- DIRS = os2
- else
- DIRS = windows
- endif
-else
- ifeq ($(OS_ARCH),BeOS)
- DIRS = beos
- else
- DIRS = unix
- endif
-endif
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-endif # USE_AUTOCONF
CSRCS = \
prosdep.c \
@@ -57,7 +34,7 @@ CSRCS = \
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include
DEFINES += -D_NSPR_BUILD_
@@ -65,4 +42,3 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/md/beos/.cvsignore b/pr/src/md/beos/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/md/beos/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/md/beos/Makefile b/pr/src/md/beos/Makefile
deleted file mode 100644
index ce21aece..00000000
--- a/pr/src/md/beos/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# The contents of this file are subject to the Mozilla Public License
-# Version 1.1 (the "MPL"); you may not use this file except in
-# compliance with the MPL. You may obtain a copy of the MPL at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the MPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL
-# for the specific language governing rights and limitations under the
-# MPL.
-#
-
-MOD_DEPTH = ../../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-include bsrcs.mk
-CSRCS += $(MDCSRCS)
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-DEFINES += -D_NSPR_BUILD_
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
diff --git a/pr/src/md/beos/Makefile.in b/pr/src/md/beos/Makefile.in
index 9e407a95..024bde8b 100644
--- a/pr/src/md/beos/Makefile.in
+++ b/pr/src/md/beos/Makefile.in
@@ -24,7 +24,7 @@ CSRCS += $(MDCSRCS)
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
DEFINES += -D_NSPR_BUILD_
@@ -32,4 +32,3 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/md/mac/macdll.c b/pr/src/md/mac/macdll.c
index bebf2356..ba9465d0 100644
--- a/pr/src/md/mac/macdll.c
+++ b/pr/src/md/mac/macdll.c
@@ -530,6 +530,15 @@ OSErr NSLoadIndexedFragment(const FSSpec *fileSpec, PRUint32 fragmentIndex,
err = GetIndexedFragmentOffsets(fileSpec, fragmentIndex, &fragOffset, &fragLength, &fragNameBlock);
if (err != noErr) return err;
+ if (fragNameBlock)
+ {
+ UInt32 nameLen = strlen(fragNameBlock);
+ if (nameLen > 63)
+ nameLen = 63;
+ BlockMoveData(fragNameBlock, &fragName[1], nameLen);
+ fragName[0] = nameLen;
+ }
+
err = GetDiskFragment(fileSpec, fragOffset, fragLength, fragName,
kLoadCFrag, outConnectionID, &main, errName);
if (err != noErr)
diff --git a/pr/src/md/mac/macsockotpt.c b/pr/src/md/mac/macsockotpt.c
index 7b6e4441..910803c6 100644
--- a/pr/src/md/mac/macsockotpt.c
+++ b/pr/src/md/mac/macsockotpt.c
@@ -29,6 +29,12 @@
#define GESTALT_OPEN_TPT_TCP_PRESENT gestaltOpenTptTCPPresentMask
#include <OpenTptInternet.h> // All the internet typedefs
+
+#if (UNIVERSAL_INTERFACES_VERSION >= 0x0330)
+// for some reason Apple removed this typedef.
+typedef struct OTConfiguration OTConfiguration;
+#endif
+
#include "primpl.h"
typedef enum SndRcvOpCode {
@@ -45,11 +51,10 @@ static struct {
void * cookie;
} dnsContext;
-static PRBool gOTInitialized;
static pascal void DNSNotifierRoutine(void * contextPtr, OTEventCode code, OTResult result, void * cookie);
-static pascal void NotifierRoutine(void * contextPtr, OTEventCode code,
- OTResult result, void * cookie);
+static pascal void NotifierRoutine(void * contextPtr, OTEventCode code, OTResult result, void * cookie);
+static pascal void RawEndpointNotifierRoutine(void * contextPtr, OTEventCode code, OTResult result, void * cookie);
static PRBool GetState(PRFileDesc *fd, PRBool *readReady, PRBool *writeReady, PRBool *exceptReady);
@@ -59,24 +64,20 @@ extern void DoneWaitingOnThisThread(PRThread *thread);
#if TARGET_CARBON
OTClientContextPtr clientContext = NULL;
-OTNotifyUPP DNSNotifierRoutineUPP;
-OTNotifyUPP notifierRoutineUPP;
-
-#define DNS_NOTIFIER_ROUTINE DNSNotifierRoutineUPP
-#define NOTIFIER_ROUTINE notifierRoutineUPP
-#define INIT_OPEN_TRANSPORT() InitOpenTransport(clientContext, kInitOTForExtensionMask)
-#define OT_OPEN_INTERNET_SERVICES(config, flags, err) OTOpenInternetServices(config, flags, err, clientContext)
-#define OT_OPEN_ENDPOINT(config, flags, info, err) OTOpenEndpoint(config, flags, info, err, clientContext)
+#define INIT_OPEN_TRANSPORT() InitOpenTransportInContext(kInitOTForExtensionMask, &clientContext)
+#define OT_OPEN_INTERNET_SERVICES(config, flags, err) OTOpenInternetServicesInContext(config, flags, err, clientContext)
+#define OT_OPEN_ENDPOINT(config, flags, info, err) OTOpenEndpointInContext(config, flags, info, err, clientContext)
#else
-#define DNS_NOTIFIER_ROUTINE DNSNotifierRoutine
-#define NOTIFIER_ROUTINE NotifierRoutine
#define INIT_OPEN_TRANSPORT() InitOpenTransport()
#define OT_OPEN_INTERNET_SERVICES(config, flags, err) OTOpenInternetServices(config, flags, err)
#define OT_OPEN_ENDPOINT(config, flags, info, err) OTOpenEndpoint(config, flags, info, err)
#endif /* TARGET_CARBON */
+static OTNotifyUPP DNSNotifierRoutineUPP;
+static OTNotifyUPP NotifierRoutineUPP;
+static OTNotifyUPP RawEndpointNotifierRoutineUPP;
void _MD_InitNetAccess()
{
@@ -97,26 +98,20 @@ void _MD_InitNetAccess()
PR_ASSERT(hasOTTCPIP == PR_TRUE);
-#if TARGET_CARBON
DNSNotifierRoutineUPP = NewOTNotifyUPP(DNSNotifierRoutine);
- notifierRoutineUPP = NewOTNotifyUPP(NotifierRoutine);
-
- errOT = OTAllocClientContext((UInt32)0, &clientContext);
- PR_ASSERT(err == kOTNoError);
-#endif
-
+ NotifierRoutineUPP = NewOTNotifyUPP(NotifierRoutine);
+ RawEndpointNotifierRoutineUPP = NewOTNotifyUPP(RawEndpointNotifierRoutine);
errOT = INIT_OPEN_TRANSPORT();
PR_ASSERT(err == kOTNoError);
+ dnsContext.serviceRef = NULL;
dnsContext.lock = PR_NewLock();
PR_ASSERT(dnsContext.lock != NULL);
dnsContext.thread = _PR_MD_CURRENT_THREAD();
dnsContext.cookie = NULL;
- gOTInitialized = PR_FALSE;
-
/* XXX Does not handle absence of open tpt and tcp yet! */
}
@@ -124,36 +119,65 @@ static void _MD_FinishInitNetAccess()
{
OSStatus errOT;
+ if (dnsContext.serviceRef)
+ return;
+
dnsContext.serviceRef = OT_OPEN_INTERNET_SERVICES(kDefaultInternetServicesPath, NULL, &errOT);
- if (errOT != kOTNoError) return; /* no network -- oh well */
+ if (errOT != kOTNoError) {
+ dnsContext.serviceRef = NULL;
+ return; /* no network -- oh well */
+ }
+
PR_ASSERT((dnsContext.serviceRef != NULL) && (errOT == kOTNoError));
/* Install notify function for DNR Address To String completion */
- errOT = OTInstallNotifier(dnsContext.serviceRef, DNS_NOTIFIER_ROUTINE, &dnsContext);
+ errOT = OTInstallNotifier(dnsContext.serviceRef, DNSNotifierRoutineUPP, &dnsContext);
PR_ASSERT(errOT == kOTNoError);
/* Put us into async mode */
errOT = OTSetAsynchronous(dnsContext.serviceRef);
PR_ASSERT(errOT == kOTNoError);
-
- gOTInitialized = PR_TRUE;
}
-pascal void DNSNotifierRoutine(void * contextPtr, OTEventCode code, OTResult result, void * cookie)
+static pascal void DNSNotifierRoutine(void * contextPtr, OTEventCode otEvent, OTResult result, void * cookie)
{
#pragma unused(contextPtr)
_PRCPU * cpu = _PR_MD_CURRENT_CPU();
-
- if (code == T_DNRSTRINGTOADDRCOMPLETE) {
+ OSStatus errOT;
+
dnsContext.thread->md.osErrCode = result;
dnsContext.cookie = cookie;
- if (_PR_MD_GET_INTSOFF()) {
- cpu->u.missed[cpu->where] |= _PR_MISSED_IO;
- dnsContext.thread->md.missedIONotify = PR_TRUE;
- return;
- }
- DoneWaitingOnThisThread(dnsContext.thread);
+
+ switch (otEvent) {
+ case T_DNRSTRINGTOADDRCOMPLETE:
+ if (_PR_MD_GET_INTSOFF()) {
+ cpu->u.missed[cpu->where] |= _PR_MISSED_IO;
+ dnsContext.thread->md.missedIONotify = PR_TRUE;
+ return;
+ }
+ DoneWaitingOnThisThread(dnsContext.thread);
+ break;
+
+ case kOTProviderWillClose:
+ errOT = OTSetSynchronous(dnsContext.serviceRef);
+ // fall through to kOTProviderIsClosed case
+
+ case kOTProviderIsClosed:
+ errOT = OTCloseProvider((ProviderRef)dnsContext.serviceRef);
+ dnsContext.serviceRef = nil;
+
+ if (_PR_MD_GET_INTSOFF()) {
+ cpu->u.missed[cpu->where] |= _PR_MISSED_IO;
+ dnsContext.thread->md.missedIONotify = PR_TRUE;
+ return;
+ }
+ DoneWaitingOnThisThread(dnsContext.thread);
+ break;
+
+ default: // or else we don't handle the event
+ PR_ASSERT(otEvent==NULL);
+
}
// or else we don't handle the event
}
@@ -262,12 +286,13 @@ WakeUpNotifiedThread(PRThread *thread, OTResult result)
// Notification routine
// Async callback routine.
// A5 is OK. Cannot allocate memory here
-pascal void NotifierRoutine(void * contextPtr, OTEventCode code, OTResult result, void * cookie)
+static pascal void NotifierRoutine(void * contextPtr, OTEventCode code, OTResult result, void * cookie)
{
PRFilePrivate *secret = (PRFilePrivate *) contextPtr;
_MDFileDesc * md = &(secret->md);
EndpointRef endpoint = (EndpointRef)secret->md.osfd;
PRThread * thread = NULL;
+ PRThread * pollThread = md->poll.thread;
OSStatus err;
OTResult resultOT;
TDiscon discon;
@@ -301,7 +326,6 @@ pascal void NotifierRoutine(void * contextPtr, OTEventCode code, OTResult resul
thread = secret->md.write.thread;
secret->md.write.thread = NULL;
secret->md.write.cookie = cookie;
- secret->md.connectionOpen = PR_TRUE;
break;
case T_DATA: // Standard data is available
@@ -323,7 +347,6 @@ pascal void NotifierRoutine(void * contextPtr, OTEventCode code, OTResult resul
err = OTRcvDisconnect(endpoint, &discon);
PR_ASSERT(err == kOTNoError);
secret->md.exceptReady = PR_TRUE;
- secret->md.connectionOpen = PR_FALSE;
// wake up waiting threads, if any
result = -3199 - discon.reason; // obtain the negative error code
@@ -356,7 +379,7 @@ pascal void NotifierRoutine(void * contextPtr, OTEventCode code, OTResult resul
PR_ASSERT(err == kOTNoError);
secret->md.readReady = PR_TRUE; // mark readable (to emulate bsd sockets)
// remember connection is closed, so we can return 0 on read or receive
- secret->md.connectionOpen = PR_FALSE;
+ secret->md.orderlyDisconnect = PR_TRUE;
thread = secret->md.read.thread;
secret->md.read.thread = NULL;
@@ -430,7 +453,11 @@ pascal void NotifierRoutine(void * contextPtr, OTEventCode code, OTResult resul
return;
}
- WakeUpNotifiedThread(thread, result);
+ if (pollThread)
+ WakeUpNotifiedThread(pollThread, kOTNoError);
+
+ if (thread && (thread != pollThread))
+ WakeUpNotifiedThread(thread, result);
}
@@ -473,7 +500,6 @@ PRInt32 _MD_socket(int domain, int type, int protocol)
OSStatus err;
EndpointRef endpoint;
- if (!gOTInitialized)
_MD_FinishInitNetAccess();
// We only deal with internet domain
@@ -1037,7 +1063,7 @@ typedef struct RawEndpointAndThread
// Notification routine for raw endpoints not yet attached to a PRFileDesc.
// Async callback routine.
// A5 is OK. Cannot allocate memory here
-pascal void RawEndpointNotifierRoutine(void * contextPtr, OTEventCode code, OTResult result, void * cookie)
+static pascal void RawEndpointNotifierRoutine(void * contextPtr, OTEventCode code, OTResult result, void * cookie)
{
RawEndpointAndThread *endthr = (RawEndpointAndThread *) contextPtr;
PRThread * thread = endthr->thread;
@@ -1194,7 +1220,7 @@ PRInt32 _MD_accept(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen, PRInterva
endthr->thread = me;
endthr->endpoint = (EndpointRef) newosfd;
- err = OTInstallNotifier((ProviderRef) newosfd, RawEndpointNotifierRoutine, endthr);
+ err = OTInstallNotifier((ProviderRef) newosfd, RawEndpointNotifierRoutineUPP, endthr);
PR_ASSERT(err == kOTNoError);
err = OTSetAsynchronous((EndpointRef) newosfd);
@@ -1350,6 +1376,7 @@ static PRInt32 SendReceiveStream(PRFileDesc *fd, void *buf, PRInt32 amount,
PRInt32 bytesLeft = amount;
PR_ASSERT(flags == 0);
+ PR_ASSERT(opCode == kSTREAM_SEND || opCode == kSTREAM_RECEIVE);
if (endpoint == NULL) {
err = kEBADFErr;
@@ -1361,11 +1388,6 @@ static PRInt32 SendReceiveStream(PRFileDesc *fd, void *buf, PRInt32 amount,
goto ErrorExit;
}
- if (opCode != kSTREAM_SEND && opCode != kSTREAM_RECEIVE) {
- err = kEINVALErr;
- goto ErrorExit;
- }
-
while (bytesLeft > 0) {
PrepareForAsyncCompletion(me, fd->secret->md.osfd);
@@ -1434,6 +1456,10 @@ static PRInt32 SendReceiveStream(PRFileDesc *fd, void *buf, PRInt32 amount,
}
me->io_pending = PR_FALSE;
+ if (opCode == kSTREAM_SEND)
+ fd->secret->md.write.thread = nil;
+ else
+ fd->secret->md.read.thread = nil;
if (result > 0) {
buf = (void *) ( (UInt32) buf + (UInt32)result );
@@ -1442,9 +1468,6 @@ static PRInt32 SendReceiveStream(PRFileDesc *fd, void *buf, PRInt32 amount,
return result;
} else {
switch (result) {
- case kOTOutStateErr: // it has been closed
- return 0;
-
case kOTLookErr:
PR_ASSERT(!"call to OTLook() required after all.");
break;
@@ -1464,6 +1487,9 @@ static PRInt32 SendReceiveStream(PRFileDesc *fd, void *buf, PRInt32 amount,
goto ErrorExit;
break;
+ case kOTOutStateErr: // if provider already closed, fall through to handle error
+ if (fd->secret->md.orderlyDisconnect)
+ return 0;
default:
err = result;
goto ErrorExit;
@@ -1471,9 +1497,13 @@ static PRInt32 SendReceiveStream(PRFileDesc *fd, void *buf, PRInt32 amount,
}
}
+ PR_ASSERT(opCode == kSTREAM_SEND ? fd->secret->md.write.thread == nil :
+ fd->secret->md.read.thread == nil);
return amount;
ErrorExit:
+ PR_ASSERT(opCode == kSTREAM_SEND ? fd->secret->md.write.thread == nil :
+ fd->secret->md.read.thread == nil);
macsock_map_error(err);
return -1;
}
@@ -1633,8 +1663,13 @@ PRInt32 _MD_writev(PRFileDesc *fd, const struct PRIOVec *iov, PRInt32 iov_size,
static PRBool GetState(PRFileDesc *fd, PRBool *readReady, PRBool *writeReady, PRBool *exceptReady)
{
OTResult resultOT;
-
- *readReady = fd->secret->md.readReady;
+ // hack to emulate BSD sockets; say that a socket that has disconnected
+ // is still readable.
+ size_t availableData = 1;
+ if (!fd->secret->md.orderlyDisconnect)
+ OTCountDataBytes((EndpointRef)fd->secret->md.osfd, &availableData);
+
+ *readReady = fd->secret->md.readReady && (availableData > 0);
*exceptReady = fd->secret->md.exceptReady;
resultOT = OTGetEndpointState((EndpointRef)fd->secret->md.osfd);
@@ -1650,22 +1685,13 @@ static PRBool GetState(PRFileDesc *fd, PRBool *readReady, PRBool *writeReady, PR
return *readReady || *writeReady || *exceptReady;
}
-
-PRInt32 _MD_poll(PRPollDesc *pds, PRIntn npds, PRIntervalTime timeout)
+// check to see if any of the poll descriptors have data available
+// for reading or writing.
+static PRInt32 CheckPollDescs(PRPollDesc *pds, PRIntn npds)
{
PRInt32 ready = 0;
PRPollDesc *pd, *epd;
- PRIntervalTime sleepTime, timein;
- sleepTime = PR_MillisecondsToInterval(5UL);
- if (PR_INTERVAL_NO_TIMEOUT != timeout)
- {
- if (sleepTime > timeout) sleepTime = timeout;
- timein = PR_IntervalNow();
- }
-
- do
- {
for (pd = pds, epd = pd + npds; pd < epd; pd++)
{
PRInt16 in_flags_read = 0, in_flags_write = 0;
@@ -1697,8 +1723,9 @@ PRInt32 _MD_poll(PRPollDesc *pds, PRIntn npds, PRIntervalTime timeout)
pd->out_flags = 0; /* pre-condition */
bottomFD = PR_GetIdentitiesLayer(pd->fd, PR_NSPR_IO_LAYER);
PR_ASSERT(NULL != bottomFD);
- if ((NULL != bottomFD) && (_PR_FILEDESC_OPEN == bottomFD->secret->state))
- {
+
+ if (bottomFD && (_PR_FILEDESC_OPEN == bottomFD->secret->state))
+ {
if (GetState(bottomFD, &readReady, &writeReady, &exceptReady))
{
if (readReady)
@@ -1722,7 +1749,7 @@ PRInt32 _MD_poll(PRPollDesc *pds, PRIntn npds, PRIntervalTime timeout)
if (0 != pd->out_flags) ready++;
}
}
- else
+ else /* bad state */
{
ready += 1; /* this will cause an abrupt return */
pd->out_flags = PR_POLL_NVAL; /* bogii */
@@ -1730,14 +1757,69 @@ PRInt32 _MD_poll(PRPollDesc *pds, PRIntn npds, PRIntervalTime timeout)
}
}
- if (ready > 0) return ready;
+ return ready;
+}
+
+// set or clear md.poll.thread on the poll descriptors
+static void SetDescPollThread(PRPollDesc *pds, PRIntn npds, PRThread* thread)
+{
+ PRInt32 ready = 0;
+ PRPollDesc *pd, *epd;
+
+ for (pd = pds, epd = pd + npds; pd < epd; pd++)
+ {
+ if (pd->fd)
+ {
+ PRFileDesc *bottomFD = PR_GetIdentitiesLayer(pd->fd, PR_NSPR_IO_LAYER);
+ PR_ASSERT(NULL != bottomFD);
+ if (bottomFD && (_PR_FILEDESC_OPEN == bottomFD->secret->state))
+ {
+ bottomFD->secret->md.poll.thread = thread;
+ }
+ }
+ }
+}
+
+PRInt32 _MD_poll(PRPollDesc *pds, PRIntn npds, PRIntervalTime timeout)
+{
+ PRThread *thread = _PR_MD_CURRENT_THREAD();
+ intn is;
+ PRInt32 ready;
+ OSErr result;
+
+ if (timeout == PR_INTERVAL_NO_WAIT) {
+ return CheckPollDescs(pds, npds);
+ }
+
+ _PR_INTSOFF(is);
+ PR_Lock(thread->md.asyncIOLock);
- (void) PR_Sleep(sleepTime);
+ // ensure that we don't miss the firing of the notifier while checking socket status
+ // need to set up the thread
+ PrepareForAsyncCompletion(thread, 0);
- } while ((timeout == PR_INTERVAL_NO_TIMEOUT) ||
- (((PRIntervalTime)(PR_IntervalNow() - timein)) < timeout));
+ SetDescPollThread(pds, npds, thread);
+ ready = CheckPollDescs(pds, npds);
- return 0; /* timed out */
+ PR_Unlock(thread->md.asyncIOLock);
+ _PR_FAST_INTSON(is);
+
+ if (ready == 0) {
+ WaitOnThisThread(thread, timeout);
+ result = thread->md.osErrCode;
+ if (result != noErr && result != kETIMEDOUTErr) {
+ PR_ASSERT(0); /* debug: catch unexpected errors */
+ ready = -1;
+ } else {
+ ready = CheckPollDescs(pds, npds);
+ }
+ } else {
+ thread->io_pending = PR_FALSE;
+ }
+
+ SetDescPollThread(pds, npds, NULL);
+
+ return ready;
}
@@ -1752,7 +1834,7 @@ void _MD_initfiledesc(PRFileDesc *fd)
PR_ASSERT(fd->secret->md.miscLock == NULL);
fd->secret->md.miscLock = PR_NewLock();
PR_ASSERT(fd->secret->md.miscLock != NULL);
- fd->secret->md.connectionOpen = PR_FALSE; // starts out closed
+ fd->secret->md.orderlyDisconnect = PR_FALSE;
fd->secret->md.readReady = PR_FALSE; // let's not presume we have data ready to read
fd->secret->md.writeReady = PR_TRUE; // let's presume we can write unless we hear otherwise
fd->secret->md.exceptReady = PR_FALSE;
@@ -1789,7 +1871,7 @@ void _MD_makenonblock(PRFileDesc *fd)
// fd changes, but the secret structure does not;
// (b) the notifier func refers only to the secret data structure
// anyway.
- err = OTInstallNotifier(endpointRef, NOTIFIER_ROUTINE, fd->secret);
+ err = OTInstallNotifier(endpointRef, NotifierRoutineUPP, fd->secret);
PR_ASSERT(err == kOTNoError);
// Now that we have a NotifierRoutine installed, we can make the endpoint asynchronous
@@ -1862,11 +1944,11 @@ PR_IMPLEMENT(unsigned long) inet_addr(const char *cp)
OSStatus err;
InetHost host;
- if (!gOTInitialized)
_MD_FinishInitNetAccess();
err = OTInetStringToHost((char*) cp, &host);
- PR_ASSERT(err == kOTNoError);
+ if (err != kOTNoError)
+ return -1;
return host;
}
@@ -1884,7 +1966,6 @@ PR_IMPLEMENT(struct hostent *) gethostbyname(const char * name)
PRUint32 index;
PRThread *me = _PR_MD_CURRENT_THREAD();
- if (!gOTInitialized)
_MD_FinishInitNetAccess();
me->io_pending = PR_TRUE;
@@ -1925,7 +2006,6 @@ PR_IMPLEMENT(struct hostent *) gethostbyaddr(const void *addr, int addrlen, int
PR_ASSERT(type == AF_INET);
PR_ASSERT(addrlen == sizeof(struct in_addr));
- if (!gOTInitialized)
_MD_FinishInitNetAccess();
OTInetHostToString((InetHost)addr, sHostInfo.name);
@@ -1936,7 +2016,6 @@ PR_IMPLEMENT(struct hostent *) gethostbyaddr(const void *addr, int addrlen, int
PR_IMPLEMENT(char *) inet_ntoa(struct in_addr addr)
{
- if (!gOTInitialized)
_MD_FinishInitNetAccess();
OTInetHostToString((InetHost)addr.s_addr, sHostInfo.name);
@@ -1950,7 +2029,6 @@ PRStatus _MD_gethostname(char *name, int namelen)
OSStatus err;
InetInterfaceInfo info;
- if (!gOTInitialized)
_MD_FinishInitNetAccess();
/*
diff --git a/pr/src/md/mac/macthr.c b/pr/src/md/mac/macthr.c
index 53d61206..59b67a67 100644
--- a/pr/src/md/mac/macthr.c
+++ b/pr/src/md/mac/macthr.c
@@ -275,6 +275,8 @@ void WaitOnThisThread(PRThread *thread, PRIntervalTime timeout)
thread->md.osErrCode = kETIMEDOUTErr;
PR_SetError(PR_IO_TIMEOUT_ERROR, kETIMEDOUTErr);
}
+
+ thread->io_pending = PR_FALSE;
PR_Unlock(thread->md.asyncIOLock);
_PR_FAST_INTSON(is);
}
diff --git a/pr/src/md/mac/mdmac.c b/pr/src/md/mac/mdmac.c
index c762baa7..bca487a7 100644
--- a/pr/src/md/mac/mdmac.c
+++ b/pr/src/md/mac/mdmac.c
@@ -344,7 +344,7 @@ void PR_InitMemory(void) {
#if TARGET_CARBON
extern OTClientContextPtr clientContext;
-#define CLOSE_OPEN_TRANSPORT() CloseOpenTransport(clientContext)
+#define CLOSE_OPEN_TRANSPORT() CloseOpenTransportInContext(clientContext)
#else
@@ -739,7 +739,7 @@ extern long _MD_GetArchitecture(char *buf, long count)
{
long len;
-#if defined(GENERATINGPOWERPC) && GENERATINGPOWERPC
+#if defined(TARGET_CPU_PPC) && TARGET_CPU_PPC
len = PR_snprintf(buf, count, "PowerPC");
#else
len = PR_snprintf(buf, count, "Motorola68k");
diff --git a/pr/src/md/mac/prcpucfg.h b/pr/src/md/mac/prcpucfg.h
index bc203a42..9483f1f3 100644
--- a/pr/src/md/mac/prcpucfg.h
+++ b/pr/src/md/mac/prcpucfg.h
@@ -112,6 +112,6 @@
#define BYTES_PER_WORD_LOG2 PR_BYTES_PER_WORD_LOG2
#define BYTES_PER_DWORD_LOG2 PR_BYTES_PER_DWORD_LOG2
#define WORDS_PER_DWORD_LOG2 PR_WORDS_PER_DWORD_LOG2
-#endif NO_NSPR_10_SUPPORT
+#endif /* NO_NSPR_10_SUPPORT */
#endif /* nspr_cpucfg___ */
diff --git a/pr/src/md/os2/.cvsignore b/pr/src/md/os2/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/md/os2/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/md/os2/Makefile b/pr/src/md/os2/Makefile
deleted file mode 100644
index 03e4c863..00000000
--- a/pr/src/md/os2/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-ifeq ($(OS_TARGET), OS2)
-CSRCS = \
- os2misc.c \
- os2sem.c \
- os2inrval.c \
- os2gc.c \
- os2thred.c \
- os2io.c \
- os2cv.c \
- os2sock.c \
- os2_errors.c \
- os2poll.c \
- os2rng.c \
- $(NULL)
-endif
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-DEFINES += -D_NSPR_BUILD_
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
-
-
-
diff --git a/pr/src/md/os2/Makefile.in b/pr/src/md/os2/Makefile.in
index 72414033..08f866d7 100644
--- a/pr/src/md/os2/Makefile.in
+++ b/pr/src/md/os2/Makefile.in
@@ -38,12 +38,13 @@ CSRCS = \
os2sock.c \
os2_errors.c \
os2poll.c \
+ os2rng.c \
$(NULL)
endif
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
DEFINES += -D_NSPR_BUILD_
@@ -51,7 +52,6 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/lib/libc/Makefile b/pr/src/md/os2/objs.mk
index c9d9517b..82693637 100644
--- a/lib/libc/Makefile
+++ b/pr/src/md/os2/objs.mk
@@ -15,18 +15,23 @@
# Reserved.
#
-#! gmake
+# This makefile appends to the variable OBJS the platform-dependent
+# object modules that will be part of the nspr20 library.
+
+CSRCS = \
+ os2io.c \
+ os2sock.c \
+ os2thred.c \
+ os2cv.c \
+ os2gc.c \
+ os2misc.c \
+ os2inrval.c \
+ os2sem.c \
+ os2_errors.c \
+ os2poll.c \
+ os2rng.c \
+ $(NULL)
+
+OBJS += $(addprefix md/os2/$(OBJDIR)/,$(CSRCS:.c=.$(OBJ_SUFFIX))) \
+ $(addprefix md/os2/$(OBJDIR)/,$(ASFILES:.s=.$(OBJ_SUFFIX)))
-MOD_DEPTH = ../..
-
-export NSPR20=1
-
-include $(MOD_DEPTH)/config/config.mk
-
-DIRS = include src
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
diff --git a/pr/src/md/os2/os2cv.c b/pr/src/md/os2/os2cv.c
index 1205f3af..f91ae80d 100644
--- a/pr/src/md/os2/os2cv.c
+++ b/pr/src/md/os2/os2cv.c
@@ -219,7 +219,7 @@ static void md_PostNotifyToCvar(_MDCVar *cvar, _MDLock *lock,
* 0 when it succeeds.
*
*/
-PR_IMPLEMENT(PRInt32)
+PRInt32
_PR_MD_NEW_CV(_MDCVar *cv)
{
cv->magic = _MD_MAGIC_CV;
@@ -230,7 +230,7 @@ _PR_MD_NEW_CV(_MDCVar *cv)
return 0;
}
-PR_IMPLEMENT(void) _PR_MD_FREE_CV(_MDCVar *cv)
+void _PR_MD_FREE_CV(_MDCVar *cv)
{
cv->magic = (PRUint32)-1;
return;
@@ -239,7 +239,7 @@ PR_IMPLEMENT(void) _PR_MD_FREE_CV(_MDCVar *cv)
/*
* _PR_MD_WAIT_CV() -- Wait on condition variable
*/
-PR_IMPLEMENT(void)
+void
_PR_MD_WAIT_CV(_MDCVar *cv, _MDLock *lock, PRIntervalTime timeout )
{
PRThread *thred = _PR_MD_CURRENT_THREAD();
@@ -306,21 +306,21 @@ _PR_MD_WAIT_CV(_MDCVar *cv, _MDLock *lock, PRIntervalTime timeout )
return;
} /* --- end _PR_MD_WAIT_CV() --- */
-PR_IMPLEMENT(void)
+void
_PR_MD_NOTIFY_CV(_MDCVar *cv, _MDLock *lock)
{
md_PostNotifyToCvar(cv, lock, PR_FALSE);
return;
}
-PR_IMPLEMENT(void)
+void
_PR_MD_NOTIFYALL_CV(_MDCVar *cv, _MDLock *lock)
{
md_PostNotifyToCvar(cv, lock, PR_TRUE);
return;
}
-PR_IMPLEMENT(void)
+void
_PR_MD_UNLOCK(_MDLock *lock)
{
if (0 != lock->notified.length) {
diff --git a/pr/src/md/os2/os2inrval.c b/pr/src/md/os2/os2inrval.c
index ecba3068..ea2dd38a 100644
--- a/pr/src/md/os2/os2inrval.c
+++ b/pr/src/md/os2/os2inrval.c
@@ -29,7 +29,7 @@ PRInt32 _os2_highMask = 0;
-PR_IMPLEMENT(void)
+void
_PR_MD_INTERVAL_INIT()
{
if (DosTmrQueryFreq(&_os2_ticksPerSec) == NO_ERROR)
@@ -46,7 +46,7 @@ _PR_MD_INTERVAL_INIT()
PR_ASSERT(_os2_ticksPerSec > PR_INTERVAL_MIN && _os2_ticksPerSec < PR_INTERVAL_MAX);
}
-PR_IMPLEMENT(PRIntervalTime)
+PRIntervalTime
_PR_MD_GET_INTERVAL()
{
QWORD count;
@@ -69,7 +69,7 @@ _PR_MD_GET_INTERVAL()
}
}
-PR_IMPLEMENT(PRIntervalTime)
+PRIntervalTime
_PR_MD_INTERVAL_PER_SEC()
{
if(_os2_ticksPerSec != -1)
diff --git a/pr/src/md/os2/os2io.c b/pr/src/md/os2/os2io.c
index e6977ff7..e7e7b705 100644
--- a/pr/src/md/os2/os2io.c
+++ b/pr/src/md/os2/os2io.c
@@ -14,6 +14,23 @@
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
+ *
+ * This Original Code has been modified by IBM Corporation.
+ * Modifications made by IBM described herein are
+ * Copyright (c) International Business Machines
+ * Corporation, 2000
+ *
+ * Modifications to Mozilla code or documentation
+ * identified per MPL Section 3.3
+ *
+ * Date Modified by Description of modification
+ * 03/23/2000 IBM Corp. Changed write() to DosWrite(). EMX i/o
+ * calls cannot be intermixed with DosXXX
+ * calls since EMX remaps file/socket
+ * handles.
+ * 04/27/2000 IBM Corp. Changed open file to be more like NT and
+ * better handle PR_TRUNCATE | PR_CREATE_FILE
+ * and also fixed _PR_MD_SET_FD_INHERITABLE
*/
/* OS2 IO module
@@ -107,25 +124,40 @@ _PR_MD_OPEN(const char *name, PRIntn osflags, int mode)
{
HFILE file;
PRInt32 access = OPEN_SHARE_DENYNONE;
- PRInt32 flags = OPEN_ACTION_OPEN_IF_EXISTS;
+ PRInt32 flags = 0L;
PRInt32 rc;
PRUword actionTaken;
ULONG CurMaxFH = 0;
LONG ReqCount = 1;
ULONG fattr;
-
+
+ if (osflags & PR_SYNC) access |= OPEN_FLAGS_WRITE_THROUGH;
+
if (osflags & PR_RDONLY)
access |= OPEN_ACCESS_READONLY;
else if (osflags & PR_WRONLY)
access |= OPEN_ACCESS_WRITEONLY;
else if(osflags & PR_RDWR)
access |= OPEN_ACCESS_READWRITE;
- if (osflags & PR_CREATE_FILE)
- flags |= OPEN_ACTION_CREATE_IF_NEW;
- else if (osflags & PR_TRUNCATE){
- flags &= ~OPEN_ACTION_OPEN_IF_EXISTS;
- flags |= OPEN_ACTION_REPLACE_IF_EXISTS;
+
+ if ( osflags & PR_CREATE_FILE && osflags & PR_EXCL )
+ {
+ flags = OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_FAIL_IF_EXISTS;
+ }
+ else if (osflags & PR_CREATE_FILE)
+ {
+ if (osflags & PR_TRUNCATE)
+ flags = OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS;
+ else
+ flags = OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS;
+ }
+ else
+ {
+ if (osflags & PR_TRUNCATE)
+ flags = OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS;
+ else
+ flags = OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS;
}
if (isxdigit(mode) == 0) /* file attribs are hex, UNIX modes octal */
@@ -182,23 +214,16 @@ _PR_MD_WRITE(PRFileDesc *fd, const void *buf, PRInt32 len)
PRInt32 bytes;
int rv;
- /* No longer using DosWrite since it doesn't convert \n to \n\r like C runtime does */
-#if 0
rv = DosWrite((HFILE)fd->secret->md.osfd,
(PVOID)buf,
len,
- &bytes);
+ (PULONG)&bytes);
if (rv != NO_ERROR)
{
- _PR_MD_MAP_WRITE_ERROR(rv);
+ _PR_MD_MAP_WRITE_ERROR(rv);
return -1;
}
-#else
- bytes = write(fd->secret->md.osfd, buf, len);
- if (bytes == -1)
- _PR_MD_MAP_WRITE_ERROR(errno);
-#endif
return bytes;
} /* --- end _PR_MD_WRITE() --- */
@@ -718,7 +743,7 @@ _PR_MD_SET_FD_INHERITABLE(PRFileDesc *fd, PRBool inheritable)
}
if (inheritable)
- flags &= OPEN_FLAGS_NOINHERIT;
+ flags &= ~OPEN_FLAGS_NOINHERIT;
else
flags |= OPEN_FLAGS_NOINHERIT;
diff --git a/pr/src/md/os2/os2misc.c b/pr/src/md/os2/os2misc.c
index 27277e68..28c9a641 100644
--- a/pr/src/md/os2/os2misc.c
+++ b/pr/src/md/os2/os2misc.c
@@ -473,7 +473,7 @@ PRStatus _MD_OS2GetHostName(char *name, PRUint32 namelen)
return PR_FAILURE;
}
-PR_IMPLEMENT(void)
+void
_PR_MD_WAKEUP_CPUS( void )
{
return;
diff --git a/pr/src/md/os2/os2poll.c b/pr/src/md/os2/os2poll.c
index 47b1791e..99740c66 100644
--- a/pr/src/md/os2/os2poll.c
+++ b/pr/src/md/os2/os2poll.c
@@ -61,6 +61,9 @@ PRInt32 _PR_MD_PR_POLL(
return 0;
}
+ remaining = timeout;
+ start = PR_IntervalNow();
+
FD_ZERO(&rd);
FD_ZERO(&wt);
FD_ZERO(&ex);
@@ -161,9 +164,6 @@ PRInt32 _PR_MD_PR_POLL(
if (0 != ready) return ready; /* no need to block */
- remaining = timeout;
- start = PR_IntervalNow();
-
retry:
if (timeout != PR_INTERVAL_NO_TIMEOUT)
{
@@ -260,3 +260,151 @@ retry:
return ready;
}
+#ifdef XP_OS2_EMX
+HMTX thread_select_mutex = 0; /* because EMX's select is not thread safe - duh! */
+
+typedef struct _thread_select_st {
+ int nfds;
+ int isrdfds;
+ struct _fd_set *readfds;
+ int iswrfds;
+ struct _fd_set *writefds;
+ int isexfds;
+ struct _fd_set *exceptfds;
+ int istimeout;
+ struct timeval timeout;
+ volatile HEV event;
+ int result;
+ int select_errno;
+ volatile int done;
+} *pthread_select_t;
+
+void _thread_select(void * arg)
+{
+ pthread_select_t self = arg;
+ int result, chkstdin;
+ struct _fd_set readfds;
+ struct _fd_set writefds;
+ struct _fd_set exceptfds;
+ HEV event = self->event;
+
+ chkstdin = (self->isrdfds && FD_ISSET(0,self->readfds))?1:0;
+
+ do {
+ struct timeval timeout = {0L,0L};
+
+
+ if (self->isrdfds) readfds = *self->readfds;
+ if (self->iswrfds) writefds = *self->writefds;
+ if (self->isexfds) exceptfds = *self->exceptfds;
+
+ if (chkstdin) FD_CLR(0,&readfds);
+
+ if (!thread_select_mutex)
+ DosCreateMutexSem(NULL,&thread_select_mutex,0,1);
+ else
+ DosRequestMutexSem(thread_select_mutex,SEM_INDEFINITE_WAIT);
+ result = select(
+ self->nfds,
+ self->isrdfds?&readfds:NULL,
+ self->iswrfds?&writefds:NULL,
+ self->isexfds?&exceptfds:NULL,
+ &timeout);
+ DosReleaseMutexSem(thread_select_mutex);
+
+ if (chkstdin) {
+ int charcount = 0, res;
+ res = ioctl(0,FIONREAD,&charcount);
+ if (res==0 && charcount>0) FD_SET(0,&readfds);
+ }
+
+ if (result>0) {
+ self->done++;
+ if (self->isrdfds) *self->readfds = readfds;
+ if (self->iswrfds) *self->writefds = writefds;
+ if (self->isexfds) *self->exceptfds = exceptfds;
+ } else
+ if (result) self->done++;
+ else DosSleep(1);
+
+ } while (self->event!=0 && self->done==0);
+
+ if (self->event) {
+ self->select_errno = (result < 0)?errno:0;
+ self->result = result;
+ self->done = 3;
+ DosPostEventSem(event);
+ } else {
+ self->done = 3;
+ free(self);
+ }
+
+}
+
+PRInt32
+_MD_SELECT(int nfds, fd_set *readfds, fd_set *writefds,
+ fd_set *exceptfds, struct timeval *timeout)
+{
+ pthread_select_t sel;
+ HEV ev = 0;
+ HTIMER timer = 0;
+ int result = 0;
+ APIRET rc;
+ unsigned long msecs = SEM_INDEFINITE_WAIT;
+
+ if (timeout) {
+ if (timeout->tv_sec != 0 || timeout->tv_usec != 0)
+ msecs = (timeout->tv_sec * 1000L) + (timeout->tv_usec / 1000L);
+ else
+ msecs = SEM_IMMEDIATE_RETURN;
+ };
+
+ if (!(sel = (pthread_select_t) malloc(sizeof(struct _thread_select_st)))) {
+ result = -1;
+ errno = ENOMEM;
+ } else {
+ sel->nfds = nfds;
+ sel->isrdfds = readfds?1:0;
+ if (sel->isrdfds) sel->readfds = readfds;
+ sel->iswrfds = writefds?1:0;
+ if (sel->iswrfds) sel->writefds = writefds;
+ sel->isexfds = exceptfds?1:0;
+ if (sel->isexfds) sel->exceptfds = exceptfds;
+ sel->istimeout = timeout?1:0;
+ if (sel->istimeout) sel->timeout = *timeout;
+
+ rc = DosCreateEventSem(NULL,&ev,0,FALSE);
+
+ sel->event = ev;
+ if (msecs == SEM_IMMEDIATE_RETURN)
+ sel->done = 1;
+ else
+ sel->done = 0;
+
+ if (_beginthread(_thread_select,NULL,65536,(void *)sel) == -1) {
+ result = -1; sel->event = 0;
+ DosCloseEventSem(ev);
+ } else {
+ rc = DosWaitEventSem(ev,msecs);
+ if ((!sel->done) && (msecs != SEM_IMMEDIATE_RETURN)) { /* Interrupted by other thread or timeout */
+ sel->event = 0;
+ result = 0;
+ errno = ETIMEDOUT;
+
+ } else {
+ while (sel->done && sel->done != 3) {
+ DosSleep(1);
+ }
+ sel->event = 0;
+ result = sel->result;
+ if (sel->select_errno) errno = sel->select_errno;
+ free(sel);
+ }
+ rc = DosCloseEventSem(ev);
+ }
+ }
+
+ return (result);
+}
+
+#endif
diff --git a/pr/src/md/os2/os2sem.c b/pr/src/md/os2/os2sem.c
index 86a41f58..57131beb 100644
--- a/pr/src/md/os2/os2sem.c
+++ b/pr/src/md/os2/os2sem.c
@@ -24,7 +24,7 @@
#include "primpl.h"
-PR_IMPLEMENT(void)
+void
_PR_MD_NEW_SEM(_MDSemaphore *md, PRUintn value)
{
int rv;
@@ -36,7 +36,7 @@ _PR_MD_NEW_SEM(_MDSemaphore *md, PRUintn value)
PR_ASSERT(rv == NO_ERROR);
}
-PR_IMPLEMENT(void)
+void
_PR_MD_DESTROY_SEM(_MDSemaphore *md)
{
int rv;
@@ -45,7 +45,7 @@ _PR_MD_DESTROY_SEM(_MDSemaphore *md)
}
-PR_IMPLEMENT(PRStatus)
+PRStatus
_PR_MD_TIMED_WAIT_SEM(_MDSemaphore *md, PRIntervalTime ticks)
{
int rv;
@@ -57,13 +57,13 @@ _PR_MD_TIMED_WAIT_SEM(_MDSemaphore *md, PRIntervalTime ticks)
return PR_FAILURE;
}
-PR_IMPLEMENT(PRStatus)
+PRStatus
_PR_MD_WAIT_SEM(_MDSemaphore *md)
{
return _PR_MD_TIMED_WAIT_SEM(md, PR_INTERVAL_NO_TIMEOUT);
}
-PR_IMPLEMENT(void)
+void
_PR_MD_POST_SEM(_MDSemaphore *md)
{
int rv;
diff --git a/pr/src/md/os2/os2sock.c b/pr/src/md/os2/os2sock.c
index 34f5ff43..d8e78a0e 100644
--- a/pr/src/md/os2/os2sock.c
+++ b/pr/src/md/os2/os2sock.c
@@ -55,7 +55,7 @@ _PR_MD_SOCKET(int af, int type, int flags)
{
int rv = sock_errno();
soclose(sock);
- _PR_MD_MAP_SOCKET_ERROR(rv);
+ _PR_MD_MAP_SOCKET_ERROR(rv);
return (PRInt32) -1;
}
@@ -82,8 +82,8 @@ _MD_CloseSocket(PRInt32 osfd)
PRInt32 rv = -1;
rv = soclose((int) osfd );
- if (rv < 0)
- _PR_MD_MAP_SOCKET_ERROR(sock_errno());
+ if (rv < 0)
+ _PR_MD_MAP_SOCKET_ERROR(sock_errno());
return rv;
}
@@ -94,7 +94,7 @@ _MD_SocketAvailable(PRFileDesc *fd)
PRInt32 result;
if (ioctl(fd->secret->md.osfd, FIONREAD, (char *) &result, sizeof(result)) < 0) {
- PR_SetError(PR_BAD_DESCRIPTOR_ERROR, sock_errno());
+ PR_SetError(PR_BAD_DESCRIPTOR_ERROR, sock_errno());
return -1;
}
return result;
@@ -124,18 +124,18 @@ _MD_Accept(PRFileDesc *fd, PRNetAddr *raddr, PRUint32 *rlen,
&& (!fd->secret->nonblocking))
{
#ifdef BSD_SELECT
- if ((rv = select(osfd + 1, &rd, NULL, NULL,NULL)) == -1) {
+ if ((rv = _MD_SELECT(osfd + 1, &rd, NULL, NULL,NULL)) == -1) {
#else
- if ((rv = select(socks, 1, 0, 0, -1)) == -1) {
+ if ((rv = _MD_SELECT(socks, 1, 0, 0, -1)) == -1) {
#endif
- _PR_MD_MAP_SELECT_ERROR(sock_errno());
+ _PR_MD_MAP_SELECT_ERROR(sock_errno());
break;
- }
+ }
}
else {
- _PR_MD_MAP_ACCEPT_ERROR(err);
+ _PR_MD_MAP_ACCEPT_ERROR(err);
break;
- }
+ }
}
return(rv);
}
@@ -146,14 +146,14 @@ _MD_Accept(PRFileDesc *fd, PRNetAddr *raddr, PRUint32 *rlen,
if (((err = sock_errno()) == EWOULDBLOCK)
&& (!fd->secret->nonblocking))
{
- PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
+ PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
}
else
{
_PR_MD_MAP_ACCEPT_ERROR(err);
}
}
- return(rv);
+ return(rv);
}
else
{
@@ -165,26 +165,25 @@ retry:
{
#ifdef BSD_SELECT
tv.tv_sec = PR_IntervalToSeconds(timeout);
- tv.tv_usec = PR_IntervalToMicroseconds(
- timeout - PR_SecondsToInterval(tv.tv_sec));
+ tv.tv_usec = PR_IntervalToMicroseconds(timeout - PR_SecondsToInterval(tv.tv_sec));
tvp = &tv;
- rv = select(osfd + 1, &rd, NULL, NULL, tvp);
+ rv = _MD_SELECT(osfd + 1, &rd, NULL, NULL, tvp);
#else
long lTimeout = PR_IntervalToMilliseconds(timeout);
- rv = select(socks, 1, 0, 0, lTimeout);
+ rv = _MD_SELECT(socks, 1, 0, 0, lTimeout);
#endif
if (rv > 0) {
goto retry;
}
else if (rv == 0)
{
- PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
+ PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
rv = -1;
} else {
- _PR_MD_MAP_SELECT_ERROR(sock_errno());
+ _PR_MD_MAP_SELECT_ERROR(sock_errno());
}
} else {
- _PR_MD_MAP_ACCEPT_ERROR(err);
+ _PR_MD_MAP_ACCEPT_ERROR(err);
}
}
}
@@ -201,7 +200,11 @@ _PR_MD_CONNECT(PRFileDesc *fd, const PRNetAddr *addr, PRUint32 addrlen,
PRInt32 rv;
int err, len;
#ifdef BSD_SELECT
+#ifdef XP_OS2//_VACPP
+ fd_set wd;
+#else
fd_set wd, ex;
+#endif #vacpp
struct timeval tv, *tvp;
#else
int socks[1];
@@ -219,17 +222,20 @@ _PR_MD_CONNECT(PRFileDesc *fd, const PRNetAddr *addr, PRUint32 addrlen,
else
{
tv.tv_sec = PR_IntervalToSeconds(timeout);
- tv.tv_usec = PR_IntervalToMicroseconds(
- timeout - PR_SecondsToInterval(tv.tv_sec));
+ tv.tv_usec = PR_IntervalToMicroseconds(timeout - PR_SecondsToInterval(tv.tv_sec));
tvp = &tv;
}
FD_ZERO(&wd);
FD_SET(osfd, &wd);
+#ifdef XP_OS2//_VACPP
+ rv = _MD_SELECT(osfd + 1, NULL, &wd, NULL, tvp);
+#else
FD_ZERO(&ex);
FD_SET(osfd, &ex);
- rv = select(osfd + 1, NULL, &wd, &ex, tvp);
-#else
+ rv = _MD_SELECT(osfd + 1, NULL, &wd, &ex, tvp);
+#endif #vacpp
+#else #!bsd_select
if (timeout == PR_INTERVAL_NO_TIMEOUT)
lTimeout = -1;
else
@@ -238,11 +244,38 @@ _PR_MD_CONNECT(PRFileDesc *fd, const PRNetAddr *addr, PRUint32 addrlen,
}
socks[0] = osfd;
- rv = select(socks, 0, 1, 1, lTimeout);
+#ifdef XP_OS2//_VACPP
+ rv = _MD_SELECT(socks, 0, 1, 0, lTimeout);
+#else
+ rv = _MD_SELECT(socks, 0, 1, 1, lTimeout);
+#endif #vacpp
#endif
if (rv > 0)
{
#ifdef BSD_SELECT
+#ifdef XP_OS2//_VACPP
+ if (FD_ISSET(osfd, &wd))
+ {
+ //DosSleep(0);
+ len = sizeof(err);
+ if (getsockopt(osfd, SOL_SOCKET, SO_ERROR,
+ (char *) &err, &len) < 0)
+ {
+ _PR_MD_MAP_GETSOCKOPT_ERROR(sock_errno());
+ return -1;
+ }
+
+ if (err != 0)
+ {
+ _PR_MD_MAP_CONNECT_ERROR(err);
+ return -1;
+ }
+ else
+ return 0; /* it's connected */
+ }
+ else
+ return -1;
+#else
if (FD_ISSET(osfd, &ex))
{
DosSleep(0);
@@ -264,24 +297,37 @@ _PR_MD_CONNECT(PRFileDesc *fd, const PRNetAddr *addr, PRUint32 addrlen,
/* it's connected */
return 0;
}
-#else
- if (getsockopt(osfd, SOL_SOCKET, SO_ERROR,
- (char *) &err, &len) < 0)
- {
- _PR_MD_MAP_GETSOCKOPT_ERROR(sock_errno());
- return -1;
- }
- else
- return 0; /* It's connected ! */
+#endif #vacpp
+#else #!bsd_select
+ if (socks[0] == osfd)
+ {
+ len = sizeof(err);
+ if (getsockopt(osfd, SOL_SOCKET, SO_ERROR,
+ (char *) &err, &len) < 0)
+ {
+ _PR_MD_MAP_GETSOCKOPT_ERROR(sock_errno());
+ return -1;
+ }
+
+ if (err != 0)
+ {
+ _PR_MD_MAP_CONNECT_ERROR(err);
+ return -1;
+ }
+ else
+ return 0; /* it's connected */
+ }
+ else
+ return -1;
#endif
- }
+ }
else if (rv == 0)
{
- PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
+ PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
return(-1);
} else if (rv < 0)
{
- _PR_MD_MAP_SELECT_ERROR(sock_errno());
+ _PR_MD_MAP_SELECT_ERROR(sock_errno());
return(-1);
}
}
@@ -340,7 +386,7 @@ _PR_MD_RECV(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags,
timeout - PR_SecondsToInterval(tv.tv_sec));
tvp = &tv;
}
- if ((rv = select(osfd + 1, &rd, NULL, NULL, tvp)) == -1)
+ if ((rv = _MD_SELECT(osfd + 1, &rd, NULL, NULL, tvp)) == -1)
#else
socks[0] = osfd;
if (timeout == PR_INTERVAL_NO_TIMEOUT)
@@ -351,22 +397,22 @@ _PR_MD_RECV(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags,
{
lTimeout = PR_IntervalToMilliseconds(timeout);
}
- if ((rv = select(socks, 1, 0, 0, lTimeout)) == -1)
+ if ((rv = _MD_SELECT(socks, 1, 0, 0, lTimeout)) == -1)
#endif
{
- _PR_MD_MAP_SELECT_ERROR(sock_errno());
+ _PR_MD_MAP_SELECT_ERROR(sock_errno());
return -1;
}
else if (rv == 0)
{
- PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
+ PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
rv = -1;
break;
}
}
else
{
- _PR_MD_MAP_RECV_ERROR(err);
+ _PR_MD_MAP_RECV_ERROR(err);
break;
}
} /* end while() */
@@ -409,7 +455,7 @@ _PR_MD_SEND(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags,
}
FD_ZERO(&wd);
FD_SET(osfd, &wd);
- if ((rv = select( osfd + 1, NULL, &wd, NULL,tvp)) == -1) {
+ if ((rv = _MD_SELECT( osfd + 1, NULL, &wd, NULL,tvp)) == -1) {
#else
if ( timeout == PR_INTERVAL_NO_TIMEOUT )
{
@@ -420,21 +466,21 @@ _PR_MD_SEND(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags,
lTimeout = PR_IntervalToMilliseconds(timeout);
}
socks[0] = osfd;
- if ((rv = select( socks, 0, 1, 0, lTimeout)) == -1) {
+ if ((rv = _MD_SELECT( socks, 0, 1, 0, lTimeout)) == -1) {
#endif
- _PR_MD_MAP_SELECT_ERROR(sock_errno());
+ _PR_MD_MAP_SELECT_ERROR(sock_errno());
break;
- }
+ }
if (rv == 0)
{
- PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
- return -1;
+ PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
+ return -1;
}
}
else {
- _PR_MD_MAP_SEND_ERROR(err);
+ _PR_MD_MAP_SEND_ERROR(err);
return -1;
- }
+ }
}
bytesSent += rv;
if (fd->secret->nonblocking)
@@ -457,7 +503,7 @@ _PR_MD_SEND(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags,
}
FD_ZERO(&wd);
FD_SET(osfd, &wd);
- if ((rv = select(osfd + 1, NULL, &wd, NULL,tvp)) == -1) {
+ if ((rv = _MD_SELECT(osfd + 1, NULL, &wd, NULL,tvp)) == -1) {
#else
if ( timeout == PR_INTERVAL_NO_TIMEOUT )
{
@@ -468,15 +514,15 @@ _PR_MD_SEND(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags,
lTimeout = PR_IntervalToMilliseconds(timeout);
}
socks[0] = osfd;
- if ((rv = select(socks, 0, 1, 0,lTimeout)) == -1) {
+ if ((rv = _MD_SELECT(socks, 0, 1, 0,lTimeout)) == -1) {
#endif
- _PR_MD_MAP_SELECT_ERROR(sock_errno());
+ _PR_MD_MAP_SELECT_ERROR(sock_errno());
break;
- }
+ }
if (rv == 0)
{
- PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
- return -1;
+ PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
+ return -1;
}
}
}
@@ -520,7 +566,7 @@ _PR_MD_SENDTO(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags,
}
FD_ZERO(&wd);
FD_SET(osfd, &wd);
- if ((rv = select(osfd + 1, NULL, &wd, NULL, tvp)) == -1) {
+ if ((rv = _MD_SELECT(osfd + 1, NULL, &wd, NULL, tvp)) == -1) {
#else
if ( timeout == PR_INTERVAL_NO_TIMEOUT )
{
@@ -531,21 +577,21 @@ _PR_MD_SENDTO(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags,
lTimeout = PR_IntervalToMilliseconds(timeout);
}
socks[0] = osfd;
- if ((rv = select(socks, 0, 1, 0, lTimeout)) == -1) {
+ if ((rv = _MD_SELECT(socks, 0, 1, 0, lTimeout)) == -1) {
#endif
- _PR_MD_MAP_SELECT_ERROR(sock_errno());
+ _PR_MD_MAP_SELECT_ERROR(sock_errno());
break;
- }
+ }
if (rv == 0)
{
- PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
- return -1;
+ PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
+ return -1;
}
}
else {
- _PR_MD_MAP_SENDTO_ERROR(err);
+ _PR_MD_MAP_SENDTO_ERROR(err);
return -1;
- }
+ }
}
bytesSent += rv;
if (fd->secret->nonblocking)
@@ -568,7 +614,7 @@ _PR_MD_SENDTO(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags,
}
FD_ZERO(&wd);
FD_SET(osfd, &wd);
- if ((rv = select( osfd + 1, NULL, &wd, NULL, tvp)) == -1) {
+ if ((rv = _MD_SELECT( osfd + 1, NULL, &wd, NULL, tvp)) == -1) {
#else
if ( timeout == PR_INTERVAL_NO_TIMEOUT )
{
@@ -579,15 +625,15 @@ _PR_MD_SENDTO(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags,
lTimeout = PR_IntervalToMilliseconds(timeout);
}
socks[0] = osfd;
- if ((rv = select( socks, 0, 1, 0, lTimeout)) == -1) {
+ if ((rv = _MD_SELECT( socks, 0, 1, 0, lTimeout)) == -1) {
#endif
- _PR_MD_MAP_SELECT_ERROR(sock_errno());
+ _PR_MD_MAP_SELECT_ERROR(sock_errno());
break;
- }
+ }
if (rv == 0)
{
- PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
- return -1;
+ PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
+ return -1;
}
}
}
@@ -616,20 +662,20 @@ _PR_MD_RECVFROM(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags,
&& (!fd->secret->nonblocking))
{
#ifdef BSD_SELECT
- if (timeout == PR_INTERVAL_NO_TIMEOUT)
- {
- tvp = NULL;
- }
- else
- {
- tv.tv_sec = PR_IntervalToSeconds(timeout);
- tv.tv_usec = PR_IntervalToMicroseconds(
- timeout - PR_SecondsToInterval(tv.tv_sec));
- tvp = &tv;
- }
- FD_ZERO(&rd);
- FD_SET(osfd, &rd);
- if ((rv = select(osfd + 1, &rd, NULL, NULL, tvp)) == -1)
+ if (timeout == PR_INTERVAL_NO_TIMEOUT)
+ {
+ tvp = NULL;
+ }
+ else
+ {
+ tv.tv_sec = PR_IntervalToSeconds(timeout);
+ tv.tv_usec = PR_IntervalToMicroseconds(
+ timeout - PR_SecondsToInterval(tv.tv_sec));
+ tvp = &tv;
+ }
+ FD_ZERO(&rd);
+ FD_SET(osfd, &rd);
+ if ((rv = _MD_SELECT(osfd + 1, &rd, NULL, NULL, tvp)) == -1)
#else
if (timeout == PR_INTERVAL_NO_TIMEOUT)
{
@@ -640,14 +686,14 @@ _PR_MD_RECVFROM(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags,
lTimeout = PR_IntervalToMilliseconds(timeout);
}
socks[0] = osfd;
- if ((rv = select(socks, 1, 0, 0, lTimeout)) == -1)
+ if ((rv = _MD_SELECT(socks, 1, 0, 0, lTimeout)) == -1)
#endif
{
- _PR_MD_MAP_SELECT_ERROR(sock_errno());
+ _PR_MD_MAP_SELECT_ERROR(sock_errno());
return -1;
} else if (rv == 0)
{
- PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
+ PR_SetError(PR_IO_TIMEOUT_ERROR, 0);
rv = -1;
break;
}
@@ -657,7 +703,7 @@ _PR_MD_RECVFROM(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags,
}
else
{
- _PR_MD_MAP_RECVFROM_ERROR(err);
+ _PR_MD_MAP_RECVFROM_ERROR(err);
break;
}
}
@@ -702,12 +748,12 @@ _PR_MD_WRITEV(PRFileDesc *fd, const PRIOVec *iov, PRInt32 iov_size, PRIntervalTi
PRInt32
_PR_MD_SHUTDOWN(PRFileDesc *fd, PRIntn how)
{
-PRInt32 rv;
+ PRInt32 rv;
rv = shutdown(fd->secret->md.osfd, how);
- if (rv < 0)
- _PR_MD_MAP_SHUTDOWN_ERROR(sock_errno());
- return rv;
+ if (rv < 0)
+ _PR_MD_MAP_SHUTDOWN_ERROR(sock_errno());
+ return rv;
}
PRStatus
@@ -717,11 +763,11 @@ _PR_MD_GETSOCKNAME(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *len)
rv = getsockname((int)fd->secret->md.osfd, (struct sockaddr *)addr, (int *) len);
if (rv==0)
- return PR_SUCCESS;
- else {
- _PR_MD_MAP_GETSOCKNAME_ERROR(sock_errno());
- return PR_FAILURE;
- }
+ return PR_SUCCESS;
+ else {
+ _PR_MD_MAP_GETSOCKNAME_ERROR(sock_errno());
+ return PR_FAILURE;
+ }
}
PRStatus
@@ -731,11 +777,11 @@ _PR_MD_GETPEERNAME(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *len)
rv = getpeername((int)fd->secret->md.osfd, (struct sockaddr *)addr, (int *) len);
if (rv==0)
- return PR_SUCCESS;
- else {
- _PR_MD_MAP_GETPEERNAME_ERROR(sock_errno());
- return PR_FAILURE;
- }
+ return PR_SUCCESS;
+ else {
+ _PR_MD_MAP_GETPEERNAME_ERROR(sock_errno());
+ return PR_FAILURE;
+ }
}
PRStatus
@@ -745,11 +791,11 @@ _PR_MD_GETSOCKOPT(PRFileDesc *fd, PRInt32 level, PRInt32 optname, char* optval,
rv = getsockopt((int)fd->secret->md.osfd, level, optname, optval, optlen);
if (rv==0)
- return PR_SUCCESS;
- else {
- _PR_MD_MAP_GETSOCKOPT_ERROR(sock_errno());
- return PR_FAILURE;
- }
+ return PR_SUCCESS;
+ else {
+ _PR_MD_MAP_GETSOCKOPT_ERROR(sock_errno());
+ return PR_FAILURE;
+ }
}
PRStatus
@@ -759,11 +805,11 @@ _PR_MD_SETSOCKOPT(PRFileDesc *fd, PRInt32 level, PRInt32 optname, const char* op
rv = setsockopt((int)fd->secret->md.osfd, level, optname, (char *) optval, optlen);
if (rv==0)
- return PR_SUCCESS;
- else {
- _PR_MD_MAP_SETSOCKOPT_ERROR(sock_errno());
- return PR_FAILURE;
- }
+ return PR_SUCCESS;
+ else {
+ _PR_MD_MAP_SETSOCKOPT_ERROR(sock_errno());
+ return PR_FAILURE;
+ }
}
void
diff --git a/pr/src/md/os2/os2thred.c b/pr/src/md/os2/os2thred.c
index b6c1615b..cbb8603c 100644
--- a/pr/src/md/os2/os2thred.c
+++ b/pr/src/md/os2/os2thred.c
@@ -36,7 +36,7 @@ _NSPR_TLS* pThreadLocalStorage = 0;
_PRInterruptTable _pr_interruptTable[] = { { 0 } };
APIRET (* APIENTRY QueryThreadContext)(TID, ULONG, PCONTEXTRECORD);
-PR_IMPLEMENT(void)
+void
_PR_MD_ENSURE_TLS(void)
{
if(!pThreadLocalStorage)
@@ -50,7 +50,7 @@ _PR_MD_ENSURE_TLS(void)
}
}
-PR_IMPLEMENT(void)
+void
_PR_MD_EARLY_INIT()
{
HMODULE hmod;
@@ -77,7 +77,7 @@ _pr_SetThreadMDHandle(PRThread *thread)
}
-PR_IMPLEMENT(PRStatus)
+PRStatus
_PR_MD_INIT_THREAD(PRThread *thread)
{
#ifdef XP_OS2_EMX
@@ -98,7 +98,7 @@ _PR_MD_INIT_THREAD(PRThread *thread)
return (thread->md.blocked_sema.sem != 0) ? PR_SUCCESS : PR_FAILURE;
}
-PR_IMPLEMENT(PRStatus)
+PRStatus
_PR_MD_CREATE_THREAD(PRThread *thread,
void (*start)(void *),
PRThreadPriority priority,
@@ -119,14 +119,14 @@ _PR_MD_CREATE_THREAD(PRThread *thread,
return PR_SUCCESS;
}
-PR_IMPLEMENT(void)
+void
_PR_MD_YIELD(void)
{
/* Isn't there some problem with DosSleep(0) on OS/2? */
DosSleep(0);
}
-PR_IMPLEMENT(void)
+void
_PR_MD_SET_PRIORITY(_MDThread *thread, PRThreadPriority newPri)
{
int nativePri;
@@ -159,7 +159,7 @@ _PR_MD_SET_PRIORITY(_MDThread *thread, PRThreadPriority newPri)
return;
}
-PR_IMPLEMENT(void)
+void
_PR_MD_CLEAN_THREAD(PRThread *thread)
{
if (&thread->md.blocked_sema) {
@@ -172,7 +172,7 @@ _PR_MD_CLEAN_THREAD(PRThread *thread)
}
}
-PR_IMPLEMENT(void)
+void
_PR_MD_EXIT_THREAD(PRThread *thread)
{
_PR_MD_DESTROY_SEM(&thread->md.blocked_sema);
@@ -200,7 +200,7 @@ _PR_MD_EXIT_THREAD(PRThread *thread)
}
-PR_IMPLEMENT(void)
+void
_PR_MD_EXIT(PRIntn status)
{
_exit(status);
@@ -240,19 +240,19 @@ _PR_MD_GETTHREADAFFINITYMASK(PRThread *thread, PRUint32 *mask)
}
#endif /* HAVE_THREAD_AFFINITY */
-PR_IMPLEMENT(void)
+void
_PR_MD_SUSPEND_CPU(_PRCPU *cpu)
{
_PR_MD_SUSPEND_THREAD(cpu->thread);
}
-PR_IMPLEMENT(void)
+void
_PR_MD_RESUME_CPU(_PRCPU *cpu)
{
_PR_MD_RESUME_THREAD(cpu->thread);
}
-PR_IMPLEMENT(void)
+void
_PR_MD_SUSPEND_THREAD(PRThread *thread)
{
if (_PR_IS_NATIVE_THREAD(thread)) {
@@ -266,7 +266,7 @@ _PR_MD_SUSPEND_THREAD(PRThread *thread)
}
}
-PR_IMPLEMENT(void)
+void
_PR_MD_RESUME_THREAD(PRThread *thread)
{
if (_PR_IS_NATIVE_THREAD(thread)) {
diff --git a/pr/src/md/unix/.cvsignore b/pr/src/md/unix/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/md/unix/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/md/unix/Makefile b/pr/src/md/unix/Makefile
deleted file mode 100644
index de8baadd..00000000
--- a/pr/src/md/unix/Makefile
+++ /dev/null
@@ -1,316 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-MOD_DEPTH = ../../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-CSRCS = \
- unix.c \
- unix_errors.c \
- uxproces.c \
- uxrng.c \
- uxshm.c \
- uxwrap.c \
- $(NULL)
-
-ifneq ($(USE_PTHREADS),1)
-CSRCS += uxpoll.c
-endif
-
-ifeq ($(PTHREADS_USER),1)
-CSRCS += pthreads_user.c
-endif
-
-IRIX_CSRCS = \
- irix.c \
- $(NULL)
-
-SUNOS4_CSRCS = \
- sunos4.c \
- $(NULL)
-
-SOLARIS_CSRCS = \
- solaris.c \
- $(NULL)
-
-AIX_CSRCS = \
- aix.c \
- $(NULL)
-
-FREEBSD_CSRCS = \
- freebsd.c \
- $(NULL)
-
-NETBSD_CSRCS = \
- netbsd.c \
- $(NULL)
-
-OPENBSD_CSRCS = \
- openbsd.c \
- $(NULL)
-
-BSDI_CSRCS = \
- bsdi.c \
- $(NULL)
-
-HPUX_CSRCS = \
- hpux.c \
- $(NULL)
-
-OPENVMS_CSRCS = \
- openvms.c \
- $(NULL)
-
-OSF1_CSRCS = \
- osf1.c \
- $(NULL)
-
-LINUX_CSRCS = \
- linux.c \
- $(NULL)
-
-UNIXWARE_CSRCS = \
- unixware.c \
- $(NULL)
-
-RELIANTUNIX_CSRCS = \
- reliantunix.c \
- $(NULL)
-
-RHAPSODY_CSRCS = \
- rhapsody.c \
- $(NULL)
-
-NEXTSTEP_CSRCS = \
- nextstep.c \
- $(NULL)
-
-NEC_CSRCS = \
- nec.c \
- $(NULL)
-
-SONY_CSRCS = \
- sony.c \
- $(NULL)
-
-NCR_CSRCS = \
- ncr.c \
- $(NULL)
-
-SCOOS_CSRCS = \
- scoos.c \
- $(NULL)
-
-DGUX_CSRCS = \
- dgux.c \
- $(NULL)
-
-QNX_CSRCS = \
- qnx.c \
- $(NULL)
-
-NTO_CSRCS = \
- nto.c \
- $(NULL)
-
-ifeq ($(OS_ARCH),IRIX)
-CSRCS += $(IRIX_CSRCS)
-endif
-
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-CSRCS += $(SUNOS4_CSRCS)
-else
-CSRCS += $(SOLARIS_CSRCS)
-endif
-endif
-
-ifeq ($(OS_ARCH),AIX)
-CSRCS += $(AIX_CSRCS)
-endif
-ifeq ($(OS_ARCH),FreeBSD)
-CSRCS += $(FREEBSD_CSRCS)
-endif
-ifeq ($(OS_ARCH),NetBSD)
-CSRCS += $(NETBSD_CSRCS)
-endif
-ifeq ($(OS_ARCH),OpenBSD)
-CSRCS += $(OPENBSD_CSRCS)
-endif
-ifeq ($(OS_ARCH),BSD_OS)
-CSRCS += $(BSDI_CSRCS)
-endif
-ifeq ($(OS_ARCH),HP-UX)
-CSRCS += $(HPUX_CSRCS)
-endif
-ifeq ($(OS_ARCH),OpenVMS)
-CSRCS += $(OPENVMS_CSRCS)
-endif
-ifeq ($(OS_ARCH),OSF1)
-CSRCS += $(OSF1_CSRCS)
-endif
-ifeq ($(OS_ARCH),Linux)
-CSRCS += $(LINUX_CSRCS)
-endif
-ifeq ($(OS_ARCH),UNIXWARE)
-CSRCS += $(UNIXWARE_CSRCS)
-endif
-ifeq ($(OS_ARCH),SINIX)
-CSRCS += $(RELIANTUNIX_CSRCS)
-endif
-ifeq ($(OS_ARCH),Rhapsody)
-CSRCS += $(RHAPSODY_CSRCS)
-endif
-ifeq ($(OS_ARCH),NEXTSTEP)
-CSRCS += $(NEXTSTEP_CSRCS)
-endif
-ifeq ($(OS_ARCH),NEC)
-CSRCS += $(NEC_CSRCS)
-endif
-ifeq ($(OS_ARCH),NEWS-OS)
-CSRCS += $(SONY_CSRCS)
-endif
-ifeq ($(OS_ARCH),NCR)
-CSRCS += $(NCR_CSRCS)
-endif
-ifeq ($(OS_ARCH),SCOOS)
-CSRCS += $(SCOOS_CSRCS)
-endif
-ifeq ($(OS_ARCH),DGUX)
-CSRCS += $(DGUX_CSRCS)
-endif
-ifeq ($(OS_ARCH),NTO)
-CSRCS += $(NTO_CSRCS)
-endif
-ifeq ($(OS_ARCH),QNX)
-ifeq ($(OS_TARGET),NTO)
-CSRCS += $(NTO_CSRCS)
-else
-CSRCS += $(QNX_CSRCS)
-endif
-endif
-
-#
-# Some Unix platforms have an assembly language file.
-# E.g., AIX 3.2, Solaris (both sparc and x86).
-#
-ifeq ($(OS_ARCH), AIX)
- ifeq ($(OS_RELEASE), 3.2)
- ASFILES = os_$(OS_ARCH).s
- endif
-endif
-
-ifeq ($(OS_ARCH),SunOS)
- ifneq ($(OS_RELEASE),4.1.3_U1)
- ifneq ($(LOCAL_THREADS_ONLY),1)
- ifeq ($(CPU_ARCH),x86)
- ASFILES = os_$(OS_ARCH)_x86.s
- else
- ASFILES = os_$(OS_ARCH).s
- ifneq ($(USE_64),1)
- ASFILES += os_$(OS_ARCH)_32.s
- endif
- endif
- endif
- endif
-endif
-
-ifeq ($(OS_ARCH), SINIX)
- ifeq ($(CPU_ARCH),mips)
- ASFILES = os_ReliantUNIX.s
- endif
-endif
-
-ifeq ($(OS_ARCH)$(OS_RELEASE),BSD_OS2.1)
- ASFILES = os_BSD_386_2.s
-endif
-
-ifeq ($(OS_ARCH), IRIX)
- ASFILES = os_Irix.s
-endif
-
-ifeq ($(OS_ARCH), HP-UX)
- ASFILES = os_HPUX.s
-endif
-
-TARGETS = $(OBJS)
-
-ifeq ($(OS_ARCH),AIX)
-ifeq (,$(filter-out 3.2 4.1,$(OS_RELEASE)))
-ifneq ($(USE_PTHREADS), 1)
-#TARGETS += $(OBJDIR)/aixwrap.$(OBJ_SUFFIX)
-endif
-endif
-endif
-
-ifeq ($(OS_ARCH),SunOS)
- ifneq ($(OS_RELEASE),4.1.3_U1)
- ifeq ($(OS_TEST),sun4u)
- LIBRARY_NAME = $(ULTRASPARC_LIBRARY)
- LIBRARY_VERSION = $(MOD_VERSION)
- ULTRASPARC_ASFILES = os_$(OS_ARCH)_ultrasparc.s
- ULTRASPARC_ASOBJS = $(addprefix $(OBJDIR)/,$(ULTRASPARC_ASFILES:.s=.$(OBJ_SUFFIX)))
- TARGETS += $(ULTRASPARC_ASOBJS) $(SHARED_LIBRARY)
- RELEASE_LIBS = $(SHARED_LIBRARY)
- endif
- endif
-endif
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-DEFINES += -D_NSPR_BUILD_
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-#ifeq ($(OS_ARCH),AIX)
-#ifeq (,$(filter-out 3.2 4.1,$(OS_RELEASE)))
-#ifneq ($(USE_PTHREADS), 1)
-# $(INSTALL) -m 444 $(OBJDIR)/aixwrap.$(OBJ_SUFFIX) $(DIST)/lib
-#endif
-#endif
-#endif
-
-ifeq ($(OS_ARCH),SunOS)
-ifneq ($(OS_RELEASE),4.1.3_U1)
-ifeq ($(OS_TEST),sun4u)
-$(SHARED_LIBRARY): $(ULTRASPARC_ASOBJS)
- $(LD) -G -z text -o $@ $(ULTRASPARC_ASOBJS)
- $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/lib
-
-$(ULTRASPARC_ASOBJS): $(ULTRASPARC_ASFILES)
-ifeq ($(USE_64),1)
- /usr/ccs/bin/as -o $@ -K PIC -P -D_ASM -D__STDC__=0 -xarch=v9 $<
-else
- /usr/ccs/bin/as -o $@ -K PIC -P -D_ASM -D__STDC__=0 -xarch=v8plus $<
-endif
-
-clean::
- rm -rf $(ULTRASPARC_ASOBJS)
-endif
-endif
-endif
-
-install:: export
diff --git a/pr/src/md/unix/Makefile.in b/pr/src/md/unix/Makefile.in
index 9fb73bf8..9db24b49 100644
--- a/pr/src/md/unix/Makefile.in
+++ b/pr/src/md/unix/Makefile.in
@@ -24,17 +24,6 @@ include $(MOD_DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/config.mk
-ifndef USE_AUTOCONF
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-endif # ! USE_AUTOCONF
-
CSRCS = \
unix.c \
unix_errors.c \
@@ -52,235 +41,16 @@ ifeq ($(PTHREADS_USER),1)
CSRCS += pthreads_user.c
endif
-ifndef USE_AUTOCONF
-
-IRIX_CSRCS = \
- irix.c \
- $(NULL)
-
-SUNOS4_CSRCS = \
- sunos4.c \
- $(NULL)
-
-SOLARIS_CSRCS = \
- solaris.c \
- $(NULL)
-
-AIX_CSRCS = \
- aix.c \
- $(NULL)
-
-FREEBSD_CSRCS = \
- freebsd.c \
- $(NULL)
-
-NETBSD_CSRCS = \
- netbsd.c \
- $(NULL)
-
-OPENBSD_CSRCS = \
- openbsd.c \
- $(NULL)
-
-BSDI_CSRCS = \
- bsdi.c \
- $(NULL)
-
-HPUX_CSRCS = \
- hpux.c \
- $(NULL)
-
-OPENVMS_CSRCS = \
- openvms.c \
- $(NULL)
-
-OSF1_CSRCS = \
- osf1.c \
- $(NULL)
-
-LINUX_CSRCS = \
- linux.c \
- $(NULL)
-
-UNIXWARE_CSRCS = \
- unixware.c \
- $(NULL)
-
-RELIANTUNIX_CSRCS = \
- reliantunix.c \
- $(NULL)
-
-RHAPSODY_CSRCS = \
- rhapsody.c \
- $(NULL)
-
-NEXTSTEP_CSRCS = \
- nextstep.c \
- $(NULL)
-
-NEC_CSRCS = \
- nec.c \
- $(NULL)
-
-SONY_CSRCS = \
- sony.c \
- $(NULL)
-
-NCR_CSRCS = \
- ncr.c \
- $(NULL)
-
-SCOOS_CSRCS = \
- scoos.c \
- $(NULL)
-
-DGUX_CSRCS = \
- dgux.c \
- $(NULL)
-
-QNX_CSRCS = \
- qnx.c \
- $(NULL)
-
-NTO_CSRCS = \
- nto.c \
- $(NULL)
-
-ifeq ($(OS_ARCH),IRIX)
-CSRCS += $(IRIX_CSRCS)
-endif
-
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-CSRCS += $(SUNOS4_CSRCS)
-else
-CSRCS += $(SOLARIS_CSRCS)
-endif
-endif
-
-ifeq ($(OS_ARCH),AIX)
-CSRCS += $(AIX_CSRCS)
-endif
-ifeq ($(OS_ARCH),FreeBSD)
-CSRCS += $(FREEBSD_CSRCS)
-endif
-ifeq ($(OS_ARCH),NetBSD)
-CSRCS += $(NETBSD_CSRCS)
-endif
-ifeq ($(OS_ARCH),OpenBSD)
-CSRCS += $(OPENBSD_CSRCS)
-endif
-ifeq ($(OS_ARCH),BSD_OS)
-CSRCS += $(BSDI_CSRCS)
-endif
-ifeq ($(OS_ARCH),HP-UX)
-CSRCS += $(HPUX_CSRCS)
-endif
-ifeq ($(OS_ARCH),OpenVMS)
-CSRCS += $(OPENVMS_CSRCS)
-endif
-ifeq ($(OS_ARCH),OSF1)
-CSRCS += $(OSF1_CSRCS)
-endif
-ifeq ($(OS_ARCH),Linux)
-CSRCS += $(LINUX_CSRCS)
-endif
-ifeq ($(OS_ARCH),UNIXWARE)
-CSRCS += $(UNIXWARE_CSRCS)
-endif
-ifeq ($(OS_ARCH),SINIX)
-CSRCS += $(RELIANTUNIX_CSRCS)
-endif
-ifeq ($(OS_ARCH),Rhapsody)
-CSRCS += $(RHAPSODY_CSRCS)
-endif
-ifeq ($(OS_ARCH),NEXTSTEP)
-CSRCS += $(NEXTSTEP_CSRCS)
-endif
-ifeq ($(OS_ARCH),NEC)
-CSRCS += $(NEC_CSRCS)
-endif
-ifeq ($(OS_ARCH),NEWS-OS)
-CSRCS += $(SONY_CSRCS)
-endif
-ifeq ($(OS_ARCH),NCR)
-CSRCS += $(NCR_CSRCS)
-endif
-ifeq ($(OS_ARCH),SCOOS)
-CSRCS += $(SCOOS_CSRCS)
-endif
-ifeq ($(OS_ARCH),DGUX)
-CSRCS += $(DGUX_CSRCS)
-endif
-ifeq ($(OS_ARCH),NTO)
-CSRCS += $(NTO_CSRCS)
-endif
-ifeq ($(OS_ARCH),QNX)
-ifeq ($(OS_TARGET),NTO)
-CSRCS += $(NTO_CSRCS)
-else
-CSRCS += $(QNX_CSRCS)
-endif
-endif
-
-#
-# Some Unix platforms have an assembly language file.
-# E.g., AIX 3.2, Solaris (both sparc and x86).
-#
-ifeq ($(OS_ARCH), AIX)
- ifeq ($(OS_RELEASE), 3.2)
- ASFILES = os_$(OS_ARCH).s
- endif
-endif
-
-ifeq ($(OS_ARCH),SunOS)
- ifneq ($(OS_RELEASE),4.1.3_U1)
- ifneq ($(LOCAL_THREADS_ONLY),1)
- ifeq ($(CPU_ARCH),x86)
- ASFILES = os_$(OS_ARCH)_x86.s
- else
- ASFILES = os_$(OS_ARCH).s
- ifneq ($(USE_64),1)
- ASFILES += os_$(OS_ARCH)_32.s
- endif
- endif
- endif
- endif
-endif
-
-ifeq ($(OS_ARCH), SINIX)
- ifeq ($(CPU_ARCH),mips)
- ASFILES = os_ReliantUNIX.s
- endif
-endif
-
-ifeq ($(OS_ARCH)$(OS_RELEASE),BSD_OS2.1)
- ASFILES = os_BSD_386_2.s
-endif
-
-ifeq ($(OS_ARCH), IRIX)
- ASFILES = os_Irix.s
-endif
-
-ifeq ($(OS_ARCH), HP-UX)
- ASFILES = os_HPUX.s
-endif
-
-TARGETS = $(OBJS)
+CSRCS += $(PR_MD_CSRCS)
+ASFILES += $(PR_MD_ASFILES)
-ifeq ($(OS_ARCH),AIX)
-ifeq (,$(filter-out 3.2 4.1,$(OS_RELEASE)))
-ifneq ($(USE_PTHREADS), 1)
-#TARGETS += $(OBJDIR)/aixwrap.$(OBJ_SUFFIX)
-endif
-endif
-endif
+TARGETS = $(OBJS)
ifeq ($(OS_ARCH),SunOS)
ifneq ($(OS_RELEASE),4.1.3_U1)
ifeq ($(OS_TEST),sun4u)
LIBRARY_NAME = $(ULTRASPARC_LIBRARY)
- LIBRARY_VERSION = $(MOD_VERSION)
+ LIBRARY_VERSION = $(MOD_MAJOR_VERSION)
ULTRASPARC_ASFILES = os_$(OS_ARCH)_ultrasparc.s
ULTRASPARC_ASOBJS = $(addprefix $(OBJDIR)/,$(ULTRASPARC_ASFILES:.s=.$(OBJ_SUFFIX)))
TARGETS += $(ULTRASPARC_ASOBJS) $(SHARED_LIBRARY)
@@ -289,37 +59,20 @@ ifeq ($(OS_ARCH),SunOS)
endif
endif
-else # USE_AUTOCONF
-
-CSRCS += $(PR_MD_CSRCS)
-ASFILES += $(PR_MD_ASFILES)
-
-TARGETS = $(OBJS)
-
-endif # ! USE_AUTOCONF
-
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
DEFINES += -D_NSPR_BUILD_
include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-#ifeq ($(OS_ARCH),AIX)
-#ifeq (,$(filter-out 3.2 4.1,$(OS_RELEASE)))
-#ifneq ($(USE_PTHREADS), 1)
-# $(INSTALL) -m 444 $(OBJDIR)/aixwrap.$(OBJ_SUFFIX) $(DIST)/lib
-#endif
-#endif
-#endif
-ifndef USE_AUTOCONF
ifeq ($(OS_ARCH),SunOS)
ifneq ($(OS_RELEASE),4.1.3_U1)
ifeq ($(OS_TEST),sun4u)
$(SHARED_LIBRARY): $(ULTRASPARC_ASOBJS)
$(LD) -G -z text -o $@ $(ULTRASPARC_ASOBJS)
- $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/lib
+ $(INSTALL) -m 444 $(SHARED_LIBRARY) $(dist_libdir)
$(ULTRASPARC_ASOBJS): $(ULTRASPARC_ASFILES)
ifeq ($(USE_64),1)
@@ -333,5 +86,3 @@ clean::
endif
endif
endif
-endif #!USE_AUTOCONF
-install:: export
diff --git a/pr/src/md/unix/darwin.c b/pr/src/md/unix/darwin.c
index ff5f1ad7..93421318 100644
--- a/pr/src/md/unix/darwin.c
+++ b/pr/src/md/unix/darwin.c
@@ -87,13 +87,32 @@ _MD_CREATE_THREAD(
}
#endif /* ! _PR_PTHREADS */
+#if defined(_PR_PTHREADS)
+
/*
-** Whoops, we don't have a syscall stub for this
+** Stubs for unimplemented functions
*/
-int mprotect (caddr_t addr, size_t size, int prot)
+
+int pthread_condattr_init(pthread_condattr_t *attr)
+{
+ return 0;
+}
+
+int pthread_kill(pthread_t thread, int sig)
{
- return -1;
-}
+ return ENOSYS;
+}
+
+typedef struct siginfo_t siginfo_t;
+
+int sigtimedwait(const sigset_t *set, siginfo_t *info,
+ const struct timespec *timeout)
+{
+ errno = ENOSYS;
+ return -1;
+}
+
+#endif /* _PR_PTHREADS */
/* rhapsody.c */
diff --git a/pr/src/md/unix/objs.mk b/pr/src/md/unix/objs.mk
index d8196c81..575584b6 100644
--- a/pr/src/md/unix/objs.mk
+++ b/pr/src/md/unix/objs.mk
@@ -35,226 +35,9 @@ ifeq ($(PTHREADS_USER),1)
CSRCS += pthreads_user.c
endif
-ifdef USE_AUTOCONF
-
CSRCS += $(PR_MD_CSRCS)
ASFILES += $(PR_MD_ASFILES)
-else # ! USE_AUTOCONF
-IRIX_CSRCS = \
- irix.c \
- $(NULL)
-
-SUNOS4_CSRCS = \
- sunos4.c \
- $(NULL)
-
-SOLARIS_CSRCS = \
- solaris.c \
- $(NULL)
-
-AIX_CSRCS = \
- aix.c \
- $(NULL)
-
-FREEBSD_CSRCS = \
- freebsd.c \
- $(NULL)
-
-NETBSD_CSRCS = \
- netbsd.c \
- $(NULL)
-
-OPENBSD_CSRCS = \
- openbsd.c \
- $(NULL)
-
-BSDI_CSRCS = \
- bsdi.c \
- $(NULL)
-
-HPUX_CSRCS = \
- hpux.c \
- $(NULL)
-
-OSF1_CSRCS = \
- osf1.c \
- $(NULL)
-
-OPENVMS_CSRCS = \
- openvms.c \
- $(NULL)
-
-LINUX_CSRCS = \
- linux.c \
- $(NULL)
-
-UNIXWARE_CSRCS = \
- unixware.c \
- $(NULL)
-
-RELIANTUNIX_CSRCS = \
- reliantunix.c \
- $(NULL)
-
-RHAPSODY_CSRCS = \
- rhapsody.c \
- $(NULL)
-
-NEXTSTEP_CSRCS = \
- nextstep.c \
- $(NULL)
-
-NEC_CSRCS = \
- nec.c \
- $(NULL)
-
-SONY_CSRCS = \
- sony.c \
- $(NULL)
-
-NCR_CSRCS = \
- ncr.c \
- $(NULL)
-
-SCOOS_CSRCS = \
- scoos.c \
- $(NULL)
-
-DGUX_CSRCS = \
- dgux.c \
- $(NULL)
-
-QNX_CSRCS = \
- qnx.c \
- $(NULL)
-
-NTO_CSRCS = \
- nto.c \
- $(NULL)
-
-ifeq ($(OS_ARCH),IRIX)
-CSRCS += $(IRIX_CSRCS)
-endif
-
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-CSRCS += $(SUNOS4_CSRCS)
-else
-CSRCS += $(SOLARIS_CSRCS)
-endif
-endif
-
-ifeq ($(OS_ARCH),AIX)
-CSRCS += $(AIX_CSRCS)
-endif
-ifeq ($(OS_ARCH),FreeBSD)
-CSRCS += $(FREEBSD_CSRCS)
-endif
-ifeq ($(OS_ARCH),NetBSD)
-CSRCS += $(NETBSD_CSRCS)
-endif
-ifeq ($(OS_ARCH),OpenBSD)
-CSRCS += $(OPENBSD_CSRCS)
-endif
-ifeq ($(OS_ARCH),BSD_OS)
-CSRCS += $(BSDI_CSRCS)
-endif
-ifeq ($(OS_ARCH),HP-UX)
-CSRCS += $(HPUX_CSRCS)
-endif
-ifeq ($(OS_ARCH),OSF1)
-CSRCS += $(OSF1_CSRCS)
-endif
-ifeq ($(OS_ARCH),OpenVMS)
-CSRCS += $(OPENVMS_CSRCS)
-endif
-ifeq ($(OS_ARCH),Linux)
-CSRCS += $(LINUX_CSRCS)
-endif
-ifeq ($(OS_ARCH),UNIXWARE)
-CSRCS += $(UNIXWARE_CSRCS)
-endif
-ifeq ($(OS_ARCH),SINIX)
-CSRCS += $(RELIANTUNIX_CSRCS)
-endif
-ifeq ($(OS_ARCH),Rhapsody)
-CSRCS += $(RHAPSODY_CSRCS)
-endif
-ifeq ($(OS_ARCH),NEXTSTEP)
-CSRCS += $(NEXTSTEP_CSRCS)
-endif
-ifeq ($(OS_ARCH),NEC)
-CSRCS += $(NEC_CSRCS)
-endif
-ifeq ($(OS_ARCH),NEWS-OS)
-CSRCS += $(SONY_CSRCS)
-endif
-ifeq ($(OS_ARCH),NCR)
-CSRCS += $(NCR_CSRCS)
-endif
-ifeq ($(OS_ARCH),SCOOS)
-CSRCS += $(SCOOS_CSRCS)
-endif
-ifeq ($(OS_ARCH),DGUX)
-CSRCS += $(DGUX_CSRCS)
-endif
-ifeq ($(OS_ARCH),NTO)
-CSRCS += $(NTO_CSRCS)
-endif
-ifeq ($(OS_ARCH),QNX)
-ifeq ($(OS_TARGET),NTO)
-CSRCS += $(NTO_CSRCS)
-else
-CSRCS += $(QNX_CSRCS)
-endif
-endif
-
-#
-# Some Unix platforms have an assembly language file.
-# E.g., AIX 3.2, Solaris (both sparc and x86).
-#
-ifeq ($(OS_ARCH), AIX)
- ifeq ($(OS_RELEASE), 3.2)
- ASFILES = os_$(OS_ARCH).s
- endif
-endif
-
-ifeq ($(OS_ARCH),SunOS)
- ifneq ($(OS_RELEASE),4.1.3_U1)
- ifneq ($(LOCAL_THREADS_ONLY),1)
- ifeq ($(CPU_ARCH),x86)
- ASFILES = os_$(OS_ARCH)_x86.s
- else
- ASFILES = os_$(OS_ARCH).s
- ifneq ($(USE_64),1)
- ASFILES += os_$(OS_ARCH)_32.s
- endif
- endif
- endif
- endif
-endif
-
-ifeq ($(OS_ARCH), SINIX)
- ifeq ($(CPU_ARCH),mips)
- ASFILES = os_ReliantUNIX.s
- endif
-endif
-
-ifeq ($(OS_ARCH), HP-UX)
- ASFILES = os_HPUX.s
-endif
-
-ifeq ($(OS_ARCH), IRIX)
- ASFILES = os_Irix.s
-endif
-
-ifeq ($(OS_ARCH)$(OS_RELEASE),BSD_OS2.1)
- ASFILES = os_BSD_386_2.s
-endif
-
-endif # !USE_AUTOCONF
-
OBJS += $(addprefix md/unix/$(OBJDIR)/,$(CSRCS:.c=.$(OBJ_SUFFIX))) \
$(addprefix md/unix/$(OBJDIR)/,$(ASFILES:.s=.$(OBJ_SUFFIX)))
diff --git a/pr/src/md/unix/os_Linux_x86.s b/pr/src/md/unix/os_Linux_x86.s
new file mode 100644
index 00000000..f72f28d2
--- /dev/null
+++ b/pr/src/md/unix/os_Linux_x86.s
@@ -0,0 +1,95 @@
+/ -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+/
+/ The contents of this file are subject to the Netscape Public License
+/ Version 1.1 (the "NPL"); you may not use this file except in
+/ compliance with the NPL. You may obtain a copy of the NPL at
+/ http://www.mozilla.org/NPL/
+/
+/ Software distributed under the NPL is distributed on an "AS IS" basis,
+/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
+/ for the specific language governing rights and limitations under the
+/ NPL.
+/
+/ The Initial Developer of this code under the NPL is Netscape
+/ Communications Corporation. Portions created by Netscape are
+/ Copyright (C) 2000 Netscape Communications Corporation. All Rights
+/ Reserved.
+/
+
+/ PRInt32 _PR_x86_AtomicIncrement(PRInt32 *val)
+/
+/ Atomically increment the integer pointed to by 'val' and return
+/ the result of the increment.
+/
+ .text
+ .globl _PR_x86_AtomicIncrement
+ .align 4
+_PR_x86_AtomicIncrement:
+ movl 4(%esp), %ecx
+ movl $1, %eax
+ lock
+ xaddl %eax, (%ecx)
+ incl %eax
+ ret
+
+/ PRInt32 _PR_x86_AtomicDecrement(PRInt32 *val)
+/
+/ Atomically decrement the integer pointed to by 'val' and return
+/ the result of the decrement.
+/
+ .text
+ .globl _PR_x86_AtomicDecrement
+ .align 4
+_PR_x86_AtomicDecrement:
+ movl 4(%esp), %ecx
+ movl $-1, %eax
+ lock
+ xaddl %eax, (%ecx)
+ decl %eax
+ ret
+
+/ PRInt32 _PR_x86_AtomicSet(PRInt32 *val, PRInt32 newval)
+/
+/ Atomically set the integer pointed to by 'val' to the new
+/ value 'newval' and return the old value.
+/
+/ An alternative implementation:
+/ .text
+/ .globl _PR_x86_AtomicSet
+/ .align 4
+/_PR_x86_AtomicSet:
+/ movl 4(%esp), %ecx
+/ movl 8(%esp), %edx
+/ movl (%ecx), %eax
+/retry:
+/ lock
+/ cmpxchgl %edx, (%ecx)
+/ jne retry
+/ ret
+/
+ .text
+ .globl _PR_x86_AtomicSet
+ .align 4
+_PR_x86_AtomicSet:
+ movl 4(%esp), %ecx
+ movl 8(%esp), %eax
+ lock
+ xchgl %eax, (%ecx)
+ ret
+
+/ PRInt32 _PR_x86_AtomicAdd(PRInt32 *ptr, PRInt32 val)
+/
+/ Atomically add 'val' to the integer pointed to by 'ptr'
+/ and return the result of the addition.
+/
+ .text
+ .globl _PR_x86_AtomicAdd
+ .align 4
+_PR_x86_AtomicAdd:
+ movl 4(%esp), %ecx
+ movl 8(%esp), %eax
+ movl %eax, %edx
+ lock
+ xaddl %eax, (%ecx)
+ addl %edx, %eax
+ ret
diff --git a/pr/src/md/unix/rhapsody.c b/pr/src/md/unix/rhapsody.c
index ff5f1ad7..93421318 100644
--- a/pr/src/md/unix/rhapsody.c
+++ b/pr/src/md/unix/rhapsody.c
@@ -87,13 +87,32 @@ _MD_CREATE_THREAD(
}
#endif /* ! _PR_PTHREADS */
+#if defined(_PR_PTHREADS)
+
/*
-** Whoops, we don't have a syscall stub for this
+** Stubs for unimplemented functions
*/
-int mprotect (caddr_t addr, size_t size, int prot)
+
+int pthread_condattr_init(pthread_condattr_t *attr)
+{
+ return 0;
+}
+
+int pthread_kill(pthread_t thread, int sig)
{
- return -1;
-}
+ return ENOSYS;
+}
+
+typedef struct siginfo_t siginfo_t;
+
+int sigtimedwait(const sigset_t *set, siginfo_t *info,
+ const struct timespec *timeout)
+{
+ errno = ENOSYS;
+ return -1;
+}
+
+#endif /* _PR_PTHREADS */
/* rhapsody.c */
diff --git a/pr/src/md/unix/uxproces.c b/pr/src/md/unix/uxproces.c
index 8c0a9b96..d6cacf6d 100644
--- a/pr/src/md/unix/uxproces.c
+++ b/pr/src/md/unix/uxproces.c
@@ -27,7 +27,11 @@
#include <dlfcn.h> /* For dlopen, dlsym, dlclose */
#endif
+#if defined(RHAPSODY)
+#include <crt_externs.h>
+#else
extern char **environ;
+#endif
/*
* HP-UX 9 doesn't have the SA_RESTART flag.
@@ -36,6 +40,10 @@ extern char **environ;
#define SA_RESTART 0
#endif
+#if defined(VMS)
+static PRLock *_pr_vms_fork_lock = NULL;
+#endif
+
/*
**********************************************************************
*
@@ -146,7 +154,10 @@ ForkAndExec(
char *const *childEnvp;
char **newEnvp = NULL;
int flags;
-
+#ifdef VMS
+ char VMScurdir[FILENAME_MAX+1] = { '\0' } ;
+#endif
+
process = PR_NEW(PRProcess);
if (!process) {
PR_SetError(PR_OUT_OF_MEMORY_ERROR, 0);
@@ -156,7 +167,11 @@ ForkAndExec(
childEnvp = envp;
if (attr && attr->fdInheritBuffer) {
if (NULL == childEnvp) {
+#ifdef RHAPSODY
+ childEnvp = *(_NSGetEnviron());
+#else
childEnvp = environ;
+#endif
}
for (nEnv = 0; childEnvp[nEnv]; nEnv++) {
}
@@ -173,6 +188,65 @@ ForkAndExec(
newEnvp[idx] = NULL;
childEnvp = newEnvp;
}
+#ifdef VMS
+/*
+** Since vfork/exec is implemented VERY differently on OpenVMS, we have to
+** handle the setting up of the standard streams very differently. And since
+** none of this code can ever execute in the context of the child, we have
+** to perform the chdir in the parent so the child is born into the correct
+** directory (and then switch the parent back again).
+*/
+{
+ int decc$set_child_standard_streams(int,int,int);
+ int n, fd_stdin=0, fd_stdout=1, fd_stderr=2;
+
+ /* Set up any standard streams we are given, assuming defaults */
+ if (attr) {
+ if (attr->stdinFd)
+ fd_stdin = attr->stdinFd->secret->md.osfd;
+ if (attr->stdoutFd)
+ fd_stdout = attr->stdoutFd->secret->md.osfd;
+ if (attr->stderrFd)
+ fd_stderr = attr->stderrFd->secret->md.osfd;
+ }
+
+ /*
+ ** Put a lock around anything that isn't going to be thread-safe.
+ */
+ PR_Lock(_pr_vms_fork_lock);
+
+ /*
+ ** Prepare the child's streams. We always do this in case a previous fork
+ ** has left the stream assignments in some non-standard way.
+ */
+ n = decc$set_child_standard_streams(fd_stdin,fd_stdout,fd_stderr);
+ if (n == -1) {
+ PR_SetError(PR_BAD_DESCRIPTOR_ERROR, errno);
+ PR_DELETE(process);
+ if (newEnvp) {
+ PR_DELETE(newEnvp);
+ }
+ PR_Unlock(_pr_vms_fork_lock);
+ return NULL;
+ }
+
+ /* Switch directory if we have to */
+ if (attr) {
+ if (attr->currentDirectory) {
+ if ( (getcwd(VMScurdir,sizeof(VMScurdir)) == NULL) ||
+ (chdir(attr->currentDirectory) < 0) ) {
+ PR_SetError(PR_DIRECTORY_OPEN_ERROR, errno);
+ PR_DELETE(process);
+ if (newEnvp) {
+ PR_DELETE(newEnvp);
+ }
+ PR_Unlock(_pr_vms_fork_lock);
+ return NULL;
+ }
+ }
+ }
+}
+#endif /* VMS */
#ifdef AIX
process->md.pid = (*pr_wp.forkptr)();
@@ -193,7 +267,9 @@ ForkAndExec(
* the standard I/O file descriptors, and hence corrupt
* the parent process's standard I/O data structures.
*/
-
+#ifdef VMS
+ /* OpenVMS has already handled all this above */
+#else
if (attr) {
if (attr->stdinFd
&& attr->stdinFd->secret->md.osfd != 0) {
@@ -234,6 +310,7 @@ ForkAndExec(
}
}
}
+#endif /* !VMS */
if (childEnvp) {
(void)execve(path, argv, childEnvp);
@@ -242,12 +319,35 @@ ForkAndExec(
(void)execv(path, argv);
}
/* Whoops! It returned. That's a bad sign. */
+#ifdef VMS
+ /*
+ ** On OpenVMS we are still in the context of the parent, and so we
+ ** can (and should!) perform normal error handling.
+ */
+ PR_SetError(PR_UNKNOWN_ERROR, errno);
+ PR_DELETE(process);
+ if (newEnvp) {
+ PR_DELETE(newEnvp);
+ }
+ if (VMScurdir[0] != '\0')
+ chdir(VMScurdir);
+ PR_Unlock(_pr_vms_fork_lock);
+ return NULL;
+#else
_exit(1);
+#endif /* VMS */
}
if (newEnvp) {
PR_DELETE(newEnvp);
}
+#ifdef VMS
+ /* If we switched directories, then remember to switch back */
+ if (VMScurdir[0] != '\0') {
+ chdir(VMScurdir); /* can't do much if it fails */
+ }
+ PR_Unlock(_pr_vms_fork_lock);
+#endif /* VMS */
#if defined(_PR_NATIVE_THREADS)
PR_Lock(pr_wp.ml);
@@ -655,6 +755,10 @@ static PRStatus _MD_InitProcesses()
pr_wp.ml = PR_NewLock();
PR_ASSERT(NULL != pr_wp.ml);
+#if defined(VMS)
+ _pr_vms_fork_lock = PR_NewLock();
+ PR_ASSERT(NULL != _pr_vms_fork_lock);
+#endif
#if defined(_PR_NATIVE_THREADS)
pr_wp.numProcs = 0;
pr_wp.cv = PR_NewCondVar(pr_wp.ml);
diff --git a/pr/src/md/unix/uxrng.c b/pr/src/md/unix/uxrng.c
index 23b88705..305d13af 100644
--- a/pr/src/md/unix/uxrng.c
+++ b/pr/src/md/unix/uxrng.c
@@ -261,7 +261,8 @@ GetHighResClock(void *buf, size_t maxbytes)
{
return 0;
}
-#elif defined(SCO) || defined(UNIXWARE) || defined(BSDI) || defined(NTO) || defined(QNX)
+#elif defined(SCO) || defined(UNIXWARE) || defined(BSDI) || defined(NTO) \
+ || defined(QNX) || defined(RHAPSODY)
#include <sys/times.h>
static size_t
diff --git a/pr/src/md/unix/uxshm.c b/pr/src/md/unix/uxshm.c
index 162ffb46..070f9fba 100644
--- a/pr/src/md/unix/uxshm.c
+++ b/pr/src/md/unix/uxshm.c
@@ -609,7 +609,7 @@ extern PRFileMap * _md_ImportFileMapFromString(
PRInt32 osfd;
PRIntn prot; /* really: a PRFileMapProtect */
PRFileDesc *fd;
- PRFileMap *fm;
+ PRFileMap *fm = NULL; /* default return value */
PRFileInfo64 info;
PR_sscanf( fmstring, "%ld:%d", &osfd, &prot );
diff --git a/pr/src/md/windows/.cvsignore b/pr/src/md/windows/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/md/windows/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/md/windows/Makefile b/pr/src/md/windows/Makefile
deleted file mode 100644
index 0655ba19..00000000
--- a/pr/src/md/windows/Makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-ifeq ($(OS_TARGET), WIN16)
-CSRCS = \
- w16null.c \
- w16thred.c \
- w16proc.c \
- w16fmem.c \
- w16sock.c \
- w16mem.c \
- w16io.c \
- w16gc.c \
- w16error.c \
- w16stdio.c \
- w16callb.c \
- ntinrval.c \
- $(NULL)
-else
-ifeq ($(OS_TARGET), WIN95)
-CSRCS = \
- ntmisc.c \
- ntsec.c \
- ntsem.c \
- ntinrval.c \
- ntgc.c \
- w95thred.c \
- w95io.c \
- w95cv.c \
- w32rng.c \
- w95sock.c \
- win32_errors.c \
- w32ipcsem.c \
- w32poll.c \
- w32shm.c \
- w95dllmain.c \
- $(NULL)
-else
-CSRCS = \
- ntdllmn.c \
- ntmisc.c \
- ntsec.c \
- ntsem.c \
- ntinrval.c \
- ntgc.c \
- ntthread.c \
- ntio.c \
- win32_errors.c \
- w32ipcsem.c \
- w32poll.c \
- w32rng.c \
- w32shm.c \
- $(NULL)
-endif
-endif
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-DEFINES += -D_NSPR_BUILD_
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
diff --git a/pr/src/md/windows/Makefile.in b/pr/src/md/windows/Makefile.in
index 89100b06..cf5eeac9 100644
--- a/pr/src/md/windows/Makefile.in
+++ b/pr/src/md/windows/Makefile.in
@@ -27,7 +27,7 @@ include $(MOD_DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/config.mk
ifdef USE_AUTOCONF
-OS_TARGET=$(MOZ_TARGET)
+OS_TARGET=$(MOZ_WIN32_TARGET)
endif
ifeq ($(OS_TARGET), WIN16)
@@ -49,17 +49,18 @@ else
ifeq ($(OS_TARGET), WIN95)
CSRCS = \
ntmisc.c \
+ ntsec.c \
ntsem.c \
ntinrval.c \
ntgc.c \
w95thred.c \
w95io.c \
w95cv.c \
+ w32rng.c \
w95sock.c \
win32_errors.c \
w32ipcsem.c \
w32poll.c \
- w32rng.c \
w32shm.c \
w95dllmain.c \
$(NULL)
@@ -67,6 +68,7 @@ else
CSRCS = \
ntdllmn.c \
ntmisc.c \
+ ntsec.c \
ntsem.c \
ntinrval.c \
ntgc.c \
@@ -83,7 +85,7 @@ endif
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
DEFINES += -D_NSPR_BUILD_
@@ -91,4 +93,3 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/md/windows/ntinrval.c b/pr/src/md/windows/ntinrval.c
index ba5e1e8e..ea67302d 100644
--- a/pr/src/md/windows/ntinrval.c
+++ b/pr/src/md/windows/ntinrval.c
@@ -72,7 +72,7 @@ _PR_MD_GET_INTERVAL()
#elif defined(WIN16)
return clock(); /* milliseconds since application start */
#else
- return timeGetTime(); /* milliseconds since system start */
+ return GetTickCount(); /* milliseconds since system start */
#endif
}
diff --git a/pr/src/md/windows/ntio.c b/pr/src/md/windows/ntio.c
index 5326be68..fb8cc5ff 100644
--- a/pr/src/md/windows/ntio.c
+++ b/pr/src/md/windows/ntio.c
@@ -744,7 +744,7 @@ void _PR_Unblock_IO_Wait(PRThread *thr)
* this thread will continue to run on the same cpu until the
* I/O is aborted by closing the FD or calling CancelIO
*/
- thr->md.thr_bound_cpu = me->cpu;
+ thr->md.thr_bound_cpu = cpu;
PR_ASSERT(!(thr->flags & _PR_IDLE_THREAD));
_PR_AddThreadToRunQ(me, thr);
@@ -2044,7 +2044,7 @@ _PR_MD_GETPEERNAME(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *len)
PR_SetError(PR_NOT_CONNECTED_ERROR, 0);
return PR_FAILURE;
}
- *len = PR_NETADDR_SIZE(addr);
+ *len = PR_NETADDR_SIZE(&fd->secret->md.peer_addr);
memcpy(addr, &fd->secret->md.peer_addr, *len);
return PR_SUCCESS;
} else {
@@ -3016,7 +3016,10 @@ _PR_MD_GETFILEINFO64(const char *fn, PRFileInfo64 *info)
}
len = GetFullPathName(fn, sizeof(pathbuf), pathbuf,
&filePart);
- PR_ASSERT(0 != len);
+ if (0 == len) {
+ _PR_MD_MAP_OPENDIR_ERROR(GetLastError());
+ return -1;
+ }
if (len > sizeof(pathbuf)) {
PR_SetError(PR_NAME_TOO_LONG_ERROR, 0);
return -1;
diff --git a/pr/src/md/windows/objs.mk b/pr/src/md/windows/objs.mk
index eff0e2b1..3820da67 100644
--- a/pr/src/md/windows/objs.mk
+++ b/pr/src/md/windows/objs.mk
@@ -14,8 +14,9 @@
# Copyright (C) 1999 Christopher Seawood. All Rights Reserved.
#
-ifeq (WINNT,$(MOZ_TARGET))
+ifeq (WINNT,$(MOZ_WIN32_TARGET))
CSRCS = ntmisc.c \
+ ntsec.c \
ntsem.c \
ntinrval.c \
ntgc.c \
@@ -23,10 +24,14 @@ CSRCS = ntmisc.c \
ntthread.c \
ntdllmn.c \
win32_errors.c \
- w32poll.c
+ w32ipcsem.c \
+ w32poll.c \
+ w32rng.c \
+ w32shm.c
else
-ifeq (WIN95,$(MOZ_TARGET))
+ifeq (WIN95,$(MOZ_WIN32_TARGET))
CSRCS = ntmisc.c \
+ ntsec.c \
ntsem.c \
ntinrval.c \
ntgc.c \
@@ -35,10 +40,13 @@ CSRCS = ntmisc.c \
w95cv.c \
w95sock.c \
win32_errors.c \
+ w32ipcsem.c \
w32poll.c \
+ w32rng.c \
+ w32shm.c \
w95dllmain.c
else
-ifeq (WIN16,$(MOZ_TARGET))
+ifeq (WIN16,$(MOZ_WIN32_TARGET))
CSRCS = w16null.c \
w16thred.c \
w16proc.c \
diff --git a/pr/src/md/windows/w95io.c b/pr/src/md/windows/w95io.c
index d80736fe..3832eb4b 100644
--- a/pr/src/md/windows/w95io.c
+++ b/pr/src/md/windows/w95io.c
@@ -773,7 +773,10 @@ _PR_MD_GETFILEINFO64(const char *fn, PRFileInfo64 *info)
}
len = GetFullPathName(fn, sizeof(pathbuf), pathbuf,
&filePart);
- PR_ASSERT(0 != len);
+ if (0 == len) {
+ _PR_MD_MAP_OPENDIR_ERROR(GetLastError());
+ return -1;
+ }
if (len > sizeof(pathbuf)) {
PR_SetError(PR_NAME_TOO_LONG_ERROR, 0);
return -1;
diff --git a/pr/src/memory/.cvsignore b/pr/src/memory/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/memory/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/memory/Makefile b/pr/src/memory/Makefile
deleted file mode 100644
index 25762308..00000000
--- a/pr/src/memory/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-CSRCS = prseg.c prshm.c prshma.c
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-DEFINES += -D_NSPR_BUILD_
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
-
diff --git a/pr/src/memory/Makefile.in b/pr/src/memory/Makefile.in
index 7fa317e3..8ccd22e3 100644
--- a/pr/src/memory/Makefile.in
+++ b/pr/src/memory/Makefile.in
@@ -26,20 +26,15 @@ include $(MOD_DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/config.mk
-ifndef USE_AUTOCONF
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-endif #!USE_AUTOCONF
-
CSRCS = prseg.c prshm.c prshma.c
+ifdef GC_LEAK_DETECTOR
+CSRCS += prgcleak.c
+endif
+
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(dist_includedir)/.. -I$(dist_includedir)/../boehm -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
DEFINES += -D_NSPR_BUILD_
@@ -47,5 +42,4 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/memory/prgcleak.c b/pr/src/memory/prgcleak.c
new file mode 100644
index 00000000..4006ad71
--- /dev/null
+++ b/pr/src/memory/prgcleak.c
@@ -0,0 +1,105 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * The contents of this file are subject to the Netscape Public License
+ * Version 1.1 (the "NPL"); you may not use this file except in
+ * compliance with the NPL. You may obtain a copy of the NPL at
+ * http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the NPL is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
+ * for the specific language governing rights and limitations under the
+ * NPL.
+ *
+ * The Initial Developer of this code under the NPL is Netscape
+ * Communications Corporation. Portions created by Netscape are
+ * Copyright (C) 1999 Netscape Communications Corporation. All Rights
+ * Reserved.
+ *
+ * Contributor(s):
+ * Patrick Beard <beard@netscape.com>
+ */
+
+/*
+ * prgcleak.c
+ */
+
+#ifdef GC_LEAK_DETECTOR
+
+/* for FILE */
+#include <stdio.h>
+
+/* NSPR stuff */
+#include "generic_threads.h"
+#include "primpl.h"
+
+extern FILE *GC_stdout, *GC_stderr;
+
+extern void GC_gcollect(void);
+extern void GC_clear_roots(void);
+
+static PRStatus PR_CALLBACK scanner(PRThread* t, void** baseAddr,
+ PRUword count, void* closure)
+{
+ if (count) {
+ char* begin = (char*)baseAddr;
+ char* end = (char*)(baseAddr + count);
+ GC_mark_range_proc marker = (GC_mark_range_proc) closure;
+ marker(begin, end);
+ }
+ return PR_SUCCESS;
+}
+
+static void mark_all_stacks(GC_mark_range_proc marker)
+{
+ PR_ScanStackPointers(&scanner, (void *)marker);
+}
+
+#if defined(_PR_PTHREADS)
+#define _PR_MD_CURRENT_CPU() 1
+#endif
+
+static void locker(void* mutex)
+{
+ if (_PR_MD_CURRENT_CPU())
+ PR_EnterMonitor(mutex);
+}
+
+static void unlocker(void* mutex)
+{
+ if (_PR_MD_CURRENT_CPU())
+ PR_ExitMonitor(mutex);
+}
+
+static void stopper(void* unused)
+{
+ if (_PR_MD_CURRENT_CPU())
+ PR_SuspendAll();
+}
+
+static void starter(void* unused)
+{
+ if (_PR_MD_CURRENT_CPU())
+ PR_ResumeAll();
+}
+
+void _PR_InitGarbageCollector()
+{
+ void* mutex;
+
+ /* redirect GC's stderr to catch startup leaks. */
+ GC_stderr = fopen("StartupLeaks", "w");
+
+ mutex = PR_NewMonitor();
+ PR_ASSERT(mutex != NULL);
+
+ GC_generic_init_threads(&mark_all_stacks, mutex,
+ &locker, &unlocker,
+ &stopper, &starter);
+}
+
+void _PR_ShutdownGarbageCollector()
+{
+ /* do anything you need to shut down the collector. */
+}
+
+#endif /* GC_LEAK_DETECTOR */
diff --git a/pr/src/misc/.cvsignore b/pr/src/misc/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/misc/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/misc/Makefile b/pr/src/misc/Makefile
deleted file mode 100644
index 842226dd..00000000
--- a/pr/src/misc/Makefile
+++ /dev/null
@@ -1,88 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-CSRCS = \
- pralarm.c \
- pratom.c \
- prcountr.c \
- prdtoa.c \
- prenv.c \
- prerr.c \
- prerror.c \
- prerrortable.c \
- prinit.c \
- prinrval.c \
- pripc.c \
- prlog2.c \
- prlong.c \
- prnetdb.c \
- prolock.c \
- prrng.c \
- prsystem.c \
- prtime.c \
- prthinfo.c \
- prtpool.c \
- prtrace.c \
- $(NULL)
-
-ifndef USE_PTHREADS
-CSRCS += \
- pripcsem.c \
- $(NULL)
-endif
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-DEFINES += -D_NSPR_BUILD_
-
-RELEASE_BINS = compile-et.pl prerr.properties
-
-include $(MOD_DEPTH)/config/rules.mk
-
-# An AIX Optimization bug causes PR_dtoa() to produce wrong result.
-# This suppresses optimization for this single compilation unit.
-ifeq ($(OS_ARCH), AIX)
-$(OBJDIR)/prdtoa.o:
- @$(MAKE_OBJDIR)
- $(CC) -o $@ -c $(filter-out -O, $(CFLAGS)) prdtoa.c
-endif
-
-#
-# Generate prerr.h, prerr.c, and prerr.properties from prerr.et.
-#
-build_prerr:
- perl compile-et.pl prerr.et
-
-export:: $(TARGETS)
-
-install:: export
-
diff --git a/pr/src/misc/Makefile.in b/pr/src/misc/Makefile.in
index 5c0bf1a0..6ad93101 100644
--- a/pr/src/misc/Makefile.in
+++ b/pr/src/misc/Makefile.in
@@ -26,15 +26,6 @@ include $(MOD_DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/config.mk
-ifndef USE_AUTOCONF
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-endif #!USE_AUTOCONF
-
CSRCS = \
pralarm.c \
pratom.c \
@@ -50,11 +41,12 @@ CSRCS = \
prlog2.c \
prlong.c \
prnetdb.c \
- prrng.c \
prolock.c \
+ prrng.c \
prsystem.c \
prtime.c \
prthinfo.c \
+ prtpool.c \
prtrace.c \
$(NULL)
@@ -66,23 +58,21 @@ endif
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
DEFINES += -D_NSPR_BUILD_
-RELEASE_BINS = compile-et.pl prerr.properties
+#RELEASE_BINS = compile-et.pl prerr.properties
include $(topsrcdir)/config/rules.mk
-ifndef USE_AUTOCONF
# An AIX Optimization bug causes PR_dtoa() to produce wrong result.
# This suppresses optimization for this single compilation unit.
ifeq ($(OS_ARCH), AIX)
-$(OBJDIR)/prdtoa.o:
+$(OBJDIR)/prdtoa.o: prdtoa.c
@$(MAKE_OBJDIR)
- $(CC) -o $@ -c $(filter-out -O, $(CFLAGS)) prdtoa.c
+ $(CC) -o $@ -c $(filter-out -O, $(CFLAGS)) $<
endif
-endif #!USE_AUTOCONF
#
# Generate prerr.h, prerr.c, and prerr.properties from prerr.et.
@@ -92,5 +82,4 @@ build_prerr:
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/misc/prnetdb.c b/pr/src/misc/prnetdb.c
index f31374b3..6c538582 100644
--- a/pr/src/misc/prnetdb.c
+++ b/pr/src/misc/prnetdb.c
@@ -863,7 +863,7 @@ PR_IMPLEMENT(PRStatus) PR_GetProtoByNumber(
}
-PR_IMPLEMENT(PRUintn) PR_NetAddrSize(const PRNetAddr* addr)
+PRUintn _PR_NetAddrSize(const PRNetAddr* addr)
{
PRUintn addrsize;
@@ -890,7 +890,7 @@ PR_IMPLEMENT(PRUintn) PR_NetAddrSize(const PRNetAddr* addr)
else addrsize = 0;
return addrsize;
-} /* PR_NetAddrSize */
+} /* _PR_NetAddrSize */
PR_IMPLEMENT(PRIntn) PR_EnumerateHostEnt(
PRIntn enumIndex, const PRHostEnt *hostEnt, PRUint16 port, PRNetAddr *address)
@@ -924,6 +924,7 @@ PR_IMPLEMENT(PRStatus) PR_InitializeNetAddr(
PRStatus rv = PR_SUCCESS;
if (!_pr_initialized) _PR_ImplicitInitialization();
+ if (val != PR_IpAddrNull) memset(addr, 0, sizeof(addr->inet));
addr->inet.family = AF_INET;
addr->inet.port = htons(port);
switch (val)
@@ -949,9 +950,10 @@ PR_IMPLEMENT(PRStatus) PR_SetNetAddr(
PRStatus rv = PR_SUCCESS;
if (!_pr_initialized) _PR_ImplicitInitialization();
- addr->raw.family = af;
if (af == PR_AF_INET6)
{
+ if (val != PR_IpAddrNull) memset(addr, 0, sizeof(addr->ipv6));
+ addr->ipv6.family = af;
addr->ipv6.port = htons(port);
addr->ipv6.flowinfo = 0;
addr->ipv6.scope_id = 0;
@@ -972,6 +974,8 @@ PR_IMPLEMENT(PRStatus) PR_SetNetAddr(
}
else
{
+ if (val != PR_IpAddrNull) memset(addr, 0, sizeof(addr->inet));
+ addr->inet.family = af;
addr->inet.port = htons(port);
switch (val)
{
diff --git a/pr/src/misc/prthinfo.c b/pr/src/misc/prthinfo.c
index 2cfac1b2..a278e0ad 100644
--- a/pr/src/misc/prthinfo.c
+++ b/pr/src/misc/prthinfo.c
@@ -134,24 +134,14 @@ PR_ThreadScanStackPointers(PRThread* t,
if (status != PR_SUCCESS)
return status;
+#ifndef GC_LEAK_DETECTOR
+ /* if thread is not allocated on stack, this is redundant. */
ptd = t->privateData;
for (index = 0; index < t->tpdLength; index++, ptd++) {
status = scanFun(t, (void**)ptd, 1, scanClosure);
if (status != PR_SUCCESS)
return status;
}
-
-#ifdef GC_LEAK_DETECTOR
- /*
- ** if the thread was allocated on its own stack, conservatively
- ** scan the thread object itself to keep all data structures
- ** referenced by the thread visible to the garbage collector.
- */
- if (t->threadAllocatedOnStack) {
- status = scanFun(t, (void**)t, (sizeof(PRThread) + 3) / sizeof(void*), scanClosure);
- if (status != PR_SUCCESS)
- return status;
- }
#endif
return PR_SUCCESS;
diff --git a/pr/src/misc/prtime.c b/pr/src/misc/prtime.c
index b5cbb6cf..9c4a5944 100644
--- a/pr/src/misc/prtime.c
+++ b/pr/src/misc/prtime.c
@@ -1649,7 +1649,7 @@ PR_FormatTime(char *buf, int buflen, const char *fmt, const PRExplodedTime *tm)
* values for these two fields.
*/
-#if defined(SUNOS4) || (__GLIBC__ >= 2)
+#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS)
if (mktime(&a) == -1) {
PR_snprintf(buf, buflen, "can't get timezone");
return 0;
diff --git a/pr/src/prvrsion.c b/pr/src/prvrsion.c
index c694a34e..f029398b 100644
--- a/pr/src/prvrsion.c
+++ b/pr/src/prvrsion.c
@@ -22,7 +22,9 @@
/************************************************************************/
/**************************IDENTITY AND VERSIONING***********************/
/************************************************************************/
+#ifndef XP_MAC
#include "_pr_bld.h"
+#endif
#if !defined(_BUILD_TIME)
#ifdef HAVE_LONG_LONG
#define _BUILD_TIME 0
diff --git a/pr/src/pthreads/.cvsignore b/pr/src/pthreads/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/pthreads/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/pthreads/Makefile b/pr/src/pthreads/Makefile
deleted file mode 100644
index d2700995..00000000
--- a/pr/src/pthreads/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-CSRCS = \
- ptio.c \
- ptsynch.c \
- ptthread.c \
- ptmisc.c \
- $(NULL)
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-DEFINES += -D_NSPR_BUILD_
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
-
diff --git a/pr/src/pthreads/Makefile.in b/pr/src/pthreads/Makefile.in
index f8328e90..4201bad9 100644
--- a/pr/src/pthreads/Makefile.in
+++ b/pr/src/pthreads/Makefile.in
@@ -42,7 +42,7 @@ CSRCS = \
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
DEFINES += -D_NSPR_BUILD_
@@ -50,5 +50,4 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/pthreads/ptio.c b/pr/src/pthreads/ptio.c
index b301ebd5..9dfcffeb 100644
--- a/pr/src/pthreads/ptio.c
+++ b/pr/src/pthreads/ptio.c
@@ -123,7 +123,7 @@ static ssize_t (*pt_aix_sendfile_fptr)() = NULL;
#define _PRSockOptVal_t char *
#elif defined(IRIX) || defined(OSF1) || defined(AIX) || defined(HPUX) \
|| defined(LINUX) || defined(FREEBSD) || defined(BSDI) || defined(VMS) \
- || defined(NTO) || defined(OPENBSD)
+ || defined(NTO) || defined(OPENBSD) || defined(RHAPSODY)
#define _PRSockOptVal_t void *
#else
#error "Cannot determine architecture"
@@ -137,7 +137,7 @@ static ssize_t (*pt_aix_sendfile_fptr)() = NULL;
|| defined(OSF1) || defined(SOLARIS) \
|| defined(HPUX10_30) || defined(HPUX11) || defined(LINUX) \
|| defined(FREEBSD) || defined(NETBSD) || defined(OPENBSD) \
- || defined(BSDI) || defined(VMS) || defined(NTO)
+ || defined(BSDI) || defined(VMS) || defined(NTO) || defined(RHAPSODY)
#define _PRSelectFdSetArg_t fd_set *
#else
#error "Cannot determine architecture"
@@ -2424,7 +2424,8 @@ static PRIOMethods _pr_socketpollfd_methods = {
#if defined(HPUX) || defined(OSF1) || defined(SOLARIS) || defined (IRIX) \
|| defined(AIX) || defined(LINUX) || defined(FREEBSD) || defined(NETBSD) \
- || defined(OPENBSD) || defined(BSDI) || defined(VMS) || defined(NTO)
+ || defined(OPENBSD) || defined(BSDI) || defined(VMS) || defined(NTO) \
+ || defined(RHAPSODY)
#define _PR_FCNTL_FLAGS O_NONBLOCK
#else
#error "Can't determine architecture"
diff --git a/pr/src/pthreads/ptsynch.c b/pr/src/pthreads/ptsynch.c
index b3ff68da..5cdd0fd3 100644
--- a/pr/src/pthreads/ptsynch.c
+++ b/pr/src/pthreads/ptsynch.c
@@ -248,7 +248,7 @@ static PRIntn pt_TimedWait(
/*
- * Notifies just get posted to the to the protecting mutex. The
+ * Notifies just get posted to the protecting mutex. The
* actual notification is done when the lock is released so that
* MP systems don't contend for a lock that they can't have.
*/
@@ -649,6 +649,14 @@ PR_IMPLEMENT(PRSemaphore*) PR_NewSem(PRUintn value)
return NULL;
}
+/*
+ * Define the interprocess named semaphore functions.
+ * There are three implementations:
+ * 1. POSIX semaphore based;
+ * 2. System V semaphore based;
+ * 3. unsupported (fails with PR_NOT_IMPLEMENTED_ERROR).
+ */
+
#ifdef _PR_HAVE_POSIX_SEMAPHORES
#include <fcntl.h>
@@ -750,9 +758,7 @@ PR_IMPLEMENT(PRStatus) PR_DeleteSemaphore(const char *name)
return PR_SUCCESS;
}
-#endif /* _PR_HAVE_POSIX_SEMAPHORES */
-
-#ifdef _PR_HAVE_SYSV_SEMAPHORES
+#elif defined(_PR_HAVE_SYSV_SEMAPHORES)
#include <fcntl.h>
#include <sys/sem.h>
@@ -961,7 +967,43 @@ PR_IMPLEMENT(PRStatus) PR_DeleteSemaphore(const char *name)
return PR_SUCCESS;
}
-#endif /* _PR_HAVE_SYSV_SEMAPHORES */
+#else /* neither POSIX nor System V semaphores are available */
+
+PR_IMPLEMENT(PRSem *) PR_OpenSemaphore(
+ const char *name,
+ PRIntn flags,
+ PRIntn mode,
+ PRUintn value)
+{
+ PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
+ return NULL;
+}
+
+PR_IMPLEMENT(PRStatus) PR_WaitSemaphore(PRSem *sem)
+{
+ PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
+ return PR_FAILURE;
+}
+
+PR_IMPLEMENT(PRStatus) PR_PostSemaphore(PRSem *sem)
+{
+ PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
+ return PR_FAILURE;
+}
+
+PR_IMPLEMENT(PRStatus) PR_CloseSemaphore(PRSem *sem)
+{
+ PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
+ return PR_FAILURE;
+}
+
+PR_IMPLEMENT(PRStatus) PR_DeleteSemaphore(const char *name)
+{
+ PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
+ return PR_FAILURE;
+}
+
+#endif /* end of interprocess named semaphore functions */
/**************************************************************/
/**************************************************************/
diff --git a/pr/src/pthreads/ptthread.c b/pr/src/pthreads/ptthread.c
index 23189c53..68c959b9 100644
--- a/pr/src/pthreads/ptthread.c
+++ b/pr/src/pthreads/ptthread.c
@@ -75,6 +75,42 @@ static PRIntn pt_PriorityMap(PRThreadPriority pri)
}
#endif
+#if defined(GC_LEAK_DETECTOR) && (__GLIBC__ >= 2) && defined(__i386__)
+
+#include <setjmp.h>
+
+typedef struct stack_frame stack_frame;
+
+struct stack_frame {
+ stack_frame* next;
+ void* pc;
+};
+
+static stack_frame* GetStackFrame()
+{
+ jmp_buf jb;
+ stack_frame* currentFrame;
+ setjmp(jb);
+ currentFrame = (stack_frame*)(jb[0].__jmpbuf[JB_BP]);
+ currentFrame = currentFrame->next;
+ return currentFrame;
+}
+
+static void* GetStackTop()
+{
+ stack_frame* frame;
+ frame = GetStackFrame();
+ while (frame != NULL)
+ {
+ ptrdiff_t pc = (ptrdiff_t)frame->pc;
+ if ((pc < 0x08000000) || (pc > 0x7fffffff) || (frame->next < frame))
+ return frame;
+ frame = frame->next;
+ }
+ return NULL;
+}
+#endif /* GC_LEAK_DETECTOR && (__GLIBC__ >= 2) && __i386__ */
+
/*
** Initialize a stack for a native pthread thread
*/
@@ -91,9 +127,14 @@ static void _PR_InitializeStack(PRThreadStack *ts)
ts->stackBottom = ts->allocBase + ts->stackSize;
ts->stackTop = ts->allocBase;
#else
+#ifdef GC_LEAK_DETECTOR
+ ts->stackTop = GetStackTop();
+ ts->stackBottom = ts->stackTop - ts->stackSize;
+#else
ts->stackTop = ts->allocBase;
ts->stackBottom = ts->allocBase - ts->stackSize;
#endif
+#endif
}
}
@@ -297,6 +338,9 @@ static PRThread* _PR_CreateThread(
#endif /* !defined(_PR_DCETHREADS) */
if (0 == stackSize) stackSize = (64 * 1024); /* default == 64K */
+#ifdef _MD_MINIMUM_STACK_SIZE
+ if (stackSize < _MD_MINIMUM_STACK_SIZE) stackSize = _MD_MINIMUM_STACK_SIZE;
+#endif
/*
* Linux doesn't have pthread_attr_setstacksize.
*/
@@ -762,12 +806,28 @@ void _PR_InitThreads(
#endif
#if defined(_PR_DCETHREADS) || defined(_POSIX_THREAD_PRIORITY_SCHEDULING)
+#if defined(FREEBSD)
+ {
+ pthread_attr_t attr;
+ int policy;
+ /* get the min and max priorities of the default policy */
+ pthread_attr_init(&attr);
+ pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
+ pthread_attr_getschedpolicy(&attr, &policy);
+ pt_book.minPrio = sched_get_priority_min(policy);
+ PR_ASSERT(-1 != pt_book.minPrio);
+ pt_book.maxPrio = sched_get_priority_max(policy);
+ PR_ASSERT(-1 != pt_book.maxPrio);
+ pthread_attr_destroy(&attr);
+ }
+#else
/*
** These might be function evaluations
*/
pt_book.minPrio = PT_PRIO_MIN;
pt_book.maxPrio = PT_PRIO_MAX;
#endif
+#endif
PR_ASSERT(NULL == pt_book.ml);
pt_book.ml = PR_NewLock();
@@ -1031,7 +1091,7 @@ PR_IMPLEMENT(PRStatus) PR_EnumerateThreads(PREnumerator func, void *arg)
*/
PRThread* next = thred->next;
- if (thred->state & PT_THREAD_GCABLE)
+ if (_PT_IS_GCABLE_THREAD(thred))
{
#if !defined(_PR_DCETHREADS)
PR_ASSERT((thred == me) || (thred->suspend & PT_THREAD_SUSPENDED));
@@ -1095,7 +1155,7 @@ static void suspend_signal_handler(PRIntn sig)
PRThread *me = PR_CurrentThread();
PR_ASSERT(me != NULL);
- PR_ASSERT(me->state & PT_THREAD_GCABLE);
+ PR_ASSERT(_PT_IS_GCABLE_THREAD(me));
PR_ASSERT((me->suspend & PT_THREAD_SUSPENDED) == 0);
PR_LOG(_pr_gc_lm, PR_LOG_ALWAYS,
@@ -1286,7 +1346,7 @@ PR_IMPLEMENT(void) PR_SuspendAll()
#endif
while (thred != NULL)
{
- if ((thred != me) && (thred->state & PT_THREAD_GCABLE))
+ if ((thred != me) && _PT_IS_GCABLE_THREAD(thred))
PR_SuspendSet(thred);
thred = thred->next;
}
@@ -1295,7 +1355,7 @@ PR_IMPLEMENT(void) PR_SuspendAll()
thred = pt_book.first;
while (thred != NULL)
{
- if ((thred != me) && (thred->state & PT_THREAD_GCABLE))
+ if ((thred != me) && _PT_IS_GCABLE_THREAD(thred))
PR_SuspendTest(thred);
thred = thred->next;
}
@@ -1328,7 +1388,7 @@ PR_IMPLEMENT(void) PR_ResumeAll()
while (thred != NULL)
{
- if ((thred != me) && (thred->state & PT_THREAD_GCABLE))
+ if ((thred != me) && _PT_IS_GCABLE_THREAD(thred))
PR_ResumeSet(thred);
thred = thred->next;
}
@@ -1336,7 +1396,7 @@ PR_IMPLEMENT(void) PR_ResumeAll()
thred = pt_book.first;
while (thred != NULL)
{
- if ((thred != me) && (thred->state & PT_THREAD_GCABLE))
+ if ((thred != me) && _PT_IS_GCABLE_THREAD(thred))
PR_ResumeTest(thred);
thred = thred->next;
}
diff --git a/pr/src/threads/.cvsignore b/pr/src/threads/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/threads/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/threads/Makefile b/pr/src/threads/Makefile
deleted file mode 100644
index 0294ca57..00000000
--- a/pr/src/threads/Makefile
+++ /dev/null
@@ -1,77 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-ifdef USE_PTHREADS
- DIRS =
-else
-ifdef USE_BTHREADS
- DIRS =
-else
- DIRS = combined
-endif
-endif
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-ifdef USE_PTHREADS
-CSRCS = \
- prcmon.c \
- prrwlock.c \
- prtpd.c \
- $(NULL)
-else
-ifdef USE_BTHREADS
-CSRCS = \
- prcmon.c \
- prrwlock.c \
- prtpd.c \
- $(NULL)
-else
-CSRCS = \
- prcmon.c \
- prdump.c \
- prmon.c \
- prsem.c \
- prrwlock.c \
- prcthr.c \
- prtpd.c \
- $(NULL)
-endif
-endif
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-DEFINES += -D_NSPR_BUILD_
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
diff --git a/pr/src/threads/Makefile.in b/pr/src/threads/Makefile.in
index 8e091510..47778a88 100644
--- a/pr/src/threads/Makefile.in
+++ b/pr/src/threads/Makefile.in
@@ -36,15 +36,6 @@ else
endif
endif
-ifndef USE_AUTOCONF
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-endif
-
ifdef USE_PTHREADS
CSRCS = \
prcmon.c \
@@ -73,7 +64,7 @@ endif
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
DEFINES += -D_NSPR_BUILD_
@@ -81,4 +72,3 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/threads/combined/.cvsignore b/pr/src/threads/combined/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/src/threads/combined/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/src/threads/combined/Makefile b/pr/src/threads/combined/Makefile
deleted file mode 100644
index f45fdecb..00000000
--- a/pr/src/threads/combined/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-ifdef USE_PTHREADS
-CSRCS = \
- $(NULL)
-else
-CSRCS = \
- prucpu.c \
- prucv.c \
- prulock.c \
- pruthr.c \
- prustack.c \
- $(NULL)
-endif
-
-TARGETS = $(OBJS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-DEFINES += -D_NSPR_BUILD_
-
-include $(MOD_DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
-
-install:: export
diff --git a/pr/src/threads/combined/Makefile.in b/pr/src/threads/combined/Makefile.in
index ecaca4bf..9b455443 100644
--- a/pr/src/threads/combined/Makefile.in
+++ b/pr/src/threads/combined/Makefile.in
@@ -50,7 +50,7 @@ endif
TARGETS = $(OBJS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
DEFINES += -D_NSPR_BUILD_
@@ -58,4 +58,3 @@ include $(topsrcdir)/config/rules.mk
export:: $(TARGETS)
-install:: export
diff --git a/pr/src/threads/combined/pruthr.c b/pr/src/threads/combined/pruthr.c
index 0025bcbb..0bada3d1 100644
--- a/pr/src/threads/combined/pruthr.c
+++ b/pr/src/threads/combined/pruthr.c
@@ -1248,6 +1248,14 @@ PR_IMPLEMENT(PRThread*) _PR_CreateThread(PRThreadType type,
top = (char*)((PRUptrdiff)top & ~0x3f);
}
#endif
+#if defined(GC_LEAK_DETECTOR)
+ /*
+ * sorry, it is not safe to allocate the thread on the stack,
+ * because we assign to this object before the GC can learn
+ * about this thread. we'll just leak thread objects instead.
+ */
+ thread = PR_NEW(PRThread);
+#endif
stack->thr = thread;
memset(thread, 0, sizeof(PRThread));
thread->threadAllocatedOnStack = 1;
diff --git a/pr/tests/.cvsignore b/pr/tests/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/tests/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/tests/Makefile b/pr/tests/Makefile
deleted file mode 100644
index d1851723..00000000
--- a/pr/tests/Makefile
+++ /dev/null
@@ -1,571 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-ifeq ($(OS_TARGET), WIN16)
-OS_CFLAGS = $(OS_EXE_CFLAGS)
-W16STDIO = $(MOD_DEPTH)/pr/src/md/windows/$(OBJDIR)/w16stdio.$(OBJ_SUFFIX)
-endif
-
-ifeq ($(OS_TARGET),WIN16)
-DIRS = dll w16gui
-else
-DIRS = dll
-endif
-
-ifeq ($(OS_TARGET),OS2)
-OS_CFLAGS = $(OS_EXE_CFLAGS)
-endif
-
-CSRCS = \
- accept.c \
- acceptread.c \
- addrstr.c \
- affinity.c \
- alarm.c \
- anonfm.c \
- atomic.c \
- attach.c \
- bigfile.c \
- bigfile2.c \
- bigfile3.c \
- cleanup.c \
- cltsrv.c \
- concur.c \
- cvar.c \
- cvar2.c \
- dceemu.c \
- dlltest.c \
- dtoa.c \
- errcodes.c \
- exit.c \
- fdcach.c \
- fileio.c \
- foreign.c \
- forktest.c \
- fsync.c \
- gethost.c \
- getproto.c \
- i2l.c \
- initclk.c \
- inrval.c \
- instrumt.c \
- intrupt.c \
- io_timeout.c \
- ioconthr.c \
- ipv6.c \
- join.c \
- joinkk.c \
- joinku.c \
- joinuk.c \
- joinuu.c \
- layer.c \
- lazyinit.c \
- lltest.c \
- lock.c \
- lockfile.c \
- logger.c \
- makedir.c \
- mbcs.c \
- multiacc.c \
- multiwait.c \
- many_cv.c \
- nameshm1.c \
- nbconn.c \
- nblayer.c \
- nonblock.c \
- ntioto.c \
- ntoh.c \
- op_2long.c \
- op_excl.c \
- op_filnf.c \
- op_filok.c \
- op_noacc.c \
- op_nofil.c \
- openfile.c \
- parent.c \
- perf.c \
- pipeping.c \
- pipepong.c \
- pipeself.c \
- poll_er.c \
- poll_nm.c \
- poll_to.c \
- pollable.c \
- prftest.c \
- prftest1.c \
- prftest2.c \
- priotest.c \
- provider.c \
- prpoll.c \
- ranfile.c \
- randseed.c \
- rwlocktest.c \
- sel_spd.c \
- selct_er.c \
- selct_nm.c \
- selct_to.c \
- select2.c \
- sem.c \
- sema.c \
- semaerr.c \
- semaerr1.c \
- semaping.c \
- semapong.c \
- sendzlf.c \
- server_test.c \
- servr_kk.c \
- servr_ku.c \
- servr_uk.c \
- servr_uu.c \
- short_thread.c \
- sigpipe.c \
- socket.c \
- sockopt.c \
- sockping.c \
- sockpong.c \
- sprintf.c \
- sproc_ch.c \
- sproc_p.c \
- stack.c \
- stdio.c \
- str2addr.c \
- strod.c \
- suspend.c \
- switch.c \
- system.c \
- testbit.c \
- testfile.c \
- thrpool_server.c \
- thrpool_client.c \
- threads.c \
- thruput.c \
- timemac.c \
- timetest.c \
- tmoacc.c \
- tmocon.c \
- tpd.c \
- vercheck.c \
- version.c \
- udpsrv.c \
- writev.c \
- xnotify.c \
- y2k.c \
- y2ktmo.c \
- zerolen.c \
- $(NULL)
-
-ifeq ($(OS_TARGET),OS2)
-CSRCS += \
- sleep.c \
- stat.c \
- yield.c \
- $(NULL)
-endif
-
-ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
-PROG_SUFFIX = .exe
-else
-PROG_SUFFIX =
-endif
-
-PROGS = $(addprefix $(OBJDIR)/, $(CSRCS:.c=$(PROG_SUFFIX)))
-
-TARGETS = $(PROGS)
-
-INCLUDES = -I$(DIST)/include -I$(MOD_DEPTH)/pr/include -I$(MOD_DEPTH)/pr/include/private
-
-# Setting the variables LDOPTS and LIBPR. We first initialize
-# them to the default values, then adjust them for some platforms.
-LDOPTS = -L$(DIST)/lib
-LIBPR = -lnspr$(MOD_VERSION)
-LIBPLC = -lplc$(MOD_VERSION)
-
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET), WIN16)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPLC= $(DIST)/lib/plc$(MOD_VERSION).lib
-else
- LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
- ifeq ($(OS_TARGET), WIN95)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPLC= $(DIST)/lib/plc$(MOD_VERSION).$(LIB_SUFFIX)
- else
- LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPLC= $(DIST)/lib/libplc$(MOD_VERSION).$(LIB_SUFFIX)
- endif
- ifdef PROFILE
- LDOPTS += -PROFILE -MAP
- endif # profile
-endif
-endif
-
-ifeq ($(OS_ARCH),OS2)
-ifeq ($(MOZ_OS2_TOOLS),VACPP)
- LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPLC = $(DIST)/lib/plc$(MOD_VERSION).lib
-else
-ifeq ($(MOZ_OS2_EMX_OBJECTFORMAT),OMF)
- LDOPTS = -Zlinker /PM:VIO
-endif
-endif
-endif
-
-ifneq ($(OS_ARCH), WINNT)
-# Use an absolute pathname as the runtime library path (for the -R
-# or -rpath linker option or the LD_RUN_PATH environment variable).
-ifeq (,$(patsubst /%,,$(DIST)))
-# $(DIST) is already an absolute pathname.
-ABSOLUTE_LIB_DIR = $(DIST)/lib
-else
-# $(DIST) is a relative pathname: prepend the current directory.
-PWD = $(shell pwd)
-ABSOLUTE_LIB_DIR = $(PWD)/$(DIST)/lib
-endif
-endif
-
-ifeq ($(OS_ARCH), IRIX)
- ifeq ($(USE_CPLUS), 1)
- CC = CC
- endif
- LDOPTS += -rpath $(ABSOLUTE_LIB_DIR) -rdata_shared
-# For 6.x machines, include this flag
- ifeq ($(basename $(OS_RELEASE)),6)
- ifeq ($(USE_N32),1)
- LDOPTS += -n32
- else
- LDOPTS += -32
- endif
-
- ifeq ($(USE_PTHREADS), 1)
- ifeq ($(OS_RELEASE), 6.2)
- LDOPTS += -Wl,-woff,85
- endif
- endif
- endif
-endif
-
-ifeq ($(OS_ARCH), OSF1)
- ifeq ($(USE_CPLUS), 1)
- CC = cxx
- endif
-# I haven't figured out how to pass -rpath to cc on OSF1 V3.2, so
-# we do static linking.
- ifeq (,$(filter-out V2.0 V3.2,$(OS_RELEASE)))
- LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).a
- LIBPLC = $(DIST)/lib/libplc$(MOD_VERSION).a
- EXTRA_LIBS = -lc_r
- else
- LDOPTS += -rpath $(ABSOLUTE_LIB_DIR)
- endif
-endif
-
-ifeq ($(OS_ARCH), HP-UX)
- LDOPTS += -z -Wl,+s,+b,$(ABSOLUTE_LIB_DIR)
- ifeq ($(USE_64),1)
- LDOPTS += +DA2.0W
- EXTRA_LIBS = -lpthread
- endif
-endif
-
-# AIX
-ifeq ($(OS_ARCH),AIX)
- LDOPTS += -blibpath:$(ABSOLUTE_LIB_DIR):/usr/lib:/lib
- ifeq ($(OS_ARCH)$(OS_RELEASE),AIX4.1)
- LIBPR = -lnspr$(MOD_VERSION)_shr
- LIBPLC = -lplc$(MOD_VERSION)_shr
- else
- LDOPTS += -brtl
- EXTRA_LIBS = -ldl
- endif
-endif
-
-# Solaris
-ifeq ($(OS_ARCH), SunOS)
- ifneq ($(OS_RELEASE), 4.1.3_U1)
- ifdef NS_USE_GCC
- LDOPTS += -Xlinker -R -Xlinker $(ABSOLUTE_LIB_DIR)
- else
- ifeq ($(USE_CPLUS), 1)
- CC = CC
- endif
- LDOPTS += -R $(ABSOLUTE_LIB_DIR)
- endif
- endif
-
- ifneq ($(LOCAL_THREADS_ONLY),1)
-# SunOS 5.4 and 5.5 need to link with -lthread or -lpthread,
-# even though we already linked with these system libraries
-# when we built libnspr.so.
- ifeq ($(OS_RELEASE), 5.4)
- EXTRA_LIBS = -lthread
- endif
-
- ifeq ($(OS_RELEASE), 5.5)
- ifdef USE_PTHREADS
- EXTRA_LIBS = -lpthread
- else
- EXTRA_LIBS = -lthread
- endif
- endif
- endif # LOCAL_THREADS_ONLY
-endif # SunOS
-
-ifeq ($(OS_ARCH), NEC)
- EXTRA_LIBS = $(OS_LIBS)
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
- export LD_RUN_PATH = $(ABSOLUTE_LIB_DIR)
-endif
-
-ifeq ($(OS_ARCH), NCR)
-# NCR needs to link against -lsocket -lnsl -ldl (and -lc, which is
-# linked implicitly by $(CC)). Note that we did not link with these
-# system libraries when we built libnspr.so.
- EXTRA_LIBS = -lsocket -lnsl -ldl
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
- export LD_RUN_PATH = $(ABSOLUTE_LIB_DIR)
-endif
-
-ifeq ($(OS_ARCH), NEXTSTEP)
-# balazs.pataki@sztaki.hu: linkage is done in a different pass in the `tests'
-# modeul, so we have to pass the `-posix' flag by "hand" to `ld'
-LDOPTS += -posix
-endif
-
-ifeq ($(OS_ARCH), NEWS-OS)
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-#export LD_RUN_PATH = $(ABSOLUTE_LIB_DIR)
- LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).a
- LIBPLC = $(DIST)/lib/libplc$(MOD_VERSION).a
- EXTRA_LIBS = -lsocket -lnsl -lgen -lresolv
-endif
-
-ifeq ($(OS_ARCH), Linux)
- ifeq ($(OS_RELEASE), 1.2)
- EXTRA_LIBS = -ldl
- else
- LDOPTS += -Xlinker -rpath $(ABSOLUTE_LIB_DIR)
- ifeq ($(USE_PTHREADS),1)
- EXTRA_LIBS = -lpthread
- endif
- endif
-endif
-
-ifeq ($(OS_ARCH), SCOOS)
-# SCO Unix needs to link against -lsocket again even though we
-# already linked with these system libraries when we built libnspr.so.
-EXTRA_LIBS = -lsocket
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-export LD_RUN_PATH = $(ABSOLUTE_LIB_DIR)
-endif
-
-ifeq ($(OS_ARCH),SINIX)
-EXTRA_LIBS = -lsocket -lnsl -lresolv -ldl
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-export LD_RUN_PATH = $(ABSOLUTE_LIB_DIR)
-endif
-
-ifeq ($(OS_ARCH), UNIXWARE)
-export LD_RUN_PATH = $(ABSOLUTE_LIB_DIR)
-endif
-
-ifeq ($(OS_ARCH),FreeBSD)
-ifeq ($(USE_PTHREADS),1)
-LDOPTS += -pthread
-endif
-LDOPTS += -Xlinker -R $(ABSOLUTE_LIB_DIR)
-endif
-
-ifeq ($(OS_ARCH),OpenBSD)
-ifeq ($(USE_PTHREADS),1)
-LDOPTS += -pthread
-endif
-endif
-
-ifeq ($(OS_ARCH),BSD_OS)
-ifneq ($(OS_RELEASE),1.1)
-EXTRA_LIBS = -ldl
-endif
-endif
-
-ifeq ($(USE_PTHREADS),1)
-LIBPTHREAD = -lpthread
-ifeq ($(OS_ARCH),AIX)
-LIBPTHREAD = -lpthreads
-endif
-ifeq (,$(filter-out FreeBSD OpenBSD BSD_OS NTO,$(OS_ARCH)))
-LIBPTHREAD =
-endif
-ifeq ($(OS_ARCH)$(basename $(OS_RELEASE)),HP-UXB.10)
-LIBPTHREAD = -ldce
-endif
-endif
-
-#####################################################
-#
-# The rules
-#
-#####################################################
-
-include $(MOD_DEPTH)/config/rules.mk
-
-AIX_PRE_4_2 = 0
-ifeq ($(OS_ARCH),AIX)
-ifeq ($(OS_RELEASE),4.1)
-ifneq ($(USE_PTHREADS), 1)
-#AIX_PRE_4_2 = 1
-endif
-endif
-endif
-
-ifeq ($(AIX_PRE_4_2),1)
-
-# AIX releases prior to 4.2 need a special two-step linking hack
-# in order to both override the system select() and be able to
-# get at the original system select().
-#
-# We use a pattern rule in ns/nspr20/config/rules.mk to generate
-# the .$(OBJ_SUFFIX) file from the .c source file, then do the
-# two-step linking hack below.
-
-$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
- rm -f $@ $(AIX_TMP)
- $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(DIST)/lib/libnspr$(MOD_VERSION).a
- $(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
- rm -f $(AIX_TMP)
-
-else
-
-# All platforms that are not AIX pre-4.2.
-
-$(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET),WIN16)
- echo system windows >w16link
- echo name $@ >>w16link
- echo option map >>w16link
-# echo option CASEEXACT >>w16link
- echo option stack=16K >>w16link
- echo debug $(DEBUGTYPE) all >>w16link
- echo file >>w16link
- echo $< , >>w16link
- echo $(W16STDIO) >>w16link
- echo library >>w16link
- echo $(LIBPR), >>w16link
- echo $(LIBPLC), >>w16link
- echo winsock.lib >>w16link
- wlink @w16link.
-else
- link $(LDOPTS) $(EXTRA_LDOPTS) $< $(LIBPLC) $(LIBPR) $(EXTRA_LIBS) wsock32.lib -out:$@
-endif
-else
-ifeq ($(OS_ARCH),OS2)
- $(LINK) $(EXEFLAGS) $(LDOPTS) $< $(LIBPLC) $(LIBPR) $(OS_LIBS) $(EXTRA_LIBS)
-else
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) $(EXTRA_LIBS) -o $@
-endif
-endif
-endif
-
-export:: $(TARGETS)
-install:: export
-clean::
- rm -f $(TARGETS)
-
-# The following tests call BSD socket functions, so they need to link
-# with -lsocket on some platforms.
-ifeq ($(OS_ARCH),SunOS)
-ifneq ($(OS_RELEASE),4.1.3_U1)
-ifeq ($(USE_IPV6),1)
-$(OBJDIR)/gethost: $(OBJDIR)/gethost.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) -lsocket $(EXTRA_LIBS) -o $@
-endif
-$(OBJDIR)/prpoll: $(OBJDIR)/prpoll.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) -lsocket $(EXTRA_LIBS) -o $@
-endif
-endif
-
-ifeq ($(USE_PTHREADS), 1)
-$(OBJDIR)/attach: $(OBJDIR)/attach.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
-$(OBJDIR)/foreign: $(OBJDIR)/foreign.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
-$(OBJDIR)/provider: $(OBJDIR)/provider.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
-$(OBJDIR)/socket: $(OBJDIR)/socket.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
-$(OBJDIR)/testfile: $(OBJDIR)/testfile.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
-endif
-
-#
-# Run the test programs with no arguments
-#
-# Test output goes to the file pointed to by the environment variable
-# NSPR_TEST_LOGFILE, if set, else to /dev/null
-#
-ECHO = echo
-PROGRAMS = $(notdir $(PROGS))
-ifdef NSPR_TEST_LOGFILE
-LOGFILE = $(NSPR_TEST_LOGFILE)
-else
-ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
-LOGFILE = nul
-else
-LOGFILE = /dev/null
-endif
-endif
-
-ifeq ($(OS_TARGET),Linux)
-ECHO = /bin/echo
-endif
-
-ALWAYS:
-
-runtests:: $(PROGS) ALWAYS
- @$(ECHO) "\nNSPR Test Results - $(OBJDIR)\n"
- @$(ECHO) "BEGIN\t\t\t`date`"
- @$(ECHO) "NSPR_TEST_LOGFILE\t$(LOGFILE)\n"
- @$(ECHO) "Test\t\t\tResult\n"
- @cd $(OBJDIR); for i in $(PROGRAMS); do \
- $(ECHO) "$$i\c"; \
- ./$$i >> $(LOGFILE) 2>&1 ; \
- if [ 0 = $$? ] ; then \
- $(ECHO) "\t\t\tPassed"; \
- else \
- $(ECHO) "\t\t\tFAILED"; \
- fi; \
- done
- @$(ECHO) "\nEND\t\t`date`\n"
diff --git a/pr/tests/Makefile.in b/pr/tests/Makefile.in
index 30dad6d7..80e3738a 100644
--- a/pr/tests/Makefile.in
+++ b/pr/tests/Makefile.in
@@ -26,16 +26,7 @@ include $(MOD_DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/config.mk
-ifeq ($(OS_TARGET), WIN16)
-OS_CFLAGS = $(OS_EXE_CFLAGS)
-W16STDIO = $(MOD_DEPTH)/pr/src/md/windows/$(OBJDIR)/w16stdio.$(OBJ_SUFFIX)
-endif
-
-ifeq ($(OS_TARGET),WIN16)
-DIRS = dll w16gui
-else
DIRS = dll
-endif
ifeq ($(OS_TARGET),OS2)
OS_CFLAGS = $(OS_EXE_CFLAGS)
@@ -93,11 +84,11 @@ CSRCS = \
multiacc.c \
multiwait.c \
many_cv.c \
- nameshm1.c \
+ nameshm1.c \
nbconn.c \
nblayer.c \
nonblock.c \
- ntioto.c \
+ ntioto.c \
ntoh.c \
op_2long.c \
op_excl.c \
@@ -122,7 +113,7 @@ CSRCS = \
provider.c \
prpoll.c \
ranfile.c \
- randseed.c \
+ randseed.c \
rwlocktest.c \
sel_spd.c \
selct_er.c \
@@ -130,12 +121,12 @@ CSRCS = \
selct_to.c \
select2.c \
sem.c \
- sema.c \
- semaerr.c \
- semaerr1.c \
- semaping.c \
- semapong.c \
- sendzlf.c \
+ sema.c \
+ semaerr.c \
+ semaerr1.c \
+ semaping.c \
+ semapong.c \
+ sendzlf.c \
server_test.c \
servr_kk.c \
servr_ku.c \
@@ -159,6 +150,8 @@ CSRCS = \
system.c \
testbit.c \
testfile.c \
+ thrpool_server.c \
+ thrpool_client.c \
threads.c \
thruput.c \
timemac.c \
@@ -172,7 +165,7 @@ CSRCS = \
writev.c \
xnotify.c \
y2k.c \
- y2ktmo.c \
+ y2ktmo.c \
zerolen.c \
$(NULL)
@@ -184,7 +177,7 @@ CSRCS += \
$(NULL)
endif
-ifeq ($(OS_ARCH), WINNT)
+ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
PROG_SUFFIX = .exe
else
PROG_SUFFIX =
@@ -194,42 +187,22 @@ PROGS = $(addprefix $(OBJDIR)/, $(CSRCS:.c=$(PROG_SUFFIX)))
TARGETS = $(PROGS)
-INCLUDES = -I$(DIST)/include -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
-
-# Setting the variables LDOPTS and LIBPR. We first initialize
-# them to the default values, then adjust them for some platforms.
-LDOPTS = -L$(DIST)/lib
-LIBPR = -lnspr$(MOD_VERSION)
-LIBPLC = -lplc$(MOD_VERSION)
-
-ifndef USE_AUTOCONF
+INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET), WIN16)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPLC= $(DIST)/lib/plc$(MOD_VERSION).lib
-else
-ifeq ($(OS_TARGET), OS2)
-ifdef XP_OS2_VACPP
- LDOPTS =
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
- LIBPLC= $(DIST)/lib/plc$(MOD_VERSION).lib
-else
- LDOPTS = -Zlinker /PM:VIO
-endif
-else
LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
- ifeq ($(OS_TARGET), WIN95)
- LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPLC= $(DIST)/lib/plc$(MOD_VERSION).$(LIB_SUFFIX)
- else
- LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).$(LIB_SUFFIX)
- LIBPLC= $(DIST)/lib/libplc$(MOD_VERSION).$(LIB_SUFFIX)
- endif
ifdef PROFILE
LDOPTS += -PROFILE -MAP
endif # profile
endif
+
+ifeq ($(OS_ARCH),OS2)
+ifeq ($(MOZ_OS2_TOOLS),VACPP)
+ LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO
+else
+ifeq ($(MOZ_OS2_EMX_OBJECTFORMAT),OMF)
+ LDOPTS = -Zlinker /PM:VIO
+endif
endif
endif
@@ -238,11 +211,11 @@ ifneq ($(OS_ARCH), WINNT)
# or -rpath linker option or the LD_RUN_PATH environment variable).
ifeq (,$(patsubst /%,,$(DIST)))
# $(DIST) is already an absolute pathname.
-ABSOLUTE_LIB_DIR = $(DIST)/lib
+ABSOLUTE_LIB_DIR = $(dist_libdir)
else
# $(DIST) is a relative pathname: prepend the current directory.
PWD = $(shell pwd)
-ABSOLUTE_LIB_DIR = $(PWD)/$(DIST)/lib
+ABSOLUTE_LIB_DIR = $(PWD)/$(dist_libdir)
endif
endif
@@ -274,8 +247,8 @@ ifeq ($(OS_ARCH), OSF1)
# I haven't figured out how to pass -rpath to cc on OSF1 V3.2, so
# we do static linking.
ifeq (,$(filter-out V2.0 V3.2,$(OS_RELEASE)))
- LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).a
- LIBPLC = $(DIST)/lib/libplc$(MOD_VERSION).a
+ LIBNSPR = $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).a
+ LIBPLC = $(dist_libdir)/libplc$(MOD_MAJOR_VERSION).a
EXTRA_LIBS = -lc_r
else
LDOPTS += -rpath $(ABSOLUTE_LIB_DIR)
@@ -285,8 +258,8 @@ endif
ifeq ($(OS_ARCH), HP-UX)
LDOPTS += -z -Wl,+s,+b,$(ABSOLUTE_LIB_DIR)
ifeq ($(USE_64),1)
- LDOPTS += +DA2.0W
- EXTRA_LIBS = -lpthread
+ LDOPTS += +DA2.0W
+ EXTRA_LIBS = -lpthread
endif
endif
@@ -294,8 +267,8 @@ endif
ifeq ($(OS_ARCH),AIX)
LDOPTS += -blibpath:$(ABSOLUTE_LIB_DIR):/usr/lib:/lib
ifeq ($(OS_ARCH)$(OS_RELEASE),AIX4.1)
- LIBPR = -lnspr$(MOD_VERSION)_shr
- LIBPLC = -lplc$(MOD_VERSION)_shr
+ LIBNSPR = -lnspr$(MOD_MAJOR_VERSION)_shr
+ LIBPLC = -lplc$(MOD_MAJOR_VERSION)_shr
else
LDOPTS += -brtl
EXTRA_LIBS = -ldl
@@ -363,8 +336,8 @@ ifeq ($(OS_ARCH), NEWS-OS)
# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
# option for ld on other platforms.
#export LD_RUN_PATH = $(ABSOLUTE_LIB_DIR)
- LIBPR = $(DIST)/lib/libnspr$(MOD_VERSION).a
- LIBPLC = $(DIST)/lib/libplc$(MOD_VERSION).a
+ LIBNSPR = $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).a
+ LIBPLC = $(dist_libdir)/libplc$(MOD_MAJOR_VERSION).a
EXTRA_LIBS = -lsocket -lnsl -lgen -lresolv
endif
@@ -401,6 +374,13 @@ ifeq ($(OS_ARCH), UNIXWARE)
export LD_RUN_PATH = $(ABSOLUTE_LIB_DIR)
endif
+ifeq ($(OS_ARCH),FreeBSD)
+ifeq ($(USE_PTHREADS),1)
+LDOPTS += -pthread
+endif
+LDOPTS += -Xlinker -R $(ABSOLUTE_LIB_DIR)
+endif
+
ifeq ($(OS_ARCH),OpenBSD)
ifeq ($(USE_PTHREADS),1)
LDOPTS += -pthread
@@ -414,6 +394,12 @@ endif
LDOPTS += -Xlinker -R $(ABSOLUTE_LIB_DIR)
endif
+ifeq ($(OS_ARCH),OpenBSD)
+ifeq ($(USE_PTHREADS),1)
+LDOPTS += -pthread
+endif
+endif
+
ifeq ($(OS_ARCH),BSD_OS)
ifneq ($(OS_RELEASE),1.1)
EXTRA_LIBS = -ldl
@@ -425,7 +411,7 @@ LIBPTHREAD = -lpthread
ifeq ($(OS_ARCH),AIX)
LIBPTHREAD = -lpthreads
endif
-ifeq (,$(filter-out FreeBSD OpenBSD BSD_OS NTO,$(OS_ARCH)))
+ifeq (,$(filter-out FreeBSD OpenBSD BSD_OS NTO Rhapsody,$(OS_ARCH)))
LIBPTHREAD =
endif
ifeq ($(OS_ARCH)$(basename $(OS_RELEASE)),HP-UXB.10)
@@ -433,7 +419,6 @@ LIBPTHREAD = -ldce
endif
endif
-endif # !USE_AUTOCONF
#####################################################
#
@@ -443,11 +428,6 @@ endif # !USE_AUTOCONF
include $(topsrcdir)/config/rules.mk
-ifdef USE_AUTOCONF
-$(OBJDIR)/%$(PROG_SUFFIX): %.c
- $(CC) $< -o $@ $(CFLAGS) $(LDOPTS) $(LIBPLC) $(LIBPR) $(OS_LIBS)
-
-else
AIX_PRE_4_2 = 0
ifeq ($(OS_ARCH),AIX)
ifeq ($(OS_RELEASE),4.1)
@@ -470,7 +450,7 @@ ifeq ($(AIX_PRE_4_2),1)
$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
@$(MAKE_OBJDIR)
rm -f $@ $(AIX_TMP)
- $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(DIST)/lib/libnspr$(MOD_VERSION).a
+ $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).a
$(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
rm -f $(AIX_TMP)
@@ -481,66 +461,46 @@ else
$(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
@$(MAKE_OBJDIR)
ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET),WIN16)
- echo system windows >w16link
- echo name $@ >>w16link
- echo option map >>w16link
-# echo option CASEEXACT >>w16link
- echo option stack=16K >>w16link
- echo debug $(DEBUGTYPE) all >>w16link
- echo file >>w16link
- echo $< , >>w16link
- echo $(W16STDIO) >>w16link
- echo library >>w16link
- echo $(LIBPR), >>w16link
- echo $(LIBPLC), >>w16link
- echo winsock.lib >>w16link
- wlink @w16link.
+ link $(LDOPTS) $(EXTRA_LDOPTS) $< $(LIBPLC) $(LIBNSPR) $(EXTRA_LIBS) wsock32.lib -out:$@
else
-ifeq ($(OS_TARGET),OS2)
- $(LINK) $(EXEFLAGS) $(LDOPTS) $< $(LIBPLC) $(LIBPR) $(OS_LIBS) $(EXTRA_LIBS)
+ifeq ($(OS_ARCH),OS2)
+ $(LINK) $(EXEFLAGS) $(LDOPTS) $< $(LIBPLC) $(LIBNSPR) $(OS_LIBS) $(EXTRA_LIBS)
else
- link $(LDOPTS) $(EXTRA_LDOPTS) $< $(LIBPLC) $(LIBPR) $(EXTRA_LIBS) wsock32.lib -out:$@
-endif
-endif
-else
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) $(EXTRA_LIBS) -o $@
-endif
-
-endif
-
-endif # !USE_AUTOCONF
+ $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(EXTRA_LIBS) -o $@
+endif # OS/2
+endif # WINNT
+endif # AIX_PRE_4_2
export:: $(TARGETS)
-install:: export
clean::
rm -f $(TARGETS)
-ifndef USE_AUTOCONF
-# The prpoll test calls BSD socket functions, so it needs to link
+# The following tests call BSD socket functions, so they need to link
# with -lsocket on some platforms.
ifeq ($(OS_ARCH),SunOS)
ifneq ($(OS_RELEASE),4.1.3_U1)
+ifeq ($(USE_IPV6),1)
+$(OBJDIR)/gethost: $(OBJDIR)/gethost.o
+ $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) -lsocket $(EXTRA_LIBS) -o $@
+endif
$(OBJDIR)/prpoll: $(OBJDIR)/prpoll.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) -lsocket $(EXTRA_LIBS) -o $@
+ $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) -lsocket $(EXTRA_LIBS) -o $@
endif
endif
ifeq ($(USE_PTHREADS), 1)
$(OBJDIR)/attach: $(OBJDIR)/attach.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
+ $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
$(OBJDIR)/foreign: $(OBJDIR)/foreign.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
+ $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
$(OBJDIR)/provider: $(OBJDIR)/provider.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
+ $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
$(OBJDIR)/socket: $(OBJDIR)/socket.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
+ $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
$(OBJDIR)/testfile: $(OBJDIR)/testfile.o
- $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
+ $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@
endif
-endif # !USE_AUTOCONF
-
#
# Run the test programs with no arguments
#
@@ -552,7 +512,7 @@ PROGRAMS = $(notdir $(PROGS))
ifdef NSPR_TEST_LOGFILE
LOGFILE = $(NSPR_TEST_LOGFILE)
else
-ifeq ($(OS_ARCH), WINNT)
+ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
LOGFILE = nul
else
LOGFILE = /dev/null
diff --git a/pr/tests/attach.c b/pr/tests/attach.c
index 4b890063..980fd6d4 100644
--- a/pr/tests/attach.c
+++ b/pr/tests/attach.c
@@ -36,15 +36,6 @@
** 12-June-97 Revert to return code 0 and 1.
***********************************************************************/
-#ifdef XP_BEOS
-#include <stdio.h>
-int main()
-{
- printf( "This test currently does not run on BeOS\n" );
- return 0;
-}
-#else
-
/***********************************************************************
** Includes
***********************************************************************/
@@ -74,6 +65,8 @@ int main()
#define INCL_ERRORS
#include <os2.h>
#include <process.h>
+#elif defined(XP_BEOS)
+#include <kernel/OS.h>
#endif
#define DEFAULT_COUNT 1000
@@ -125,6 +118,8 @@ static void Measure(void (*func)(void), const char *msg)
static unsigned __stdcall threadStartFunc(void *arg)
#elif defined(IRIX) && !defined(_PR_PTHREADS)
static void threadStartFunc(void *arg)
+#elif defined(XP_BEOS)
+static int32 threadStartFunc(void *arg)
#else
static void * threadStartFunc(void *arg)
#endif
@@ -165,6 +160,10 @@ int main(int argc, char **argv)
#elif defined(OS2)
int rv;
TID threadID;
+#elif defined(XP_BEOS)
+ thread_id threadID;
+ int32 threadRV;
+ status_t waitRV;
#endif
/* The command line argument: -d is used to determine if the test is being run
@@ -328,6 +327,28 @@ int main(int argc, char **argv)
goto exit_now;
}
+#elif defined(XP_BEOS)
+
+ threadID = spawn_thread(threadStartFunc, NULL, B_NORMAL_PRIORITY, NULL);
+ if (threadID <= B_ERROR) {
+ fprintf(stderr, "thread creation failed: error code %08lx\n", threadID);
+ failed_already = 1;
+ goto exit_now;
+ }
+ if (resume_thread(threadID) != B_OK) {
+ fprintf(stderr, "failed starting thread: error code %08lx\n", threadID);
+ failed_already = 1;
+ goto exit_now;
+ }
+
+ waitRV = wait_for_thread(threadID, &threadRV);
+ if (debug_mode)
+ PR_ASSERT(waitRV == B_OK);
+ else if (waitRV != B_OK) {
+ failed_already = 1;
+ goto exit_now;
+ }
+
#else
if (!debug_mode)
failed_already=1;
@@ -344,5 +365,3 @@ exit_now:
else
return 0;
}
-
-#endif /* XP_BEOS */
diff --git a/pr/tests/dll/.cvsignore b/pr/tests/dll/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/tests/dll/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/tests/dll/Makefile b/pr/tests/dll/Makefile
deleted file mode 100644
index 66acab4a..00000000
--- a/pr/tests/dll/Makefile
+++ /dev/null
@@ -1,96 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-# Disable optimization of the nspr on SunOS4.1.3
-ifeq ($(OS_ARCH),SunOS)
-ifeq ($(OS_RELEASE),4.1.3_U1)
-OPTIMIZER =
-endif
-endif
-
-CSRCS = mygetval.c mysetval.c
-
-INCLUDES = -I$(DIST)/include
-
-OBJS = $(OBJDIR)/mygetval.$(OBJ_SUFFIX) \
- $(OBJDIR)/mysetval.$(OBJ_SUFFIX)
-
-ifeq ($(OS_TARGET), WIN16)
-W16OBJS = $(subst $(space),$(comma)$(space),$(OBJS))
-endif
-
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET), WIN16)
-# do nothing
-else
-DLLBASE=/BASE:0x30000000
-RES=$(OBJDIR)/my.res
-RESNAME=../../../pr/src/nspr.rc
-endif
-endif
-
-ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
-IMPORT_LIBRARY = $(OBJDIR)/my.$(LIB_SUFFIX)
-SHARED_LIBRARY = $(OBJDIR)/my.dll
-ifeq ($(OS_ARCH), OS2)
-LIBRARY = $(OBJDIR)/my_s.lib
-# XXX $(LIBRARY) probably doesn't need to be added to TARGETS.
-TARGETS = $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY)
-else
-TARGETS = $(SHARED_LIBRARY) $(IMPORT_LIBRARY)
-endif
-else
-ifdef MKSHLIB
-SHARED_LIBRARY = $(OBJDIR)/libmy.$(DLL_SUFFIX)
-endif
-TARGETS = $(SHARED_LIBRARY)
-endif
-
-#
-# To create a loadable module on Rhapsody, we must override
-# -dynamiclib with -bundle.
-#
-ifeq ($(OS_ARCH),Rhapsody)
-DSO_LDOPTS = -bundle
-endif
-
-include $(MOD_DEPTH)/config/rules.mk
-
-ifeq ($(OS_TARGET), WIN16)
-# Note: The Win16 target: my.dll requires these macros
-# to be overridden to build the test .dll
-# default values in win16...mk are for release targets.
-#
-OS_DLL_OPTION = NOCASEEXACT
-OS_LIB_FLAGS = -irn
-endif
-
-ifdef SHARED_LIBRARY
-export:: $(TARGETS)
- $(NSINSTALL) $(TARGETS) ../$(OBJDIR)/dll
-
-install:: export
-
-clean::
- rm -rf $(TARGETS)
-endif
diff --git a/pr/tests/dll/Makefile.in b/pr/tests/dll/Makefile.in
index 3165224f..d90c411c 100644
--- a/pr/tests/dll/Makefile.in
+++ b/pr/tests/dll/Makefile.in
@@ -33,7 +33,9 @@ OPTIMIZER =
endif
endif
-INCLUDES = -I$(DIST)/include
+CSRCS = mygetval.c mysetval.c
+
+INCLUDES = -I$(dist_includedir)
OBJS = $(OBJDIR)/mygetval.$(OBJ_SUFFIX) \
$(OBJDIR)/mysetval.$(OBJ_SUFFIX)
@@ -43,7 +45,7 @@ W16OBJS = $(subst $(space),$(comma)$(space),$(OBJS))
endif
ifeq ($(OS_ARCH), WINNT)
-ifeq (,$(filter-out WIN16 OS2,$(OS_TARGET)))
+ifeq ($(OS_TARGET), WIN16)
# do nothing
else
DLLBASE=/BASE:0x30000000
@@ -52,10 +54,10 @@ RESNAME=../../../pr/src/nspr.rc
endif
endif
-ifeq ($(OS_ARCH), WINNT)
-IMPORT_LIBRARY = $(OBJDIR)/my.lib
+ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
+IMPORT_LIBRARY = $(OBJDIR)/my.$(LIB_SUFFIX)
SHARED_LIBRARY = $(OBJDIR)/my.dll
-ifeq ($(OS_TARGET), OS2)
+ifeq ($(OS_ARCH), OS2)
LIBRARY = $(OBJDIR)/my_s.lib
# XXX $(LIBRARY) probably doesn't need to be added to TARGETS.
TARGETS = $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY)
@@ -92,7 +94,6 @@ ifdef SHARED_LIBRARY
export:: $(TARGETS)
$(NSINSTALL) $(TARGETS) ../$(OBJDIR)/dll
-install:: export
clean::
rm -rf $(TARGETS)
diff --git a/pr/tests/ipv6.c b/pr/tests/ipv6.c
index 4029fedd..5914cbda 100644
--- a/pr/tests/ipv6.c
+++ b/pr/tests/ipv6.c
@@ -16,15 +16,6 @@
* Reserved.
*/
-#ifdef XP_BEOS
-#include <stdio.h>
-int main()
-{
- printf( "BeOS does not support IPv6\n" );
- return 0;
-}
-#else
-
#include "prio.h"
#include "prenv.h"
#include "prmem.h"
@@ -45,6 +36,10 @@ int main()
#define HOST_BUFFER 1024
#define PROTO_BUFFER 1500
+#define NETADDR_SIZE(addr) \
+ (PR_AF_INET == (addr)->raw.family ? \
+ sizeof((addr)->inet) : sizeof((addr)->ipv6))
+
static PRFileDesc *err = NULL;
static void Help(void)
@@ -59,7 +54,7 @@ static void DumpAddr(const PRNetAddr* address, const char *msg)
{
PRUint32 *word = (PRUint32*)address;
PRUint32 addr_len = sizeof(PRNetAddr);
- PR_fprintf(err, "%s[%d]\t", msg, PR_NETADDR_SIZE(address));
+ PR_fprintf(err, "%s[%d]\t", msg, NETADDR_SIZE(address));
while (addr_len > 0)
{
PR_fprintf(err, " %08x", *word++);
@@ -73,7 +68,6 @@ static PRStatus PrintAddress(const PRNetAddr* address)
PRNetAddr translation;
char buffer[ADDR_BUFFER];
PRStatus rv = PR_NetAddrToString(address, buffer, sizeof(buffer));
- memset(&translation, 0, sizeof(PRNetAddr));
if (PR_FAILURE == rv) PL_FPrintError(err, "PR_NetAddrToString");
else
{
@@ -83,7 +77,7 @@ static PRStatus PrintAddress(const PRNetAddr* address)
if (PR_FAILURE == rv) PL_FPrintError(err, "PR_StringToNetAddr");
else
{
- PRSize addr_len = PR_NETADDR_SIZE(address);
+ PRSize addr_len = NETADDR_SIZE(address);
if (0 != memcmp(address, &translation, addr_len))
{
PR_fprintf(err, "Address translations do not match\n");
@@ -102,7 +96,6 @@ PRIntn main(PRIntn argc, char **argv)
PLOptStatus os;
PRHostEnt host;
PRProtoEnt proto;
- PRBool ipv6 = PR_FALSE;
const char *name = NULL;
PRBool failed = PR_FALSE, version = PR_FALSE;
PLOptState *opt = PL_CreateOptState(argc, argv, "Vh");
@@ -130,12 +123,10 @@ PRIntn main(PRIntn argc, char **argv)
if (version)
{
-#if defined(XP_UNIX) || defined(XP_OS2)
-#define NSPR_LIB "nspr21"
-#elif defined(WIN32)
-#define NSPR_LIB "libnspr21"
+#if defined(WINNT)
+#define NSPR_LIB "libnspr4"
#else
-#error "Architecture not supported"
+#define NSPR_LIB "nspr4"
#endif
const PRVersionDescription *version_info;
char *nspr_path = PR_GetEnv("LD_LIBRARY_PATH");
@@ -236,5 +227,3 @@ PRIntn main(PRIntn argc, char **argv)
return (failed) ? 1 : 0;
}
-
-#endif /* XP_BEOS */
diff --git a/pr/tests/tpd.c b/pr/tests/tpd.c
index 62166937..42180949 100644
--- a/pr/tests/tpd.c
+++ b/pr/tests/tpd.c
@@ -109,7 +109,6 @@ static void PR_CALLBACK Thread(void *null)
}
PrintProgress(__LINE__);
-#if !defined(DEBUG)
did = should = PR_FALSE;
for (keys = 4; keys < 8; ++keys)
{
@@ -117,7 +116,6 @@ static void PR_CALLBACK Thread(void *null)
MY_ASSERT(PR_FAILURE == rv);
}
PrintProgress(__LINE__);
-#endif
did = PR_FALSE; should = PR_TRUE;
for (keys = 0; keys < 4; ++keys)
@@ -214,7 +212,8 @@ static PRIntn PR_CALLBACK Tpd(PRIntn argc, char **argv)
}
PrintProgress(__LINE__);
-#if !defined(DEBUG)
+ for (keys = 4; keys < 8; ++keys)
+ key[keys] = 4096; /* set to invalid value */
did = should = PR_FALSE;
for (keys = 4; keys < 8; ++keys)
{
@@ -222,7 +221,6 @@ static PRIntn PR_CALLBACK Tpd(PRIntn argc, char **argv)
MY_ASSERT(PR_FAILURE == rv);
}
PrintProgress(__LINE__);
-#endif
did = PR_FALSE; should = PR_TRUE;
for (keys = 0; keys < 4; ++keys)
diff --git a/pr/tests/w16gui/.cvsignore b/pr/tests/w16gui/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/pr/tests/w16gui/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/pr/tests/w16gui/Makefile b/pr/tests/w16gui/Makefile
deleted file mode 100644
index 97b38223..00000000
--- a/pr/tests/w16gui/Makefile
+++ /dev/null
@@ -1,75 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-
-
-MOD_DEPTH = ../../..
-
-include $(MOD_DEPTH)/config/config.mk
-
-W16STDIO = $(MOD_DEPTH)/pr/src/md/windows/$(OBJDIR)/w16stdio.$(OBJ_SUFFIX)
-
-CSRCS = poppad.c \
- popfile.c \
- popfont.c \
- popfind.c \
- popprnt0.c
-
-
-INCLUDES = -I$(DIST)/include
-LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
-LIBPLDS = $(DIST)/lib/plds$(MOD_VERSION).lib
-TARGETS = $(OBJDIR)/poppad.exe
-OS_CFLAGS = $(OS_EXE_CFLAGS)
-
-include $(MOD_DEPTH)/config/rules.mk
-
-
-ifeq ($(OS_TARGET),WIN16)
-$(OBJDIR)/poppad.exe: $(OBJS)
- @$(MAKE_OBJDIR)
- echo system windows >w16link
- echo name $@ >>w16link
- echo option map >>w16link
- echo option stack=16K >>w16link
- echo debug $(DEBUGTYPE) all >>w16link
- echo file >>w16link
- echo $(OBJDIR)\\poppad.$(OBJ_SUFFIX), >>w16link
- echo $(OBJDIR)\\popfile.$(OBJ_SUFFIX), >>w16link
- echo $(OBJDIR)\\popfont.$(OBJ_SUFFIX), >>w16link
- echo $(OBJDIR)\\popfind.$(OBJ_SUFFIX), >>w16link
- echo $(OBJDIR)\\popprnt0.$(OBJ_SUFFIX), >>w16link
- echo $(W16STDIO) >>w16link
- echo library $(LIBPR) >>w16link
- echo library $(LIBPLDS) >>w16link
- echo library clibl, commdlg >>w16link
- echo library winsock.lib >>w16link
- wlink @w16link.
- wrc -bt=windows poppad.rc $(OBJDIR)\\poppad.exe
-else
-$(OBJDIR)/poppad.exe: $(OBJS)
- link $(LDOPTS) $< $(LIBPLC) $(LIBPR) wsock32.lib -out:$@
-endif
-
-export:: $(TARGETS)
-
-install:: export
-
-clean::
- rm -rf $(TARGETS)
diff --git a/pr/tests/w16gui/Makefile.in b/pr/tests/w16gui/Makefile.in
index babc0fb1..05c2e57b 100644
--- a/pr/tests/w16gui/Makefile.in
+++ b/pr/tests/w16gui/Makefile.in
@@ -37,9 +37,9 @@ CSRCS = poppad.c \
popprnt0.c
-INCLUDES = -I$(DIST)/include
-LIBPR = $(DIST)/lib/nspr$(MOD_VERSION).lib
-LIBPLDS = $(DIST)/lib/plds$(MOD_VERSION).lib
+INCLUDES = -I$(dist_includedir)
+LIBPR = $(dist_libdir)/nspr$(MOD_MAJOR_VERSION).lib
+LIBPLDS = $(dist_libdir)/plds$(MOD_MAJOR_VERSION).lib
TARGETS = $(OBJDIR)/poppad.exe
OS_CFLAGS = $(OS_EXE_CFLAGS)
@@ -74,7 +74,6 @@ endif
export:: $(TARGETS)
-install:: export
clean::
rm -rf $(TARGETS)
diff --git a/tools/.cvsignore b/tools/.cvsignore
new file mode 100644
index 00000000..f3c7a7c5
--- /dev/null
+++ b/tools/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/tools/Makefile b/tools/Makefile
deleted file mode 100644
index 6effac67..00000000
--- a/tools/Makefile
+++ /dev/null
@@ -1,225 +0,0 @@
-#
-# The contents of this file are subject to the Netscape Public License
-# Version 1.1 (the "NPL"); you may not use this file except in
-# compliance with the NPL. You may obtain a copy of the NPL at
-# http://www.mozilla.org/NPL/
-#
-# Software distributed under the NPL is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
-# for the specific language governing rights and limitations under the
-# NPL.
-#
-# The Initial Developer of this code under the NPL is Netscape
-# Communications Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All Rights
-# Reserved.
-#
-
-#! gmake
-
-MOD_DEPTH = ..
-
-include $(MOD_DEPTH)/config/config.mk
-
-ifeq ($(OS_TARGET), WIN16)
-OS_CFLAGS = $(OS_EXE_CFLAGS)
-endif
-
-
-DIRS =
-
-CSRCS = \
- httpget.c \
- tail.c \
- $(NULL)
-
-ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
-PROG_SUFFIX = .exe
-else
-PROG_SUFFIX =
-endif
-
-PROGS = $(addprefix $(OBJDIR)/, $(CSRCS:.c=$(PROG_SUFFIX)))
-
-TARGETS = $(PROGS)
-
-INCLUDES = -I$(DIST)/include
-
-NSPR_VERSION = 3
-
-# Setting the variables LDOPTS and LIBPR. We first initialize
-# them to the default values, then adjust them for some platforms.
-LDOPTS = -L$(DIST)/lib
-LIBPR = -lnspr$(NSPR_VERSION)
-LIBPLC = -lplc$(NSPR_VERSION)
-
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET), WIN16)
- LIBPR = $(DIST)/lib/nspr$(NSPR_VERSION).lib
- LIBPLC= $(DIST)/lib/plc$(NSPR_VERSION).lib
-else
-LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
-LIBPR = $(DIST)/lib/libnspr$(NSPR_VERSION).$(LIB_SUFFIX)
-LIBPLC= $(DIST)/lib/libplc$(NSPR_VERSION).$(LIB_SUFFIX)
-endif
-endif
-
-ifeq ($(OS_ARCH),OS2)
- ifeq ($(MOZ_OS2_TOOLS),VACPP)
- LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO
- LIBPR = $(DIST)/lib/nspr$(NSPR_VERSION).lib
- LIBPLC= $(DIST)/lib/plc$(NSPR_VERSION).lib
- else
- LDOPTS += -Zomf -Zlinker /PM:VIO
- endif
-endif
-
-ifneq ($(OS_ARCH), WINNT)
-PWD = $(shell pwd)
-endif
-
-ifeq ($(OS_ARCH), IRIX)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), OSF1)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib -lpthread
-endif
-
-ifeq ($(OS_ARCH), HP-UX)
-LDOPTS += -Wl,+s,+b,$(PWD)/$(DIST)/lib
-endif
-
-# AIX
-ifeq ($(OS_ARCH),AIX)
-LDOPTS += -blibpath:$(PWD)/$(DIST)/lib:/usr/lib:/lib
-LIBPR = -lnspr$(NSPR_VERSION)_shr
-LIBPLC = -lplc$(NSPR_VERSION)_shr
-endif
-
-# Solaris
-ifeq ($(OS_ARCH), SunOS)
-ifneq ($(OS_RELEASE), 4.1.3_U1)
-ifdef NS_USE_GCC
-LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(DIST)/lib
-else
-LDOPTS += -R $(PWD)/$(DIST)/lib
-endif
-endif
-
-# SunOS 5.4 and 5.5 need to link with -lthread or -lpthread,
-# even though we already linked with these system libraries
-# when we built libnspr.so.
-ifeq ($(OS_RELEASE), 5.4)
-EXTRA_LIBS = -lthread
-endif
-
-ifeq ($(OS_RELEASE), 5.5)
-ifdef USE_PTHREADS
-EXTRA_LIBS = -lpthread
-else
-EXTRA_LIBS = -lthread
-endif
-endif
-endif # SunOS
-
-ifeq ($(OS_ARCH), NCR)
-# XXX: We see some strange problems when we link with libnspr.so.
-# So for now we use static libraries on NCR. The shared library
-# stuff below is commented out.
-LIBPR = $(DIST)/lib/libnspr$(NSPR_VERSION).a
-LIBPLC = $(DIST)/lib/libplc$(NSPR_VERSION).a
-EXTRA_LIBS = -lsocket -lnsl -ldl
-
-# NCR needs to link against -lsocket -lnsl (and -lc, which is linked
-# implicitly by $(CC)) again even though we already linked with these
-# system libraries when we built libnspr.so.
-#EXTRA_LIBS = -lsocket -lnsl
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-#export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-ifeq ($(OS_ARCH), SCOOS)
-# SCO Unix needs to link against -lsocket again even though we
-# already linked with these system libraries when we built libnspr.so.
-EXTRA_LIBS = -lsocket
-# This hardcodes in the executable programs the directory to find
-# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
-# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
-endif
-
-#####################################################
-#
-# The rules
-#
-#####################################################
-
-include $(MOD_DEPTH)/config/rules.mk
-
-AIX_PRE_4_2 = 0
-ifeq ($(OS_ARCH),AIX)
-ifneq ($(OS_RELEASE),4.2)
-ifneq ($(USE_PTHREADS), 1)
-#AIX_PRE_4_2 = 1
-endif
-endif
-endif
-
-ifeq ($(AIX_PRE_4_2),1)
-
-# AIX releases prior to 4.2 need a special two-step linking hack
-# in order to both override the system select() and be able to
-# get at the original system select().
-#
-# We use a pattern rule in ns/nspr20/config/rules.mk to generate
-# the .$(OBJ_SUFFIX) file from the .c source file, then do the
-# two-step linking hack below.
-
-$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
- rm -f $@ $(AIX_TMP)
- $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(DIST)/lib/libnspr$(NSPR_VERSION).a
- $(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
- rm -f $(AIX_TMP)
-
-else
-
-# All platforms that are not AIX pre-4.2.
-
-$(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
- @$(MAKE_OBJDIR)
-ifeq ($(OS_ARCH), WINNT)
-ifeq ($(OS_TARGET),WIN16)
- echo system windows >w16link
- echo option map >>w16link
- echo option stack=10K >>w16link
- echo option heapsize=32K >>w16link
- echo debug $(DEBUGTYPE) all >>w16link
- echo name $@ >>w16link
- echo file >>w16link
- echo $< >>w16link
- echo library >>w16link
- echo $(LIBPR), >>w16link
- echo $(LIBPLC), >>w16link
- echo winsock.lib >>w16link
- wlink @w16link.
-else
- link $(LDOPTS) $< $(LIBPR) $(LIBPLC) wsock32.lib -out:$@
-endif
-else
-ifeq ($(OS_ARCH),OS2)
- $(LINK) $(LDOPTS) $< $(LIBPR) $(LIBPLC) $(OS_LIBS) $(EXTRA_LIBS) -o $@
-else
- $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPR) $(LIBPLC) $(EXTRA_LIBS) -o $@
-endif
-endif
-endif
-
-export:: $(TARGETS)
-install:: export
-clean::
- rm -f $(TARGETS)
-
diff --git a/tools/Makefile.in b/tools/Makefile.in
index bff44750..0b872d7a 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -38,7 +38,7 @@ CSRCS = \
tail.c \
$(NULL)
-ifeq ($(OS_ARCH), WINNT)
+ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
PROG_SUFFIX = .exe
else
PROG_SUFFIX =
@@ -48,25 +48,35 @@ PROGS = $(addprefix $(OBJDIR)/, $(CSRCS:.c=$(PROG_SUFFIX)))
TARGETS = $(PROGS)
-INCLUDES = -I$(DIST)/include
+INCLUDES = -I$(dist_includedir)
NSPR_VERSION = 3
# Setting the variables LDOPTS and LIBPR. We first initialize
# them to the default values, then adjust them for some platforms.
-LDOPTS = -L$(DIST)/lib
+LDOPTS = -L$(dist_libdir)
LIBPR = -lnspr$(NSPR_VERSION)
LIBPLC = -lplc$(NSPR_VERSION)
ifeq ($(OS_ARCH), WINNT)
ifeq ($(OS_TARGET), WIN16)
- LIBPR = $(DIST)/lib/nspr$(NSPR_VERSION).lib
- LIBPLC= $(DIST)/lib/plc$(NSPR_VERSION).lib
+ LIBPR = $(dist_libdir)/nspr$(NSPR_VERSION).lib
+ LIBPLC= $(dist_libdir)/plc$(NSPR_VERSION).lib
else
LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO
-LIBPR = $(DIST)/lib/libnspr$(NSPR_VERSION).$(LIB_SUFFIX)
-LIBPLC= $(DIST)/lib/libplc$(NSPR_VERSION).$(LIB_SUFFIX)
+LIBPR = $(dist_libdir)/libnspr$(NSPR_VERSION).$(LIB_SUFFIX)
+LIBPLC= $(dist_libdir)/libplc$(NSPR_VERSION).$(LIB_SUFFIX)
+endif
endif
+
+ifeq ($(OS_ARCH),OS2)
+ ifeq ($(MOZ_OS2_TOOLS),VACPP)
+ LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO
+ LIBPR = $(dist_libdir)/nspr$(NSPR_VERSION).lib
+ LIBPLC= $(dist_libdir)/plc$(NSPR_VERSION).lib
+ else
+ LDOPTS += -Zomf -Zlinker /PM:VIO
+ endif
endif
ifneq ($(OS_ARCH), WINNT)
@@ -74,20 +84,20 @@ PWD = $(shell pwd)
endif
ifeq ($(OS_ARCH), IRIX)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib
+LDOPTS += -rpath $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), OSF1)
-LDOPTS += -rpath $(PWD)/$(DIST)/lib -lpthread
+LDOPTS += -rpath $(PWD)/$(dist_libdir) -lpthread
endif
ifeq ($(OS_ARCH), HP-UX)
-LDOPTS += -Wl,+s,+b,$(PWD)/$(DIST)/lib
+LDOPTS += -Wl,+s,+b,$(PWD)/$(dist_libdir)
endif
# AIX
ifeq ($(OS_ARCH),AIX)
-LDOPTS += -blibpath:$(PWD)/$(DIST)/lib:/usr/lib:/lib
+LDOPTS += -blibpath:$(PWD)/$(dist_libdir):/usr/lib:/lib
LIBPR = -lnspr$(NSPR_VERSION)_shr
LIBPLC = -lplc$(NSPR_VERSION)_shr
endif
@@ -96,9 +106,9 @@ endif
ifeq ($(OS_ARCH), SunOS)
ifneq ($(OS_RELEASE), 4.1.3_U1)
ifdef NS_USE_GCC
-LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(DIST)/lib
+LDOPTS += -Xlinker -R -Xlinker $(PWD)/$(dist_libdir)
else
-LDOPTS += -R $(PWD)/$(DIST)/lib
+LDOPTS += -R $(PWD)/$(dist_libdir)
endif
endif
@@ -122,8 +132,8 @@ ifeq ($(OS_ARCH), NCR)
# XXX: We see some strange problems when we link with libnspr.so.
# So for now we use static libraries on NCR. The shared library
# stuff below is commented out.
-LIBPR = $(DIST)/lib/libnspr$(NSPR_VERSION).a
-LIBPLC = $(DIST)/lib/libplc$(NSPR_VERSION).a
+LIBPR = $(dist_libdir)/libnspr$(NSPR_VERSION).a
+LIBPLC = $(dist_libdir)/libplc$(NSPR_VERSION).a
EXTRA_LIBS = -lsocket -lnsl -ldl
# NCR needs to link against -lsocket -lnsl (and -lc, which is linked
@@ -133,7 +143,7 @@ EXTRA_LIBS = -lsocket -lnsl -ldl
# This hardcodes in the executable programs the directory to find
# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
# option for ld on other platforms.
-#export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+#export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
ifeq ($(OS_ARCH), SCOOS)
@@ -143,7 +153,7 @@ EXTRA_LIBS = -lsocket
# This hardcodes in the executable programs the directory to find
# libnspr.so etc. at program startup. Equivalent to the -R or -rpath
# option for ld on other platforms.
-export LD_RUN_PATH = $(PWD)/$(DIST)/lib
+export LD_RUN_PATH = $(PWD)/$(dist_libdir)
endif
#####################################################
@@ -176,7 +186,7 @@ ifeq ($(AIX_PRE_4_2),1)
$(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX)
@$(MAKE_OBJDIR)
rm -f $@ $(AIX_TMP)
- $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(DIST)/lib/libnspr$(NSPR_VERSION).a
+ $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(dist_libdir)/libnspr$(NSPR_VERSION).a
$(CC) -o $@ $(AIX_TMP) $(AIX_WRAP)
rm -f $(AIX_TMP)
@@ -205,13 +215,15 @@ else
link $(LDOPTS) $< $(LIBPR) $(LIBPLC) wsock32.lib -out:$@
endif
else
+ifeq ($(OS_ARCH),OS2)
+ $(LINK) $(LDOPTS) $< $(LIBPR) $(LIBPLC) $(OS_LIBS) $(EXTRA_LIBS) -o $@
+else
$(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPR) $(LIBPLC) $(EXTRA_LIBS) -o $@
endif
-
+endif
endif
export:: $(TARGETS)
-install:: export
clean::
rm -f $(TARGETS)