1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
3 dnl ***** BEGIN LICENSE BLOCK *****
4 dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 dnl The contents of this file are subject to the Mozilla Public License Version
7 dnl 1.1 (the "License"); you may not use this file except in compliance with
8 dnl the License. You may obtain a copy of the License at
9 dnl http://www.mozilla.org/MPL/
11 dnl Software distributed under the License is distributed on an "AS IS" basis,
12 dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 dnl for the specific language governing rights and limitations under the
16 dnl The Original Code is the Netscape Portable Runtime (NSPR).
18 dnl The Initial Developer of the Original Code is
19 dnl Netscape Communications Corporation.
20 dnl Portions created by the Initial Developer are Copyright (C) 1998
21 dnl the Initial Developer. All Rights Reserved.
24 dnl Christopher Seawood <cls@seawood.org>
25 dnl Howard Chu <hyc@symas.com>
26 dnl Mark Mentovai <mark@moxienet.com>
28 dnl Alternatively, the contents of this file may be used under the terms of
29 dnl either the GNU General Public License Version 2 or later (the "GPL"), or
30 dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
31 dnl in which case the provisions of the GPL or the LGPL are applicable instead
32 dnl of those above. If you wish to allow use of your version of this file only
33 dnl under the terms of either the GPL or the LGPL, and not to allow others to
34 dnl use your version of this file under the terms of the MPL, indicate your
35 dnl decision by deleting the provisions above and replace them with the notice
36 dnl and other provisions required by the GPL or the LGPL. If you do not delete
37 dnl the provisions above, a recipient may use your version of this file under
38 dnl the terms of any one of the MPL, the GPL or the LGPL.
40 dnl ***** END LICENSE BLOCK *****
43 AC_INIT(config/libc_r.h)
45 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
48 dnl ========================================================
50 dnl ========================================================
64 _MACOSX_DEPLOYMENT_TARGET=
69 OBJDIR='$(OBJDIR_NAME)'
72 NSINSTALL='$(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall'
73 NOSUCHFILE=/no-such-file
74 LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)'
75 LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)'
82 dnl Link in libraries necessary to resolve all symbols for shared libs
85 dnl ========================================================
87 dnl = Dont change the following lines. Doing so breaks:
89 dnl = CFLAGS="-foo" ./configure
91 dnl ========================================================
93 CXXFLAGS="${CXXFLAGS=}"
95 DLLFLAGS="${DLLFLAGS=}"
96 HOST_CFLAGS="${HOST_CFLAGS=}"
97 HOST_LDFLAGS="${HOST_LDFLAGS=}"
101 # Check to see if we are really running in a msvc environemnt
103 AC_CHECK_PROGS(CC, cl)
104 if test "$CC" = "cl"; then
105 echo 'main() { return 0; }' > dummy.c
106 ${CC} -o dummy dummy.c >/dev/null 2>&1
111 AC_MSG_WARN([$(CC) test failed. Using normal feature tests])
113 rm -f dummy dummy.o dummy.obj dummy.exe dummy.c
124 if test -n "$_WIN32_MSVC"; then
126 SKIP_COMPILER_CHECKS=1
127 SKIP_LIBRARY_CHECKS=1
130 dnl ========================================================
132 dnl = Check options that may affect the compiler
134 dnl ========================================================
135 dist_prefix='${MOD_DEPTH}/dist'
136 dist_bindir='${dist_prefix}/bin'
137 dist_includedir='${dist_prefix}/include/nspr'
138 dist_libdir='${dist_prefix}/lib'
139 dnl If the --includedir option was not specified, add '/nspr' to autoconf's
140 dnl default value of includedir.
141 if test "${includedir}" = '${prefix}/include'; then
142 includedir='${prefix}/include/nspr'
145 AC_ARG_WITH(dist-prefix,
146 [ --with-dist-prefix=DIST_PREFIX
147 place build files in DIST_PREFIX [dist]],
148 dist_prefix=$withval)
150 AC_ARG_WITH(dist-bindir,
151 [ --with-dist-bindir=DIR build execuatables in DIR [DIST_PREFIX/bin]],
152 dist_bindir=$withval)
154 AC_ARG_WITH(dist-includedir,
155 [ --with-dist-includedir=DIR
156 build include files in DIR [DIST_PREFIX/include/nspr]],
157 dist_includedir=$withval)
159 AC_ARG_WITH(dist-libdir,
160 [ --with-dist-libdir=DIR build library files in DIR [DIST_PREFIX/lib]],
161 dist_libdir=$withval)
163 AC_SUBST(dist_prefix)
164 AC_SUBST(dist_bindir)
165 AC_SUBST(dist_includedir)
166 AC_SUBST(dist_libdir)
168 dnl Check if NSPR is being compiled for Mozilla
169 dnl Let --with-arg override environment setting
172 [ --with-mozilla Compile NSPR with Mozilla support],
173 [ if test "$withval" = "yes"; then
174 AC_DEFINE(MOZILLA_CLIENT)
179 [ if test -n "$MOZILLA_CLIENT"; then
180 AC_DEFINE(MOZILLA_CLIENT)
183 AC_ARG_ENABLE(optimize,
184 [ --enable-optimize(=val) Enable code optimizations (val, ie. -O2) ],
185 [ if test "$enableval" != "no"; then
187 if test -n "$enableval" && test "$enableval" != "yes"; then
188 _OPTIMIZE_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
189 _SAVE_OPTIMIZE_FLAGS=$_OPTIMIZE_FLAGS
196 [ --disable-debug Do not compile in debugging symbols
197 --enable-debug(=val) Enable debugging (debug flags val)],
198 [ if test "$enableval" = "no"; then
202 if test -n "$enableval" && test "$enableval" != "yes"; then
203 _DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
204 _SAVE_DEBUG_FLAGS=$_DEBUG_FLAGS
208 AC_ARG_ENABLE(win32-target,
209 [ --enable-win32-target=\$t
210 Specify win32 flavor. (WIN95 or WINNT)],
211 OS_TARGET=`echo $enableval | tr a-z A-Z`)
213 AC_ARG_ENABLE(symbian-target,
214 [ --enable-symbian-target=\$t
215 Specify symbian flavor. (WINSCW or GCCE)],
216 OS_TARGET=`echo $enableval | tr a-z A-Z`)
218 AC_ARG_ENABLE(debug-rtl,
219 [ --enable-debug-rtl Use the MSVC debug runtime library],
220 [ if test "$enableval" = "yes"; then
225 [ --enable-n32 Enable n32 ABI support (IRIX only)],
226 [ if test "$enableval" = "yes"; then
228 else if test "$enableval" = "no"; then
234 [ --enable-64bit Enable 64-bit support (on certain platforms)],
235 [ if test "$enableval" = "yes"; then
239 AC_ARG_ENABLE(mdupdate,
240 [ --enable-mdupdate Enable use of certain compilers' mdupdate feature],
241 [ if test "$enableval" = "yes"; then
246 [ --enable-cplus Enable some c++ api routines],
247 [ if test "$enableval" = "yes"; then
251 AC_ARG_WITH(arm-kuser,
252 [ --with-arm-kuser Use kuser helpers (Linux/ARM only)
253 (Requires kernel 2.6.13 or later)],
254 [ if test "$withval" = "yes"; then
255 AC_DEFINE(_PR_ARM_KUSER)
258 dnl ========================================================
259 dnl = Mac OS X SDK support
260 dnl ========================================================
261 AC_ARG_WITH(macos-sdk,
262 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
263 MACOS_SDK_DIR=$withval)
265 AC_ARG_ENABLE(macos-target,
266 [ --enable-macos-target=VER
267 Set the minimum MacOS version needed at runtime
268 [10.2 for ppc, 10.4 for x86]],
269 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
271 dnl ========================================================
273 dnl = Set the threading model
275 dnl ========================================================
279 case "${target_os}" in
291 dnl ========================================================
293 dnl = Set the default C compiler
295 dnl ========================================================
296 if test -z "$CC"; then
300 if test -z "$USE_NSPR_THREADS"; then
326 dnl ========================================================
328 dnl = Set the default C++ compiler
330 dnl ========================================================
331 if test -z "$CXX"; then
335 if test -z "$USE_NSPR_THREADS"; then
343 case "${target_os}" in
371 if test -z "$SKIP_PATH_CHECKS"; then
372 AC_PATH_PROG(WHOAMI, $WHOAMI whoami, echo not_whoami)
375 if test -n "$MOZ_DEBUG"; then
377 DEFINES="$DEFINES -UNDEBUG"
379 case "${target_os}" in
381 DEFINES="$DEFINES -DDEBUG_${USER}"
383 msvc*|mks*|cygwin*|mingw*|wince*|os2*)
384 DEFINES="$DEFINES -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
387 DEFINES="$DEFINES -DDEBUG_`$WHOAMI`"
392 DEFINES="$DEFINES -UDEBUG"
395 if test -z "$SKIP_COMPILER_CHECKS"; then
396 dnl ========================================================
397 dnl Checks for compilers.
398 dnl ========================================================
399 if test "$target" != "$host"; then
400 echo "cross compiling from $host to $target"
404 _SAVE_CFLAGS="$CFLAGS"
405 _SAVE_LDFLAGS="$LDFLAGS"
407 AC_MSG_CHECKING([for $host compiler])
408 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc, "")
409 if test -z "$HOST_CC"; then
410 AC_MSG_ERROR([no acceptable cc found in \$PATH])
412 AC_MSG_RESULT([$HOST_CC])
413 if test -z "$HOST_CFLAGS"; then
414 HOST_CFLAGS="$CFLAGS"
416 if test -z "$HOST_LDFLAGS"; then
417 HOST_LDFLAGS="$LDFLAGS"
421 CFLAGS="$HOST_CFLAGS"
422 LDFLAGS="$HOST_LDFLAGS"
424 AC_MSG_CHECKING([whether the $host compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
425 AC_TRY_COMPILE([], [return(0);],
426 [ac_cv_prog_host_cc_works=1 AC_MSG_RESULT([yes])],
427 AC_MSG_ERROR([installation or configuration problem: $host compiler $HOST_CC cannot create executables.]) )
431 LDFLAGS=$_SAVE_LDFLAGS
433 case "$build:$target" in
434 powerpc-apple-darwin8*:i?86-apple-darwin*)
435 dnl The Darwin cross compiler doesn't necessarily point itself at a
436 dnl root that has libraries for the proper architecture, it defaults
437 dnl to the system root. The libraries in the system root on current
438 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
439 dnl checks will fail. Fake a working SDK in that case.
441 _SAVE_CXXFLAGS=$CXXLAGS
442 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
443 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
447 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", echo)
450 if test -n "$USE_CPLUS"; then
451 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", echo)
456 case "$build:$target" in
457 powerpc-apple-darwin8*:i?86-apple-darwin*)
458 dnl Revert the changes made above. From this point on, the target
459 dnl compiler will never be used without applying the SDK to CFLAGS
460 dnl (see --with-macos-sdk below).
462 CXXFLAGS=$_SAVE_CXXFLAGS
466 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", echo)
467 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", echo)
468 AC_CHECK_PROGS(AS, $AS "${target_alias}-as" "${target}-as", echo)
469 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", echo)
470 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", echo)
471 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", echo)
475 if test -n "$USE_CPLUS"; then
476 if test "$CC" = "cl" -a -z "$CXX"; then
484 AC_PATH_PROGS(AS, as, $CC)
485 AC_PATH_PROGS(AR, ar, echo not_ar)
486 AC_PATH_PROGS(LD, ld link, echo not_ld)
487 AC_PATH_PROGS(STRIP, strip, echo not_strip)
488 AC_PATH_PROGS(WINDRES, windres, echo not_windres)
489 if test -z "$HOST_CC"; then
492 if test -z "$HOST_CFLAGS"; then
493 HOST_CFLAGS="$CFLAGS"
497 if test "$GCC" = "yes"; then
500 if test "$GXX" = "yes"; then
503 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
508 case "$build:$target" in
509 i?86-apple-darwin*:powerpc-apple-darwin*)
510 dnl cross_compiling will have erroneously been set to "no" in this
511 dnl case, because the x86 build host is able to run ppc code in a
512 dnl translated environment, making a cross compiler appear native.
517 if test "$cross_compiling" = "yes"; then
523 dnl ========================================================
524 dnl Check for gcc -pipe support
525 dnl ========================================================
526 AC_MSG_CHECKING([for gcc -pipe support])
527 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
528 echo '#include <stdio.h>' > dummy-hello.c
529 echo 'int main() { printf("Hello World\n"); return 0; }' >> dummy-hello.c
530 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
531 cat dummy-hello.s | ${AS} -o dummy-hello.S - 2>&5
537 if test "$_res_as_stdin" = "yes"; then
539 CFLAGS="$CFLAGS -pipe"
540 AC_TRY_COMPILE( [ #include <stdio.h> ],
541 [printf("Hello World\n");],
542 [_res_gcc_pipe="yes"],
543 [_res_gcc_pipe="no"] )
546 if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
548 CFLAGS="$CFLAGS -pipe"
549 CXXFLAGS="$CXXFLAGS -pipe"
553 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
554 AC_MSG_RESULT([$_res])
559 dnl ===============================================================
560 dnl Check for .hidden assembler directive and visibility attribute.
561 dnl Borrowed from glibc configure.in
562 dnl ===============================================================
563 if test "$GNU_CC"; then
564 AC_CACHE_CHECK(for visibility(hidden) attribute,
565 ac_cv_visibility_hidden,
566 [cat > conftest.c <<EOF
567 int foo __attribute__ ((visibility ("hidden"))) = 1;
569 ac_cv_visibility_hidden=no
570 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
571 if grep '\.hidden.*foo' conftest.s >/dev/null; then
572 ac_cv_visibility_hidden=yes
577 if test "$ac_cv_visibility_hidden" = "yes"; then
578 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
579 AC_CACHE_CHECK(for visibility pragma support,
580 ac_cv_visibility_pragma,
581 [cat > conftest.c <<EOF
582 #pragma GCC visibility push(hidden)
584 #pragma GCC visibility push(default)
587 ac_cv_visibility_pragma=no
588 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
589 if grep '\.hidden.*foo_hidden' conftest.s >/dev/null; then
590 if ! grep '\.hidden.*foo_default' conftest.s > /dev/null; then
591 ac_cv_visibility_pragma=yes
597 if test "$ac_cv_visibility_pragma" = "yes"; then
598 AC_DEFINE(HAVE_VISIBILITY_PRAGMA)
599 # To work around a build problem on Linux x86-64 (Bugzilla bug
600 # 293438), we use the -fvisibility=hidden flag. This flag is less
601 # optimal than #pragma GCC visibility push(hidden) because the flag
602 # assumes that symbols defined outside the current source file have
603 # the default visibility. This has the advantage that we don't need
604 # to wrap system header files, but has the disadvantage that calls
605 # to hidden symbols defined in other source files cannot be
606 # optimized by the compiler. The -fvisibility=hidden flag does
607 # hide and export symbols correctly.
608 #VISIBILITY_FLAGS='-I$(dist_includedir)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
609 #WRAP_SYSTEM_INCLUDES=1
610 VISIBILITY_FLAGS="-fvisibility=hidden"
611 WRAP_SYSTEM_INCLUDES=
616 fi # SKIP_COMPILER_CHECKS
618 dnl ========================================================
619 dnl Checks for programs.
620 dnl ========================================================
621 if test -z "$SKIP_PATH_CHECKS"; then
622 AC_PATH_PROGS(PERL, perl5 perl, echo not_perl)
623 elif test -z "$PERL"; then
627 dnl ========================================================
628 dnl Default platform specific options
629 dnl ========================================================
634 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
642 if test -n "$CROSS_COMPILE"; then
643 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
645 OS_TEST="${target_cpu}"
646 case "${target_os}" in
647 linux*) OS_ARCH=Linux ;;
648 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
649 mingw*) OS_ARCH=WINNT ;;
650 wince*) OS_ARCH=WINCE ;;
651 darwin*) OS_ARCH=Darwin ;;
654 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
655 OS_RELEASE=`uname -r`
659 if test "$OS_ARCH" = "IRIX64"; then
663 if test "$OS_ARCH" = "AIX"; then
664 OS_RELEASE=`uname -v`.`uname -r`
667 if test "$OS_ARCH" = "FreeBSD"; then
668 OS_RELEASE=`echo $OS_RELEASE | sed 's/-.*//'`
671 if test "$OS_ARCH" = "Linux"; then
672 OS_RELEASE=`echo $OS_RELEASE | sed 's/-.*//'`
673 OS_RELEASE=`echo $OS_RELEASE | awk -F\. '{ print $1 "." $2 }'`
676 #######################################################################
677 # Master "Core Components" macros for getting the OS target #
678 #######################################################################
681 # Note: OS_TARGET should be specified on the command line for gmake.
682 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
683 # The difference between the Win95 target and the WinNT target is that
684 # the WinNT target uses Windows NT specific features not available
685 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
686 # at lesser performance (the Win95 target uses threads; the WinNT target
689 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
694 # The following hack allows one to build on a WIN95 machine (as if
695 # s/he were cross-compiling on a WINNT host for a WIN95 target).
696 # It also accomodates for MKS's uname.exe. If you never intend
697 # to do development on a WIN95 machine, you don't need this hack.
712 CYGWIN_9*|CYGWIN_ME*)
713 OS_ARCH='CYGWIN_NT-4.0'
723 # On WIN32, we also define the variable CPU_ARCH.
729 if test "$CPU_ARCH" = "I386"; then
735 # If uname -s returns "Windows_NT", we assume that we are using
736 # the uname.exe in MKS toolkit.
738 # The -r option of MKS uname only returns the major version number.
739 # So we need to use its -v option to get the minor version number.
740 # Moreover, it doesn't have the -p option, so we need to use uname -m.
743 OS_MINOR_RELEASE=`uname -v`
744 if test "$OS_MINOR_RELEASE" = "00"; then
747 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
750 # MKS's uname -m returns "586" on a Pentium machine.
752 if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
756 CYGWIN_NT*|MINGW*_NT*)
758 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
759 # the uname.exe in the Cygwin tools.
760 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
761 # the uname.exe in the MSYS tools.
763 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
767 # Cygwin's uname -m returns "i686" on a Pentium Pro machine.
769 if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
775 if test -n "$MOZILLA_CLIENT" && test "$OS_ARCH" = "WINNT"; then
777 if test -n "$MOZ_DEBUG"; then
781 if test -z "$OS_TARGET"; then
784 if test "$OS_TARGET" = "WIN95"; then
787 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
789 dnl ========================================================
790 dnl Enable high-memory support on OS/2 by default.
791 dnl ========================================================
792 AC_ARG_ENABLE(os2-high-mem,
793 [ --disable-os2-high-mem Disable high-memory support on OS/2],
794 [ if test "$enableval" = "no"; then
797 MOZ_OS2_HIGH_MEMORY=1
800 dnl ========================================================
801 dnl Override of system specific host options
802 dnl ========================================================
807 *-cygwin*|*-msvc*|*-mks*|*-wince*)
808 NSINSTALL='$(CYGWIN_WRAPPER) nsinstall'
809 if test `echo "${PATH}" | grep -c \;` = 0; then
810 CYGWIN_WRAPPER='sh $(topsrcdir)/build/cygwin-wrapper'
814 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE"
819 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
823 dnl ========================================================
824 dnl Override of system specific target options
825 dnl ========================================================
832 DSO_LDOPTS='-brtl -bnortllib -bM:SRE -bnoentry -bexpall -blibpath:/usr/lib:/lib'
833 AC_CHECK_HEADER(sys/atomic_op.h, AC_DEFINE(AIX_HAVE_ATOMIC_OP_H))
834 case "${target_os}" in
836 AC_DEFINE(AIX_RENAME_SELECT)
837 AC_DEFINE(_PR_NO_LARGE_FILES)
838 AIX_LINK_OPTS='-bnso -berok'
839 PR_MD_ASFILES=os_AIX.s
842 AC_DEFINE(AIX_TIMERS)
843 AC_DEFINE(_PR_NO_LARGE_FILES)
847 AIX_LINK_OPTS='-bnso -berok'
848 LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)_shr'
849 LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)_shr'
852 AC_DEFINE(AIX_TIMERS)
853 AC_DEFINE(_PR_HAVE_OFF64_T)
854 AIX_LINK_OPTS='-brtl -bnso -berok'
857 AC_DEFINE(AIX_TIMERS)
858 AC_DEFINE(_PR_HAVE_OFF64_T)
859 AC_DEFINE(AIX4_3_PLUS)
860 AC_DEFINE(HAVE_SOCKLEN_T)
861 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
863 AIX_LINK_OPTS='-brtl -bnso -berok'
866 AC_DEFINE(AIX_TIMERS)
867 AC_DEFINE(_PR_HAVE_OFF64_T)
868 AC_DEFINE(AIX4_3_PLUS)
869 AC_DEFINE(HAVE_SOCKLEN_T)
870 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
872 AIX_LINK_OPTS='-brtl -bnso -berok'
875 CFLAGS="$CFLAGS -qro -qroconst"
876 AIX_WRAP='$(DIST)/lib/aixwrap.o'
877 AIX_TMP='./_aix_tmp.o'
878 if test -n "$USE_64"; then
879 MDCPUCFG_H=_aix64.cfg
882 MDCPUCFG_H=_aix32.cfg
885 RESOLVE_LINK_SYMBOLS=1
892 AC_DEFINE(_POSIX_SOURCE)
897 RESOLVE_LINK_SYMBOLS=1
898 case "${target_cpu}" in
901 _DEBUG_FLAGS='-gdwarf-2 -O0'
902 MKSHLIB='$(CCC) $(DSO_LDOPTS) -o $@'
903 AC_CHECK_LIB(bind, gethostbyaddr, [OS_LIBS="$OS_LIBS -lbind -lsocket"])
909 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'
911 _DEBUG_FLAGS='-g -O0'
919 AC_DEFINE(NEED_BSDREGEX)
921 CFLAGS="$CFLAGS -Wall -Wno-format"
922 CXXFLAGS="$CXXFLAGS -Wall -Wno-format"
924 if echo "$OS_TEST" | grep -c 86 >/dev/null; then
926 elif echo "$OS_TEST" | grep -c sparc >/dev/null; then
937 AC_DEFINE(_PR_BSDI_JMPBUF_IS_ARRAY)
938 AC_DEFINE(_PR_STAT_HAS_ONLY_ST_ATIME)
939 AC_DEFINE(_PR_NEED_H_ERRNO)
946 AC_DEFINE(_PR_TIMESPEC_HAS_TS_SEC)
947 AC_DEFINE(_PR_BSDI_JMPBUF_IS_ARRAY)
950 AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
951 PR_MD_ASFILES=os_BSD_OS_386_2.s
955 AC_DEFINE(_PR_SELECT_CONST_TIMEVAL)
956 AC_DEFINE(_PR_BSDI_JMPBUF_IS_STRUCT)
959 AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
960 MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)'
962 DSO_LDOPTS='-shared -Wl,-soname,$(@:$(OBJDIR)/%.so=%.so)'
965 bsdi4.2* | bsdi4.3* | bsdi5.*)
966 AC_DEFINE(_PR_HAVE_GETPROTO_R)
967 AC_DEFINE(_PR_HAVE_GETPROTO_R_POINTER)
972 AC_DEFINE(_PR_SELECT_CONST_TIMEVAL)
973 AC_DEFINE(_PR_BSDI_JMPBUF_IS_STRUCT)
976 AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
985 AC_DEFINE(HAVE_BSD_FLOCK)
986 AC_DEFINE(HAVE_SOCKLEN_T)
987 AS='$(CC) -x assembler-with-cpp'
988 CFLAGS="$CFLAGS -Wall -fno-common"
989 case "${target_cpu}" in
991 if test -n "$USE_64"; then
993 CC="$CC -arch x86_64"
1003 DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load -install_name @executable_path/$@ -headerpad_max_install_names'
1005 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1006 STRIP="$STRIP -x -S"
1009 MDCPUCFG_H=_darwin.cfg
1010 PR_MD_CSRCS=darwin.c
1011 PR_MD_ASFILES=os_Darwin.s
1013 # Add Mac OS X support for loading CFM & CFBundle plugins
1014 if test -f /System/Library/Frameworks/Carbon.framework/Carbon; then
1015 AC_DEFINE(XP_MACOSX)
1018 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
1019 dnl Use the specified value
1020 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
1021 elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
1022 dnl No value specified on the command line or in the environment,
1023 dnl use the lesser of the library's minimum or the architecture's
1025 case "${target_cpu}" in
1027 dnl Architecture minimum 10.2
1028 export MACOSX_DEPLOYMENT_TARGET=10.2
1031 dnl Architecture minimum 10.4
1032 export MACOSX_DEPLOYMENT_TARGET=10.4
1037 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is
1038 dnl in use. NEXT_ROOT will be set and exported if it's needed for
1041 if test "$MACOS_SDK_DIR"; then
1042 dnl Sync this section with the one in Mozilla's top level.
1044 if test ! -d "$MACOS_SDK_DIR"; then
1045 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
1046 specify a valid SDK. SDKs are installed when the optional cross-development
1047 tools are selected during the Xcode/Developer Tools installation.])
1051 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
1052 GCC_VERSION_FULL=`echo $CC_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
1053 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
1055 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
1056 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
1057 SDK_C_FRAMEWORK="-F${MACOS_SDK_DIR}/System/Library/Frameworks"
1058 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
1059 SDK_C_FRAMEWORK="$SDK_C_FRAMEWORK -F${MACOS_SDK_DIR}/Library/Frameworks"
1062 SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include ${SDK_C_FRAMEWORK}"
1064 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
1066 dnl CPP needs to be set for AC_CHECK_HEADER.
1067 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
1070 HOST_DARWIN_MAJOR=`echo "$build_os" | sed -E -e 's/^darwin([0-9]+).*$/\1/'`
1072 if test "$HOST_DARWIN_MAJOR" -lt 9 ; then
1073 dnl The build host is running Tiger (10.4) or earlier.
1074 dnl ld support for -syslibroot is compiler-agnostic, but
1075 dnl only available on Tiger and later. On Tiger and
1076 dnl earlier build hosts, just rely on NEXT_ROOT, because
1077 dnl it's not been shown to cause any problems.
1078 MACOS_SDK_LIBS="-L${MACOS_SDK_DIR}/usr/lib/gcc/darwin -L${MACOS_SDK_DIR}/usr/lib/gcc/darwin/${GCC_VERSION_FULL} -L${MACOS_SDK_DIR}/usr/lib ${SDK_C_FRAMEWORK}"
1080 dnl The build host is running Leopard (10.5) or later.
1081 dnl With NEXT_ROOT set, the linker will still not apply
1082 dnl it when resolving dependencies. This causes problems
1083 dnl on Leopard, where an SDK depends on frameworks which
1084 dnl were present in earlier OS releases (and the associated
1085 dnl SDK) but not in Leopard. -syslibroot does not have
1086 dnl this problem, but it results in harmless warnings when
1087 dnl NEXT_ROOT is set. NEXT_ROOT needs to remain set even
1088 dnl on Leopard because the compiler uses it too.
1089 MACOS_SDK_LIBS="-Wl,-syslibroot,${MACOS_SDK_DIR}"
1092 LDFLAGS="${MACOS_SDK_LIBS} $LDFLAGS"
1093 export NEXT_ROOT=$MACOS_SDK_DIR
1095 if test -n "$CROSS_COMPILE" ; then
1096 dnl NEXT_ROOT will be in the environment, but it
1097 dnl shouldn't be set for the build host. HOST_CXX is
1098 dnl presently unused.
1099 HOST_CC="NEXT_ROOT= $HOST_CC"
1100 HOST_CXX="NEXT_ROOT= $HOST_CXX"
1103 dnl gcc >= 4.0 uses different paths than above, but knows
1104 dnl how to find them itself.
1105 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
1107 dnl CPP needs to be set for AC_CHECK_HEADER.
1108 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
1110 dnl If gcc >= 4.0.0, we're guaranteed to be on Tiger, which
1111 dnl has an ld that supports -syslibroot. Don't set
1112 dnl NEXT_ROOT because it will be ignored and cause
1113 dnl warnings when -syslibroot is specified.
1114 if test "$GCC_VERSION_FULL" != "4.0.0" ; then
1115 dnl gcc > 4.0.0 will pass -syslibroot to ld automatically
1116 dnl based on the -isysroot it receives.
1117 LDFLAGS="$LDFLAGS -isysroot ${MACOS_SDK_DIR}"
1119 dnl gcc 4.0.0 doesn't pass -syslibroot to ld, it needs
1121 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
1130 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
1134 AC_DEFINE(_DGUX_SOURCE)
1135 AC_DEFINE(_POSIX4A_DRAFT6_SOURCE)
1139 MDCPUCFG_H=_dgux.cfg
1144 if test -z "$USE_NSPR_THREADS"; then
1149 AC_DEFINE(HAVE_BSD_FLOCK)
1150 AC_DEFINE(HAVE_SOCKLEN_T)
1151 CFLAGS="$CFLAGS $(DSO_CFLAGS) -ansi -Wall"
1152 MOZ_OBJFORMAT=`test -x /usr/bin/objformat && /usr/bin/objformat || echo elf`
1153 if test "$MOZ_OBJFORMAT" = "elf"; then
1158 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1160 DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
1161 MDCPUCFG_H=_freebsd.cfg
1162 PR_MD_CSRCS=freebsd.c
1168 AC_DEFINE(_HPUX_SOURCE)
1169 # OSF1 and HPUX report the POLLHUP event for a socket when the
1170 # shutdown(SHUT_WR) operation is called for the remote end, even though
1171 # the socket is still writeable. Use select(), instead of poll(), to
1172 # workaround this problem.
1173 AC_DEFINE(_PR_POLL_WITH_SELECT)
1174 AC_DEFINE(_USE_BIG_FDS)
1175 DSO_LDOPTS='-b +h $(notdir $@)'
1177 if test "$OS_TEST" = "ia64"; then
1179 DSO_LDOPTS="$DSO_LDOPTS +b '\$\$ORIGIN'"
1180 CPU_ARCH_TAG=_$OS_TEST
1181 if test -z "$USE_64"; then
1184 PR_MD_ASFILES=os_HPUX_ia64.s
1188 PR_MD_ASFILES=os_HPUX.s
1190 if test -n "$USE_64"; then
1191 MDCPUCFG_H=_hpux64.cfg
1193 MDCPUCFG_H=_hpux32.cfg
1195 if test -z "$GNU_CC"; then
1203 if test -n "$MOZILLA_CLIENT"; then
1204 DEFAULT_IMPL_STRATEGY=_EMU
1207 if echo "$OS_RELEASE" | grep ^A.09 >/dev/null; then
1208 AC_DEFINE(_PR_NEED_H_ERRNO)
1210 DEFAULT_IMPL_STRATEGY=_EMU
1214 if echo "$OS_RELEASE" | egrep '^(A.09|B.10)' >/dev/null; then
1215 AC_DEFINE(_PR_NO_LARGE_FILES)
1218 if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
1219 AC_DEFINE(_PR_NEED_H_ERRNO)
1222 if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
1223 AC_DEFINE(HAVE_INT_LOCALTIME_R)
1226 if echo "$OS_RELEASE" | egrep '^(B.10.30|B.11)' >/dev/null; then
1227 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
1230 # HP-UX 11i v2 (B.11.23) or higher
1232 case "$OS_RELEASE" in
1233 [C-Z]*|B.[2-9]*|B.1[2-9]*|B.11.[3-9]*|B.11.2[3-9]*)
1239 if test "$OS_RELEASE" = "B.10.01"; then
1241 DEFAULT_IMPL_STRATEGY=_EMU
1244 if test "$OS_RELEASE" = "B.10.10"; then
1246 AC_DEFINE(HPUX10_10)
1247 DEFAULT_IMPL_STRATEGY=_PTH
1250 if test "$OS_RELEASE" = "B.10.20"; then
1252 AC_DEFINE(HPUX10_20)
1253 if test -z "$GNU_CC"; then
1254 CFLAGS="$CFLAGS +DAportable +DS1.1"
1255 CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
1257 DEFAULT_IMPL_STRATEGY=_PTH
1260 if test "$OS_RELEASE" = "B.10.30"; then
1262 AC_DEFINE(HPUX10_30)
1263 if test -z "$GNU_CC"; then
1264 CFLAGS="$CFLAGS +DAportable +DS1.1"
1265 CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
1267 DEFAULT_IMPL_STRATEGY=_PTH
1270 if echo "$OS_RELEASE" | grep ^B.11 >/dev/null; then
1273 AC_DEFINE(_LARGEFILE64_SOURCE)
1274 AC_DEFINE(_PR_HAVE_OFF64_T)
1275 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1276 if test -z "$GNU_CC"; then
1277 if test -z "$USE_64"; then
1278 if test "$OS_TEST" = "ia64"; then
1279 CFLAGS="$CFLAGS +DD32"
1280 CXXFLAGS="$CXXFLAGS +DD32"
1282 CFLAGS="$CFLAGS +DAportable +DS2.0"
1283 CXXFLAGS="$CXXFLAGS +DAportable +DS2.0"
1286 if test "$OS_TEST" = "ia64"; then
1287 CFLAGS="$CFLAGS +DD64"
1288 CXXFLAGS="$CXXFLAGS +DD64"
1290 CFLAGS="$CFLAGS +DA2.0W +DS2.0"
1291 CXXFLAGS="$CXXFLAGS +DA2.0W +DS2.0"
1295 DEFAULT_IMPL_STRATEGY=_PTH
1298 if test "$DEFAULT_IMPL_STRATEGY" = "_EMU"; then
1302 elif test "$DEFAULT_IMPL_STRATEGY" = "_PTH"; then
1304 if test "$USE_NSPR_THREADS"; then
1307 if test "$USE_USER_PTHREADS"; then
1317 AC_DEFINE(_SGI_MP_SOURCE)
1318 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1320 PR_MD_ASFILES=os_Irix.s
1321 MKSHLIB='$(LD) $(DSO_LDOPTS) -rdata_shared -shared -soname $(notdir $@) -o $@'
1323 RESOLVE_LINK_SYMBOLS=1
1324 if test -n "$USE_64"; then
1325 MDCPUCFG_H=_irix64.cfg
1327 MDCPUCFG_H=_irix32.cfg
1329 case "${target_os}" in
1346 if test "$GNU_CC"; then
1348 dnl If we are using gcc with native binutils, we need to
1350 dnl #lineno "filename" num num
1351 dnl lines, which confuse IRIX native as. Add -Wp,-P to the
1352 dnl gcc command line, which passes -P to the preprocessor.
1354 AS='$(CC) -Wp,-P -x assembler-with-cpp -D_ASM -mips2 $(INCLUDES)'
1355 CFLAGS="$CFLAGS -Wall -Wno-format"
1356 _OPTIMIZE_FLAGS="-O6"
1358 if test -n "$USE_N32"; then
1359 AS='as -D_ASM $(INCLUDES) -n32'
1361 AS='as -D_ASM $(INCLUDES)'
1363 CFLAGS="$CFLAGS -fullwarn -xansi"
1364 if test "$USE_N32"; then
1365 _OPTIMIZE_FLAGS="-O -OPT:Olimit=4000"
1367 _OPTIMIZE_FLAGS="-O -Olimit 4000"
1369 if test "$USE_MDUPDATE"; then
1370 CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
1374 CFLAGS="$CFLAGS -multigot"
1375 DSO_LDOPTS="-no_unresolved"
1376 if test "$USE_N32"; then
1377 CFLAGS="$CFLAGS -n32 -woff 1209"
1378 DSO_LDOPTS="$DSO_LDOPTS -n32"
1380 if test "$USE_64"; then
1381 CFLAGS="$CFLAGS -64"
1383 CFLAGS="$CFLAGS -32"
1388 CFLAGS="$CFLAGS -xgot"
1392 if test "${target_os}" = "irix5.3"; then
1395 case "${target_os}" in
1397 if test -z "$GNU_CC"; then
1398 CFLAGS="$CFLAGS -mips3"
1400 AC_DEFINE(_PR_HAVE_GETPROTO_R)
1401 AC_DEFINE(_PR_HAVE_GETPROTO_R_POINTER)
1402 AC_DEFINE(_PR_HAVE_SGI_PRDA_PROCMASK)
1407 AC_DEFINE(_PR_HAVE_SGI_PRDA_PROCMASK)
1412 *-linux*|*-gnu*|*-k*bsd*-gnu)
1413 if test -z "$USE_NSPR_THREADS"; then
1418 AC_DEFINE(_GNU_SOURCE)
1419 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1420 case "${target_os}" in
1425 CFLAGS="$CFLAGS -Wall"
1426 CXXFLAGS="$CXXFLAGS -Wall"
1427 MDCPUCFG_H=_linux.cfg
1429 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1431 DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
1433 _DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb, and that
1434 # combo is not yet good at debugging inlined
1435 # functions (even when using DWARF2 as the
1438 if echo "$OS_TEST" | grep -c 86 >/dev/null; then
1443 CPU_ARCH_TAG=_${CPU_ARCH}
1444 case "${target_cpu}" in
1448 CFLAGS="$CFLAGS -mieee"
1449 CXXFLAGS="$CXXFLAGS -mieee"
1453 PR_MD_ASFILES=os_Linux_x86.s
1456 PR_MD_ASFILES=os_Linux_ia64.s
1459 if test -n "$USE_64"; then
1460 PR_MD_ASFILES=os_Linux_x86_64.s
1463 PR_MD_ASFILES=os_Linux_x86.s
1469 PR_MD_ASFILES=os_Linux_ppc.s
1472 if test -n "$USE_64"; then
1476 PR_MD_ASFILES=os_Linux_ppc.s
1480 CFLAGS="$CFLAGS -m68020-60"
1481 CXXFLAGS="$CXXFLAGS -m68020-60"
1486 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1489 PR_MD_ARCH_DIR=windows
1490 RESOLVE_LINK_SYMBOLS=1
1492 if test -n "$GNU_CC"; then
1493 CC="$CC -mno-cygwin"
1494 CXX="$CXX -mno-cygwin"
1496 MKSHLIB='$(CC) -shared -Wl,--export-all-symbols -Wl,--out-implib -Wl,$(IMPORT_LIBRARY) $(DLLBASE) -o $(subst $(OBJDIR)/,,$(SHARED_LIBRARY))'
1498 # Use temp file for windres (bug 213281)
1499 RCFLAGS='-O coff --use-temp-file'
1504 AR='lib -NOLOGO -OUT:"$@"'
1506 RANLIB='echo not_ranlib'
1507 STRIP='echo not_strip'
1509 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
1514 # Determine compiler version
1515 CC_VERSION=`"${CC}" -v 2>&1 | grep Version | sed -e 's|.* Version ||' -e 's| .*||'`
1516 _CC_MAJOR_VERSION=`echo $CC_VERSION | awk -F\. '{ print $1 }'`
1517 _CC_MINOR_VERSION=`echo $CC_VERSION | awk -F\. '{ print $2 }'`
1518 MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
1520 # Ensure that mt is Microsoft (R) Manifest Tool and not magnetic
1521 # tape manipulation utility (or something else)
1522 if test "$MSC_VER" -ge "1400"; then
1524 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
1527 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
1528 if test -n "$MSMT_TOOL"; then
1529 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
1530 if test -z "$MSMANIFEST_TOOL_VERSION"; then
1531 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
1536 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
1540 CFLAGS="$CFLAGS -W3 -nologo -GF -Gy"
1541 DLLFLAGS="$DLLFLAGS -OUT:\"\$@\""
1544 if test -z "$MOZ_OPTIMIZE"; then
1545 CFLAGS="$CFLAGS -Od"
1548 if test -n "$USE_DEBUG_RTL"; then
1549 CFLAGS="$CFLAGS -MDd"
1551 CFLAGS="$CFLAGS -MD"
1554 if test -n "$MOZ_DEBUG"; then
1557 DEFINES="$DEFINES -U_DEBUG"
1560 if test -n "$MOZ_OPTIMIZE"; then
1561 if test -n "$MOZ_DEBUG_SYMBOLS"; then
1562 _OPTIMIZE_FLAGS="$_OPTIMIZE_FLAGS -Zi"
1563 DLLFLAGS="$DLLFLAGS -DEBUG -OPT:REF"
1564 LDFLAGS="$LDFLAGS -DEBUG -OPT:REF"
1568 if test -n "$MOZ_DEBUG"; then
1569 DLLFLAGS="$DLLFLAGS -DEBUG"
1570 LDFLAGS="$LDFLAGS -DEBUG"
1573 OS_DLLFLAGS="-nologo -DLL -SUBSYSTEM:WINDOWS"
1574 if test "$MSC_VER" -le "1200" -a -z "$MOZ_DEBUG_SYMBOLS"; then
1575 OS_DLLFLAGS="$OS_DLLFLAGS -PDB:NONE"
1578 if test "$OS_TARGET" = "WINNT"; then
1579 CFLAGS="$CFLAGS -GT"
1580 LIBNSPR='$(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1581 LIBPLC='$(dist_libdir)/libplc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1583 LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1584 LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1588 if test -n "$USE_STATIC_TLS"; then
1589 AC_DEFINE(_PR_USE_STATIC_TLS)
1592 if test "$OS_TARGET" = "WINNT"; then
1596 # undefine WINNT as some versions of mingw gcc define it by default
1597 DEFINES="$DEFINES -UWINNT"
1598 AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
1601 if test "$CPU_ARCH" = "x86"; then
1604 CPU_ARCH_TAG=$CPU_ARCH
1607 if test -n "$USE_DEBUG_RTL"; then
1611 case "$OS_TARGET" in
1613 MDCPUCFG_H=_winnt.cfg
1616 MDCPUCFG_H=_win95.cfg
1619 AC_MSG_ERROR([Missing OS_TARGET for ${target}. Use --enable-win32-target to set.])
1623 case "$target_cpu" in
1625 if test -n "$USE_64"; then
1649 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
1653 if test "$USE_64"; then
1663 AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
1665 AR='lib -NOLOGO -OUT:"$@"'
1671 MKSHLIB='$(LD) -DLL $(DSO_LDOPTS) -OUT:$@'
1673 PR_MD_ARCH_DIR=windows
1674 RESOLVE_LINK_SYMBOLS=1
1676 MDCPUCFG_H=_win95.cfg
1677 LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1678 LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1680 DLLFLAGS='-OUT:"$@"'
1681 if test -n "$MOZ_DEBUG_SYMBOLS"; then
1682 OS_LDFLAGS=-DEBUG -DEBUGTYPE:CV
1683 OS_DLLFLAGS=-DEBUG -DEBUGTYPE:CV
1684 DSO_LDOPTS=-DEBUG -DEBUGTYPE:CV
1695 if test "$OS_RELEASE" = "2.03"; then
1696 AC_DEFINE(_PR_STAT_HAS_ST_ATIM)
1698 AC_DEFINE(_PR_STAT_HAS_ST_ATIM_UNION)
1701 if test -z "$GNU_CC"; then
1702 CFLAGS="$CFLAGS -Hnocopyr"
1703 CXXFLAGS="$CXXFLAGS -Hnocopyr"
1705 CFLAGS="$CFLAGS -fPIC -Wall"
1706 CXXFLAGS="$CXXFLAGS -fPIC -Wall"
1720 if test -z "$GNU_CC"; then
1721 CC='$(NSDEPTH)/build/hcc cc -Xa -KGnum=0 -KOlimit=4000'
1724 OS_LIBS="$OS_LIBS -lsocket -lnsl -ldl"
1733 AC_DEFINE(HAVE_BSD_FLOCK)
1734 if test -z "$USE_NSPR_THREADS"; then
1737 MDCPUCFG_H=_netbsd.cfg
1738 PR_MD_CSRCS=netbsd.c
1740 DSO_CFLAGS='-fPIC -DPIC'
1741 CFLAGS="$CFLAGS -ansi -Wall"
1742 CXXFLAGS="$CXXFLAGS -ansi -Wall"
1743 MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)'
1745 if test -z "$OBJECT_FMT"; then
1746 if echo __ELF__ | ${CC-cc} -E - | grep -q __ELF__ 2>/dev/null; then
1749 DSO_LDOPTS='-shared'
1753 DSO_LDOPTS='-shared -Wl,-soname,$(notdir $@)'
1757 if test "$LIBRUNPATH"; then
1758 DSO_LDOPTS="$DSO_LDOPTS -Wl,-R$LIBRUNPATH"
1769 AC_DEFINE(HAVE_SVID_GETTOD)
1771 CFLAGS="$CFLAGS -Xa -fullwarn"
1772 CXXFLAGS="$CXXFLAGS -Xa -fullwarn"
1774 MDCPUCFG_H=_sony.cfg
1778 *-nextstep*|*-openstep*)
1781 AC_DEFINE(HAVE_BSD_FLOCK)
1782 AC_DEFINE(_POSIX_SOURCE)
1783 CFLAGS="$CFLAGS -Wall -fno-common -traditional-cpp -posix"
1784 CXXFLAGS="$CXXFLAGS -Wall -fno-common -traditional-cpp -posix"
1787 MDCPUCFG_H=_nextstep.cfg
1788 PR_MD_CSRCS=nextstep.c
1795 AC_DEFINE(_QNX_SOURCE)
1796 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
1799 MKSHLIB='$(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(notdir $@) -o $@'
1802 OS_LIBS="$OS_LIBS -lsocket"
1803 _OPTIMIZE_FLAGS="-O1"
1804 _DEBUG_FLAGS="-gstabs"
1810 AC_DEFINE(HAVE_BSD_FLOCK)
1811 AC_DEFINE(HAVE_SOCKLEN_T)
1812 CFLAGS="$CFLAGS -ansi -Wall"
1813 CXXFLAGS="$CXXFLAGS -ansi -Wall"
1816 MDCPUCFG_H=_openbsd.cfg
1817 PR_MD_CSRCS=openbsd.c
1819 if test -z "$USE_NSPR_THREADS"; then
1822 DSO_LDOPTS='-shared -fPIC'
1823 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1827 SHELL_OVERRIDE="SHELL = /usr/bin/ksh"
1830 AC_DEFINE(_REENTRANT)
1831 # OSF1 and HPUX report the POLLHUP event for a socket when the
1832 # shutdown(SHUT_WR) operation is called for the remote end, even though
1833 # the socket is still writeable. Use select(), instead of poll(), to
1834 # workaround this problem.
1835 AC_DEFINE(_PR_POLL_WITH_SELECT)
1837 if echo "$OS_RELEASE" | egrep -c '(V2.0|V3.2)' 2>/dev/null ; then
1841 if test -z "$GNU_CC"; then
1842 CC="$CC -std1 -ieee_with_inexact"
1843 if test "$OS_RELEASE" != "V2.0"; then
1844 CC="$CC -readonly_strings"
1846 _OPTIMIZE_FLAGS="$_OPTIMIZE_FLAGS -Olimit 4000"
1847 AC_CHECK_HEADER(machine/builtins.h, AC_DEFINE(OSF1_HAVE_MACHINE_BUILTINS_H))
1849 CFLAGS="$CFLAGS -mieee"
1850 CXXFLAGS="$CXXFLAGS -mieee"
1853 if echo $OS_RELEASE | egrep -c '(V2.0|V3.2)' 2>/dev/null; then
1854 AC_DEFINE(HAVE_INT_LOCALTIME_R)
1856 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1857 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
1859 if echo $OS_RELEASE | grep -c V4.0 >/dev/null; then
1860 AC_DEFINE(OSF1V4_MAP_PRIVATE_BUG)
1862 DSO_LDOPTS='-shared -all -expect_unresolved "*" -soname $(notdir $@)'
1863 MDCPUCFG_H=_osf1.cfg
1870 AC_DEFINE(_PR_NEED_H_ERRNO)
1879 AC_DEFINE(_PR_NEED_H_ERRNO)
1881 MDCPUCFG_H=_riscos.cfg
1882 PR_MD_CSRCS=riscos.c
1884 LD="/home/riscos/env/ro-ar cr"
1893 AC_DEFINE(_PR_NEED_H_ERRNO)
1894 CC='cc -b elf -KPIC'
1895 CXX='$(NSDEPTH)/build/hcpp CC +.cpp +w'
1898 DSO_LDOPTS='-b elf -G'
1899 MDCPUCFG_H=_scoos.cfg
1907 AC_DEFINE(RELIANTUNIX)
1909 AC_DEFINE(HAVE_SVID_GETTOD)
1910 if echo "$OS_TEST" | grep -c 86 2>/dev/null; then
1917 if test "$GNU_CC"; then
1918 AS='$(CC) -x assembler-with-cpp'
1919 if test "$CPU_ARCH" = "mips"; then
1922 CFLAGS="$CFLAGS -Wall -Wno-format"
1925 _OPTIMIZE_FLAGS='-O -F Olimit,4000'
1928 DSO_LDOPTS='-G -z defs -h $(@:$(OBJDIR)/%.so=%.so)'
1930 if test "$OS_RELEASE" = "5.43"; then
1931 AC_DEFINE(IP_MULTICAST)
1934 OS_LIBS="$OS_LIBS -lsocket -lnsl -lresolv -ldl -lc"
1936 MDCPUCFG_H=_reliantunix.cfg
1937 PR_MD_CSRCS=reliantunix.c
1938 if test "${OS_ARCH}" = "mips"; then
1939 PR_MD_ASFILES=os_ReliantUNIX.s
1946 CFLAGS="$CFLAGS -Wall -Wno-format"
1947 if test "$USE_MDUPDATE"; then
1948 CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
1955 if test "$OS_RELEASE" = "4.1.3_U1"; then
1957 OS_LIBS="$OS_LIBS -lm"
1959 MDCPUCFG_H=_sunos4.cfg
1960 PR_MD_CSRCS=sunos4.c
1964 if test -z "$USE_NSPR_THREADS"; then
1973 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1975 MDCPUCFG_H=_solaris.cfg
1976 PR_MD_CSRCS=solaris.c
1978 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1979 RESOLVE_LINK_SYMBOLS=1
1980 case "${OS_RELEASE}" in
1984 # It is safe to use the -Bdirect linker flag on Solaris 10 or later.
1988 if test -n "$GNU_CC"; then
1990 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
1993 DSO_LDOPTS='-shared -Wl,-h,$(notdir $@),-z,combreloc,-z,defs,-z,ignore'
1994 if test -n "$USE_B_DIRECT"; then
1995 DSO_LDOPTS="$DSO_LDOPTS,-Bdirect"
1999 DSO_LDOPTS='-G -h $(notdir $@) -z combreloc -z defs -z ignore'
2000 if test -n "$USE_B_DIRECT"; then
2001 DSO_LDOPTS="$DSO_LDOPTS -Bdirect"
2004 if test -n "$GNU_CC"; then
2005 CFLAGS="$CFLAGS -Wall"
2006 CXXFLAGS="$CXXFLAGS -Wall"
2007 if test -n "$USE_MDUPDATE"; then
2008 CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
2009 CXXFLAGS="$CXXFLAGS -MDupdate \$(DEPENDENCIES)"
2011 GCC_AS=`$CC -print-prog-name=as`
2012 if test "`echo | $GCC_AS -v 2>&1 | grep -c GNU`" != "0"; then
2016 CFLAGS="$CFLAGS -xstrconst"
2017 CXXFLAGS="$CXXFLAGS -Qoption cg -xstrconst -features=tmplife"
2018 if test -z "$MOZ_OPTIMIZE"; then
2019 CFLAGS="$CFLAGS -xs"
2020 CXXFLAGS="$CXXFLAGS -xs"
2022 _OPTIMIZE_FLAGS=-xO4
2024 if test -z "$GNU_AS"; then
2025 ASFLAGS="$ASFLAGS -Wa,-P"
2027 if test -n "$USE_64"; then
2028 if test -n "$GNU_CC"; then
2032 if test "$OS_TEST" = "i86pc"; then
2033 CC="$CC -xarch=amd64"
2034 CXX="$CXX -xarch=amd64"
2037 CXX="$CXX -xarch=v9"
2041 if test "$OS_TEST" = "i86pc"; then
2042 if test -z "$USE_64"; then
2045 CPU_ARCH_TAG=_$OS_TEST
2046 # The default debug format, DWARF (-g), is not supported by gcc
2047 # on i386-ANY-sysv4/solaris, but the stabs format is. It is
2048 # assumed that the Solaris assembler /usr/ccs/bin/as is used.
2049 # If your gcc uses GNU as, you do not need the -Wa,-s option.
2050 if test -n "$MOZ_DEBUG" && test -n "$GNU_CC"; then
2051 _DEBUG_FLAGS=-gstabs
2052 if test -z "$GNU_AS"; then
2053 _DEBUG_FLAGS="$_DEBUG_FLAGS -Wa,-s"
2057 case "${target_os}" in
2059 AC_DEFINE(_PR_NO_LARGE_FILES)
2062 AC_DEFINE(_PR_NO_LARGE_FILES)
2065 AC_DEFINE(SOLARIS2_5)
2068 AC_DEFINE(_PR_HAVE_OFF64_T)
2069 # The lfcompile64(5) man page on Solaris 2.6 says:
2070 # For applications that do not wish to conform to the POSIX or
2071 # X/Open specifications, the 64-bit transitional interfaces
2072 # are available by default. No compile-time flags need to be
2074 # But gcc 2.7.2.x fails to define _LARGEFILE64_SOURCE by default.
2075 # The native compiler, gcc 2.8.x, and egcs don't have this problem.
2076 if test -n "$GNU_CC"; then
2077 AC_DEFINE(_LARGEFILE64_SOURCE)
2081 case "${target_os}" in
2093 # Solaris 8 or higher has IPv6.
2094 AC_DEFINE(_PR_INET6)
2097 if test "$CPU_ARCH" = "sparc"; then
2098 # 64-bit Solaris SPARC requires V9 architecture, so the following
2100 if test -z "$USE_64"; then
2101 ULTRASPARC_LIBRARY=nspr_flt
2104 # Purify requires that binaries linked against nspr also
2105 # be linked against -lrt (or -lposix4) so add it to OS_LIBS
2107 _librt=`echo $_rev 5.6 | awk '{ if ($1 > $2) print "-lrt"; else print "-lposix4" }'`
2108 OS_LIBS="$OS_LIBS $_librt"
2117 if echo $OS_RELEASE | grep -c 2.1 2>/dev/null; then
2118 AC_DEFINE(_PR_NO_LARGE_FILES)
2119 CC='$(NSDEPTH)/build/hcc cc'
2120 CXX='$(NSDEPTH)/build/hcpp CC'
2121 MDCPUCFG_H=_unixware.cfg
2123 AC_DEFINE(_LARGEFILE64_SOURCE)
2124 AC_DEFINE(_PR_HAVE_OFF64_T)
2125 AC_DEFINE(_PR_HAVE_SOCKADDR_LEN)
2126 MDCPUCFG_H=_unixware7.cfg
2128 PR_MD_CSRCS=unixware.c
2134 AC_ARG_WITH(symbian-sdk,
2135 [ --with-symbian-sdk=SYMBIAN_SDK_DIR
2136 The path to the Symbian SDK],
2137 SYMBIAN_SDK_DIR=$withval)
2139 echo -----------------------------------------------------------------------------
2140 echo Building with Symbian SDK in: $SYMBIAN_SDK_DIR
2141 echo -----------------------------------------------------------------------------
2146 AC_DEFINE(__SYMBIAN32__)
2149 AC_DEFINE(__SUPPORT_CPP_EXCEPTIONS__)
2150 AC_DEFINE(MOZ_STDERR_TO_STDOUT)
2151 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
2152 AC_DEFINE(HAVE_SOCKLEN_T)
2160 MDCPUCFG_H=_symbian.cfg
2161 PR_MD_CSRCS=symbian.c
2163 RANLIB='echo no ranlib '
2166 OS_EXE_CFLAGS="$OS_EXE_CFLAGS -D__EXE__"
2167 CFLAGS="$CFLAGS -MD -nostdinc"
2168 SYMBIAN_SYS_INCLUDE="-I$SYMBIAN_SDK_DIR/Epoc32/include/variant -I$SYMBIAN_SDK_DIR/Epoc32/include -I$SYMBIAN_SDK_DIR/Epoc32/include/stdapis"
2169 echo -------------------------------------------------------
2170 echo SYMBIAN_SYS_INCLUDE is: $SYMBIAN_SYS_INCLUDE
2171 echo -------------------------------------------------------
2172 case "$OS_TARGET" in
2178 WINSCW_LD_DIR="\$(SYMBIAN_SDK_DIR)/EPOC32/RELEASE/WINSCW/UDEB"
2179 CFLAGS="$CFLAGS -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I\$(VPATH)"
2180 SYMBIAN_SYS_INCLUDE="$SYMBIAN_SYS_INCLUDE -include Symbian_OS_v9.2.hrh"
2181 AR_FLAGS="-library -msgstyle gcc -stdlib -subsystem windows -noimplib -o \$@"
2185 AC_DEFINE(__WINSCW__)
2186 DEFINES="$DEFINES -U_WIN32"
2189 CFLAGS="$CFLAGS -Wall -Wno-unknown-pragmas -fexceptions -march=armv5t -mapcs -pipe -x c -msoft-float"
2190 CXXFLAGS="$CXXFLAGS $CFLAGS -Wno-ctor-dtor-privacy"
2191 SYMBIAN_SYS_INCLUDE="$SYMBIAN_SYS_INCLUDE -include $SYMBIAN_SDK_DIR/EPOC32/INCLUDE/GCCE/GCCE.h"
2194 DEFINES="$DEFINES -D__PRODUCT_INCLUDE__=$SYMBIAN_SDK_DIR/Epoc32/include/variant/Symbian_OS_v9.2.hrh"
2197 AC_MSG_ERROR([Missing OS_TARGET for ${target}. Set --enable-symbian-target to with 'WINSCW' or 'GCCE'.])
2200 CFLAGS="$CFLAGS ${SYMBIAN_SYS_INCLUDE}"
2206 AC_DEFINE(BSD_SELECT)
2207 AC_DEFINE(TCPV40HDRS)
2215 RESOLVE_LINK_SYMBOLS=1
2220 CFLAGS="$CFLAGS -Wall -Zomf"
2221 CXXFLAGS="$CFLAGS -Wall -Zomf"
2222 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2224 DSO_LDOPTS='-Zomf -Zdll'
2226 _OPTIMIZE_FLAGS="-O2 -s"
2227 _DEBUG_FLAGS="-g -fno-inline"
2228 if test -n "$MOZ_OPTIMIZE"; then
2229 DSO_LDOPTS="$DSO_LDOPTS -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2234 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2235 LDFLAGS="$LDFLAGS -Zhigh-mem"
2236 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2239 # GCC for OS/2 currently predefines these, but we don't want them
2240 DEFINES="$DEFINES -Uunix -U__unix -U__unix__"
2249 if test -z "$SKIP_LIBRARY_CHECKS"; then
2250 dnl ========================================================
2251 dnl Check for system libraries
2252 dnl ========================================================
2253 dnl AC_CHECK_LIB(C, main)
2254 dnl AC_CHECK_LIB(C_r, main)
2255 dnl AC_CHECK_LIB(c, main)
2256 dnl AC_CHECK_LIB(c_r, main)
2257 dnl AC_CHECK_LIB(dce, main)
2258 dnl AC_CHECK_LIB(dl, main)
2259 dnl AC_CHECK_LIB(dld, main)
2260 dnl AC_CHECK_LIB(gen, main)
2261 dnl AC_CHECK_LIB(ip6, main)
2262 dnl AC_CHECK_LIB(l, main)
2263 dnl AC_CHECK_LIB(m, main)
2264 dnl AC_CHECK_LIB(nsl, main)
2265 dnl AC_CHECK_LIB(posix4, main)
2266 dnl AC_CHECK_LIB(prstrms, main)
2267 dnl AC_CHECK_LIB(prstrms_shr, main)
2268 dnl AC_CHECK_LIB(pthread, main)
2269 dnl AC_CHECK_LIB(pthreads, main)
2270 dnl AC_CHECK_LIB(resolv, main)
2271 dnl AC_CHECK_LIB(rt, main)
2272 dnl AC_CHECK_LIB(socket, main)
2273 dnl AC_CHECK_LIB(svld, main)
2274 dnl AC_CHECK_LIB(thread, main)
2275 dnl AC_CHECK_LIB(vms_jackets, main)
2278 dnl We don't want anything to link with libdl even if it's present on OS X,
2279 dnl since it's not used and not part of the default installation.
2280 dnl The same goes for BeOS.
2286 AC_CHECK_LIB(dl, dlopen,
2287 AC_CHECK_HEADER(dlfcn.h,
2288 OS_LIBS="-ldl $OS_LIBS"))
2293 dnl ========================================================
2294 dnl Check for system header files.
2295 dnl ========================================================
2296 dnl AC_HEADER_DIRENT
2298 dnl AC_HEADER_SYS_WAIT
2299 dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/file.h sys/ioctl.h sys/time.h unistd.h)
2301 dnl ========================================================
2302 dnl Check for typedefs and structs
2303 dnl ========================================================
2310 dnl AC_STRUCT_ST_BLKSIZE
2311 dnl AC_STRUCT_ST_BLOCKS
2312 dnl AC_STRUCT_ST_RDEV
2316 dnl ========================================================
2317 dnl Checks for library functions.
2318 dnl ========================================================
2319 AC_PROG_GCC_TRADITIONAL
2320 AC_CHECK_FUNCS(lchown strerror)
2324 dnl AC_FUNC_SETVBUF_REVERSED
2326 dnl AC_FUNC_STRFTIME
2327 dnl AC_FUNC_UTIME_NULL
2329 dnl AC_CHECK_FUNCS(ftime getcwd gethostname gettimeofday getwd mkdir mktime putenv rmdir select socket strdup strerror strstr strtol strtoul uname)
2331 dnl ========================================================
2333 dnl ========================================================
2335 dnl ========================================================
2337 dnl = --enable-strip
2339 dnl = Enable stripping of libs and executables
2341 dnl ========================================================
2342 AC_ARG_ENABLE(strip,
2343 [ --enable-strip Enable stripping of shared libs and programs],
2344 [ if test "$enableval" = "yes"; then
2348 dnl Check for hpux options
2349 case "${target_os}" in
2351 if test -z "$GNU_CC"; then
2353 AC_CACHE_CHECK(for +Olit support,
2354 ac_cv_hpux_usable_olit_option,
2355 dnl since aCC doesn't throw an error on invalid options,
2356 dnl we have to test this the hard way
2357 [ac_cv_hpux_usable_olit_option=no
2359 echo 'int main() { return 0; }' | cat > conftest.c
2360 ${CC-cc} ${CFLAGS} +Olit=all -o conftest conftest.c > conftest.out 2>&1
2361 if test $? -eq 0; then
2362 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out`"; then
2363 ac_cv_hpux_usable_olit_option=yes
2369 if test "$ac_cv_hpux_usable_olit_option" = "yes"; then
2370 CFLAGS="$CFLAGS +Olit=all"
2371 CXXFLAGS="$CXXFLAGS +Olit=all"
2373 CFLAGS="$CFLAGS +ESlit"
2374 CXXFLAGS="$CXXFLAGS +ESlit"
2381 dnl Apparently, some systems cannot properly check for the pthread
2382 dnl library unless <pthread.h> is included so we need to test
2385 dnl MOZ_CHECK_PTHREADS(lib, success, failure)
2386 AC_DEFUN(MOZ_CHECK_PTHREADS,
2388 AC_MSG_CHECKING([for pthread_create in -l$1])
2390 #include <pthread.h>
2391 void *foo(void *v) { return v; }
2394 if (!pthread_create(&t, 0, &foo, 0)) {
2399 echo "${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -l[$1] $LDFLAGS $LIBS" 1>&5;
2400 ${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -l[$1] $LDFLAGS $LIBS 2>&5;
2402 rm -f dummy.c dummy${ac_exeext} ;
2403 if test "$_res" = "0"; then
2404 AC_MSG_RESULT([yes])
2412 case "$target_os" in
2417 MOZ_CHECK_PTHREADS(pthreads,
2418 _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
2419 MOZ_CHECK_PTHREADS(pthread,
2420 _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
2421 MOZ_CHECK_PTHREADS(c_r,
2422 _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
2423 MOZ_CHECK_PTHREADS(c,
2432 AC_ARG_WITH(pthreads,
2433 [ --with-pthreads Use system pthreads library as thread subsystem],
2434 [ if test "$withval" = "yes"; then
2435 if test -n "$_HAVE_PTHREADS"; then
2440 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
2446 [ if test -n "$_HAVE_PTHREADS" && test -z "$USE_USER_PTHREADS" && test -z "$USE_NSPR_THREADS"; then
2452 AC_ARG_ENABLE(user-pthreads,
2453 [ --enable-user-pthreads Build using userland pthreads],
2454 [ if test "$enableval" = "yes"; then
2455 if test -n "$_HAVE_PTHREADS"; then
2460 AC_MSG_ERROR([ --enable-user-pthreads specified for a system without pthread support ]);
2464 AC_ARG_ENABLE(nspr-threads,
2465 [ --enable-nspr-threads Build using classic nspr threads],
2466 [ if test "$enableval" = "yes"; then
2474 AC_ARG_WITH(bthreads,
2475 [ --with-bthreads Use system bthreads library as thread subsystem
2477 [ if test "$withval" = "yes"; then
2485 fi # SKIP_LIBRARY_CHECKS
2488 [ --enable-ipv6 Compile ipv6 support],
2489 [ if test "$enableval" = "yes"; then
2496 AC_ARG_ENABLE(boehm,
2497 [ --enable-boehm Enable the Boehm Garbage Collector],
2498 [ if test "$enableval" = "yes"; then
2499 AC_DEFINE(GC_LEAK_DETECTOR)
2503 if test -n "$USE_PTHREADS"; then
2504 dnl See if -pthread is supported.
2506 ac_cv_have_dash_pthread=no
2507 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
2508 echo 'int main() { return 0; }' | cat > conftest.c
2509 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
2510 if test $? -eq 0; then
2511 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2512 ac_cv_have_dash_pthread=yes
2513 case "$target_os" in
2515 # Freebsd doesn't use -pthread for compiles, it uses them for linking
2518 CFLAGS="$CFLAGS -pthread"
2519 CXXFLAGS="$CXXFLAGS -pthread"
2525 AC_MSG_RESULT($ac_cv_have_dash_pthread)
2528 dnl See if -pthreads is supported.
2530 ac_cv_have_dash_pthreads=no
2531 if test "$ac_cv_have_dash_pthread" = "no"; then
2532 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
2533 echo 'int main() { return 0; }' | cat > conftest.c
2534 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
2535 if test $? -eq 0; then
2536 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2537 ac_cv_have_dash_pthreads=yes
2538 CFLAGS="$CFLAGS -pthreads"
2539 CXXFLAGS="$CXXFLAGS -pthreads"
2543 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
2548 if test "$ac_cv_have_dash_pthreads" = "yes"; then
2553 AC_DEFINE(_REENTRANT)
2554 AC_DEFINE(_THREAD_SAFE)
2555 dnl -pthread links in -lc_r, so don't specify it explicitly.
2556 if test "$ac_cv_have_dash_pthread" = "yes"; then
2557 _PTHREAD_LDFLAGS="-pthread"
2559 _PTHREAD_LDFLAGS="-lc_r"
2563 if test "$ac_cv_have_dash_pthread" = "yes"; then
2564 _PTHREAD_LDFLAGS="-pthread"
2568 AC_DEFINE(_THREAD_SAFE)
2569 dnl -pthread links in -lc_r, so don't specify it explicitly.
2570 if test "$ac_cv_have_dash_pthread" = "yes"; then
2575 if test "$ac_cv_have_dash_pthread" = "yes"; then
2576 _PTHREAD_LDFLAGS=-pthread
2579 *-linux*|*-gnu*|*-k*bsd*-gnu)
2580 AC_DEFINE(_REENTRANT)
2585 if test -n "$USE_USER_PTHREADS"; then
2592 dnl Special thread exceptions
2596 if test -n "$USE_NSPR_THREADS"; then
2597 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2599 case "$target_os" in
2601 if test -z "$USE_PTHREADS"; then
2602 AC_DEFINE(AIX_RENAME_SELECT)
2606 if test -z "$USE_NSPR_THREADS"; then
2607 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2611 if test -z "$USE_NSPR_THREADS"; then
2612 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2614 if test -n "$USE_PTHREADS"; then
2615 AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2619 if test -z "$USE_NSPR_THREADS"; then
2620 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2622 if test -n "$USE_PTHREADS"; then
2623 AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2629 if test -n "$USE_PTHREADS"; then
2630 AC_DEFINE(_PR_NEED_PTHREAD_INIT)
2634 if test -n "$USE_NSPR_THREADS"; then
2635 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2639 if test -n "$USE_NSPR_THREADS"; then
2640 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2642 if test "$USE_PTHREADS"; then
2643 if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
2644 AC_DEFINE(_REENTRANT)
2645 AC_DEFINE(_PR_DCETHREADS)
2647 AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
2648 AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2651 if test "$USE_USER_PTHREADS"; then
2652 AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
2656 if test "${target_os}" = "irix6.5"; then
2657 if test -n "$USE_PTHREADS"; then
2658 AC_DEFINE(_PR_HAVE_GETHOST_R)
2659 AC_DEFINE(_PR_HAVE_GETHOST_R_POINTER)
2663 *-linux*|*-gnu*|*-k*bsd*-gnu)
2664 if test -n "$USE_NSPR_THREADS"; then
2665 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2668 *-mingw*|*-cygwin*|*-msvc*|*-mks*|*-wince*|*-os2*|*-beos*)
2669 dnl win32, wince, os2 & beos cannot use pthreads
2674 *-netbsd*|*-openbsd*)
2675 if test -n "$USE_NSPR_THREADS"; then
2676 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2680 if test -n "$USE_NSPR_THREADS"; then
2681 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2683 if test -n "$USE_PTHREADS"; then
2684 if echo $OS_RELEASE | egrep -c '(V2.0|V3.2)' 2>/dev/null; then
2687 AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2692 if test -n "$USE_NSPR_THREADS"; then
2693 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2695 if test -n "$USE_PTHREADS"; then
2696 AC_DEFINE(_REENTRANT)
2697 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2698 if test "$OS_TEST" = "i86pc"; then
2699 if test -n "$USE_64"; then
2700 PR_MD_ASFILES=os_SunOS_x86_64.s
2702 PR_MD_ASFILES=os_SunOS_x86.s
2705 if test -n "$USE_64"; then
2706 PR_MD_ASFILES=os_SunOS_sparcv9.s
2712 if test -n "$USE_PTHREADS"; then
2713 AC_DEFINE(_PR_HAVE_GETHOST_R)
2714 AC_DEFINE(_PR_HAVE_GETHOST_R_POINTER)
2719 OS_LIBS="$_PTHREAD_LDFLAGS $OS_LIBS"
2721 dnl If the user passed in arg to --enable-optimize or --enable-debug,
2722 dnl make sure that we use it.
2723 if test -n "$_SAVE_OPTIMIZE_FLAGS"; then
2724 _OPTIMIZE_FLAGS="$_SAVE_OPTIMIZE_FLAGS"
2727 if test -n "$_SAVE_DEBUG_FLAGS"; then
2728 _DEBUG_FLAGS="$_SAVE_DEBUG_FLAGS"
2731 if test -n "$MOZ_OPTIMIZE"; then
2732 CFLAGS="$CFLAGS $_OPTIMIZE_FLAGS"
2733 CXXFLAGS="$CXXFLAGS $_OPTIMIZE_FLAGS"
2736 if test -n "$MOZ_DEBUG"; then
2737 CFLAGS="$CFLAGS $_DEBUG_FLAGS"
2738 CXXFLAGS="$CXXFLAGS $_DEBUG_FLAGS"
2741 if test -n "$MOZ_OPTIMIZE"; then
2747 if test -n "$USE_64"; then
2751 RELEASE_OBJDIR_NAME="${OS_CONFIG}${CPU_ARCH_TAG}${COMPILER_TAG}${IMPL_STRATEGY}${OBJDIR_TAG}.${OBJDIR_SUFFIX}"
2753 dnl ========================================================
2754 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
2755 dnl ========================================================
2756 case "$target_os" in
2758 CC="\$(CYGWIN_WRAPPER) $CC"
2759 CXX="\$(CYGWIN_WRAPPER) $CXX"
2760 RC="\$(CYGWIN_WRAPPER) $RC"
2764 dnl ========================================================
2765 dnl Substitution of found variables.
2766 dnl ========================================================
2767 AC_SUBST(SHELL_OVERRIDE)
2769 AC_SUBST(MOZILLA_CLIENT)
2776 AC_SUBST(HOST_CFLAGS)
2778 AC_SUBST(HOST_LDFLAGS)
2780 AC_SUBST(GCC_USE_GNU_LD)
2782 AC_SUBST(CROSS_COMPILE)
2784 AC_SUBST(MOZ_OPTIMIZE)
2790 AC_SUBST(OBJECT_MODE)
2791 AC_SUBST(GC_LEAK_DETECTOR)
2792 AC_SUBST(ENABLE_STRIP)
2794 AC_SUBST(USE_PTHREADS)
2795 AC_SUBST(USE_BTHREADS)
2796 AC_SUBST(USE_USER_PTHREADS)
2797 AC_SUBST(USE_NSPR_THREADS)
2802 AC_SUBST(MOD_MAJOR_VERSION)
2803 AC_SUBST(MOD_MINOR_VERSION)
2804 AC_SUBST(MOD_PATCH_VERSION)
2805 AC_SUBST(NSPR_MODNAME)
2806 AC_SUBST(MDCPUCFG_H)
2807 AC_SUBST(PR_MD_CSRCS)
2808 AC_SUBST(PR_MD_ASFILES)
2809 AC_SUBST(PR_MD_ARCH_DIR)
2812 AC_SUBST(OBJ_SUFFIX)
2813 AC_SUBST(LIB_SUFFIX)
2814 AC_SUBST(DLL_SUFFIX)
2815 AC_SUBST(ASM_SUFFIX)
2817 AC_SUBST(DSO_CFLAGS)
2818 AC_SUBST(DSO_LDOPTS)
2822 AC_SUBST(OS_RELEASE)
2824 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
2840 AC_SUBST(RESOLVE_LINK_SYMBOLS)
2841 AC_SUBST(AIX_LINK_OPTS)
2842 AC_SUBST(NOSUCHFILE)
2843 AC_SUBST(MOZ_OBJFORMAT)
2844 AC_SUBST(ULTRASPARC_LIBRARY)
2847 AC_SUBST(OBJDIR_NAME)
2848 AC_SUBST(RELEASE_OBJDIR_NAME)
2855 AC_SUBST(OS_DLLFLAGS)
2856 AC_SUBST(CYGWIN_WRAPPER)
2857 AC_SUBST(VISIBILITY_FLAGS)
2858 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2859 AC_SUBST(MACOS_SDK_DIR)
2860 AC_SUBST(SYMBIAN_SDK_DIR)
2864 dnl ========================================================
2865 dnl Generate output files.
2866 dnl ========================================================
2877 lib/libc/include/Makefile
2878 lib/libc/src/Makefile
2882 pkg/solaris/Makefile
2883 pkg/solaris/SUNWpr/Makefile
2884 pkg/solaris/SUNWprd/Makefile
2887 pr/include/md/Makefile
2888 pr/include/obsolete/Makefile
2889 pr/include/private/Makefile
2892 pr/src/linking/Makefile
2893 pr/src/malloc/Makefile
2895 pr/src/md/${PR_MD_ARCH_DIR}/Makefile
2896 pr/src/memory/Makefile
2897 pr/src/misc/Makefile
2898 pr/src/threads/Makefile
2900 pr/tests/dll/Makefile
2903 dnl lib/tests/Makefile
2904 dnl pr/tests/w16gui/Makefile
2907 if test -z "$USE_PTHREADS" && test -z "$USE_BTHREADS"; then
2908 MAKEFILES="$MAKEFILES pr/src/threads/combined/Makefile"
2909 elif test -n "$USE_PTHREADS"; then
2910 MAKEFILES="$MAKEFILES pr/src/pthreads/Makefile"
2911 elif test -n "$USE_BTHREADS"; then
2912 MAKEFILES="$MAKEFILES pr/src/bthreads/Makefile"
2915 if test -n "$USE_CPLUS"; then
2916 MAKEFILES="$MAKEFILES pr/src/cplus/Makefile pr/src/cplus/tests/Makefile"
2919 echo $MAKEFILES > unallmakefiles
2921 AC_OUTPUT([$MAKEFILES], [chmod +x config/nspr-config])