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 ========================================================
131 dnl = Android uses a very custom (hacky) toolchain; we need to do this
132 dnl = here, so that the compiler checks can succeed
133 dnl ========================================================
135 AC_ARG_WITH(android-ndk,
136 [ --with-android-ndk=DIR
137 location where the Android NDK can be found],
138 android_ndk=$withval)
140 AC_ARG_WITH(android-toolchain,
141 [ --with-android-toolchain=DIR
142 location of the android toolchain, default NDK/build/prebuilt/HOST/arm-eabi-4.4.0],
143 android_toolchain=$withval)
145 AC_ARG_WITH(android-platform,
146 [ --with-android-platform=DIR
147 location of platform dir, default NDK/build/platforms/android-5/arch-arm],
148 android_platform=$withval)
150 if test "$target" = "arm-android-eabi" ; then
151 if test -z "$android_ndk" ; then
152 AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
155 if test -z "$android_toolchain" ; then
156 android_toolchain="$android_ndk"/build/prebuilt/`uname -s | tr "[[:upper:]]" "[[:lower:]]"`-x86/arm-eabi-4.4.0
159 if test -z "$android_platform" ; then
160 android_platform="$android_ndk"/build/platforms/android-5/arch-arm
164 AS="$android_toolchain"/bin/arm-eabi-as
165 CC="$android_toolchain"/bin/arm-eabi-gcc
166 CXX="$android_toolchain"/bin/arm-eabi-g++
167 CPP="$android_toolchain"/bin/arm-eabi-cpp
168 LD="$android_toolchain"/bin/arm-eabi-ld
169 AR="$android_toolchain"/bin/arm-eabi-ar
170 RANLIB="$android_toolchain"/bin/arm-eabi-ranlib
171 STRIP="$android_toolchain"/bin/arm-eabi-strip
173 CPPFLAGS="-I$android_platform/usr/include $CPPFLAGS"
174 CFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions -march=armv5te -mthumb-interwork $CFLAGS"
175 CXXFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fpic -fno-short-enums -fno-exceptions -march=armv5te -mthumb-interwork -mthumb $CXXFLAGS"
176 LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform $LDFLAGS"
178 dnl prevent cross compile section from using these flags as host flags
179 if test -z "$HOST_CPPFLAGS" ; then
182 if test -z "$HOST_CFLAGS" ; then
185 if test -z "$HOST_CXXFLAGS" ; then
188 if test -z "$HOST_LDFLAGS" ; then
195 dnl ========================================================
197 dnl = Check options that may affect the compiler
199 dnl ========================================================
200 dist_prefix='${MOD_DEPTH}/dist'
201 dist_bindir='${dist_prefix}/bin'
202 dist_includedir='${dist_prefix}/include/nspr'
203 dist_libdir='${dist_prefix}/lib'
204 dnl If the --includedir option was not specified, add '/nspr' to autoconf's
205 dnl default value of includedir.
206 if test "${includedir}" = '${prefix}/include'; then
207 includedir='${prefix}/include/nspr'
210 AC_ARG_WITH(dist-prefix,
211 [ --with-dist-prefix=DIST_PREFIX
212 place build files in DIST_PREFIX [dist]],
213 dist_prefix=$withval)
215 AC_ARG_WITH(dist-bindir,
216 [ --with-dist-bindir=DIR build execuatables in DIR [DIST_PREFIX/bin]],
217 dist_bindir=$withval)
219 AC_ARG_WITH(dist-includedir,
220 [ --with-dist-includedir=DIR
221 build include files in DIR [DIST_PREFIX/include/nspr]],
222 dist_includedir=$withval)
224 AC_ARG_WITH(dist-libdir,
225 [ --with-dist-libdir=DIR build library files in DIR [DIST_PREFIX/lib]],
226 dist_libdir=$withval)
228 AC_SUBST(dist_prefix)
229 AC_SUBST(dist_bindir)
230 AC_SUBST(dist_includedir)
231 AC_SUBST(dist_libdir)
233 dnl Check if NSPR is being compiled for Mozilla
234 dnl Let --with-arg override environment setting
237 [ --with-mozilla Compile NSPR with Mozilla support],
238 [ if test "$withval" = "yes"; then
239 AC_DEFINE(MOZILLA_CLIENT)
244 [ if test -n "$MOZILLA_CLIENT"; then
245 AC_DEFINE(MOZILLA_CLIENT)
248 AC_ARG_ENABLE(optimize,
249 [ --enable-optimize[=OPT] Enable code optimizations (ie. -O2) ],
250 [ if test "$enableval" != "no"; then
252 if test -n "$enableval" -a "$enableval" != "yes"; then
253 _OPTIMIZE_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
254 _SAVE_OPTIMIZE_FLAGS=$_OPTIMIZE_FLAGS
261 [ --enable-debug[=DBG] Enable debugging (using compiler flags DBG)],
262 [ if test "$enableval" != "no"; then
265 if test -n "$enableval" -a "$enableval" != "yes"; then
266 _DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
267 _SAVE_DEBUG_FLAGS=$_DEBUG_FLAGS
274 AC_ARG_ENABLE(debug-symbols,
275 [ --enable-debug-symbols[=DBG] Enable debugging symbols
276 (using compiler flags DBG)],
277 [ if test "$enableval" != "no"; then
279 if test -n "$enableval" -a "$enableval" != "yes"; then
280 if test -z "$_SAVE_DEBUG_FLAGS"; then
281 _DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
282 _SAVE_DEBUG_FLAGS=$_DEBUG_FLAGS
284 AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
289 AC_ARG_ENABLE(win32-target,
290 [ --enable-win32-target=\$t
291 Specify win32 flavor. (WIN95 or WINNT)],
292 OS_TARGET=`echo $enableval | tr a-z A-Z`)
294 AC_ARG_ENABLE(symbian-target,
295 [ --enable-symbian-target=\$t
296 Specify symbian flavor. (WINSCW or GCCE)],
297 OS_TARGET=`echo $enableval | tr a-z A-Z`)
299 AC_ARG_ENABLE(debug-rtl,
300 [ --enable-debug-rtl Use the MSVC debug runtime library],
301 [ if test "$enableval" = "yes"; then
306 [ --enable-n32 Enable n32 ABI support (IRIX only)],
307 [ if test "$enableval" = "yes"; then
309 else if test "$enableval" = "no"; then
315 [ --enable-64bit Enable 64-bit support (on certain platforms)],
316 [ if test "$enableval" = "yes"; then
320 AC_ARG_ENABLE(mdupdate,
321 [ --enable-mdupdate Enable use of certain compilers' mdupdate feature],
322 [ if test "$enableval" = "yes"; then
327 [ --enable-cplus Enable some c++ api routines],
328 [ if test "$enableval" = "yes"; then
332 AC_ARG_WITH(arm-kuser,
333 [ --with-arm-kuser Use kuser helpers (Linux/ARM only)
334 (Requires kernel 2.6.13 or later)],
335 [ if test "$withval" = "yes"; then
336 AC_DEFINE(_PR_ARM_KUSER)
339 dnl ========================================================
340 dnl = Mac OS X SDK support
341 dnl ========================================================
342 AC_ARG_WITH(macos-sdk,
343 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
344 MACOS_SDK_DIR=$withval)
346 AC_ARG_ENABLE(macos-target,
347 [ --enable-macos-target=VER
348 Set the minimum MacOS version needed at runtime
349 [10.2 for ppc, 10.4 for x86]],
350 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
352 dnl ========================================================
354 dnl = Set the threading model
356 dnl ========================================================
360 case "${target_os}" in
372 dnl ========================================================
374 dnl = Set the default C compiler
376 dnl ========================================================
377 if test -z "$CC"; then
381 if test -z "$USE_NSPR_THREADS"; then
407 dnl ========================================================
409 dnl = Set the default C++ compiler
411 dnl ========================================================
412 if test -z "$CXX"; then
416 if test -z "$USE_NSPR_THREADS"; then
424 case "${target_os}" in
452 if test -z "$SKIP_PATH_CHECKS"; then
453 AC_PATH_PROG(WHOAMI, $WHOAMI whoami, echo not_whoami)
456 if test -n "$MOZ_DEBUG"; then
458 DEFINES="$DEFINES -UNDEBUG"
460 case "${target_os}" in
462 DEFINES="$DEFINES -DDEBUG_${USER}"
464 msvc*|mks*|cygwin*|mingw*|wince*|winmo*|os2*)
465 DEFINES="$DEFINES -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
468 DEFINES="$DEFINES -DDEBUG_`$WHOAMI`"
473 DEFINES="$DEFINES -UDEBUG"
476 if test -z "$SKIP_COMPILER_CHECKS"; then
477 dnl ========================================================
478 dnl Checks for compilers.
479 dnl ========================================================
480 if test "$target" != "$host"; then
481 echo "cross compiling from $host to $target"
485 _SAVE_CFLAGS="$CFLAGS"
486 _SAVE_LDFLAGS="$LDFLAGS"
488 AC_MSG_CHECKING([for $host compiler])
489 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc, "")
490 if test -z "$HOST_CC"; then
491 AC_MSG_ERROR([no acceptable cc found in \$PATH])
493 AC_MSG_RESULT([$HOST_CC])
494 if test -z "$HOST_CFLAGS"; then
495 HOST_CFLAGS="$CFLAGS"
497 if test -z "$HOST_LDFLAGS"; then
498 HOST_LDFLAGS="$LDFLAGS"
502 CFLAGS="$HOST_CFLAGS"
503 LDFLAGS="$HOST_LDFLAGS"
505 AC_MSG_CHECKING([whether the $host compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
506 AC_TRY_COMPILE([], [return(0);],
507 [ac_cv_prog_host_cc_works=1 AC_MSG_RESULT([yes])],
508 AC_MSG_ERROR([installation or configuration problem: $host compiler $HOST_CC cannot create executables.]) )
512 LDFLAGS=$_SAVE_LDFLAGS
514 case "$build:$target" in
515 powerpc-apple-darwin8*:i?86-apple-darwin*)
516 dnl The Darwin cross compiler doesn't necessarily point itself at a
517 dnl root that has libraries for the proper architecture, it defaults
518 dnl to the system root. The libraries in the system root on current
519 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
520 dnl checks will fail. Fake a working SDK in that case.
522 _SAVE_CXXFLAGS=$CXXLAGS
523 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
524 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
528 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", echo)
531 if test -n "$USE_CPLUS"; then
532 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", echo)
537 case "$build:$target" in
538 powerpc-apple-darwin8*:i?86-apple-darwin*)
539 dnl Revert the changes made above. From this point on, the target
540 dnl compiler will never be used without applying the SDK to CFLAGS
541 dnl (see --with-macos-sdk below).
543 CXXFLAGS=$_SAVE_CXXFLAGS
547 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", echo)
548 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", echo)
549 AC_CHECK_PROGS(AS, $AS "${target_alias}-as" "${target}-as", echo)
550 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", echo)
551 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", echo)
552 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", echo)
556 if test -n "$USE_CPLUS"; then
557 if test "$CC" = "cl" -a -z "$CXX"; then
565 AC_PATH_PROGS(AS, as, $CC)
566 AC_PATH_PROGS(AR, ar, echo not_ar)
567 AC_PATH_PROGS(LD, ld link, echo not_ld)
568 AC_PATH_PROGS(STRIP, strip, echo not_strip)
569 AC_PATH_PROGS(WINDRES, windres, echo not_windres)
570 if test -z "$HOST_CC"; then
573 if test -z "$HOST_CFLAGS"; then
574 HOST_CFLAGS="$CFLAGS"
578 if test "$GCC" = "yes"; then
581 if test "$GXX" = "yes"; then
584 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
589 case "$build:$target" in
590 i?86-apple-darwin*:powerpc-apple-darwin*)
591 dnl cross_compiling will have erroneously been set to "no" in this
592 dnl case, because the x86 build host is able to run ppc code in a
593 dnl translated environment, making a cross compiler appear native.
598 if test "$cross_compiling" = "yes"; then
604 dnl ========================================================
605 dnl Check for gcc -pipe support
606 dnl ========================================================
607 AC_MSG_CHECKING([for gcc -pipe support])
608 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
609 echo '#include <stdio.h>' > dummy-hello.c
610 echo 'int main() { printf("Hello World\n"); return 0; }' >> dummy-hello.c
611 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
612 cat dummy-hello.s | ${AS} -o dummy-hello.S - 2>&5
618 if test "$_res_as_stdin" = "yes"; then
620 CFLAGS="$CFLAGS -pipe"
621 AC_TRY_COMPILE( [ #include <stdio.h> ],
622 [printf("Hello World\n");],
623 [_res_gcc_pipe="yes"],
624 [_res_gcc_pipe="no"] )
627 if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
629 CFLAGS="$CFLAGS -pipe"
630 CXXFLAGS="$CXXFLAGS -pipe"
634 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
635 AC_MSG_RESULT([$_res])
640 dnl ===============================================================
641 dnl Check for .hidden assembler directive and visibility attribute.
642 dnl Borrowed from glibc configure.in
643 dnl ===============================================================
644 if test "$GNU_CC"; then
645 AC_CACHE_CHECK(for visibility(hidden) attribute,
646 ac_cv_visibility_hidden,
647 [cat > conftest.c <<EOF
648 int foo __attribute__ ((visibility ("hidden"))) = 1;
650 ac_cv_visibility_hidden=no
651 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
652 if grep '\.hidden.*foo' conftest.s >/dev/null; then
653 ac_cv_visibility_hidden=yes
658 if test "$ac_cv_visibility_hidden" = "yes"; then
659 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
660 AC_CACHE_CHECK(for visibility pragma support,
661 ac_cv_visibility_pragma,
662 [cat > conftest.c <<EOF
663 #pragma GCC visibility push(hidden)
665 #pragma GCC visibility push(default)
668 ac_cv_visibility_pragma=no
669 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
670 if grep '\.hidden.*foo_hidden' conftest.s >/dev/null; then
671 if ! grep '\.hidden.*foo_default' conftest.s > /dev/null; then
672 ac_cv_visibility_pragma=yes
678 if test "$ac_cv_visibility_pragma" = "yes"; then
679 AC_DEFINE(HAVE_VISIBILITY_PRAGMA)
680 # To work around a build problem on Linux x86-64 (Bugzilla bug
681 # 293438), we use the -fvisibility=hidden flag. This flag is less
682 # optimal than #pragma GCC visibility push(hidden) because the flag
683 # assumes that symbols defined outside the current source file have
684 # the default visibility. This has the advantage that we don't need
685 # to wrap system header files, but has the disadvantage that calls
686 # to hidden symbols defined in other source files cannot be
687 # optimized by the compiler. The -fvisibility=hidden flag does
688 # hide and export symbols correctly.
689 #VISIBILITY_FLAGS='-I$(dist_includedir)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
690 #WRAP_SYSTEM_INCLUDES=1
691 VISIBILITY_FLAGS="-fvisibility=hidden"
692 WRAP_SYSTEM_INCLUDES=
697 fi # SKIP_COMPILER_CHECKS
699 dnl ========================================================
700 dnl Checks for programs.
701 dnl ========================================================
702 if test -z "$SKIP_PATH_CHECKS"; then
703 AC_PATH_PROGS(PERL, perl5 perl, echo not_perl)
704 elif test -z "$PERL"; then
708 dnl ========================================================
709 dnl Default platform specific options
710 dnl ========================================================
715 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
723 if test -n "$CROSS_COMPILE"; then
724 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
726 OS_TEST="${target_cpu}"
727 case "${target_os}" in
728 linux*) OS_ARCH=Linux ;;
729 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
730 mingw*) OS_ARCH=WINNT ;;
731 wince*) OS_ARCH=WINCE ;;
732 winmo*) OS_ARCH=WINCE ;;
733 darwin*) OS_ARCH=Darwin ;;
734 riscos*) OS_ARCH=RISCOS ;;
737 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
738 OS_RELEASE=`uname -r`
742 if test "$OS_ARCH" = "IRIX64"; then
746 if test "$OS_ARCH" = "AIX"; then
747 OS_RELEASE=`uname -v`.`uname -r`
750 if test "$OS_ARCH" = "FreeBSD"; then
751 OS_RELEASE=`echo $OS_RELEASE | sed 's/-.*//'`
754 if test "$OS_ARCH" = "Linux"; then
755 OS_RELEASE=`echo $OS_RELEASE | sed 's/-.*//'`
756 OS_RELEASE=`echo $OS_RELEASE | awk -F\. '{ print $1 "." $2 }'`
759 #######################################################################
760 # Master "Core Components" macros for getting the OS target #
761 #######################################################################
764 # Note: OS_TARGET should be specified on the command line for gmake.
765 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
766 # The difference between the Win95 target and the WinNT target is that
767 # the WinNT target uses Windows NT specific features not available
768 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
769 # at lesser performance (the Win95 target uses threads; the WinNT target
772 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
777 # The following hack allows one to build on a WIN95 machine (as if
778 # s/he were cross-compiling on a WINNT host for a WIN95 target).
779 # It also accomodates for MKS's uname.exe. If you never intend
780 # to do development on a WIN95 machine, you don't need this hack.
795 CYGWIN_9*|CYGWIN_ME*)
796 OS_ARCH='CYGWIN_NT-4.0'
806 # On WIN32, we also define the variable CPU_ARCH.
812 if test "$CPU_ARCH" = "I386"; then
818 # If uname -s returns "Windows_NT", we assume that we are using
819 # the uname.exe in MKS toolkit.
821 # The -r option of MKS uname only returns the major version number.
822 # So we need to use its -v option to get the minor version number.
823 # Moreover, it doesn't have the -p option, so we need to use uname -m.
826 OS_MINOR_RELEASE=`uname -v`
827 if test "$OS_MINOR_RELEASE" = "00"; then
830 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
833 # MKS's uname -m returns "586" on a Pentium machine.
835 if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
839 CYGWIN_NT*|MINGW*_NT*)
841 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
842 # the uname.exe in the Cygwin tools.
843 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
844 # the uname.exe in the MSYS tools.
846 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
850 # Cygwin's uname -m returns "i686" on a Pentium Pro machine.
852 if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
858 if test -n "$MOZILLA_CLIENT" && test "$OS_ARCH" = "WINNT"; then
860 if test -n "$MOZ_DEBUG"; then
864 if test -z "$OS_TARGET"; then
867 if test "$OS_TARGET" = "WIN95"; then
870 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
872 dnl ========================================================
873 dnl Enable high-memory support on OS/2 by default.
874 dnl ========================================================
875 AC_ARG_ENABLE(os2-high-mem,
876 [ --disable-os2-high-mem Disable high-memory support on OS/2],
877 [ if test "$enableval" = "no"; then
880 MOZ_OS2_HIGH_MEMORY=1
883 dnl ========================================================
884 dnl Override of system specific host options
885 dnl ========================================================
890 *-cygwin*|*-msvc*|*-mks*|*-wince*|*-winmo*)
891 NSINSTALL='$(CYGWIN_WRAPPER) nsinstall'
892 if test `echo "${PATH}" | grep -c \;` = 0; then
893 CYGWIN_WRAPPER='sh $(topsrcdir)/build/cygwin-wrapper'
897 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE"
902 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
906 dnl ========================================================
907 dnl Override of system specific target options
908 dnl ========================================================
915 DSO_LDOPTS='-brtl -bnortllib -bM:SRE -bnoentry -bexpall -blibpath:/usr/lib:/lib'
916 AC_CHECK_HEADER(sys/atomic_op.h, AC_DEFINE(AIX_HAVE_ATOMIC_OP_H))
917 case "${target_os}" in
919 AC_DEFINE(AIX_RENAME_SELECT)
920 AC_DEFINE(_PR_NO_LARGE_FILES)
921 AIX_LINK_OPTS='-bnso -berok'
922 PR_MD_ASFILES=os_AIX.s
925 AC_DEFINE(AIX_TIMERS)
926 AC_DEFINE(_PR_NO_LARGE_FILES)
930 AIX_LINK_OPTS='-bnso -berok'
931 LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)_shr'
932 LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)_shr'
935 AC_DEFINE(AIX_TIMERS)
936 AC_DEFINE(_PR_HAVE_OFF64_T)
937 AIX_LINK_OPTS='-brtl -bnso -berok'
940 AC_DEFINE(AIX_TIMERS)
941 AC_DEFINE(_PR_HAVE_OFF64_T)
942 AC_DEFINE(AIX4_3_PLUS)
943 AC_DEFINE(HAVE_SOCKLEN_T)
944 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
946 AIX_LINK_OPTS='-brtl -bnso -berok'
949 AC_DEFINE(AIX_TIMERS)
950 AC_DEFINE(_PR_HAVE_OFF64_T)
951 AC_DEFINE(AIX4_3_PLUS)
952 AC_DEFINE(HAVE_SOCKLEN_T)
953 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
955 AIX_LINK_OPTS='-brtl -bnso -berok'
958 CFLAGS="$CFLAGS -qro -qroconst"
959 AIX_WRAP='$(DIST)/lib/aixwrap.o'
960 AIX_TMP='./_aix_tmp.o'
961 if test -n "$USE_64"; then
962 MDCPUCFG_H=_aix64.cfg
965 MDCPUCFG_H=_aix32.cfg
968 RESOLVE_LINK_SYMBOLS=1
975 AC_DEFINE(_POSIX_SOURCE)
980 RESOLVE_LINK_SYMBOLS=1
981 case "${target_cpu}" in
984 _DEBUG_FLAGS='-gdwarf-2 -O0'
985 MKSHLIB='$(CCC) $(DSO_LDOPTS) -o $@'
986 AC_CHECK_LIB(bind, gethostbyaddr, [OS_LIBS="$OS_LIBS -lbind -lsocket"])
992 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'
994 _DEBUG_FLAGS='-g -O0'
1002 AC_DEFINE(NEED_BSDREGEX)
1004 CFLAGS="$CFLAGS -Wall -Wno-format"
1005 CXXFLAGS="$CXXFLAGS -Wall -Wno-format"
1007 if echo "$OS_TEST" | grep -c 86 >/dev/null; then
1009 elif echo "$OS_TEST" | grep -c sparc >/dev/null; then
1013 MDCPUCFG_H=_bsdi.cfg
1018 case "$target_os" in
1020 AC_DEFINE(_PR_BSDI_JMPBUF_IS_ARRAY)
1021 AC_DEFINE(_PR_STAT_HAS_ONLY_ST_ATIME)
1022 AC_DEFINE(_PR_NEED_H_ERRNO)
1029 AC_DEFINE(_PR_TIMESPEC_HAS_TS_SEC)
1030 AC_DEFINE(_PR_BSDI_JMPBUF_IS_ARRAY)
1032 AC_DEFINE(USE_DLFCN)
1033 AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
1034 PR_MD_ASFILES=os_BSD_OS_386_2.s
1038 AC_DEFINE(_PR_SELECT_CONST_TIMEVAL)
1039 AC_DEFINE(_PR_BSDI_JMPBUF_IS_STRUCT)
1041 AC_DEFINE(USE_DLFCN)
1042 AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
1043 MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)'
1045 DSO_LDOPTS='-shared -Wl,-soname,$(@:$(OBJDIR)/%.so=%.so)'
1047 case "$target_os" in
1048 bsdi4.2* | bsdi4.3* | bsdi5.*)
1049 AC_DEFINE(_PR_HAVE_GETPROTO_R)
1050 AC_DEFINE(_PR_HAVE_GETPROTO_R_POINTER)
1055 AC_DEFINE(_PR_SELECT_CONST_TIMEVAL)
1056 AC_DEFINE(_PR_BSDI_JMPBUF_IS_STRUCT)
1058 AC_DEFINE(USE_DLFCN)
1059 AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
1068 AC_DEFINE(HAVE_BSD_FLOCK)
1069 AC_DEFINE(HAVE_SOCKLEN_T)
1070 AS='$(CC) -x assembler-with-cpp'
1071 CFLAGS="$CFLAGS -Wall -fno-common"
1072 case "${target_cpu}" in
1074 if test -n "$USE_64"; then
1076 CC="$CC -arch x86_64"
1086 DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load -install_name @executable_path/$@ -headerpad_max_install_names'
1088 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1089 STRIP="$STRIP -x -S"
1092 MDCPUCFG_H=_darwin.cfg
1093 PR_MD_CSRCS=darwin.c
1094 PR_MD_ASFILES=os_Darwin.s
1096 # Add Mac OS X support for loading CFM & CFBundle plugins
1097 if test -f "${MACOS_SDK_DIR}/System/Library/Frameworks/Carbon.framework/Carbon"; then
1098 AC_DEFINE(XP_MACOSX)
1101 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
1102 dnl Use the specified value
1103 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
1104 elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
1105 dnl No value specified on the command line or in the environment,
1106 dnl use the lesser of the library's minimum or the architecture's
1108 case "${target_cpu}" in
1110 dnl Architecture minimum 10.2
1111 export MACOSX_DEPLOYMENT_TARGET=10.2
1114 dnl Architecture minimum 10.4
1115 export MACOSX_DEPLOYMENT_TARGET=10.4
1120 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is
1121 dnl in use. NEXT_ROOT will be set and exported if it's needed for
1124 if test "$MACOS_SDK_DIR"; then
1125 dnl Sync this section with the one in Mozilla's top level.
1127 if test ! -d "$MACOS_SDK_DIR"; then
1128 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
1129 specify a valid SDK. SDKs are installed when the optional cross-development
1130 tools are selected during the Xcode/Developer Tools installation.])
1134 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
1135 GCC_VERSION_FULL=`echo $CC_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
1136 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
1138 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
1139 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
1140 SDK_C_FRAMEWORK="-F${MACOS_SDK_DIR}/System/Library/Frameworks"
1141 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
1142 SDK_C_FRAMEWORK="$SDK_C_FRAMEWORK -F${MACOS_SDK_DIR}/Library/Frameworks"
1145 SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include ${SDK_C_FRAMEWORK}"
1147 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
1149 dnl CPP needs to be set for AC_CHECK_HEADER.
1150 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
1153 HOST_DARWIN_MAJOR=`echo "$build_os" | sed -E -e 's/^darwin([0-9]+).*$/\1/'`
1155 if test "$HOST_DARWIN_MAJOR" -lt 9 ; then
1156 dnl The build host is running Tiger (10.4) or earlier.
1157 dnl ld support for -syslibroot is compiler-agnostic, but
1158 dnl only available on Tiger and later. On Tiger and
1159 dnl earlier build hosts, just rely on NEXT_ROOT, because
1160 dnl it's not been shown to cause any problems.
1161 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}"
1163 dnl The build host is running Leopard (10.5) or later.
1164 dnl With NEXT_ROOT set, the linker will still not apply
1165 dnl it when resolving dependencies. This causes problems
1166 dnl on Leopard, where an SDK depends on frameworks which
1167 dnl were present in earlier OS releases (and the associated
1168 dnl SDK) but not in Leopard. -syslibroot does not have
1169 dnl this problem, but it results in harmless warnings when
1170 dnl NEXT_ROOT is set. NEXT_ROOT needs to remain set even
1171 dnl on Leopard because the compiler uses it too.
1172 MACOS_SDK_LIBS="-Wl,-syslibroot,${MACOS_SDK_DIR}"
1175 LDFLAGS="${MACOS_SDK_LIBS} $LDFLAGS"
1176 export NEXT_ROOT=$MACOS_SDK_DIR
1178 if test -n "$CROSS_COMPILE" ; then
1179 dnl NEXT_ROOT will be in the environment, but it
1180 dnl shouldn't be set for the build host. HOST_CXX is
1181 dnl presently unused.
1182 HOST_CC="NEXT_ROOT= $HOST_CC"
1183 HOST_CXX="NEXT_ROOT= $HOST_CXX"
1186 dnl gcc >= 4.0 uses different paths than above, but knows
1187 dnl how to find them itself.
1188 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
1190 dnl CPP needs to be set for AC_CHECK_HEADER.
1191 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
1193 dnl If gcc >= 4.0.0, we're guaranteed to be on Tiger, which
1194 dnl has an ld that supports -syslibroot. Don't set
1195 dnl NEXT_ROOT because it will be ignored and cause
1196 dnl warnings when -syslibroot is specified.
1197 if test "$GCC_VERSION_FULL" != "4.0.0" ; then
1198 dnl gcc > 4.0.0 will pass -syslibroot to ld automatically
1199 dnl based on the -isysroot it receives.
1200 LDFLAGS="$LDFLAGS -isysroot ${MACOS_SDK_DIR}"
1202 dnl gcc 4.0.0 doesn't pass -syslibroot to ld, it needs
1204 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
1213 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
1217 AC_DEFINE(_DGUX_SOURCE)
1218 AC_DEFINE(_POSIX4A_DRAFT6_SOURCE)
1222 MDCPUCFG_H=_dgux.cfg
1227 if test -z "$USE_NSPR_THREADS"; then
1232 AC_DEFINE(HAVE_BSD_FLOCK)
1233 AC_DEFINE(HAVE_SOCKLEN_T)
1234 CFLAGS="$CFLAGS $(DSO_CFLAGS) -ansi -Wall"
1235 MOZ_OBJFORMAT=`test -x /usr/bin/objformat && /usr/bin/objformat || echo elf`
1236 if test "$MOZ_OBJFORMAT" = "elf"; then
1241 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1243 DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
1244 MDCPUCFG_H=_freebsd.cfg
1245 PR_MD_CSRCS=freebsd.c
1251 AC_DEFINE(_HPUX_SOURCE)
1252 # OSF1 and HPUX report the POLLHUP event for a socket when the
1253 # shutdown(SHUT_WR) operation is called for the remote end, even though
1254 # the socket is still writeable. Use select(), instead of poll(), to
1255 # workaround this problem.
1256 AC_DEFINE(_PR_POLL_WITH_SELECT)
1257 AC_DEFINE(_USE_BIG_FDS)
1258 DSO_LDOPTS='-b +h $(notdir $@)'
1260 if test "$OS_TEST" = "ia64"; then
1262 DSO_LDOPTS="$DSO_LDOPTS +b '\$\$ORIGIN'"
1263 CPU_ARCH_TAG=_$OS_TEST
1264 if test -z "$USE_64"; then
1267 PR_MD_ASFILES=os_HPUX_ia64.s
1271 PR_MD_ASFILES=os_HPUX.s
1273 if test -n "$USE_64"; then
1274 MDCPUCFG_H=_hpux64.cfg
1276 MDCPUCFG_H=_hpux32.cfg
1278 if test -z "$GNU_CC"; then
1284 ASFLAGS="$ASFLAGS -x assembler-with-cpp"
1287 if test -n "$MOZILLA_CLIENT"; then
1288 DEFAULT_IMPL_STRATEGY=_EMU
1291 if echo "$OS_RELEASE" | grep ^A.09 >/dev/null; then
1292 AC_DEFINE(_PR_NEED_H_ERRNO)
1294 DEFAULT_IMPL_STRATEGY=_EMU
1298 if echo "$OS_RELEASE" | egrep '^(A.09|B.10)' >/dev/null; then
1299 AC_DEFINE(_PR_NO_LARGE_FILES)
1302 if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
1303 AC_DEFINE(_PR_NEED_H_ERRNO)
1306 if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
1307 AC_DEFINE(HAVE_INT_LOCALTIME_R)
1310 if echo "$OS_RELEASE" | egrep '^(B.10.30|B.11)' >/dev/null; then
1311 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
1314 # HP-UX 11i v2 (B.11.23) or higher
1316 case "$OS_RELEASE" in
1317 [C-Z]*|B.[2-9]*|B.1[2-9]*|B.11.[3-9]*|B.11.2[3-9]*)
1323 if test "$OS_RELEASE" = "B.10.01"; then
1325 DEFAULT_IMPL_STRATEGY=_EMU
1328 if test "$OS_RELEASE" = "B.10.10"; then
1330 AC_DEFINE(HPUX10_10)
1331 DEFAULT_IMPL_STRATEGY=_PTH
1334 if test "$OS_RELEASE" = "B.10.20"; then
1336 AC_DEFINE(HPUX10_20)
1337 if test -z "$GNU_CC"; then
1338 CFLAGS="$CFLAGS +DAportable +DS1.1"
1339 CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
1341 DEFAULT_IMPL_STRATEGY=_PTH
1344 if test "$OS_RELEASE" = "B.10.30"; then
1346 AC_DEFINE(HPUX10_30)
1347 if test -z "$GNU_CC"; then
1348 CFLAGS="$CFLAGS +DAportable +DS1.1"
1349 CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
1351 DEFAULT_IMPL_STRATEGY=_PTH
1354 if echo "$OS_RELEASE" | grep ^B.11 >/dev/null; then
1357 AC_DEFINE(_LARGEFILE64_SOURCE)
1358 AC_DEFINE(_PR_HAVE_OFF64_T)
1359 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1360 if test -z "$GNU_CC"; then
1361 if test -z "$USE_64"; then
1362 if test "$OS_TEST" = "ia64"; then
1363 CFLAGS="$CFLAGS +DD32"
1364 CXXFLAGS="$CXXFLAGS +DD32"
1366 CFLAGS="$CFLAGS +DAportable +DS2.0"
1367 CXXFLAGS="$CXXFLAGS +DAportable +DS2.0"
1370 if test "$OS_TEST" = "ia64"; then
1371 CFLAGS="$CFLAGS +DD64"
1372 CXXFLAGS="$CXXFLAGS +DD64"
1374 CFLAGS="$CFLAGS +DA2.0W +DS2.0"
1375 CXXFLAGS="$CXXFLAGS +DA2.0W +DS2.0"
1379 DEFAULT_IMPL_STRATEGY=_PTH
1382 if test "$DEFAULT_IMPL_STRATEGY" = "_EMU"; then
1386 elif test "$DEFAULT_IMPL_STRATEGY" = "_PTH"; then
1388 if test "$USE_NSPR_THREADS"; then
1391 if test "$USE_USER_PTHREADS"; then
1401 AC_DEFINE(_SGI_MP_SOURCE)
1402 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1404 PR_MD_ASFILES=os_Irix.s
1405 MKSHLIB='$(LD) $(DSO_LDOPTS) -rdata_shared -shared -soname $(notdir $@) -o $@'
1407 RESOLVE_LINK_SYMBOLS=1
1408 if test -n "$USE_64"; then
1409 MDCPUCFG_H=_irix64.cfg
1411 MDCPUCFG_H=_irix32.cfg
1413 case "${target_os}" in
1430 if test "$GNU_CC"; then
1432 dnl If we are using gcc with native binutils, we need to
1434 dnl #lineno "filename" num num
1435 dnl lines, which confuse IRIX native as. Add -Wp,-P to the
1436 dnl gcc command line, which passes -P to the preprocessor.
1438 AS='$(CC) -Wp,-P -x assembler-with-cpp -D_ASM -mips2 $(INCLUDES)'
1439 CFLAGS="$CFLAGS -Wall -Wno-format"
1440 _OPTIMIZE_FLAGS="-O6"
1442 if test -n "$USE_N32"; then
1443 AS='as -D_ASM $(INCLUDES) -n32'
1445 AS='as -D_ASM $(INCLUDES)'
1447 CFLAGS="$CFLAGS -fullwarn -xansi"
1448 if test "$USE_N32"; then
1449 _OPTIMIZE_FLAGS="-O -OPT:Olimit=4000"
1451 _OPTIMIZE_FLAGS="-O -Olimit 4000"
1453 if test "$USE_MDUPDATE"; then
1454 CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
1458 CFLAGS="$CFLAGS -multigot"
1459 DSO_LDOPTS="-no_unresolved"
1460 if test "$USE_N32"; then
1461 CFLAGS="$CFLAGS -n32 -woff 1209"
1462 DSO_LDOPTS="$DSO_LDOPTS -n32"
1464 if test "$USE_64"; then
1465 CFLAGS="$CFLAGS -64"
1467 CFLAGS="$CFLAGS -32"
1472 CFLAGS="$CFLAGS -xgot"
1476 if test "${target_os}" = "irix5.3"; then
1479 case "${target_os}" in
1481 if test -z "$GNU_CC"; then
1482 CFLAGS="$CFLAGS -mips3"
1484 AC_DEFINE(_PR_HAVE_GETPROTO_R)
1485 AC_DEFINE(_PR_HAVE_GETPROTO_R_POINTER)
1486 AC_DEFINE(_PR_HAVE_SGI_PRDA_PROCMASK)
1491 AC_DEFINE(_PR_HAVE_SGI_PRDA_PROCMASK)
1497 if test -z "$USE_NSPR_THREADS"; then
1502 AC_DEFINE(_GNU_SOURCE)
1503 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1505 CFLAGS="$CFLAGS -Wall"
1506 CXXFLAGS="$CXXFLAGS -Wall"
1507 MDCPUCFG_H=_linux.cfg
1509 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1511 DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
1513 _DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb, and that
1514 # combo is not yet good at debugging inlined
1515 # functions (even when using DWARF2 as the
1523 *-linux*|*-gnu*|*-k*bsd*-gnu)
1524 if test -z "$USE_NSPR_THREADS"; then
1529 AC_DEFINE(_GNU_SOURCE)
1530 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1531 case "${target_os}" in
1536 CFLAGS="$CFLAGS -Wall"
1537 CXXFLAGS="$CXXFLAGS -Wall"
1538 MDCPUCFG_H=_linux.cfg
1540 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1542 DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
1544 _DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb, and that
1545 # combo is not yet good at debugging inlined
1546 # functions (even when using DWARF2 as the
1549 if echo "$OS_TEST" | grep -c 86 >/dev/null; then
1554 CPU_ARCH_TAG=_${CPU_ARCH}
1555 case "${target_cpu}" in
1559 CFLAGS="$CFLAGS -mieee"
1560 CXXFLAGS="$CXXFLAGS -mieee"
1564 PR_MD_ASFILES=os_Linux_x86.s
1567 PR_MD_ASFILES=os_Linux_ia64.s
1570 if test -n "$USE_64"; then
1571 PR_MD_ASFILES=os_Linux_x86_64.s
1574 PR_MD_ASFILES=os_Linux_x86.s
1580 PR_MD_ASFILES=os_Linux_ppc.s
1583 if test -n "$USE_64"; then
1587 PR_MD_ASFILES=os_Linux_ppc.s
1591 CFLAGS="$CFLAGS -m68020-60"
1592 CXXFLAGS="$CXXFLAGS -m68020-60"
1597 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1600 PR_MD_ARCH_DIR=windows
1601 RESOLVE_LINK_SYMBOLS=1
1603 if test -n "$GNU_CC"; then
1604 CC="$CC -mno-cygwin"
1605 CXX="$CXX -mno-cygwin"
1607 MKSHLIB='$(CC) -shared -Wl,--export-all-symbols -Wl,--out-implib -Wl,$(IMPORT_LIBRARY) $(DLLBASE) -o $(subst $(OBJDIR)/,,$(SHARED_LIBRARY))'
1609 # Use temp file for windres (bug 213281)
1610 RCFLAGS='-O coff --use-temp-file'
1615 AR='lib -NOLOGO -OUT:"$@"'
1617 RANLIB='echo not_ranlib'
1618 STRIP='echo not_strip'
1620 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
1625 # Determine compiler version
1626 CC_VERSION=`"${CC}" -v 2>&1 | grep Version | sed -e 's|.* Version ||' -e 's| .*||'`
1627 _CC_MAJOR_VERSION=`echo $CC_VERSION | awk -F\. '{ print $1 }'`
1628 _CC_MINOR_VERSION=`echo $CC_VERSION | awk -F\. '{ print $2 }'`
1629 MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
1631 # Ensure that mt is Microsoft (R) Manifest Tool and not magnetic
1632 # tape manipulation utility (or something else)
1633 if test "$MSC_VER" -ge "1400"; then
1635 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
1638 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
1639 if test -n "$MSMT_TOOL"; then
1640 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
1641 if test -z "$MSMANIFEST_TOOL_VERSION"; then
1642 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
1647 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
1651 CFLAGS="$CFLAGS -W3 -nologo -GF -Gy"
1652 DLLFLAGS="$DLLFLAGS -OUT:\"\$@\""
1655 if test -z "$MOZ_OPTIMIZE"; then
1656 CFLAGS="$CFLAGS -Od"
1659 if test -n "$USE_DEBUG_RTL"; then
1660 CFLAGS="$CFLAGS -MDd"
1662 CFLAGS="$CFLAGS -MD"
1665 if test -n "$MOZ_DEBUG"; then
1668 DEFINES="$DEFINES -U_DEBUG"
1671 if test -n "$MOZ_DEBUG_SYMBOLS"; then
1672 if test -n "$MOZ_OPTIMIZE"; then
1673 DLLFLAGS="$DLLFLAGS -DEBUG -OPT:REF"
1674 LDFLAGS="$LDFLAGS -DEBUG -OPT:REF"
1676 DLLFLAGS="$DLLFLAGS -DEBUG"
1677 LDFLAGS="$LDFLAGS -DEBUG"
1681 OS_DLLFLAGS="-nologo -DLL -SUBSYSTEM:WINDOWS"
1682 if test "$MSC_VER" -le "1200" -a -z "$MOZ_DEBUG_SYMBOLS"; then
1683 OS_DLLFLAGS="$OS_DLLFLAGS -PDB:NONE"
1686 if test "$OS_TARGET" = "WINNT"; then
1687 CFLAGS="$CFLAGS -GT"
1688 LIBNSPR='$(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1689 LIBPLC='$(dist_libdir)/libplc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1691 LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1692 LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1696 if test -n "$USE_STATIC_TLS"; then
1697 AC_DEFINE(_PR_USE_STATIC_TLS)
1700 if test "$OS_TARGET" = "WINNT"; then
1704 # undefine WINNT as some versions of mingw gcc define it by default
1705 DEFINES="$DEFINES -UWINNT"
1706 AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
1709 if test "$CPU_ARCH" = "x86"; then
1712 CPU_ARCH_TAG=$CPU_ARCH
1715 if test -n "$USE_DEBUG_RTL"; then
1719 case "$OS_TARGET" in
1721 MDCPUCFG_H=_winnt.cfg
1724 MDCPUCFG_H=_win95.cfg
1727 AC_MSG_ERROR([Missing OS_TARGET for ${target}. Use --enable-win32-target to set.])
1731 case "$target_cpu" in
1733 if test -n "$USE_64"; then
1748 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
1757 AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
1759 AR_FLAGS='-NOLOGO -OUT:"$@"'
1764 MKSHLIB='$(LD) -DLL $(DSO_LDOPTS) -OUT:$@'
1766 PR_MD_ARCH_DIR=windows
1767 RESOLVE_LINK_SYMBOLS=1
1769 MDCPUCFG_H=_win95.cfg
1770 LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1771 LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1773 DLLFLAGS='-OUT:"$@"'
1774 if test -n "$MOZ_DEBUG_SYMBOLS"; then
1775 OS_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1776 OS_DLLFLAGS='-DEBUG -DEBUGTYPE:CV'
1777 DSO_LDOPTS='-DEBUG -DEBUGTYPE:CV'
1789 if test "$OS_RELEASE" = "2.03"; then
1790 AC_DEFINE(_PR_STAT_HAS_ST_ATIM)
1792 AC_DEFINE(_PR_STAT_HAS_ST_ATIM_UNION)
1795 if test -z "$GNU_CC"; then
1796 CFLAGS="$CFLAGS -Hnocopyr"
1797 CXXFLAGS="$CXXFLAGS -Hnocopyr"
1799 CFLAGS="$CFLAGS -fPIC -Wall"
1800 CXXFLAGS="$CXXFLAGS -fPIC -Wall"
1814 if test -z "$GNU_CC"; then
1815 CC='$(NSDEPTH)/build/hcc cc -Xa -KGnum=0 -KOlimit=4000'
1818 OS_LIBS="$OS_LIBS -lsocket -lnsl -ldl"
1827 AC_DEFINE(HAVE_BSD_FLOCK)
1828 if test -z "$USE_NSPR_THREADS"; then
1831 MDCPUCFG_H=_netbsd.cfg
1832 PR_MD_CSRCS=netbsd.c
1834 DSO_CFLAGS='-fPIC -DPIC'
1835 CFLAGS="$CFLAGS -ansi -Wall"
1836 CXXFLAGS="$CXXFLAGS -ansi -Wall"
1837 MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)'
1839 if test -z "$OBJECT_FMT"; then
1840 if echo __ELF__ | ${CC-cc} -E - | grep -q __ELF__ 2>/dev/null; then
1843 DSO_LDOPTS='-shared'
1847 DSO_LDOPTS='-shared -Wl,-soname,$(notdir $@)'
1851 if test "$LIBRUNPATH"; then
1852 DSO_LDOPTS="$DSO_LDOPTS -Wl,-R$LIBRUNPATH"
1863 AC_DEFINE(HAVE_SVID_GETTOD)
1865 CFLAGS="$CFLAGS -Xa -fullwarn"
1866 CXXFLAGS="$CXXFLAGS -Xa -fullwarn"
1868 MDCPUCFG_H=_sony.cfg
1872 *-nextstep*|*-openstep*)
1875 AC_DEFINE(HAVE_BSD_FLOCK)
1876 AC_DEFINE(_POSIX_SOURCE)
1877 CFLAGS="$CFLAGS -Wall -fno-common -traditional-cpp -posix"
1878 CXXFLAGS="$CXXFLAGS -Wall -fno-common -traditional-cpp -posix"
1881 MDCPUCFG_H=_nextstep.cfg
1882 PR_MD_CSRCS=nextstep.c
1889 AC_DEFINE(_QNX_SOURCE)
1890 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
1893 MKSHLIB='$(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(notdir $@) -o $@'
1896 OS_LIBS="$OS_LIBS -lsocket"
1897 _OPTIMIZE_FLAGS="-O1"
1898 _DEBUG_FLAGS="-gstabs"
1904 AC_DEFINE(HAVE_BSD_FLOCK)
1905 AC_DEFINE(HAVE_SOCKLEN_T)
1906 CFLAGS="$CFLAGS -ansi -Wall"
1907 CXXFLAGS="$CXXFLAGS -ansi -Wall"
1910 MDCPUCFG_H=_openbsd.cfg
1911 PR_MD_CSRCS=openbsd.c
1913 if test -z "$USE_NSPR_THREADS"; then
1916 DSO_LDOPTS='-shared -fPIC'
1917 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1921 SHELL_OVERRIDE="SHELL = /usr/bin/ksh"
1924 AC_DEFINE(_REENTRANT)
1925 # OSF1 and HPUX report the POLLHUP event for a socket when the
1926 # shutdown(SHUT_WR) operation is called for the remote end, even though
1927 # the socket is still writeable. Use select(), instead of poll(), to
1928 # workaround this problem.
1929 AC_DEFINE(_PR_POLL_WITH_SELECT)
1931 if echo "$OS_RELEASE" | egrep -c '(V2.0|V3.2)' 2>/dev/null ; then
1935 if test -z "$GNU_CC"; then
1936 CC="$CC -std1 -ieee_with_inexact"
1937 if test "$OS_RELEASE" != "V2.0"; then
1938 CC="$CC -readonly_strings"
1940 _OPTIMIZE_FLAGS="$_OPTIMIZE_FLAGS -Olimit 4000"
1941 AC_CHECK_HEADER(machine/builtins.h, AC_DEFINE(OSF1_HAVE_MACHINE_BUILTINS_H))
1943 CFLAGS="$CFLAGS -mieee"
1944 CXXFLAGS="$CXXFLAGS -mieee"
1947 if echo $OS_RELEASE | egrep -c '(V2.0|V3.2)' 2>/dev/null; then
1948 AC_DEFINE(HAVE_INT_LOCALTIME_R)
1950 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1951 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
1953 if echo $OS_RELEASE | grep -c V4.0 >/dev/null; then
1954 AC_DEFINE(OSF1V4_MAP_PRIVATE_BUG)
1956 DSO_LDOPTS='-shared -all -expect_unresolved "*" -soname $(notdir $@)'
1957 MDCPUCFG_H=_osf1.cfg
1964 AC_DEFINE(_PR_NEED_H_ERRNO)
1973 AC_DEFINE(_PR_NEED_H_ERRNO)
1975 MDCPUCFG_H=_riscos.cfg
1976 PR_MD_CSRCS=riscos.c
1978 DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
1979 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1988 AC_DEFINE(_PR_NEED_H_ERRNO)
1989 CC='cc -b elf -KPIC'
1990 CXX='$(NSDEPTH)/build/hcpp CC +.cpp +w'
1993 DSO_LDOPTS='-b elf -G'
1994 MDCPUCFG_H=_scoos.cfg
2002 AC_DEFINE(RELIANTUNIX)
2004 AC_DEFINE(HAVE_SVID_GETTOD)
2005 if echo "$OS_TEST" | grep -c 86 2>/dev/null; then
2012 if test "$GNU_CC"; then
2013 AS='$(CC) -x assembler-with-cpp'
2014 if test "$CPU_ARCH" = "mips"; then
2017 CFLAGS="$CFLAGS -Wall -Wno-format"
2020 _OPTIMIZE_FLAGS='-O -F Olimit,4000'
2023 DSO_LDOPTS='-G -z defs -h $(@:$(OBJDIR)/%.so=%.so)'
2025 if test "$OS_RELEASE" = "5.43"; then
2026 AC_DEFINE(IP_MULTICAST)
2029 OS_LIBS="$OS_LIBS -lsocket -lnsl -lresolv -ldl -lc"
2031 MDCPUCFG_H=_reliantunix.cfg
2032 PR_MD_CSRCS=reliantunix.c
2033 if test "${OS_ARCH}" = "mips"; then
2034 PR_MD_ASFILES=os_ReliantUNIX.s
2041 CFLAGS="$CFLAGS -Wall -Wno-format"
2042 if test "$USE_MDUPDATE"; then
2043 CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
2050 if test "$OS_RELEASE" = "4.1.3_U1"; then
2052 OS_LIBS="$OS_LIBS -lm"
2054 MDCPUCFG_H=_sunos4.cfg
2055 PR_MD_CSRCS=sunos4.c
2059 if test -z "$USE_NSPR_THREADS"; then
2068 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
2070 MDCPUCFG_H=_solaris.cfg
2071 PR_MD_CSRCS=solaris.c
2073 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2074 RESOLVE_LINK_SYMBOLS=1
2075 case "${OS_RELEASE}" in
2079 # It is safe to use the -Bdirect linker flag on Solaris 10 or later.
2083 if test -n "$GNU_CC"; then
2085 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
2088 DSO_LDOPTS='-shared -Wl,-h,$(notdir $@),-z,combreloc,-z,defs,-z,ignore'
2089 if test -n "$USE_B_DIRECT"; then
2090 DSO_LDOPTS="$DSO_LDOPTS,-Bdirect"
2094 DSO_LDOPTS='-G -h $(notdir $@) -z combreloc -z defs -z ignore'
2095 if test -n "$USE_B_DIRECT"; then
2096 DSO_LDOPTS="$DSO_LDOPTS -Bdirect"
2099 if test -n "$GNU_CC"; then
2100 CFLAGS="$CFLAGS -Wall"
2101 CXXFLAGS="$CXXFLAGS -Wall"
2102 if test -n "$USE_MDUPDATE"; then
2103 CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
2104 CXXFLAGS="$CXXFLAGS -MDupdate \$(DEPENDENCIES)"
2106 GCC_AS=`$CC -print-prog-name=as`
2107 if test "`echo | $GCC_AS -v 2>&1 | grep -c GNU`" != "0"; then
2111 CFLAGS="$CFLAGS -xstrconst"
2112 CXXFLAGS="$CXXFLAGS -Qoption cg -xstrconst -features=tmplife"
2113 if test -z "$MOZ_OPTIMIZE"; then
2114 CFLAGS="$CFLAGS -xs"
2115 CXXFLAGS="$CXXFLAGS -xs"
2117 _OPTIMIZE_FLAGS=-xO4
2119 if test -z "$GNU_AS"; then
2120 ASFLAGS="$ASFLAGS -Wa,-P"
2122 if test -n "$USE_64"; then
2123 if test -n "$GNU_CC"; then
2127 if test "$OS_TEST" = "i86pc"; then
2128 CC="$CC -xarch=amd64"
2129 CXX="$CXX -xarch=amd64"
2132 CXX="$CXX -xarch=v9"
2136 if test "$OS_TEST" = "i86pc"; then
2137 if test -z "$USE_64"; then
2140 CPU_ARCH_TAG=_$OS_TEST
2141 # The default debug format, DWARF (-g), is not supported by gcc
2142 # on i386-ANY-sysv4/solaris, but the stabs format is. It is
2143 # assumed that the Solaris assembler /usr/ccs/bin/as is used.
2144 # If your gcc uses GNU as, you do not need the -Wa,-s option.
2145 if test -n "$MOZ_DEBUG" && test -n "$GNU_CC"; then
2146 _DEBUG_FLAGS=-gstabs
2147 if test -z "$GNU_AS"; then
2148 _DEBUG_FLAGS="$_DEBUG_FLAGS -Wa,-s"
2152 case "${target_os}" in
2154 AC_DEFINE(_PR_NO_LARGE_FILES)
2157 AC_DEFINE(_PR_NO_LARGE_FILES)
2160 AC_DEFINE(SOLARIS2_5)
2163 AC_DEFINE(_PR_HAVE_OFF64_T)
2164 # The lfcompile64(5) man page on Solaris 2.6 says:
2165 # For applications that do not wish to conform to the POSIX or
2166 # X/Open specifications, the 64-bit transitional interfaces
2167 # are available by default. No compile-time flags need to be
2169 # But gcc 2.7.2.x fails to define _LARGEFILE64_SOURCE by default.
2170 # The native compiler, gcc 2.8.x, and egcs don't have this problem.
2171 if test -n "$GNU_CC"; then
2172 AC_DEFINE(_LARGEFILE64_SOURCE)
2176 case "${target_os}" in
2188 # Solaris 8 or higher has IPv6.
2189 AC_DEFINE(_PR_INET6)
2192 if test "$CPU_ARCH" = "sparc"; then
2193 # 64-bit Solaris SPARC requires V9 architecture, so the following
2195 if test -z "$USE_64"; then
2196 ULTRASPARC_LIBRARY=nspr_flt
2199 # Purify requires that binaries linked against nspr also
2200 # be linked against -lrt (or -lposix4) so add it to OS_LIBS
2202 _librt=`echo $_rev 5.6 | awk '{ if ($1 > $2) print "-lrt"; else print "-lposix4" }'`
2203 OS_LIBS="$OS_LIBS $_librt"
2212 if echo $OS_RELEASE | grep -c 2.1 2>/dev/null; then
2213 AC_DEFINE(_PR_NO_LARGE_FILES)
2214 CC='$(NSDEPTH)/build/hcc cc'
2215 CXX='$(NSDEPTH)/build/hcpp CC'
2216 MDCPUCFG_H=_unixware.cfg
2218 AC_DEFINE(_LARGEFILE64_SOURCE)
2219 AC_DEFINE(_PR_HAVE_OFF64_T)
2220 AC_DEFINE(_PR_HAVE_SOCKADDR_LEN)
2221 MDCPUCFG_H=_unixware7.cfg
2223 PR_MD_CSRCS=unixware.c
2229 AC_ARG_WITH(symbian-sdk,
2230 [ --with-symbian-sdk=SYMBIAN_SDK_DIR
2231 The path to the Symbian SDK],
2232 SYMBIAN_SDK_DIR=$withval)
2234 echo -----------------------------------------------------------------------------
2235 echo Building with Symbian SDK in: $SYMBIAN_SDK_DIR
2236 echo -----------------------------------------------------------------------------
2241 AC_DEFINE(__SYMBIAN32__)
2244 AC_DEFINE(__SUPPORT_CPP_EXCEPTIONS__)
2245 AC_DEFINE(MOZ_STDERR_TO_STDOUT)
2246 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
2247 AC_DEFINE(HAVE_SOCKLEN_T)
2255 MDCPUCFG_H=_symbian.cfg
2256 PR_MD_CSRCS=symbian.c
2258 RANLIB='echo no ranlib '
2261 OS_EXE_CFLAGS="$OS_EXE_CFLAGS -D__EXE__"
2262 CFLAGS="$CFLAGS -MD -nostdinc"
2263 SYMBIAN_SYS_INCLUDE="-I$SYMBIAN_SDK_DIR/Epoc32/include/variant -I$SYMBIAN_SDK_DIR/Epoc32/include -I$SYMBIAN_SDK_DIR/Epoc32/include/stdapis"
2264 echo -------------------------------------------------------
2265 echo SYMBIAN_SYS_INCLUDE is: $SYMBIAN_SYS_INCLUDE
2266 echo -------------------------------------------------------
2267 case "$OS_TARGET" in
2273 WINSCW_LD_DIR="\$(SYMBIAN_SDK_DIR)/EPOC32/RELEASE/WINSCW/UDEB"
2274 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)"
2275 SYMBIAN_SYS_INCLUDE="$SYMBIAN_SYS_INCLUDE -include Symbian_OS_v9.2.hrh"
2276 AR_FLAGS="-library -msgstyle gcc -stdlib -subsystem windows -noimplib -o \$@"
2280 AC_DEFINE(__WINSCW__)
2281 DEFINES="$DEFINES -U_WIN32"
2284 CFLAGS="$CFLAGS -Wall -Wno-unknown-pragmas -fexceptions -march=armv5t -mapcs -pipe -x c -msoft-float"
2285 CXXFLAGS="$CXXFLAGS $CFLAGS -Wno-ctor-dtor-privacy"
2286 SYMBIAN_SYS_INCLUDE="$SYMBIAN_SYS_INCLUDE -include $SYMBIAN_SDK_DIR/EPOC32/INCLUDE/GCCE/GCCE.h"
2289 DEFINES="$DEFINES -D__PRODUCT_INCLUDE__=$SYMBIAN_SDK_DIR/Epoc32/include/variant/Symbian_OS_v9.2.hrh"
2292 AC_MSG_ERROR([Missing OS_TARGET for ${target}. Set --enable-symbian-target to with 'WINSCW' or 'GCCE'.])
2295 CFLAGS="$CFLAGS ${SYMBIAN_SYS_INCLUDE}"
2301 AC_DEFINE(BSD_SELECT)
2302 AC_DEFINE(TCPV40HDRS)
2310 RESOLVE_LINK_SYMBOLS=1
2315 CFLAGS="$CFLAGS -Wall -Zomf"
2316 CXXFLAGS="$CFLAGS -Wall -Zomf"
2317 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2319 DSO_LDOPTS='-Zomf -Zdll'
2321 _OPTIMIZE_FLAGS="-O2 -s"
2322 _DEBUG_FLAGS="-g -fno-inline"
2323 if test -n "$MOZ_OPTIMIZE"; then
2324 DSO_LDOPTS="$DSO_LDOPTS -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2328 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2329 LDFLAGS="$LDFLAGS -Zhigh-mem"
2330 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2333 # GCC for OS/2 currently predefines these, but we don't want them
2334 DEFINES="$DEFINES -Uunix -U__unix -U__unix__"
2343 if test -z "$SKIP_LIBRARY_CHECKS"; then
2344 dnl ========================================================
2345 dnl Check for system libraries
2346 dnl ========================================================
2347 dnl AC_CHECK_LIB(C, main)
2348 dnl AC_CHECK_LIB(C_r, main)
2349 dnl AC_CHECK_LIB(c, main)
2350 dnl AC_CHECK_LIB(c_r, main)
2351 dnl AC_CHECK_LIB(dce, main)
2352 dnl AC_CHECK_LIB(dl, main)
2353 dnl AC_CHECK_LIB(dld, main)
2354 dnl AC_CHECK_LIB(gen, main)
2355 dnl AC_CHECK_LIB(ip6, main)
2356 dnl AC_CHECK_LIB(l, main)
2357 dnl AC_CHECK_LIB(m, main)
2358 dnl AC_CHECK_LIB(nsl, main)
2359 dnl AC_CHECK_LIB(posix4, main)
2360 dnl AC_CHECK_LIB(prstrms, main)
2361 dnl AC_CHECK_LIB(prstrms_shr, main)
2362 dnl AC_CHECK_LIB(pthread, main)
2363 dnl AC_CHECK_LIB(pthreads, main)
2364 dnl AC_CHECK_LIB(resolv, main)
2365 dnl AC_CHECK_LIB(rt, main)
2366 dnl AC_CHECK_LIB(socket, main)
2367 dnl AC_CHECK_LIB(svld, main)
2368 dnl AC_CHECK_LIB(thread, main)
2369 dnl AC_CHECK_LIB(vms_jackets, main)
2372 dnl We don't want anything to link with libdl even if it's present on OS X,
2373 dnl since it's not used and not part of the default installation.
2374 dnl The same goes for BeOS.
2375 dnl OS/2 has dlfcn in libc.
2378 *-darwin*|*-beos*|*-os2*)
2381 AC_CHECK_LIB(dl, dlopen,
2382 AC_CHECK_HEADER(dlfcn.h,
2383 OS_LIBS="-ldl $OS_LIBS"))
2388 dnl ========================================================
2389 dnl Check for system header files.
2390 dnl ========================================================
2391 dnl AC_HEADER_DIRENT
2393 dnl AC_HEADER_SYS_WAIT
2394 dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/file.h sys/ioctl.h sys/time.h unistd.h)
2396 dnl ========================================================
2397 dnl Check for typedefs and structs
2398 dnl ========================================================
2405 dnl AC_STRUCT_ST_BLKSIZE
2406 dnl AC_STRUCT_ST_BLOCKS
2407 dnl AC_STRUCT_ST_RDEV
2411 dnl ========================================================
2412 dnl Checks for library functions.
2413 dnl ========================================================
2414 AC_PROG_GCC_TRADITIONAL
2415 AC_CHECK_FUNCS(lchown strerror)
2419 dnl AC_FUNC_SETVBUF_REVERSED
2421 dnl AC_FUNC_STRFTIME
2422 dnl AC_FUNC_UTIME_NULL
2424 dnl AC_CHECK_FUNCS(ftime getcwd gethostname gettimeofday getwd mkdir mktime putenv rmdir select socket strdup strerror strstr strtol strtoul uname)
2426 dnl ========================================================
2428 dnl ========================================================
2430 dnl ========================================================
2432 dnl = --enable-strip
2434 dnl = Enable stripping of libs and executables
2436 dnl ========================================================
2437 AC_ARG_ENABLE(strip,
2438 [ --enable-strip Enable stripping of shared libs and programs],
2439 [ if test "$enableval" = "yes"; then
2443 dnl Check for hpux options
2444 case "${target_os}" in
2446 if test -z "$GNU_CC"; then
2448 AC_CACHE_CHECK(for +Olit support,
2449 ac_cv_hpux_usable_olit_option,
2450 dnl since aCC doesn't throw an error on invalid options,
2451 dnl we have to test this the hard way
2452 [ac_cv_hpux_usable_olit_option=no
2454 echo 'int main() { return 0; }' | cat > conftest.c
2455 ${CC-cc} ${CFLAGS} +Olit=all -o conftest conftest.c > conftest.out 2>&1
2456 if test $? -eq 0; then
2457 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out`"; then
2458 ac_cv_hpux_usable_olit_option=yes
2464 if test "$ac_cv_hpux_usable_olit_option" = "yes"; then
2465 CFLAGS="$CFLAGS +Olit=all"
2466 CXXFLAGS="$CXXFLAGS +Olit=all"
2468 CFLAGS="$CFLAGS +ESlit"
2469 CXXFLAGS="$CXXFLAGS +ESlit"
2476 dnl Apparently, some systems cannot properly check for the pthread
2477 dnl library unless <pthread.h> is included so we need to test
2480 dnl MOZ_CHECK_PTHREADS(lib, success, failure)
2481 AC_DEFUN(MOZ_CHECK_PTHREADS,
2483 AC_MSG_CHECKING([for pthread_create in -l$1])
2485 #include <pthread.h>
2486 void *foo(void *v) { return v; }
2489 if (!pthread_create(&t, 0, &foo, 0)) {
2494 echo "${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -l[$1] $LDFLAGS $LIBS" 1>&5;
2495 ${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -l[$1] $LDFLAGS $LIBS 2>&5;
2497 rm -f dummy.c dummy${ac_exeext} ;
2498 if test "$_res" = "0"; then
2499 AC_MSG_RESULT([yes])
2507 case "$target_os" in
2515 MOZ_CHECK_PTHREADS(pthreads,
2516 _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
2517 MOZ_CHECK_PTHREADS(pthread,
2518 _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
2519 MOZ_CHECK_PTHREADS(c_r,
2520 _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
2521 MOZ_CHECK_PTHREADS(c,
2530 AC_ARG_WITH(pthreads,
2531 [ --with-pthreads Use system pthreads library as thread subsystem],
2532 [ if test "$withval" = "yes"; then
2533 if test -n "$_HAVE_PTHREADS"; then
2538 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
2544 [ if test -n "$_HAVE_PTHREADS" && test -z "$USE_USER_PTHREADS" && test -z "$USE_NSPR_THREADS"; then
2550 AC_ARG_ENABLE(user-pthreads,
2551 [ --enable-user-pthreads Build using userland pthreads],
2552 [ if test "$enableval" = "yes"; then
2553 if test -n "$_HAVE_PTHREADS"; then
2558 AC_MSG_ERROR([ --enable-user-pthreads specified for a system without pthread support ]);
2562 AC_ARG_ENABLE(nspr-threads,
2563 [ --enable-nspr-threads Build using classic nspr threads],
2564 [ if test "$enableval" = "yes"; then
2572 AC_ARG_WITH(bthreads,
2573 [ --with-bthreads Use system bthreads library as thread subsystem
2575 [ if test "$withval" = "yes"; then
2583 fi # SKIP_LIBRARY_CHECKS
2586 [ --enable-ipv6 Compile ipv6 support],
2587 [ if test "$enableval" = "yes"; then
2594 AC_ARG_ENABLE(boehm,
2595 [ --enable-boehm Enable the Boehm Garbage Collector],
2596 [ if test "$enableval" = "yes"; then
2597 AC_DEFINE(GC_LEAK_DETECTOR)
2601 if test -n "$USE_PTHREADS"; then
2602 dnl See if -pthread is supported.
2604 ac_cv_have_dash_pthread=no
2605 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
2606 echo 'int main() { return 0; }' | cat > conftest.c
2607 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
2608 if test $? -eq 0; then
2609 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2610 ac_cv_have_dash_pthread=yes
2611 case "$target_os" in
2613 # Freebsd doesn't use -pthread for compiles, it uses them for linking
2616 CFLAGS="$CFLAGS -pthread"
2617 CXXFLAGS="$CXXFLAGS -pthread"
2623 AC_MSG_RESULT($ac_cv_have_dash_pthread)
2626 dnl See if -pthreads is supported.
2628 ac_cv_have_dash_pthreads=no
2629 if test "$ac_cv_have_dash_pthread" = "no"; then
2630 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
2631 echo 'int main() { return 0; }' | cat > conftest.c
2632 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
2633 if test $? -eq 0; then
2634 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2635 ac_cv_have_dash_pthreads=yes
2636 CFLAGS="$CFLAGS -pthreads"
2637 CXXFLAGS="$CXXFLAGS -pthreads"
2641 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
2646 if test "$ac_cv_have_dash_pthreads" = "yes"; then
2651 AC_DEFINE(_REENTRANT)
2652 AC_DEFINE(_THREAD_SAFE)
2653 dnl -pthread links in -lc_r, so don't specify it explicitly.
2654 if test "$ac_cv_have_dash_pthread" = "yes"; then
2655 _PTHREAD_LDFLAGS="-pthread"
2657 _PTHREAD_LDFLAGS="-lc_r"
2661 if test "$ac_cv_have_dash_pthread" = "yes"; then
2662 _PTHREAD_LDFLAGS="-pthread"
2666 AC_DEFINE(_THREAD_SAFE)
2667 dnl -pthread links in -lc_r, so don't specify it explicitly.
2668 if test "$ac_cv_have_dash_pthread" = "yes"; then
2673 if test "$ac_cv_have_dash_pthread" = "yes"; then
2674 _PTHREAD_LDFLAGS=-pthread
2677 *-linux*|*-gnu*|*-k*bsd*-gnu)
2678 AC_DEFINE(_REENTRANT)
2683 if test -n "$USE_USER_PTHREADS"; then
2690 dnl Special thread exceptions
2694 if test -n "$USE_NSPR_THREADS"; then
2695 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2697 case "$target_os" in
2699 if test -z "$USE_PTHREADS"; then
2700 AC_DEFINE(AIX_RENAME_SELECT)
2704 if test -z "$USE_NSPR_THREADS"; then
2705 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2709 if test -z "$USE_NSPR_THREADS"; then
2710 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2712 if test -n "$USE_PTHREADS"; then
2713 AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2717 if test -z "$USE_NSPR_THREADS"; then
2718 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2720 if test -n "$USE_PTHREADS"; then
2721 AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2727 if test -n "$USE_PTHREADS"; then
2728 AC_DEFINE(_PR_NEED_PTHREAD_INIT)
2732 if test -n "$USE_NSPR_THREADS"; then
2733 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2737 if test -n "$USE_NSPR_THREADS"; then
2738 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2740 if test "$USE_PTHREADS"; then
2741 if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
2742 AC_DEFINE(_REENTRANT)
2743 AC_DEFINE(_PR_DCETHREADS)
2745 AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
2746 AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2749 if test "$USE_USER_PTHREADS"; then
2750 AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
2754 if test "${target_os}" = "irix6.5"; then
2755 if test -n "$USE_PTHREADS"; then
2756 AC_DEFINE(_PR_HAVE_GETHOST_R)
2757 AC_DEFINE(_PR_HAVE_GETHOST_R_POINTER)
2761 *-linux*|*-gnu*|*-k*bsd*-gnu)
2762 if test -n "$USE_NSPR_THREADS"; then
2763 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2766 *-mingw*|*-cygwin*|*-msvc*|*-mks*|*-wince*|*-winmo*|*-os2*|*-beos*)
2767 dnl win32, wince, os2 & beos cannot use pthreads
2772 *-netbsd*|*-openbsd*)
2773 if test -n "$USE_NSPR_THREADS"; then
2774 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2778 if test -n "$USE_NSPR_THREADS"; then
2779 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2781 if test -n "$USE_PTHREADS"; then
2782 if echo $OS_RELEASE | egrep -c '(V2.0|V3.2)' 2>/dev/null; then
2785 AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2790 if test -n "$USE_NSPR_THREADS"; then
2791 AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2793 if test -n "$USE_PTHREADS"; then
2794 AC_DEFINE(_REENTRANT)
2795 AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2796 if test "$OS_TEST" = "i86pc"; then
2797 if test -n "$USE_64"; then
2798 PR_MD_ASFILES=os_SunOS_x86_64.s
2800 PR_MD_ASFILES=os_SunOS_x86.s
2803 if test -n "$USE_64"; then
2804 PR_MD_ASFILES=os_SunOS_sparcv9.s
2810 if test -n "$USE_PTHREADS"; then
2811 AC_DEFINE(_PR_HAVE_GETHOST_R)
2812 AC_DEFINE(_PR_HAVE_GETHOST_R_POINTER)
2817 OS_LIBS="$_PTHREAD_LDFLAGS $OS_LIBS"
2819 dnl If the user passed in arg to --enable-optimize or --enable-debug,
2820 dnl make sure that we use it.
2821 if test -n "$_SAVE_OPTIMIZE_FLAGS"; then
2822 _OPTIMIZE_FLAGS="$_SAVE_OPTIMIZE_FLAGS"
2825 if test -n "$_SAVE_DEBUG_FLAGS"; then
2826 _DEBUG_FLAGS="$_SAVE_DEBUG_FLAGS"
2829 if test -n "$MOZ_OPTIMIZE"; then
2830 CFLAGS="$CFLAGS $_OPTIMIZE_FLAGS"
2831 CXXFLAGS="$CXXFLAGS $_OPTIMIZE_FLAGS"
2834 if test -n "$MOZ_DEBUG_SYMBOLS"; then
2835 CFLAGS="$CFLAGS $_DEBUG_FLAGS"
2836 CXXFLAGS="$CXXFLAGS $_DEBUG_FLAGS"
2839 if test -n "$MOZ_OPTIMIZE"; then
2845 if test -n "$USE_64"; then
2849 RELEASE_OBJDIR_NAME="${OS_CONFIG}${CPU_ARCH_TAG}${COMPILER_TAG}${IMPL_STRATEGY}${OBJDIR_TAG}.${OBJDIR_SUFFIX}"
2851 dnl ========================================================
2852 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
2853 dnl ========================================================
2854 case "$target_os" in
2856 CC="\$(CYGWIN_WRAPPER) $CC"
2857 CXX="\$(CYGWIN_WRAPPER) $CXX"
2858 RC="\$(CYGWIN_WRAPPER) $RC"
2862 dnl ========================================================
2863 dnl Substitution of found variables.
2864 dnl ========================================================
2865 AC_SUBST(SHELL_OVERRIDE)
2867 AC_SUBST(MOZILLA_CLIENT)
2874 AC_SUBST(HOST_CFLAGS)
2876 AC_SUBST(HOST_LDFLAGS)
2878 AC_SUBST(GCC_USE_GNU_LD)
2880 AC_SUBST(CROSS_COMPILE)
2882 AC_SUBST(MOZ_OPTIMIZE)
2884 AC_SUBST(MOZ_DEBUG_SYMBOLS)
2890 AC_SUBST(OBJECT_MODE)
2891 AC_SUBST(GC_LEAK_DETECTOR)
2892 AC_SUBST(ENABLE_STRIP)
2894 AC_SUBST(USE_PTHREADS)
2895 AC_SUBST(USE_BTHREADS)
2896 AC_SUBST(USE_USER_PTHREADS)
2897 AC_SUBST(USE_NSPR_THREADS)
2902 AC_SUBST(MOD_MAJOR_VERSION)
2903 AC_SUBST(MOD_MINOR_VERSION)
2904 AC_SUBST(MOD_PATCH_VERSION)
2905 AC_SUBST(NSPR_MODNAME)
2906 AC_SUBST(MDCPUCFG_H)
2907 AC_SUBST(PR_MD_CSRCS)
2908 AC_SUBST(PR_MD_ASFILES)
2909 AC_SUBST(PR_MD_ARCH_DIR)
2912 AC_SUBST(OBJ_SUFFIX)
2913 AC_SUBST(LIB_SUFFIX)
2914 AC_SUBST(DLL_SUFFIX)
2915 AC_SUBST(ASM_SUFFIX)
2917 AC_SUBST(DSO_CFLAGS)
2918 AC_SUBST(DSO_LDOPTS)
2922 AC_SUBST(OS_RELEASE)
2924 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
2940 AC_SUBST(RESOLVE_LINK_SYMBOLS)
2941 AC_SUBST(AIX_LINK_OPTS)
2942 AC_SUBST(NOSUCHFILE)
2943 AC_SUBST(MOZ_OBJFORMAT)
2944 AC_SUBST(ULTRASPARC_LIBRARY)
2947 AC_SUBST(OBJDIR_NAME)
2948 AC_SUBST(RELEASE_OBJDIR_NAME)
2955 AC_SUBST(OS_DLLFLAGS)
2956 AC_SUBST(CYGWIN_WRAPPER)
2957 AC_SUBST(VISIBILITY_FLAGS)
2958 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2959 AC_SUBST(MACOS_SDK_DIR)
2960 AC_SUBST(SYMBIAN_SDK_DIR)
2964 dnl ========================================================
2965 dnl Generate output files.
2966 dnl ========================================================
2977 lib/libc/include/Makefile
2978 lib/libc/src/Makefile
2982 pkg/solaris/Makefile
2983 pkg/solaris/SUNWpr/Makefile
2984 pkg/solaris/SUNWprd/Makefile
2987 pr/include/md/Makefile
2988 pr/include/obsolete/Makefile
2989 pr/include/private/Makefile
2992 pr/src/linking/Makefile
2993 pr/src/malloc/Makefile
2995 pr/src/md/${PR_MD_ARCH_DIR}/Makefile
2996 pr/src/memory/Makefile
2997 pr/src/misc/Makefile
2998 pr/src/threads/Makefile
3000 pr/tests/dll/Makefile
3003 dnl lib/tests/Makefile
3004 dnl pr/tests/w16gui/Makefile
3007 if test -z "$USE_PTHREADS" && test -z "$USE_BTHREADS"; then
3008 MAKEFILES="$MAKEFILES pr/src/threads/combined/Makefile"
3009 elif test -n "$USE_PTHREADS"; then
3010 MAKEFILES="$MAKEFILES pr/src/pthreads/Makefile"
3011 elif test -n "$USE_BTHREADS"; then
3012 MAKEFILES="$MAKEFILES pr/src/bthreads/Makefile"
3015 if test -n "$USE_CPLUS"; then
3016 MAKEFILES="$MAKEFILES pr/src/cplus/Makefile pr/src/cplus/tests/Makefile"
3019 echo $MAKEFILES > unallmakefiles
3021 AC_OUTPUT([$MAKEFILES], [chmod +x config/nspr-config])