mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
2122f732c0
Add support for using gcc's visibility pragma to treat all function and method declarations as "hidden" unless declared otherwise. Create wrappers for system headers that cause them to be treated as default-visibility declarations. This gives a substantial code size and performance win on compilers that support it. r=darin sr=dbaron. Modified Files: configure configure.in config/Makefile.in config/autoconf.mk.in config/config.mk pr/include/prtypes.h pr/src/md/unix/uxproces.c pr/tests/sel_spd.c Added Files: config/gcc_hidden.h config/make-system-wrappers.pl config/system-headers
2618 lines
70 KiB
Plaintext
2618 lines
70 KiB
Plaintext
dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
dnl
|
|
dnl The contents of this file are subject to the Mozilla Public
|
|
dnl License Version 1.1 (the "License"); you may not use this file
|
|
dnl except in compliance with the License. You may obtain a copy of
|
|
dnl the License at http://www.mozilla.org/MPL/
|
|
dnl
|
|
dnl Software distributed under the License is distributed on an "AS
|
|
dnl IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
dnl implied. See the License for the specific language governing
|
|
dnl rights and limitations under the License.
|
|
dnl
|
|
dnl The Original Code is the Netscape Portable Runtime (NSPR).
|
|
dnl
|
|
dnl The Initial Developer of the Original Code is Netscape
|
|
dnl Communications Corporation. Portions created by Netscape are
|
|
dnl Copyright (C) 1998o-2000 Netscape Communications Corporation. All
|
|
dnl Rights Reserved.
|
|
dnl
|
|
dnl Contributor(s):
|
|
dnl Christopher Seawood <cls@seawood.org>
|
|
dnl
|
|
dnl Alternatively, the contents of this file may be used under the
|
|
dnl terms of the GNU General Public License Version 2 or later (the
|
|
dnl "GPL"), in which case the provisions of the GPL are applicable
|
|
dnl instead of those above. If you wish to allow use of your
|
|
dnl version of this file only under the terms of the GPL and not to
|
|
dnl allow others to use your version of this file under the MPL,
|
|
dnl indicate your decision by deleting the provisions above and
|
|
dnl replace them with the notice and other provisions required by
|
|
dnl the GPL. If you do not delete the provisions above, a recipient
|
|
dnl may use your version of this file under either the MPL or the
|
|
dnl GPL.
|
|
dnl
|
|
|
|
AC_PREREQ(2.12)
|
|
AC_INIT(config/libc_r.h)
|
|
|
|
AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
|
|
AC_CANONICAL_SYSTEM
|
|
|
|
dnl ========================================================
|
|
dnl = Defaults
|
|
dnl ========================================================
|
|
MOD_MAJOR_VERSION=4
|
|
MOD_MINOR_VERSION=6
|
|
MOD_PATCH_VERSION=0
|
|
NSPR_MODNAME=nspr20
|
|
_HAVE_PTHREADS=
|
|
USE_PTHREADS=
|
|
USE_USER_PTHREADS=
|
|
USE_NSPR_THREADS=
|
|
USE_N32=
|
|
USE_64=
|
|
USE_CPLUS=
|
|
USE_IPV6=
|
|
USE_MDUPDATE=
|
|
MACOS_DEPLOYMENT_TARGET=
|
|
_OPTIMIZE_FLAGS=-O
|
|
_DEBUG_FLAGS=-g
|
|
MOZ_DEBUG=1
|
|
MOZ_OPTIMIZE=
|
|
OBJDIR=.
|
|
OBJDIR_NAME=.
|
|
OBJDIR_SUFFIX=OBJ
|
|
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)'
|
|
CYGWIN_WRAPPER=
|
|
|
|
dnl Link in libraries necessary to resolve all symbols for shared libs
|
|
RESOLVE_LINK_SYMBOLS=
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Dont change the following lines. Doing so breaks:
|
|
dnl =
|
|
dnl = CFLAGS="-foo" ./configure
|
|
dnl =
|
|
dnl ========================================================
|
|
CFLAGS="${CFLAGS=}"
|
|
CXXFLAGS="${CXXFLAGS=}"
|
|
LDFLAGS="${LDFLAGS=}"
|
|
HOST_CFLAGS="${HOST_CFLAGS=}"
|
|
HOST_LDFLAGS="${HOST_LDFLAGS=}"
|
|
|
|
case "$target" in
|
|
*-cygwin*|*-mingw*)
|
|
# Check to see if we are really running in a msvc environemnt
|
|
_WIN32_MSVC=
|
|
AC_CHECK_PROGS(CC, cl)
|
|
if test "$CC" = "cl"; then
|
|
echo 'main() { return 0; }' > dummy.c
|
|
${CC} -o dummy dummy.c >/dev/null 2>&1
|
|
if test $? = 0; then
|
|
_WIN32_MSVC=1
|
|
CXX=$CC
|
|
else
|
|
AC_MSG_WARN([$(CC) test failed. Using normal feature tests])
|
|
fi
|
|
rm -f dummy dummy.o dummy.obj dummy.exe dummy.c
|
|
fi
|
|
;;
|
|
*-msvc*)
|
|
_WIN32_MSVC=1
|
|
;;
|
|
*-mks*)
|
|
_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/nspr'
|
|
dist_libdir='${dist_prefix}/lib'
|
|
if test "${includedir}" = '${prefix}/include'; then
|
|
includedir='${prefix}/include/nspr'
|
|
fi
|
|
|
|
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/nspr]],
|
|
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
|
|
AC_ARG_WITH(mozilla,
|
|
[ --with-mozilla Compile NSPR with Mozilla support],
|
|
[ if test "$withval" = "yes"; then
|
|
AC_DEFINE(MOZILLA_CLIENT)
|
|
MOZILLA_CLIENT=1
|
|
else
|
|
MOZILLA_CLIENT=
|
|
fi],
|
|
[ if test -n "$MOZILLA_CLIENT"; then
|
|
AC_DEFINE(MOZILLA_CLIENT)
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(optimize,
|
|
[ --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
|
|
else
|
|
MOZ_OPTIMIZE=
|
|
fi ])
|
|
|
|
AC_ARG_ENABLE(debug,
|
|
[ --disable-debug Do not compile in debugging symbols],
|
|
[ if test "$enableval" = "no"; then
|
|
MOZ_DEBUG=
|
|
else
|
|
MOZ_DEBUG=1
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(win32-target,
|
|
[ --enable-win32-target=\$t
|
|
Specify win32 flavor. (WIN95 or WINNT)],
|
|
OS_TARGET=`echo $enableval | tr a-z A-Z`,
|
|
OS_TARGET=)
|
|
|
|
AC_ARG_ENABLE(debug-rtl,
|
|
[ --enable-debug-rtl Use the MSVC debug runtime library],
|
|
[ if test "$enableval" = "yes"; then
|
|
USE_DEBUG_RTL=1
|
|
fi ])
|
|
|
|
AC_ARG_ENABLE(n32,
|
|
[ --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,
|
|
[ --enable-64bit Enable 64-bit support (on certain platforms)],
|
|
[ if test "$enableval" = "yes"; then
|
|
USE_64=1
|
|
fi ])
|
|
|
|
AC_ARG_ENABLE(mdupdate,
|
|
[ --enable-mdupdate Enable use of certain compilers' mdupdate feature],
|
|
[ if test "$enableval" = "yes"; then
|
|
USE_MDUPDATE=1
|
|
fi ])
|
|
|
|
AC_ARG_ENABLE(macos-target,
|
|
[ --enable-macos-target=VER (default=10.1)
|
|
Set the minimum MacOS version needed at runtime],
|
|
[MACOS_DEPLOYMENT_TARGET_STR=$enableval],
|
|
[MACOS_DEPLOYMENT_TARGET_STR=10.1])
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Set the threading model
|
|
dnl =
|
|
dnl ========================================================
|
|
case "$target" in
|
|
|
|
*-aix*)
|
|
case "${target_os}" in
|
|
aix3.2*)
|
|
USE_NSPR_THREADS=1
|
|
;;
|
|
*)
|
|
USE_PTHREADS=1
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
esac
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Set the default C compiler
|
|
dnl =
|
|
dnl ========================================================
|
|
if test -z "$CC"; then
|
|
case "$target" in
|
|
|
|
*-aix*)
|
|
if test -z "$USE_NSPR_THREADS"; then
|
|
CC=xlc_r
|
|
else
|
|
CC=xlc
|
|
fi
|
|
;;
|
|
|
|
*-hpux*)
|
|
CC=cc
|
|
;;
|
|
|
|
*-irix*)
|
|
CC=cc
|
|
;;
|
|
|
|
*-openvms*)
|
|
CC=cc
|
|
;;
|
|
|
|
*-osf*)
|
|
CC=cc
|
|
;;
|
|
|
|
*-solaris*)
|
|
CC=cc
|
|
;;
|
|
|
|
esac
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Set the default C++ compiler
|
|
dnl =
|
|
dnl ========================================================
|
|
if test -z "$CXX"; then
|
|
case "$target" in
|
|
|
|
*-aix*)
|
|
if test -z "$USE_NSPR_THREADS"; then
|
|
CXX=xlC_r
|
|
else
|
|
CXX=xlC
|
|
fi
|
|
;;
|
|
|
|
*-hpux*)
|
|
case "${target_os}" in
|
|
hpux10.30)
|
|
CXX=aCC
|
|
;;
|
|
hpux11.*)
|
|
CXX=aCC
|
|
;;
|
|
*)
|
|
CXX=CC
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
*-irix*)
|
|
CXX=CC
|
|
;;
|
|
|
|
*-openvms*)
|
|
CXX=cxx
|
|
;;
|
|
|
|
*-osf*)
|
|
CXX=cxx
|
|
;;
|
|
|
|
*-solaris*)
|
|
CXX=CC
|
|
;;
|
|
|
|
esac
|
|
fi
|
|
|
|
if test -z "$SKIP_PATH_CHECKS"; then
|
|
AC_PATH_PROG(WHOAMI, $WHOAMI whoami, echo not_whoami)
|
|
fi
|
|
|
|
if test -n "$MOZ_DEBUG"; then
|
|
AC_DEFINE(DEBUG)
|
|
DEFINES="$DEFINES -UNDEBUG"
|
|
|
|
case "${target_os}" in
|
|
beos*)
|
|
DEFINES="$DEFINES -DDEBUG_${USER}"
|
|
;;
|
|
msvc*|mks*|cygwin*|mingw*|os2*)
|
|
DEFINES="$DEFINES -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
|
|
;;
|
|
*)
|
|
DEFINES="$DEFINES -DDEBUG_`$WHOAMI`"
|
|
;;
|
|
esac
|
|
else
|
|
AC_DEFINE(NDEBUG)
|
|
DEFINES="$DEFINES -UDEBUG"
|
|
fi
|
|
|
|
if test -z "$SKIP_COMPILER_CHECKS"; then
|
|
dnl ========================================================
|
|
dnl Checks for compilers.
|
|
dnl ========================================================
|
|
if test "$target" != "$host"; then
|
|
echo "cross compiling from $host to $target"
|
|
cross_compiling=yes
|
|
|
|
_SAVE_CC="$CC"
|
|
_SAVE_CFLAGS="$CFLAGS"
|
|
_SAVE_LDFLAGS="$LDFLAGS"
|
|
|
|
AC_MSG_CHECKING([for $host compiler])
|
|
AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc, "")
|
|
if test -z "$HOST_CC"; then
|
|
AC_MSG_ERROR([no acceptable cc found in \$PATH])
|
|
fi
|
|
AC_MSG_RESULT([$HOST_CC])
|
|
if test -z "$HOST_CFLAGS"; then
|
|
HOST_CFLAGS="$CFLAGS"
|
|
fi
|
|
if test -z "$HOST_LDFLAGS"; then
|
|
HOST_LDFLAGS="$LDFLAGS"
|
|
fi
|
|
|
|
CC="$HOST_CC"
|
|
CFLAGS="$HOST_CFLAGS"
|
|
LDFLAGS="$HOST_LDFLAGS"
|
|
|
|
AC_MSG_CHECKING([whether the $host compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
|
|
AC_TRY_COMPILE([], [return(0);],
|
|
[ac_cv_prog_host_cc_works=1 AC_MSG_RESULT([yes])],
|
|
AC_MSG_ERROR([installation or configuration problem: $host compiler $HOST_CC cannot create executables.]) )
|
|
|
|
CC=$_SAVE_CC
|
|
CFLAGS=$_SAVE_CFLAGS
|
|
LDFLAGS=$_SAVE_LDFLAGS
|
|
|
|
AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", echo)
|
|
unset ac_cv_prog_CC
|
|
AC_PROG_CC
|
|
AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", echo)
|
|
unset ac_cv_prog_CXX
|
|
AC_PROG_CXX
|
|
AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", echo)
|
|
AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", echo)
|
|
AC_CHECK_PROGS(AS, $AS "${target_alias}-as" "${target}-as", echo)
|
|
AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", echo)
|
|
AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", echo)
|
|
AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", echo)
|
|
|
|
else
|
|
AC_PROG_CXX
|
|
if test "$CXX" = "cl" -a -z "$CC"; then
|
|
CC=$CXX
|
|
else
|
|
AC_PROG_CC
|
|
fi
|
|
AC_PROG_CPP
|
|
AC_PROG_RANLIB
|
|
AC_PATH_PROGS(AS, as, $CC)
|
|
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(WINDRES, windres, echo not_windres)
|
|
if test -z "$HOST_CC"; then
|
|
HOST_CC="$CC"
|
|
fi
|
|
if test -z "$HOST_CFLAGS"; then
|
|
HOST_CFLAGS="$CFLAGS"
|
|
fi
|
|
fi
|
|
|
|
if test "$GCC" = "yes"; then
|
|
GNU_CC=1
|
|
fi
|
|
if test "$GXX" = "yes"; then
|
|
GNU_CXX=1
|
|
fi
|
|
if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
|
|
GNU_AS=1
|
|
fi
|
|
rm -f a.out
|
|
|
|
if test "$cross_compiling" = "yes"; then
|
|
CROSS_COMPILE=1
|
|
else
|
|
CROSS_COMPILE=
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Check for gcc -pipe support
|
|
dnl ========================================================
|
|
AC_MSG_CHECKING([for gcc -pipe support])
|
|
if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
|
|
echo '#include <stdio.h>' > dummy-hello.c
|
|
echo 'int main() { printf("Hello World\n"); return 0; }' >> dummy-hello.c
|
|
${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
|
|
cat dummy-hello.s | ${AS} -o dummy-hello.S - 2>&5
|
|
if test $? = 0; then
|
|
_res_as_stdin="yes"
|
|
else
|
|
_res_as_stdin="no"
|
|
fi
|
|
if test "$_res_as_stdin" = "yes"; then
|
|
_SAVE_CFLAGS=$CFLAGS
|
|
CFLAGS="$CFLAGS -pipe"
|
|
AC_TRY_COMPILE( [ #include <stdio.h> ],
|
|
[printf("Hello World\n");],
|
|
[_res_gcc_pipe="yes"],
|
|
[_res_gcc_pipe="no"] )
|
|
CFLAGS=$_SAVE_CFLAGS
|
|
fi
|
|
if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
|
|
_res="yes";
|
|
CFLAGS="$CFLAGS -pipe"
|
|
CXXFLAGS="$CXXFLAGS -pipe"
|
|
else
|
|
_res="no"
|
|
fi
|
|
rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
|
|
AC_MSG_RESULT([$_res])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
|
|
dnl ===============================================================
|
|
dnl Check for .hidden assembler directive and visibility attribute.
|
|
dnl Borrowed from glibc configure.in
|
|
dnl ===============================================================
|
|
if test "$GNU_CC"; then
|
|
AC_CACHE_CHECK(for visibility(hidden) attribute,
|
|
ac_cv_visibility_hidden,
|
|
[cat > conftest.c <<EOF
|
|
int foo __attribute__ ((visibility ("hidden"))) = 1;
|
|
EOF
|
|
ac_cv_visibility_attribute=no
|
|
if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
|
|
if grep '\.hidden.*foo' conftest.s >/dev/null; then
|
|
ac_cv_visibility_hidden=yes
|
|
fi
|
|
fi
|
|
rm -f conftest.[cs]
|
|
])
|
|
if test $ac_cv_visibility_hidden = yes; then
|
|
AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
|
|
AC_CACHE_CHECK(for visibility pragma support,
|
|
ac_cv_visibility_pragma,
|
|
[cat > conftest.c <<EOF
|
|
#pragma GCC visibility push(hidden)
|
|
int foo_hidden = 1;
|
|
#pragma GCC visibility push(default)
|
|
int foo_default = 1;
|
|
EOF
|
|
ac_cv_visibility_pragma=no
|
|
if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
|
|
if grep '\.hidden.*foo_hidden' conftest.s >/dev/null; then
|
|
if ! grep '\.hidden.*foo_default' conftest.s > /dev/null; then
|
|
ac_cv_visibility_pragma=yes
|
|
fi
|
|
fi
|
|
fi
|
|
rm -f conftest.[cs]
|
|
])
|
|
if test $ac_cv_visibility_pragma = yes; then
|
|
AC_DEFINE(HAVE_VISIBILITY_PRAGMA)
|
|
VISIBILITY_FLAGS='-I$(dist_includedir)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
|
|
WRAP_SYSTEM_INCLUDES=1
|
|
fi
|
|
fi
|
|
fi # GNU_CC
|
|
|
|
fi # SKIP_COMPILER_CHECKS
|
|
|
|
dnl ========================================================
|
|
dnl Checks for programs.
|
|
dnl ========================================================
|
|
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
|
|
dnl ========================================================
|
|
OBJ_SUFFIX=o
|
|
LIB_SUFFIX=a
|
|
DLL_SUFFIX=so
|
|
ASM_SUFFIX=s
|
|
MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
|
|
PR_MD_ASFILES=
|
|
PR_MD_CSRCS=
|
|
PR_MD_ARCH_DIR=unix
|
|
AR_FLAGS='cr $@'
|
|
AS='$(CC)'
|
|
ASFLAGS='$(CFLAGS)'
|
|
|
|
if test -n "$CROSS_COMPILE"; then
|
|
OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
|
|
OS_RELEASE=
|
|
OS_TEST="${target_cpu}"
|
|
case "${target_os}" in
|
|
linux*) OS_ARCH=Linux ;;
|
|
solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
|
|
mingw*) OS_ARCH=WINNT ;;
|
|
esac
|
|
else
|
|
OS_ARCH=`uname -s | sed -e 's|/|_|g'`
|
|
OS_RELEASE=`uname -r`
|
|
OS_TEST=`uname -m`
|
|
fi
|
|
|
|
if test "$OS_ARCH" = "IRIX64"; then
|
|
OS_ARCH=IRIX
|
|
fi
|
|
|
|
if test "$OS_ARCH" = "AIX"; then
|
|
OS_RELEASE=`uname -v`.`uname -r`
|
|
fi
|
|
|
|
if test "$OS_ARCH" = "FreeBSD"; then
|
|
OS_RELEASE=`echo $OS_RELEASE | sed 's/-.*//'`
|
|
fi
|
|
|
|
if test "$OS_ARCH" = "Linux"; then
|
|
OS_RELEASE=`echo $OS_RELEASE | sed 's/-.*//'`
|
|
OS_RELEASE=`echo $OS_RELEASE | awk -F\. '{ print $1 "." $2 }'`
|
|
fi
|
|
|
|
if test "$OS_ARCH" = "OpenVMS"; then
|
|
OS_RELEASE=`uname -v`
|
|
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 "`echo $OS_ARCH | egrep -c '^(CYGWIN_9|CYGWIN_ME)' 2>/dev/null`" != 0; 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
|
|
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
|
|
OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
|
|
|
|
dnl ========================================================
|
|
|
|
dnl ========================================================
|
|
dnl Override of system specific host options
|
|
dnl ========================================================
|
|
case "$host" in
|
|
*-mingw*|*-cygwin*|*-msvc*|*-mks*)
|
|
NSINSTALL='$(CYGWIN_WRAPPER) nsinstall'
|
|
if test `echo "${PATH}" | grep -c \;` = 0; then
|
|
CYGWIN_WRAPPER='sh $(topsrcdir)/build/cygwin-wrapper'
|
|
fi
|
|
;;
|
|
*-beos*)
|
|
HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE"
|
|
;;
|
|
*os2*)
|
|
;;
|
|
*)
|
|
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
|
|
;;
|
|
esac
|
|
|
|
dnl ========================================================
|
|
dnl Override of system specific target options
|
|
dnl ========================================================
|
|
case "$target" in
|
|
|
|
*-aix*)
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(AIX)
|
|
AC_DEFINE(SYSV)
|
|
DSO_LDOPTS='-brtl -bnortllib -bM:SRE -bnoentry -bexpall -blibpath:/usr/lib:/lib'
|
|
AC_CHECK_HEADER(sys/atomic_op.h, AC_DEFINE(AIX_HAVE_ATOMIC_OP_H))
|
|
case "${target_os}" in
|
|
aix3.2*)
|
|
AC_DEFINE(AIX_RENAME_SELECT)
|
|
AC_DEFINE(_PR_NO_LARGE_FILES)
|
|
AIX_LINK_OPTS='-bnso -berok'
|
|
PR_MD_ASFILES=os_AIX.s
|
|
;;
|
|
aix4.1*)
|
|
AC_DEFINE(AIX_TIMERS)
|
|
AC_DEFINE(_PR_NO_LARGE_FILES)
|
|
AC_DEFINE(AIX4_1)
|
|
MKSHLIB=
|
|
DSO_LDOPTS=
|
|
AIX_LINK_OPTS='-bnso -berok'
|
|
LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)_shr'
|
|
LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)_shr'
|
|
;;
|
|
aix4.2*)
|
|
AC_DEFINE(AIX_TIMERS)
|
|
AC_DEFINE(_PR_HAVE_OFF64_T)
|
|
AIX_LINK_OPTS='-brtl -bnso -berok'
|
|
;;
|
|
aix4.3*)
|
|
AC_DEFINE(AIX_TIMERS)
|
|
AC_DEFINE(_PR_HAVE_OFF64_T)
|
|
AC_DEFINE(AIX4_3_PLUS)
|
|
AC_DEFINE(HAVE_SOCKLEN_T)
|
|
AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
|
|
USE_IPV6=1
|
|
AIX_LINK_OPTS='-brtl -bnso -berok'
|
|
;;
|
|
*)
|
|
AC_DEFINE(AIX_TIMERS)
|
|
AC_DEFINE(_PR_HAVE_OFF64_T)
|
|
AC_DEFINE(AIX4_3_PLUS)
|
|
AC_DEFINE(HAVE_SOCKLEN_T)
|
|
AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
|
|
USE_IPV6=1
|
|
AIX_LINK_OPTS='-brtl -bnso -berok'
|
|
;;
|
|
esac
|
|
CFLAGS="$CFLAGS -qro -qroconst"
|
|
AIX_WRAP='$(DIST)/lib/aixwrap.o'
|
|
AIX_TMP='./_aix_tmp.o'
|
|
if test -n "$USE_64"; then
|
|
MDCPUCFG_H=_aix64.cfg
|
|
OBJECT_MODE=64
|
|
else
|
|
MDCPUCFG_H=_aix32.cfg
|
|
fi
|
|
PR_MD_CSRCS=aix.c
|
|
RESOLVE_LINK_SYMBOLS=1
|
|
;;
|
|
|
|
*-beos*)
|
|
AC_DEFINE(XP_BEOS)
|
|
AC_DEFINE(BeOS)
|
|
AC_DEFINE(BEOS)
|
|
AC_DEFINE(_POSIX_SOURCE)
|
|
DSO_LDOPTS=-nostart
|
|
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 $@'
|
|
AC_CHECK_LIB(bind, gethostbyaddr, [OS_LIBS="$OS_LIBS -lbind -lsocket"])
|
|
;;
|
|
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.* | bsdi5.*)
|
|
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* | bsdi4.3* | bsdi5.*)
|
|
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
|
|
|
|
;;
|
|
|
|
*-darwin*)
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(DARWIN)
|
|
AC_DEFINE(HAVE_BSD_FLOCK)
|
|
CFLAGS="$CFLAGS -Wmost -fno-common"
|
|
if echo $OS_TEST | grep -c 86 2>/dev/null; then
|
|
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 -install_name @executable_path/$@ -headerpad_max_install_names'
|
|
# Use the standard preprocessor (cpp)
|
|
CFLAGS="$CFLAGS -no-cpp-precomp"
|
|
MKSHLIB='$(CC) -arch $(CPU_ARCH) $(DSO_LDOPTS) -o $@'
|
|
STRIP="$STRIP -x -S"
|
|
DLL_SUFFIX=dylib
|
|
USE_PTHREADS=1
|
|
MDCPUCFG_H=_darwin.cfg
|
|
PR_MD_CSRCS=darwin.c
|
|
if test "$CPU_ARCH" = "ppc"; then
|
|
PR_MD_ASFILES=os_Darwin_ppc.s
|
|
fi
|
|
|
|
# Add Mac OS X support for loading CFM & CFBundle plugins
|
|
if test -f /System/Library/Frameworks/Carbon.framework/Carbon; then
|
|
AC_DEFINE(XP_MACOSX)
|
|
OS_TARGET=MacOSX
|
|
|
|
dnl The C preprocessor can only handle integers in comparisons, so
|
|
dnl convert the version to the form AABBCC where AA=major release,
|
|
dnl BB=minor release, and CC=point/micro release.
|
|
|
|
MACOS_VERSION_MAJOR=`echo $MACOS_DEPLOYMENT_TARGET_STR | cut -d . -f 1`
|
|
MACOS_VERSION_MINOR=`echo $MACOS_DEPLOYMENT_TARGET_STR | cut -d . -f 2`
|
|
MACOS_VERSION_MICRO=`echo $MACOS_DEPLOYMENT_TARGET_STR | cut -d . -f 3`
|
|
if test -z "$MACOS_VERSION_MINOR"; then
|
|
MACOS_VERSION_MINOR=0
|
|
fi
|
|
if test -z "$MACOS_VERSION_MICRO"; then
|
|
MACOS_VERSION_MICRO=0
|
|
fi
|
|
MACOS_DEPLOYMENT_TARGET=`printf "%02d%02d%02d" "$MACOS_VERSION_MAJOR" "$MACOS_VERSION_MINOR" "$MACOS_VERSION_MICRO"`
|
|
AC_DEFINE_UNQUOTED(MACOS_DEPLOYMENT_TARGET, $MACOS_DEPLOYMENT_TARGET)
|
|
fi
|
|
|
|
# do the right thing for panther SDK support
|
|
if test "$NEXT_ROOT"; then
|
|
CFLAGS="-I${NEXT_ROOT}/usr/include $CFLAGS"
|
|
CXXFLAGS="-I${NEXT_ROOT}/usr/include $CXXFLAGS"
|
|
fi
|
|
;;
|
|
|
|
*-dgux*)
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
|
|
AC_DEFINE(SVR4)
|
|
AC_DEFINE(SYSV)
|
|
AC_DEFINE(DGUX)
|
|
AC_DEFINE(_DGUX_SOURCE)
|
|
AC_DEFINE(_POSIX4A_DRAFT6_SOURCE)
|
|
DSO_LDOPTS=-G
|
|
_OPTIMIZE_FLAGS=-O2
|
|
_DEBUG_FLAGS=
|
|
MDCPUCFG_H=_dgux.cfg
|
|
PR_MD_CSRCS=dgux.c
|
|
;;
|
|
|
|
*-freebsd*)
|
|
if test -z "$USE_NSPR_THREADS"; then
|
|
USE_PTHREADS=1
|
|
fi
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(FREEBSD)
|
|
AC_DEFINE(HAVE_BSD_FLOCK)
|
|
AC_DEFINE(HAVE_SOCKLEN_T)
|
|
CFLAGS="$CFLAGS $(DSO_CFLAGS) -ansi -Wall"
|
|
MOZ_OBJFORMAT=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
|
|
if test "$MOZ_OBJFORMAT" = "elf"; then
|
|
DLL_SUFFIX=so
|
|
else
|
|
DLL_SUFFIX=so.1.0
|
|
fi
|
|
MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
|
|
DSO_CFLAGS=-fPIC
|
|
DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
|
|
MDCPUCFG_H=_freebsd.cfg
|
|
PR_MD_CSRCS=freebsd.c
|
|
;;
|
|
|
|
*-hpux*)
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(HPUX)
|
|
AC_DEFINE(_HPUX_SOURCE)
|
|
AC_DEFINE(hppa)
|
|
# OSF1 and HPUX report the POLLHUP event for a socket when the
|
|
# shutdown(SHUT_WR) operation is called for the remote end, even though
|
|
# the socket is still writeable. Use select(), instead of poll(), to
|
|
# workaround this problem.
|
|
AC_DEFINE(_PR_POLL_WITH_SELECT)
|
|
AC_DEFINE(_USE_BIG_FDS)
|
|
DLL_SUFFIX=sl
|
|
DSO_LDOPTS='-b +h $(notdir $@)'
|
|
PR_MD_CSRCS=hpux.c
|
|
if test "$OS_TEST" != "ia64"; then
|
|
PR_MD_ASFILES=os_HPUX.s
|
|
fi
|
|
if test -n "$USE_64"; then
|
|
MDCPUCFG_H=_hpux64.cfg
|
|
else
|
|
MDCPUCFG_H=_hpux32.cfg
|
|
fi
|
|
if test -z "$GNU_CC"; then
|
|
CC="$CC -Ae"
|
|
CXX="$CXX -ext"
|
|
DSO_CFLAGS=+Z
|
|
else
|
|
DSO_CFLAGS=-fPIC
|
|
fi
|
|
|
|
if test -n "$MOZILLA_CLIENT"; then
|
|
DEFAULT_IMPL_STRATEGY=_EMU
|
|
fi
|
|
|
|
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)
|
|
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)' >/dev/null; then
|
|
AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
|
|
fi
|
|
|
|
# HP-UX 11i (B.11.11) or higher
|
|
changequote(<<,>>)
|
|
case "$OS_RELEASE" in
|
|
[C-Z]*|B.[2-9]*|B.1[2-9]*|B.11.[2-9]*|B.11.1[1-9]*)
|
|
USE_IPV6=1
|
|
;;
|
|
esac
|
|
changequote([,])
|
|
|
|
if test "$OS_RELEASE" = "B.10.01"; then
|
|
AC_DEFINE(HPUX10)
|
|
DEFAULT_IMPL_STRATEGY=_EMU
|
|
fi
|
|
|
|
if test "$OS_RELEASE" = "B.10.10"; then
|
|
AC_DEFINE(HPUX10)
|
|
AC_DEFINE(HPUX10_10)
|
|
DEFAULT_IMPL_STRATEGY=_PTH
|
|
fi
|
|
|
|
if test "$OS_RELEASE" = "B.10.20"; then
|
|
AC_DEFINE(HPUX10)
|
|
AC_DEFINE(HPUX10_20)
|
|
if test -z "$GNU_CC"; then
|
|
CFLAGS="$CFLAGS +DAportable +DS1.1"
|
|
CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
|
|
fi
|
|
DEFAULT_IMPL_STRATEGY=_PTH
|
|
fi
|
|
|
|
if test "$OS_RELEASE" = "B.10.30"; then
|
|
AC_DEFINE(HPUX10)
|
|
AC_DEFINE(HPUX10_30)
|
|
if test -z "$GNU_CC"; then
|
|
CFLAGS="$CFLAGS +DAportable +DS1.1"
|
|
CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
|
|
fi
|
|
DEFAULT_IMPL_STRATEGY=_PTH
|
|
fi
|
|
|
|
if echo "$OS_RELEASE" | grep ^B.11 >/dev/null; then
|
|
AC_DEFINE(HPUX10)
|
|
AC_DEFINE(HPUX11)
|
|
AC_DEFINE(_LARGEFILE64_SOURCE)
|
|
AC_DEFINE(_PR_HAVE_OFF64_T)
|
|
AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
|
|
if test -z "$GNU_CC"; then
|
|
if test -z "$USE_64"; then
|
|
if test "$OS_TEST" = "ia64"; then
|
|
CFLAGS="$CFLAGS +DD32"
|
|
CXXFLAGS="$CXXFLAGS +DD32"
|
|
else
|
|
CFLAGS="$CFLAGS +DAportable +DS2.0"
|
|
CXXFLAGS="$CXXFLAGS +DAportable +DS2.0"
|
|
fi
|
|
else
|
|
if test "$OS_TEST" = "ia64"; then
|
|
CFLAGS="$CFLAGS +DD64"
|
|
CXXFLAGS="$CXXFLAGS +DD64"
|
|
else
|
|
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
|
|
if test "$USE_NSPR_THREADS"; then
|
|
USE_PTHREADS=
|
|
fi
|
|
if test "$USE_USER_PTHREADS"; then
|
|
USE_PTHREADS=
|
|
fi
|
|
fi
|
|
;;
|
|
|
|
*-irix*)
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(IRIX)
|
|
AC_DEFINE(SVR4)
|
|
AC_DEFINE(_SGI_MP_SOURCE)
|
|
AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
|
|
PR_MD_CSRCS=irix.c
|
|
PR_MD_ASFILES=os_Irix.s
|
|
MKSHLIB='$(LD) $(DSO_LDOPTS) -rdata_shared -shared -soname $(notdir $@) -o $@'
|
|
STRIP="$STRIP -f"
|
|
RESOLVE_LINK_SYMBOLS=1
|
|
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
|
|
USE_N32=1
|
|
COMPILER_TAG=_n32
|
|
IMPL_STRATEGY=_PTH
|
|
;;
|
|
irix5*)
|
|
AC_DEFINE(IRIX5)
|
|
USE_NSPR_THREADS=1
|
|
;;
|
|
*)
|
|
USE_PTHREADS=1
|
|
USE_N32=1
|
|
;;
|
|
esac
|
|
if test "$GNU_CC"; then
|
|
dnl
|
|
dnl If we are using gcc with native binutils, we need to
|
|
dnl suppress the
|
|
dnl #lineno "filename" num num
|
|
dnl lines, which confuse IRIX native as. Add -Wp,-P to the
|
|
dnl gcc command line, which passes -P to the preprocessor.
|
|
dnl
|
|
AS='$(CC) -Wp,-P -x assembler-with-cpp -D_ASM -mips2 $(INCLUDES)'
|
|
CFLAGS="$CFLAGS -Wall -Wno-format"
|
|
_OPTIMIZE_FLAGS="-O6"
|
|
else
|
|
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"
|
|
else
|
|
_OPTIMIZE_FLAGS="-O -Olimit 4000"
|
|
fi
|
|
if test "$USE_MDUPDATE"; then
|
|
CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
|
|
fi
|
|
case "${target}" in
|
|
*-irix6.*)
|
|
CFLAGS="$CFLAGS -multigot"
|
|
DSO_LDOPTS="-no_unresolved"
|
|
if test "$USE_N32"; then
|
|
CFLAGS="$CFLAGS -n32 -woff 1209"
|
|
DSO_LDOPTS="$DSO_LDOPTS -n32"
|
|
else
|
|
if test "$USE_64"; then
|
|
CFLAGS="$CFLAGS -64"
|
|
else
|
|
CFLAGS="$CFLAGS -32"
|
|
fi
|
|
fi
|
|
;;
|
|
*)
|
|
CFLAGS="$CFLAGS -xgot"
|
|
;;
|
|
esac
|
|
fi
|
|
if test "${target_os}" = "irix5.3"; then
|
|
AC_DEFINE(IRIX5_3)
|
|
fi
|
|
case "${target_os}" in
|
|
irix6.5)
|
|
if test -z "$GNU_CC"; then
|
|
CFLAGS="$CFLAGS -mips3"
|
|
fi
|
|
AC_DEFINE(_PR_HAVE_GETPROTO_R)
|
|
AC_DEFINE(_PR_HAVE_GETPROTO_R_POINTER)
|
|
AC_DEFINE(_PR_HAVE_SGI_PRDA_PROCMASK)
|
|
;;
|
|
irix5*)
|
|
;;
|
|
*)
|
|
AC_DEFINE(_PR_HAVE_SGI_PRDA_PROCMASK)
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
*-linux*)
|
|
if test -z "$USE_NSPR_THREADS"; then
|
|
USE_PTHREADS=1
|
|
IMPL_STRATEGY=_PTH
|
|
fi
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(_POSIX_SOURCE)
|
|
AC_DEFINE(_BSD_SOURCE)
|
|
AC_DEFINE(_SVID_SOURCE)
|
|
AC_DEFINE(_LARGEFILE64_SOURCE)
|
|
AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
|
|
AC_DEFINE(LINUX)
|
|
CFLAGS="$CFLAGS -ansi -Wall"
|
|
CXXFLAGS="$CXXFLAGS -ansi -Wall"
|
|
MDCPUCFG_H=_linux.cfg
|
|
PR_MD_CSRCS=linux.c
|
|
MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
|
|
DSO_CFLAGS=-fPIC
|
|
DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
|
|
_OPTIMIZE_FLAGS=-O2
|
|
_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb, and that
|
|
# combo is not yet good at debugging inlined
|
|
# functions (even when using DWARF2 as the
|
|
# debugging format)
|
|
COMPILER_TAG=_glibc
|
|
if echo "$OS_TEST" | grep -c 86 >/dev/null; then
|
|
CPU_ARCH=x86
|
|
else
|
|
CPU_ARCH=$OS_TEST
|
|
fi
|
|
CPU_ARCH_TAG=_${CPU_ARCH}
|
|
case "${target_cpu}" in
|
|
alpha)
|
|
AC_DEFINE(_ALPHA_)
|
|
AC_DEFINE(__alpha)
|
|
CFLAGS="$CFLAGS -mieee"
|
|
CXXFLAGS="$CXXFLAGS -mieee"
|
|
;;
|
|
i*86)
|
|
AC_DEFINE(i386)
|
|
PR_MD_ASFILES=os_Linux_x86.s
|
|
;;
|
|
ia64)
|
|
PR_MD_ASFILES=os_Linux_ia64.s
|
|
;;
|
|
x86_64)
|
|
PR_MD_ASFILES=os_Linux_x86_64.s
|
|
;;
|
|
m68k)
|
|
CFLAGS="$CFLAGS -m68020-60"
|
|
CXXFLAGS="$CXXFLAGS -m68020-60"
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
*-mingw*|*-cygwin*|*-msvc*|*-mks*)
|
|
AC_DEFINE(XP_PC)
|
|
AC_DEFINE(WIN32)
|
|
PR_MD_ARCH_DIR=windows
|
|
RESOLVE_LINK_SYMBOLS=1
|
|
|
|
if test -n "$GNU_CC"; then
|
|
CC="$CC -mno-cygwin"
|
|
CXX="$CXX -mno-cygwin"
|
|
DLL_SUFFIX=dll
|
|
MKSHLIB='$(CC) -shared -Wl,--export-all-symbols -Wl,--out-implib -Wl,$(IMPORT_LIBRARY) $(DLLBASE) -o $(subst $(OBJDIR)/,,$(SHARED_LIBRARY))'
|
|
RC=$WINDRES
|
|
# Use temp file for windres (bug 213281)
|
|
RCFLAGS='-O coff --use-temp-file'
|
|
else
|
|
CC=cl
|
|
CXX=cl
|
|
LD=link
|
|
AR='lib -NOLOGO -OUT:"$@"'
|
|
AR_FLAGS=
|
|
RANLIB='echo not_ranlib'
|
|
STRIP='echo not_strip'
|
|
RC=rc.exe
|
|
GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
|
|
OBJ_SUFFIX=obj
|
|
LIB_SUFFIX=lib
|
|
DLL_SUFFIX=dll
|
|
|
|
# Determine compiler version
|
|
CC_VERSION=`"${CC}" -v 2>&1 | grep Version | sed -e 's|.* Version ||' -e 's| .*||'`
|
|
_CC_MAJOR_VERSION=`echo $CC_VERSION | awk -F\. '{ print $1 }'`
|
|
_CC_MINOR_VERSION=`echo $CC_VERSION | awk -F\. '{ print $2 }'`
|
|
MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
|
|
|
|
CFLAGS="$CFLAGS -W3 -nologo -GF -Gy"
|
|
DLLFLAGS='-OUT:"$@"'
|
|
_DEBUG_FLAGS=-Z7
|
|
_OPTIMIZE_FLAGS=-O2
|
|
if test -z "$MOZ_OPTIMIZE"; then
|
|
CFLAGS="$CFLAGS -Od"
|
|
fi
|
|
|
|
if test -n "$USE_DEBUG_RTL"; then
|
|
CFLAGS="$CFLAGS -MDd"
|
|
else
|
|
CFLAGS="$CFLAGS -MD"
|
|
fi
|
|
|
|
if test -n "$MOZ_DEBUG"; then
|
|
AC_DEFINE(_DEBUG)
|
|
else
|
|
DEFINES="$DEFINES -U_DEBUG"
|
|
fi
|
|
|
|
if test -n "$MOZ_OPTIMIZE"; then
|
|
if test -n "$MOZ_PROFILE"; then
|
|
_OPTIMIZE_FLAGS="$_OPTIMIZE_FLAGS -Z7"
|
|
fi
|
|
if test -n "$MOZ_DEBUG_SYMBOLS"; then
|
|
_OPTIMIZE_FLAGS="$_OPTIMIZE_FLAGS -Zi"
|
|
fi
|
|
if test -n "$MOZ_PROFILE" -o -n "$MOZ_DEBUG_SYMBOLS"; then
|
|
DLLFLAGS="$DLLFLAGS -DEBUG -OPT:REF"
|
|
LDFLAGS="$LDFLAGS -DEBUG -OPT:REF"
|
|
fi
|
|
fi
|
|
|
|
if test -n "$MOZ_DEBUG"; then
|
|
DLLFLAGS="$DLLFLAGS -DEBUG"
|
|
LDFLAGS="$LDFLAGS -DEBUG"
|
|
fi
|
|
|
|
if test "$OS_TARGET" = "WINNT"; then
|
|
CFLAGS="$CFLAGS -GT"
|
|
if test "$CPU_ARCH" = "x86"; then
|
|
CFLAGS="$CFLAGS -G5"
|
|
fi
|
|
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
|
|
AC_DEFINE(WINNT)
|
|
else
|
|
AC_DEFINE(WIN95)
|
|
# undefine WINNT as some versions of mingw gcc define it by default
|
|
DEFINES="$DEFINES -UWINNT"
|
|
AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
|
|
fi
|
|
|
|
if test "$CPU_ARCH" = "x86"; then
|
|
CPU_ARCH_TAG=
|
|
else
|
|
CPU_ARCH_TAG=$CPU_ARCH
|
|
fi
|
|
|
|
if test -n "$USE_DEBUG_RTL"; then
|
|
OBJDIR_SUFFIX=OBJD
|
|
fi
|
|
|
|
OS_DLLFLAGS="-nologo -DLL -SUBSYSTEM:WINDOWS"
|
|
if test "$MSC_VER" -le "1200" -a -z "$MOZ_DEBUG_SYMBOLS"; then
|
|
OS_DLLFLAGS="$OS_DLLFLAGS -PDB:NONE"
|
|
fi
|
|
|
|
case "$OS_TARGET" in
|
|
WINNT)
|
|
MDCPUCFG_H=_winnt.cfg
|
|
;;
|
|
WIN95)
|
|
MDCPUCFG_H=_win95.cfg
|
|
;;
|
|
WIN16)
|
|
MDCPUCFG_H=_win16.cfg
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR([Missing OS_TARGET for ${target}. Use --enable-win32-target to set.])
|
|
;;
|
|
esac
|
|
|
|
case "$target_cpu" in
|
|
i*86)
|
|
AC_DEFINE(_X86_)
|
|
;;
|
|
alpha)
|
|
AC_DEFINE(_ALPHA_)
|
|
;;
|
|
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"
|
|
CXXFLAGS="$CXXFLAGS -fPIC -Wall"
|
|
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)
|
|
USE_NSPR_THREADS=1
|
|
MDCPUCFG_H=_netbsd.cfg
|
|
PR_MD_CSRCS=netbsd.c
|
|
|
|
DSO_CFLAGS='-fPIC -DPIC'
|
|
CFLAGS="$CFLAGS -ansi -Wall"
|
|
CXXFLAGS="$CXXFLAGS -ansi -Wall"
|
|
MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)'
|
|
|
|
if test -z "$OBJECT_FMT"; then
|
|
if echo __ELF__ | ${CC-cc} -E - | grep -q __ELF__ 2>/dev/null; then
|
|
OBJECT_FMT=a.out
|
|
DLL_SUFFIX=so.1.0
|
|
DSO_LDOPTS='-shared'
|
|
else
|
|
OBJECT_FMT=ELF
|
|
DLL_SUFFIX=so
|
|
DSO_LDOPTS='-shared -Wl,-soname,$(notdir $@)'
|
|
fi
|
|
fi
|
|
|
|
if test "$LIBRUNPATH"; then
|
|
DSO_LDOPTS="$DSO_LDOPTS -Wl,-R$LIBRUNPATH"
|
|
fi
|
|
;;
|
|
|
|
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 -traditional-cpp -posix"
|
|
CXXFLAGS="$CXXFLAGS -Wall -fno-common -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='$(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(notdir $@) -o $@'
|
|
DSO_CFLAGS=-fPIC
|
|
DSO_LDOPTS=-shared
|
|
OS_LIBS="$OS_LIBS -lsocket"
|
|
_OPTIMIZE_FLAGS="-O1"
|
|
_DEBUG_FLAGS="-gstabs"
|
|
;;
|
|
|
|
*-openbsd*)
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(OPENBSD)
|
|
AC_DEFINE(HAVE_BSD_FLOCK)
|
|
AC_DEFINE(HAVE_SOCKLEN_T)
|
|
CFLAGS="$CFLAGS -ansi -Wall"
|
|
CXXFLAGS="$CXXFLAGS -ansi -Wall"
|
|
DLL_SUFFIX=so.1.0
|
|
DSO_CFLAGS=-fPIC
|
|
MDCPUCFG_H=_openbsd.cfg
|
|
PR_MD_CSRCS=openbsd.c
|
|
if test -z "$USE_NSPR_THREADS"; then
|
|
USE_PTHREADS=1
|
|
fi
|
|
DSO_LDOPTS='-shared -fPIC'
|
|
MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
|
|
;;
|
|
|
|
*-openvms*)
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(VMS)
|
|
AC_DEFINE(PR_GETIPNODE_NOT_THREADSAFE)
|
|
RESOLVE_LINK_SYMBOLS=1
|
|
AR_FLAGS='c $@'
|
|
MDCPUCFG_H=_openvms.cfg
|
|
PR_MD_CSRCS=openvms.c
|
|
DSO_LDOPTS='-shared -auto_symvec $(LDFLAGS)'
|
|
if test -n "$MOZ_DEBUG"; then
|
|
DSO_LDOPTS="$DSO_LDOPTS $_DEBUG_FLAGS"
|
|
else
|
|
DSO_LDOPTS="$DSO_LDOPTS $_OPTIMIZE_FLAGS"
|
|
fi
|
|
;;
|
|
|
|
*-osf*)
|
|
SHELL_OVERRIDE="SHELL = /usr/bin/ksh"
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(OSF1)
|
|
AC_DEFINE(_REENTRANT)
|
|
# OSF1 and HPUX report the POLLHUP event for a socket when the
|
|
# shutdown(SHUT_WR) operation is called for the remote end, even though
|
|
# the socket is still writeable. Use select(), instead of poll(), to
|
|
# workaround this problem.
|
|
AC_DEFINE(_PR_POLL_WITH_SELECT)
|
|
|
|
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="$_OPTIMIZE_FLAGS -Olimit 4000"
|
|
AC_CHECK_HEADER(machine/builtins.h, AC_DEFINE(OSF1_HAVE_MACHINE_BUILTINS_H))
|
|
else
|
|
CFLAGS="$CFLAGS -mieee"
|
|
CXXFLAGS="$CXXFLAGS -mieee"
|
|
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_FCNTL_FILE_LOCKING)
|
|
AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
|
|
fi
|
|
if echo $OS_RELEASE | grep -c V4.0 >/dev/null; then
|
|
AC_DEFINE(OSF1V4_MAP_PRIVATE_BUG)
|
|
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
|
|
;;
|
|
|
|
*-*-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
|
|
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*)
|
|
if test -z "$USE_USER_THREADS" && test -z "$USE_NATIVE_THREADS"; then
|
|
USE_PTHREADS=1
|
|
fi
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(SVR4)
|
|
AC_DEFINE(SYSV)
|
|
AC_DEFINE(__svr4)
|
|
AC_DEFINE(__svr4__)
|
|
AC_DEFINE(SOLARIS)
|
|
AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
|
|
MDCPUCFG_H=_solaris.cfg
|
|
PR_MD_CSRCS=solaris.c
|
|
LD=/usr/ccs/bin/ld
|
|
MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
|
|
RESOLVE_LINK_SYMBOLS=1
|
|
if test -n "$GNU_CC"; then
|
|
DSO_CFLAGS=-fPIC
|
|
if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
|
|
GCC_USE_GNU_LD=1
|
|
fi
|
|
DSO_LDOPTS='-shared -Wl,-h,$(notdir $@),-z,combreloc,-z,defs'
|
|
else
|
|
DSO_CFLAGS=-KPIC
|
|
DSO_LDOPTS='-G -h $(notdir $@) -z combreloc -z defs'
|
|
fi
|
|
if test -n "$GNU_CC"; then
|
|
CFLAGS="$CFLAGS -Wall"
|
|
CXXFLAGS="$CXXFLAGS -Wall"
|
|
if test -n "$USE_MDUPDATE"; then
|
|
CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
|
|
CXXFLAGS="$CXXFLAGS -MDupdate \$(DEPENDENCIES)"
|
|
fi
|
|
GCC_AS=`$CC -print-prog-name=as`
|
|
if test "`echo | $GCC_AS -v 2>&1 | grep -c GNU`" != "0"; then
|
|
GNU_AS=1
|
|
fi
|
|
else
|
|
CFLAGS="$CFLAGS -xstrconst"
|
|
CXXFLAGS="$CXXFLAGS -Qoption cg -xstrconst -features=tmplife"
|
|
if test -z "$MOZ_OPTIMIZE"; then
|
|
CFLAGS="$CFLAGS -xs"
|
|
CXXFLAGS="$CXXFLAGS -xs"
|
|
fi
|
|
_OPTIMIZE_FLAGS=-xO4
|
|
fi
|
|
if test -z "$GNU_AS"; then
|
|
ASFLAGS="$ASFLAGS -Wa,-P"
|
|
fi
|
|
if test -n "$USE_64"; then
|
|
if test -n "$GNU_CC"; then
|
|
CC="$CC -m64"
|
|
CXX="$CXX -m64"
|
|
else
|
|
if test "$OS_TEST" = "i86pc"; then
|
|
CC="$CC -xarch=amd64"
|
|
CXX="$CXX -xarch=amd64"
|
|
else
|
|
CC="$CC -xarch=v9"
|
|
CXX="$CXX -xarch=v9"
|
|
fi
|
|
fi
|
|
fi
|
|
if test "$OS_TEST" = "i86pc"; then
|
|
if test -z "$USE_64"; then
|
|
AC_DEFINE(i386)
|
|
fi
|
|
CPU_ARCH_TAG=_$OS_TEST
|
|
# The default debug format, DWARF (-g), is not supported by gcc
|
|
# on i386-ANY-sysv4/solaris, but the stabs format is. It is
|
|
# assumed that the Solaris assembler /usr/ccs/bin/as is used.
|
|
# If your gcc uses GNU as, you do not need the -Wa,-s option.
|
|
if test -n "$MOZ_DEBUG" && test -n "$GNU_CC"; then
|
|
_DEBUG_FLAGS=-gstabs
|
|
if test -z "$GNU_AS"; then
|
|
_DEBUG_FLAGS="$_DEBUG_FLAGS -Wa,-s"
|
|
fi
|
|
fi
|
|
fi
|
|
case "${target_os}" in
|
|
solaris2.3*)
|
|
AC_DEFINE(_PR_NO_LARGE_FILES)
|
|
;;
|
|
solaris2.4*)
|
|
AC_DEFINE(_PR_NO_LARGE_FILES)
|
|
;;
|
|
solaris2.5*)
|
|
AC_DEFINE(SOLARIS2_5)
|
|
;;
|
|
*)
|
|
AC_DEFINE(_PR_HAVE_OFF64_T)
|
|
# The lfcompile64(5) man page on Solaris 2.6 says:
|
|
# For applications that do not wish to conform to the POSIX or
|
|
# X/Open specifications, the 64-bit transitional interfaces
|
|
# are available by default. No compile-time flags need to be
|
|
# set.
|
|
# But gcc 2.7.2.x fails to define _LARGEFILE64_SOURCE by default.
|
|
# The native compiler, gcc 2.8.x, and egcs don't have this problem.
|
|
if test -n "$GNU_CC"; then
|
|
AC_DEFINE(_LARGEFILE64_SOURCE)
|
|
fi
|
|
;;
|
|
esac
|
|
case "${target_os}" in
|
|
solaris2.3*)
|
|
;;
|
|
solaris2.4*)
|
|
;;
|
|
solaris2.5*)
|
|
;;
|
|
solaris2.6*)
|
|
;;
|
|
solaris2.7*)
|
|
;;
|
|
*)
|
|
# Solaris 8 or higher has IPv6.
|
|
AC_DEFINE(_PR_INET6)
|
|
;;
|
|
esac
|
|
if test "$OS_TEST" = "sun4u"; then
|
|
# 64-bit Solaris requires SPARC V9 architecture, so the following
|
|
# is not needed.
|
|
if test -z "$USE_64"; then
|
|
ULTRASPARC_LIBRARY=nspr_flt
|
|
fi
|
|
fi
|
|
# Purify requires that binaries linked against nspr also
|
|
# be linked against -lrt (or -lposix4) so add it to OS_LIBS
|
|
_rev=`uname -r`
|
|
_librt=`echo $_rev 5.6 | awk '{ if ($1 > $2) print "-lrt"; else print "-lposix4" }'`
|
|
OS_LIBS="$OS_LIBS $_librt"
|
|
;;
|
|
|
|
*-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(XP_PC)
|
|
AC_DEFINE(BSD_SELECT)
|
|
AC_DEFINE(TCPV40HDRS)
|
|
LIB_SUFFIX=lib
|
|
DLL_SUFFIX=dll
|
|
RC=rc.exe
|
|
PR_MD_ARCH_DIR=os2
|
|
PROG_SUFFIX=.exe
|
|
NSINSTALL=nsinstall
|
|
MDCPUCFG_H=_os2.cfg
|
|
RESOLVE_LINK_SYMBOLS=1
|
|
|
|
# EMX/GCC build
|
|
if test -n "$GNU_CC"; then
|
|
AC_DEFINE(XP_OS2_EMX)
|
|
AC_DEFINE(OS2)
|
|
AR=emxomfar
|
|
AR_FLAGS='r $@'
|
|
CFLAGS="$CFLAGS -Wall -Zomf"
|
|
CXXFLAGS="$CFLAGS -Wall -Zomf"
|
|
MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
|
|
DSO_CFLAGS=
|
|
DSO_LDOPTS='-Zomf -Zdll -Zmap'
|
|
LDFLAGS='-Zmap'
|
|
_OPTIMIZE_FLAGS="-O2 -s"
|
|
_DEBUG_FLAGS="-g -fno-inline"
|
|
if test -n "$MOZ_OPTIMIZE"; then
|
|
DSO_LDOPTS="$DSO_LDOPTS -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
|
|
fi
|
|
OS_LIBS="-lsocket"
|
|
IMPLIB='emximp -o'
|
|
FILTER='emxexp -o'
|
|
|
|
# GCC for OS/2 currently predefines these, but we don't want them
|
|
DEFINES="$DEFINES -Uunix -U__unix -U__unix__"
|
|
|
|
# Visual Age C++ build
|
|
elif test "$VACPP" = "yes"; then
|
|
AC_DEFINE(XP_OS2_VACPP)
|
|
AC_DEFINE(OS2,4)
|
|
AC_DEFINE(_X86_)
|
|
OBJ_SUFFIX=obj
|
|
AS=alp
|
|
ASFLAGS='-Mb'
|
|
ASM_SUFFIX=asm
|
|
AR=-ilib
|
|
AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
|
|
CFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Mp /Tl9'
|
|
HOST_CFLAGS="$CFLAGS"
|
|
OS_CFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Mp /Tl9'
|
|
OS_EXE_CFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Mp /Tl9'
|
|
CXXFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Mp /Tl9'
|
|
OS_LIBS='so32dll.lib tcp32dll.lib'
|
|
LD='-ilink'
|
|
MKSHLIB='$(LD) $(DSO_LDOPTS)'
|
|
IMPLIB='implib -nologo -noignorecase'
|
|
FILTER='cppfilt -q -B -P'
|
|
_OPTIMIZE_FLAGS='/O+ /Gl+ /qtune=pentium /qarch=pentium'
|
|
_DEBUG_FLAGS='/Ti+ '
|
|
LDFLAGS='/NOL /M /L'
|
|
DLLFLAGS='/O:$@ /DLL /INC:_dllentry /MAP:$(@:.dll=.map) /L /NOL'
|
|
EXEFLAGS='/OUT:$@ /PMTYPE:VIO /MAP:$(@:.exe=.map) /L /NOL'
|
|
if test -n "$MOZ_DEBUG"; then
|
|
LDFLAGS="$LDFLAGS /DE"
|
|
DLLFLAGS="$DLLFLAGS /DE"
|
|
EXEFLAGS="$EXEFLAGS /DE"
|
|
fi
|
|
if test -n "$MOZ_OPTIMIZE"; then
|
|
LDFLAGS="$LDFLAGS /OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA"
|
|
DLLFLAGS="$DLLFLAGS /OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA"
|
|
EXEFLAGS="$EXEFLAGS /OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA"
|
|
fi
|
|
LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
|
|
LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
AC_DEFINE(XP_UNIX)
|
|
;;
|
|
|
|
esac
|
|
|
|
if test -z "$SKIP_LIBRARY_CHECKS"; then
|
|
dnl ========================================================
|
|
dnl Check for system libraries
|
|
dnl ========================================================
|
|
dnl AC_CHECK_LIB(C, main)
|
|
dnl AC_CHECK_LIB(C_r, main)
|
|
dnl AC_CHECK_LIB(c, main)
|
|
dnl AC_CHECK_LIB(c_r, main)
|
|
dnl AC_CHECK_LIB(dce, main)
|
|
dnl AC_CHECK_LIB(dl, main)
|
|
dnl AC_CHECK_LIB(dld, main)
|
|
dnl AC_CHECK_LIB(gen, main)
|
|
dnl AC_CHECK_LIB(ip6, main)
|
|
dnl AC_CHECK_LIB(l, main)
|
|
dnl AC_CHECK_LIB(m, main)
|
|
dnl AC_CHECK_LIB(nsl, main)
|
|
dnl AC_CHECK_LIB(posix4, main)
|
|
dnl AC_CHECK_LIB(prstrms, main)
|
|
dnl AC_CHECK_LIB(prstrms_shr, main)
|
|
dnl AC_CHECK_LIB(pthread, main)
|
|
dnl AC_CHECK_LIB(pthreads, main)
|
|
dnl AC_CHECK_LIB(resolv, main)
|
|
dnl AC_CHECK_LIB(rt, main)
|
|
dnl AC_CHECK_LIB(socket, main)
|
|
dnl AC_CHECK_LIB(svld, main)
|
|
dnl AC_CHECK_LIB(thread, main)
|
|
dnl AC_CHECK_LIB(vms_jackets, main)
|
|
|
|
|
|
dnl We don't want anything to link with libdl even if it's present on OS X,
|
|
dnl since it's not used and not part of the default installation.
|
|
|
|
case $target in
|
|
*-darwin*)
|
|
;;
|
|
*)
|
|
AC_CHECK_LIB(dl, dlopen,
|
|
AC_CHECK_HEADER(dlfcn.h,
|
|
OS_LIBS="-ldl $OS_LIBS"))
|
|
;;
|
|
esac
|
|
|
|
|
|
dnl ========================================================
|
|
dnl Check for system header files.
|
|
dnl ========================================================
|
|
dnl AC_HEADER_DIRENT
|
|
dnl AC_HEADER_STDC
|
|
dnl AC_HEADER_SYS_WAIT
|
|
dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/file.h sys/ioctl.h sys/time.h unistd.h)
|
|
|
|
dnl ========================================================
|
|
dnl Check for typedefs and structs
|
|
dnl ========================================================
|
|
dnl AC_C_CONST
|
|
dnl AC_TYPE_UID_T
|
|
dnl AC_TYPE_MODE_T
|
|
dnl AC_TYPE_OFF_T
|
|
dnl AC_TYPE_PID_T
|
|
dnl AC_TYPE_SIZE_T
|
|
dnl AC_STRUCT_ST_BLKSIZE
|
|
dnl AC_STRUCT_ST_BLOCKS
|
|
dnl AC_STRUCT_ST_RDEV
|
|
dnl AC_HEADER_TIME
|
|
dnl AC_STRUCT_TM
|
|
|
|
dnl ========================================================
|
|
dnl Checks for library functions.
|
|
dnl ========================================================
|
|
AC_PROG_GCC_TRADITIONAL
|
|
AC_CHECK_FUNCS(lchown strerror)
|
|
|
|
dnl AC_FUNC_MEMCMP
|
|
dnl AC_FUNC_MMAP
|
|
dnl AC_FUNC_SETVBUF_REVERSED
|
|
dnl AC_FUNC_STRCOLL
|
|
dnl AC_FUNC_STRFTIME
|
|
dnl AC_FUNC_UTIME_NULL
|
|
dnl AC_FUNC_VPRINTF
|
|
dnl AC_CHECK_FUNCS(ftime getcwd gethostname gettimeofday getwd mkdir mktime putenv rmdir select socket strdup strerror strstr strtol strtoul uname)
|
|
|
|
dnl ========================================================
|
|
dnl Check options
|
|
dnl ========================================================
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = --enable-strip
|
|
dnl =
|
|
dnl = Enable stripping of libs and executables
|
|
dnl =
|
|
dnl ========================================================
|
|
AC_ARG_ENABLE(strip,
|
|
[ --enable-strip Enable stripping of shared libs and programs],
|
|
[ if test "$enableval" = "yes"; then
|
|
ENABLE_STRIP=1
|
|
fi ])
|
|
|
|
dnl Check for hpux options
|
|
case "${target_os}" in
|
|
hpux*)
|
|
if test -z "$GNU_CC"; then
|
|
|
|
AC_CACHE_CHECK(for +Olit support,
|
|
ac_cv_hpux_usable_olit_option,
|
|
dnl since aCC doesn't throw an error on invalid options,
|
|
dnl we have to test this the hard way
|
|
[ac_cv_hpux_usable_olit_option=no
|
|
rm -f conftest*
|
|
echo 'int main() { return 0; }' | cat > conftest.c
|
|
${CC-cc} ${CFLAGS} +Olit=all -o conftest conftest.c > conftest.out 2>&1
|
|
if test $? -eq 0; then
|
|
if test -z "`egrep -i '(unrecognize|unknown)' conftest.out`"; then
|
|
ac_cv_hpux_usable_olit_option=yes
|
|
fi
|
|
fi
|
|
rm -f conftest*
|
|
])
|
|
|
|
if test "$ac_cv_hpux_usable_olit_option" = "yes"; then
|
|
CFLAGS="$CFLAGS +Olit=all"
|
|
CXXFLAGS="$CXXFLAGS +Olit=all"
|
|
else
|
|
CFLAGS="$CFLAGS +ESlit"
|
|
CXXFLAGS="$CXXFLAGS +ESlit"
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
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) { return v; }
|
|
int main() {
|
|
pthread_t t;
|
|
if (!pthread_create(&t, 0, &foo, 0)) {
|
|
pthread_join(t, 0);
|
|
}
|
|
return 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
|
|
if test -n "$_HAVE_PTHREADS"; then
|
|
USE_PTHREADS=1
|
|
USE_USER_PTHREADS=
|
|
USE_NSPR_THREADS=
|
|
else
|
|
AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
|
|
fi
|
|
else
|
|
USE_PTHREADS=
|
|
_PTHREAD_LDFLAGS=
|
|
fi],
|
|
[ if test -n "$_HAVE_PTHREADS" && test -z "$USE_USER_PTHREADS" && test -z "$USE_NSPR_THREADS"; then
|
|
USE_PTHREADS=1
|
|
USE_USER_PTHREADS=
|
|
USE_NSPR_THREADS=
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(user-pthreads,
|
|
[ --enable-user-pthreads Build using userland pthreads],
|
|
[ if test "$enableval" = "yes"; then
|
|
if test -n "$_HAVE_PTHREADS"; then
|
|
USE_PTHREADS=
|
|
USE_USER_PTHREADS=1
|
|
USE_NSPR_THREADS=
|
|
else
|
|
AC_MSG_ERROR([ --enable-user-pthreads specified for a system without pthread support ]);
|
|
fi
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(nspr-threads,
|
|
[ --enable-nspr-threads Build using classic nspr threads],
|
|
[ if test "$enableval" = "yes"; then
|
|
USE_PTHREADS=
|
|
USE_USER_PTHREADS=
|
|
USE_NSPR_THREADS=1
|
|
fi])
|
|
|
|
case "$target" in
|
|
*-beos*)
|
|
AC_ARG_WITH(bthreads,
|
|
[ --with-bthreads Use system bthreads library as thread subsystem (BeOS only)],
|
|
[ if test "$withval" = "yes"; then
|
|
USE_BTHREADS=1
|
|
USE_USER_PTHREADS=
|
|
USE_PTHREADS=
|
|
fi])
|
|
;;
|
|
|
|
*-solaris*)
|
|
AC_ARG_WITH(native-threads,
|
|
[ --with-native-threads Use native system threads as thread subsystem (Solaris only)],
|
|
[ if test "$withval" = "yes"; then
|
|
USE_NATIVE_THREADS=1
|
|
USE_USER_PTHREADS=
|
|
USE_PTHREADS=
|
|
fi])
|
|
;;
|
|
esac
|
|
|
|
fi # SKIP_LIBRARY_CHECKS
|
|
|
|
AC_ARG_ENABLE(cplus,
|
|
[ --enable-cplus Enable some c++ api routines],
|
|
[ if test "$enableval" = "yes"; then
|
|
USE_CPLUS=1
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(ipv6,
|
|
[ --enable-ipv6 Compile ipv6 support],
|
|
[ if test "$enableval" = "yes"; then
|
|
USE_IPV6=1
|
|
else
|
|
USE_IPV6=
|
|
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*
|
|
ac_cv_have_dash_pthread=no
|
|
AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
|
|
echo 'int main() { return 0; }' | cat > conftest.c
|
|
${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
|
|
if test $? -eq 0; then
|
|
if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
|
|
ac_cv_have_dash_pthread=yes
|
|
case "$target_os" in
|
|
freebsd*)
|
|
# Freebsd doesn't use -pthread for compiles, it uses them for linking
|
|
;;
|
|
*)
|
|
CFLAGS="$CFLAGS -pthread"
|
|
CXXFLAGS="$CXXFLAGS -pthread"
|
|
;;
|
|
esac
|
|
fi
|
|
fi
|
|
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
|
|
*-solaris*)
|
|
if test "$ac_cv_have_dash_pthreads" = "yes"; then
|
|
_PTHREAD_LDFLAGS=
|
|
fi
|
|
;;
|
|
*-freebsd*)
|
|
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"
|
|
else
|
|
_PTHREAD_LDFLAGS="-lc_r"
|
|
fi
|
|
;;
|
|
*-netbsd*)
|
|
if test "$ac_cv_have_dash_pthread" = "yes"; then
|
|
_PTHREAD_LDFLAGS="-pthread"
|
|
fi
|
|
;;
|
|
*-bsdi*)
|
|
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=
|
|
fi
|
|
;;
|
|
*-openbsd*)
|
|
if test "$ac_cv_have_dash_pthread" = "yes"; then
|
|
_PTHREAD_LDFLAGS=-pthread
|
|
fi
|
|
;;
|
|
*-linux*)
|
|
AC_DEFINE(_REENTRANT)
|
|
;;
|
|
esac
|
|
|
|
else
|
|
if test -n "$USE_USER_PTHREADS"; then
|
|
USE_PTHREADS=
|
|
USE_NSPR_THREADS=
|
|
else
|
|
_PTHREAD_LDFLAGS=
|
|
fi
|
|
fi
|
|
dnl Special thread exceptions
|
|
|
|
case "$target" in
|
|
*-aix*)
|
|
if test -n "$USE_NSPR_THREADS"; then
|
|
AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
|
|
fi
|
|
case "$target_os" in
|
|
aix4.1*)
|
|
if test -z "$USE_PTHREADS"; then
|
|
AC_DEFINE(AIX_RENAME_SELECT)
|
|
fi
|
|
;;
|
|
aix4.2*)
|
|
if test -z "$USE_NSPR_THREADS"; then
|
|
AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
|
|
fi
|
|
;;
|
|
aix4.3*)
|
|
if test -z "$USE_NSPR_THREADS"; then
|
|
AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
|
|
fi
|
|
if test -n "$USE_PTHREADS"; then
|
|
AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
|
|
fi
|
|
;;
|
|
*)
|
|
if test -z "$USE_NSPR_THREADS"; then
|
|
AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
|
|
fi
|
|
if test -n "$USE_PTHREADS"; then
|
|
AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
*-bsdi*)
|
|
if test -n "$USE_PTHREADS"; then
|
|
AC_DEFINE(_PR_NEED_PTHREAD_INIT)
|
|
fi
|
|
;;
|
|
*-freebsd*)
|
|
if test -n "$USE_NSPR_THREADS"; then
|
|
AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
|
|
fi
|
|
;;
|
|
*-hpux*)
|
|
if test -n "$USE_NSPR_THREADS"; then
|
|
AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
|
|
fi
|
|
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)
|
|
AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
|
|
fi
|
|
fi
|
|
if test "$USE_USER_PTHREADS"; then
|
|
AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
|
|
fi
|
|
;;
|
|
*-irix*)
|
|
if test "${target_os}" = "irix6.5"; then
|
|
if test -n "$USE_PTHREADS"; then
|
|
AC_DEFINE(_PR_HAVE_GETHOST_R)
|
|
AC_DEFINE(_PR_HAVE_GETHOST_R_POINTER)
|
|
fi
|
|
fi
|
|
;;
|
|
*-linux*)
|
|
if test -n "$USE_NSPR_THREADS"; then
|
|
AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
|
|
fi
|
|
;;
|
|
*-mingw*|*-cygwin*|*-msvc*|*-mks*)
|
|
dnl win32 does not use pthreads
|
|
USE_PTHREADS=
|
|
_PTHREAD_LDFLAGS=
|
|
USE_USER_PTHREADS=
|
|
;;
|
|
*-netbsd*|*-openbsd*)
|
|
if test -n "$USE_NSPR_THREADS"; then
|
|
AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
|
|
fi
|
|
;;
|
|
*-osf*)
|
|
if test -n "$USE_NSPR_THREADS"; then
|
|
AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
|
|
fi
|
|
if test -n "$USE_PTHREADS"; then
|
|
if echo $OS_RELEASE | egrep -c '(V2.0|V3.2)' 2>/dev/null; then
|
|
:
|
|
else
|
|
AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
|
|
fi
|
|
fi
|
|
;;
|
|
*-solaris*)
|
|
if test -n "$USE_NATIVE_THREADS"; then
|
|
AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
|
|
else
|
|
if test -n "$USE_NSPR_THREADS"; then
|
|
AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
|
|
fi
|
|
fi
|
|
if test -z "$USE_NSPR_THREADS"; then
|
|
AC_DEFINE(_REENTRANT)
|
|
AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
|
|
if test "$OS_TEST" = "i86pc"; then
|
|
if test -n "$USE_64"; then
|
|
PR_MD_ASFILES=os_SunOS_x86_64.s
|
|
else
|
|
PR_MD_ASFILES=os_SunOS_x86.s
|
|
fi
|
|
else
|
|
PR_MD_ASFILES=os_SunOS.s
|
|
if test -n "$USE_64"; then
|
|
PR_MD_ASFILES="$PR_MD_ASFILES os_SunOS_sparcv9.s"
|
|
fi
|
|
fi
|
|
fi
|
|
;;
|
|
*-nto*)
|
|
if test -n "$USE_PTHREADS"; then
|
|
AC_DEFINE(_PR_HAVE_GETHOST_R)
|
|
AC_DEFINE(_PR_HAVE_GETHOST_R_POINTER)
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
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"
|
|
CXXFLAGS="$CXXFLAGS $_OPTIMIZE_FLAGS"
|
|
fi
|
|
|
|
if test -n "$MOZ_DEBUG"; then
|
|
CFLAGS="$CFLAGS $_DEBUG_FLAGS"
|
|
CXXFLAGS="$CXXFLAGS $_DEBUG_FLAGS"
|
|
fi
|
|
|
|
if test -n "$MOZ_OPTIMIZE"; then
|
|
OBJDIR_TAG=_OPT
|
|
else
|
|
OBJDIR_TAG=_DBG
|
|
fi
|
|
|
|
if test -n "$USE_64"; then
|
|
COMPILER_TAG=_64
|
|
fi
|
|
|
|
RELEASE_OBJDIR_NAME="${OS_CONFIG}${CPU_ARCH_TAG}${COMPILER_TAG}${IMPL_STRATEGY}${OBJDIR_TAG}.${OBJDIR_SUFFIX}"
|
|
|
|
dnl ========================================================
|
|
dnl Use cygwin wrapper for win32 builds
|
|
dnl ========================================================
|
|
case "$target_os" in
|
|
mingw*|cygwin*|msvc*|mks*)
|
|
CC="\$(CYGWIN_WRAPPER) $CC"
|
|
CXX="\$(CYGWIN_WRAPPER) $CXX"
|
|
RC="\$(CYGWIN_WRAPPER) $RC"
|
|
;;
|
|
esac
|
|
|
|
dnl ========================================================
|
|
dnl Substitution of found variables.
|
|
dnl ========================================================
|
|
AC_SUBST(SHELL_OVERRIDE)
|
|
|
|
AC_SUBST(MOZILLA_CLIENT)
|
|
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(GCC_USE_GNU_LD)
|
|
AC_SUBST(MSC_VER)
|
|
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(OBJECT_MODE)
|
|
AC_SUBST(GC_LEAK_DETECTOR)
|
|
AC_SUBST(ENABLE_STRIP)
|
|
|
|
AC_SUBST(USE_PTHREADS)
|
|
AC_SUBST(USE_BTHREADS)
|
|
AC_SUBST(USE_USER_PTHREADS)
|
|
AC_SUBST(USE_NATIVE_THREADS)
|
|
AC_SUBST(USE_NSPR_THREADS)
|
|
|
|
AC_SUBST(LIBNSPR)
|
|
AC_SUBST(LIBPLC)
|
|
|
|
AC_SUBST(MOD_MAJOR_VERSION)
|
|
AC_SUBST(MOD_MINOR_VERSION)
|
|
AC_SUBST(MOD_PATCH_VERSION)
|
|
AC_SUBST(NSPR_MODNAME)
|
|
AC_SUBST(MDCPUCFG_H)
|
|
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)
|
|
AC_SUBST(DLL_SUFFIX)
|
|
AC_SUBST(ASM_SUFFIX)
|
|
AC_SUBST(MKSHLIB)
|
|
AC_SUBST(DSO_CFLAGS)
|
|
AC_SUBST(DSO_LDOPTS)
|
|
|
|
AC_SUBST(OS_TARGET)
|
|
AC_SUBST(OS_ARCH)
|
|
AC_SUBST(OS_RELEASE)
|
|
AC_SUBST(OS_TEST)
|
|
AC_SUBST(MACOS_DEPLOYMENT_TARGET)
|
|
|
|
AC_SUBST(DEFINES)
|
|
AC_SUBST(DEFS)
|
|
AC_SUBST(AR)
|
|
AC_SUBST(AR_FLAGS)
|
|
AC_SUBST(AS)
|
|
AC_SUBST(ASFLAGS)
|
|
AC_SUBST(LD)
|
|
AC_SUBST(RANLIB)
|
|
AC_SUBST(PERL)
|
|
AC_SUBST(STRIP)
|
|
AC_SUBST(FILTER)
|
|
AC_SUBST(IMPLIB)
|
|
|
|
AC_SUBST(OS_LIBS)
|
|
AC_SUBST(RESOLVE_LINK_SYMBOLS)
|
|
AC_SUBST(AIX_LINK_OPTS)
|
|
AC_SUBST(NOSUCHFILE)
|
|
AC_SUBST(MOZ_OBJFORMAT)
|
|
AC_SUBST(ULTRASPARC_LIBRARY)
|
|
|
|
AC_SUBST(OBJDIR)
|
|
AC_SUBST(OBJDIR_NAME)
|
|
AC_SUBST(RELEASE_OBJDIR_NAME)
|
|
AC_SUBST(NSINSTALL)
|
|
AC_SUBST(OPTIMIZER)
|
|
AC_SUBST(RC)
|
|
AC_SUBST(RCFLAGS)
|
|
AC_SUBST(DLLFLAGS)
|
|
AC_SUBST(EXEFLAGS)
|
|
AC_SUBST(OS_DLLFLAGS)
|
|
AC_SUBST(CYGWIN_WRAPPER)
|
|
AC_SUBST(VISIBILITY_FLAGS)
|
|
AC_SUBST(WRAP_SYSTEM_INCLUDES)
|
|
|
|
dnl ========================================================
|
|
dnl Generate output files.
|
|
dnl ========================================================
|
|
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/tests/Makefile
|
|
pkg/Makefile
|
|
pkg/linux/Makefile
|
|
pkg/solaris/Makefile
|
|
pkg/solaris/SUNWpr/Makefile
|
|
pkg/solaris/SUNWprd/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
|
|
"
|
|
|
|
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
|
|
|
|
AC_OUTPUT([$MAKEFILES], [chmod +x config/nspr-config])
|