configure.in (74287B)
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*- 2 dnl 3 dnl This Source Code Form is subject to the terms of the Mozilla Public 4 dnl License, v. 2.0. If a copy of the MPL was not distributed with this 5 dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. 6 7 AC_PREREQ(2.61) 8 AC_INIT 9 AC_CONFIG_SRCDIR([pr/include/nspr.h]) 10 11 AC_CONFIG_AUX_DIR(build/autoconf) 12 AC_CANONICAL_TARGET 13 14 dnl ======================================================== 15 dnl = Defaults 16 dnl ======================================================== 17 MOD_MAJOR_VERSION=4 18 MOD_MINOR_VERSION=38 19 MOD_PATCH_VERSION=2 20 NSPR_MODNAME=nspr20 21 _HAVE_PTHREADS= 22 USE_PTHREADS= 23 USE_USER_PTHREADS= 24 USE_NSPR_THREADS= 25 USE_N32= 26 USE_X32= 27 USE_64= 28 USE_CPLUS= 29 USE_IPV6= 30 USE_MDUPDATE= 31 _MACOSX_DEPLOYMENT_TARGET= 32 _OPTIMIZE_FLAGS=-O 33 _DEBUG_FLAGS=-g 34 MOZ_DEBUG=1 35 MOZ_OPTIMIZE= 36 OBJDIR='$(OBJDIR_NAME)' 37 OBJDIR_NAME=. 38 OBJDIR_SUFFIX=OBJ 39 NSINSTALL='$(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall' 40 NOSUCHFILE=/no-such-file 41 LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)' 42 LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)' 43 CYGWIN_WRAPPER= 44 MACOS_SDK_DIR= 45 NEXT_ROOT= 46 MT= 47 PROFILE_GEN_CFLAGS= 48 PROFILE_GEN_LDFLAGS= 49 PROFILE_USE_CFLAGS= 50 PROFILE_USE_LDFLAGS= 51 52 dnl Link in libraries necessary to resolve all symbols for shared libs 53 RESOLVE_LINK_SYMBOLS= 54 55 dnl ======================================================== 56 dnl = 57 dnl = Dont change the following lines. Doing so breaks: 58 dnl = 59 dnl = CFLAGS="-foo" ./configure 60 dnl = 61 dnl ======================================================== 62 CFLAGS="${CFLAGS=}" 63 CXXFLAGS="${CXXFLAGS=}" 64 LDFLAGS="${LDFLAGS=}" 65 DLLFLAGS="${DLLFLAGS=}" 66 HOST_CFLAGS="${HOST_CFLAGS=}" 67 HOST_LDFLAGS="${HOST_LDFLAGS=}" 68 69 case "$target" in 70 *-cygwin*|*-mingw*|*-msys*) 71 # Check to see if we are really running in a msvc environemnt 72 _WIN32_MSVC= 73 AC_CHECK_PROGS(CC, cl) 74 cat > conftest.c <<EOF 75 #ifdef _MSC_VER 76 COMPILER IS MSVC 77 #endif 78 EOF 79 read dummy <<EOF 80 $($CC -E conftest.c 2>/dev/null | grep COMPILER) 81 EOF 82 if test -n "$dummy"; then 83 _WIN32_MSVC=1 84 CXX=$CC 85 fi 86 rm -f conftest.c 87 ;; 88 *-mks*) 89 _WIN32_MSVC=1 90 ;; 91 esac 92 93 if test -n "$_WIN32_MSVC"; then 94 SKIP_PATH_CHECKS=1 95 SKIP_COMPILER_CHECKS=1 96 SKIP_LIBRARY_CHECKS=1 97 fi 98 99 dnl ======================================================== 100 dnl = Android uses a very custom (hacky) toolchain; we need to do this 101 dnl = here, so that the compiler checks can succeed 102 dnl ======================================================== 103 104 AC_ARG_WITH(android-ndk, 105 [ --with-android-ndk=DIR 106 location where the Android NDK can be found], 107 android_ndk=$withval) 108 109 AC_ARG_WITH(android-toolchain, 110 [ --with-android-toolchain=DIR 111 location of the Android toolchain], 112 android_toolchain=$withval) 113 114 dnl The default android_version is different for each target cpu. 115 case "$target_cpu" in 116 arm) 117 android_version=5 118 ;; 119 i?86|mipsel) 120 android_version=9 121 ;; 122 esac 123 124 AC_ARG_WITH(android-version, 125 [ --with-android-version=VER 126 Android platform version, default 5 for arm, 9 for x86/mips], 127 android_version=$withval) 128 129 AC_ARG_WITH(android-platform, 130 [ --with-android-platform=DIR 131 location of platform dir], 132 android_platform=$withval) 133 134 case "$target" in 135 x86_64-linux*-android*) 136 android_tool_prefix="x86_64-linux-android" 137 ;; 138 aarch64-linux*-android*) 139 android_tool_prefix="aarch64-linux-android" 140 ;; 141 arm-linux*-android*|*-linuxandroid*) 142 android_tool_prefix="arm-linux-androideabi" 143 ;; 144 i?86-*android*) 145 android_tool_prefix="i686-linux-android" 146 ;; 147 mipsel-*android*) 148 android_tool_prefix="mipsel-linux-android" 149 ;; 150 *) 151 android_tool_prefix="$target_os" 152 ;; 153 esac 154 155 case "$target" in 156 *-android*|*-linuxandroid*) 157 if test -z "$android_ndk" ; then 158 AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.]) 159 fi 160 161 if test -z "$android_toolchain" ; then 162 AC_MSG_CHECKING([for android toolchain directory]) 163 164 kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"` 165 166 case "$target_cpu" in 167 arm) 168 target_name=arm-linux-androideabi-4.4.3 169 ;; 170 i?86) 171 target_name=x86-4.4.3 172 ;; 173 mipsel) 174 target_name=mipsel-linux-android-4.4.3 175 ;; 176 esac 177 android_toolchain="$android_ndk"/toolchains/$target_name/prebuilt/$kernel_name-x86 178 179 if test -d "$android_toolchain" ; then 180 AC_MSG_RESULT([$android_toolchain]) 181 else 182 AC_MSG_ERROR([not found. You have to specify --with-android-toolchain=/path/to/ndk/toolchain.]) 183 fi 184 fi 185 186 if test -z "$android_platform" ; then 187 AC_MSG_CHECKING([for android platform directory]) 188 189 case "$target_cpu" in 190 arm) 191 target_name=arm 192 ;; 193 i?86) 194 target_name=x86 195 ;; 196 mipsel) 197 target_name=mips 198 ;; 199 esac 200 201 android_platform="$android_ndk"/platforms/android-"$android_version"/arch-"$target_name" 202 203 if test -d "$android_platform" ; then 204 AC_MSG_RESULT([$android_platform]) 205 else 206 AC_MSG_ERROR([not found. You have to specify --with-android-platform=/path/to/ndk/platform.]) 207 fi 208 fi 209 210 dnl Old NDK support. If minimum requirement is changed to NDK r8b, 211 dnl please remove this. 212 case "$target_cpu" in 213 i?86) 214 if ! test -e "$android_toolchain"/bin/"$android_tool_prefix"-gcc; then 215 dnl Old NDK toolchain name 216 android_tool_prefix="i686-android-linux" 217 fi 218 ;; 219 esac 220 221 dnl set up compilers 222 AS="$android_toolchain"/bin/"$android_tool_prefix"-as 223 CC="$android_toolchain"/bin/"$android_tool_prefix"-gcc 224 CXX="$android_toolchain"/bin/"$android_tool_prefix"-g++ 225 CPP="$android_toolchain"/bin/"$android_tool_prefix"-cpp 226 LD="$android_toolchain"/bin/"$android_tool_prefix"-ld 227 AR="$android_toolchain"/bin/"$android_tool_prefix"-ar 228 RANLIB="$android_toolchain"/bin/"$android_tool_prefix"-ranlib 229 STRIP="$android_toolchain"/bin/"$android_tool_prefix"-strip 230 231 CPPFLAGS="-I$android_platform/usr/include $CPPFLAGS" 232 CFLAGS="-mandroid -I$android_platform/usr/include -fno-short-enums -fno-exceptions $CFLAGS" 233 CXXFLAGS="-mandroid -I$android_platform/usr/include -fpic -fno-short-enums -fno-exceptions $CXXFLAGS" 234 LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform $LDFLAGS" 235 236 AC_DEFINE(ANDROID) 237 ;; 238 esac 239 240 dnl ======================================================== 241 dnl = 242 dnl = Check options that may affect the compiler 243 dnl = 244 dnl ======================================================== 245 dist_prefix='${MOD_DEPTH}/dist' 246 dist_bindir='${dist_prefix}/bin' 247 dist_includedir='${dist_prefix}/include/nspr' 248 dist_libdir='${dist_prefix}/lib' 249 dnl If the --includedir option was not specified, add '/nspr' to autoconf's 250 dnl default value of includedir. 251 if test "${includedir}" = '${prefix}/include'; then 252 includedir='${prefix}/include/nspr' 253 fi 254 255 AC_ARG_WITH(dist-prefix, 256 [ --with-dist-prefix=DIST_PREFIX 257 place build files in DIST_PREFIX [dist]], 258 dist_prefix=$withval) 259 260 AC_ARG_WITH(dist-bindir, 261 [ --with-dist-bindir=DIR build execuatables in DIR [DIST_PREFIX/bin]], 262 dist_bindir=$withval) 263 264 AC_ARG_WITH(dist-includedir, 265 [ --with-dist-includedir=DIR 266 build include files in DIR [DIST_PREFIX/include/nspr]], 267 dist_includedir=$withval) 268 269 AC_ARG_WITH(dist-libdir, 270 [ --with-dist-libdir=DIR build library files in DIR [DIST_PREFIX/lib]], 271 dist_libdir=$withval) 272 273 AC_SUBST(dist_prefix) 274 AC_SUBST(dist_bindir) 275 AC_SUBST(dist_includedir) 276 AC_SUBST(dist_libdir) 277 278 dnl Check if NSPR is being compiled for Mozilla 279 dnl Let --with-arg override environment setting 280 dnl 281 AC_ARG_WITH(mozilla, 282 [ --with-mozilla Compile NSPR with Mozilla support], 283 [ if test "$withval" = "yes"; then 284 AC_DEFINE(MOZILLA_CLIENT) 285 MOZILLA_CLIENT=1 286 else 287 MOZILLA_CLIENT= 288 fi], 289 [ if test -n "$MOZILLA_CLIENT"; then 290 AC_DEFINE(MOZILLA_CLIENT) 291 fi]) 292 293 AC_ARG_ENABLE(optimize, 294 [ --enable-optimize[=OPT] Enable code optimizations (ie. -O2) ], 295 [ if test "$enableval" != "no"; then 296 MOZ_OPTIMIZE=1 297 if test -n "$enableval" -a "$enableval" != "yes"; then 298 _OPTIMIZE_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'` 299 _SAVE_OPTIMIZE_FLAGS=$_OPTIMIZE_FLAGS 300 fi 301 else 302 MOZ_OPTIMIZE= 303 fi ]) 304 305 AC_ARG_ENABLE(debug, 306 [ --enable-debug[=DBG] Enable debugging (using compiler flags DBG)], 307 [ if test "$enableval" != "no"; then 308 MOZ_DEBUG=1 309 MOZ_DEBUG_SYMBOLS=1 310 if test -n "$enableval" -a "$enableval" != "yes"; then 311 _DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'` 312 _SAVE_DEBUG_FLAGS=$_DEBUG_FLAGS 313 fi 314 else 315 MOZ_DEBUG= 316 fi ], 317 MOZ_DEBUG_SYMBOLS=1) 318 319 AC_ARG_ENABLE(debug-symbols, 320 [ --enable-debug-symbols[=DBG] Enable debugging symbols 321 (using compiler flags DBG)], 322 [ if test "$enableval" != "no"; then 323 MOZ_DEBUG_SYMBOLS=1 324 if test -n "$enableval" -a "$enableval" != "yes"; then 325 if test -z "$_SAVE_DEBUG_FLAGS"; then 326 _DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'` 327 _SAVE_DEBUG_FLAGS=$_DEBUG_FLAGS 328 else 329 AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags]) 330 fi 331 fi 332 else 333 MOZ_DEBUG_SYMBOLS= 334 fi ]) 335 336 AC_ARG_ENABLE(win32-target, 337 [ --enable-win32-target=\$t 338 Specify win32 flavor. (WIN95 or WINNT)], 339 OS_TARGET=`echo $enableval | tr a-z A-Z`) 340 341 342 AC_ARG_ENABLE(debug-rtl, 343 [ --enable-debug-rtl Use the MSVC debug runtime library], 344 [ if test "$enableval" = "yes"; then 345 USE_DEBUG_RTL=1 346 else 347 USE_DEBUG_RTL=0 348 fi ]) 349 350 AC_ARG_ENABLE(static-rtl, 351 [ --enable-static-rtl Use the MSVC static runtime library], 352 [ if test "$enableval" = "yes"; then 353 USE_STATIC_RTL=1 354 fi ]) 355 356 AC_ARG_ENABLE(x32, 357 [ --enable-x32 Enable x32 ABI support (x86_64 only)], 358 [ if test "$enableval" = "yes"; then 359 USE_X32=1 360 else if test "$enableval" = "no"; then 361 USE_X32= 362 fi 363 fi ]) 364 365 AC_ARG_ENABLE(64bit, 366 [ --enable-64bit Enable 64-bit support (on certain platforms)], 367 [ if test "$enableval" = "yes"; then 368 USE_64=1 369 fi ]) 370 371 AC_ARG_ENABLE(mdupdate, 372 [ --enable-mdupdate Enable use of certain compilers' mdupdate feature], 373 [ if test "$enableval" = "yes"; then 374 USE_MDUPDATE=1 375 fi ]) 376 377 AC_ARG_ENABLE(cplus, 378 [ --enable-cplus Enable some c++ api routines], 379 [ if test "$enableval" = "yes"; then 380 USE_CPLUS=1 381 fi]) 382 383 AC_ARG_WITH(arm-kuser, 384 [ --with-arm-kuser Use kuser helpers (Linux/ARM only) 385 (Requires kernel 2.6.13 or later)], 386 [ if test "$withval" = "yes"; then 387 AC_DEFINE(_PR_ARM_KUSER) 388 fi ]) 389 390 dnl ======================================================== 391 dnl = Mac OS X SDK support 392 dnl ======================================================== 393 AC_ARG_WITH(macos-sdk, 394 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)], 395 MACOS_SDK_DIR=$withval) 396 397 AC_ARG_ENABLE(macos-target, 398 [ --enable-macos-target=VER 399 Set the minimum MacOS version needed at runtime 400 [10.3 for ppc, 10.4 for x86]], 401 [_MACOSX_DEPLOYMENT_TARGET=$enableval]) 402 403 dnl ======================================================== 404 dnl = 405 dnl = Set the threading model 406 dnl = 407 dnl ======================================================== 408 case "$target" in 409 410 *-aix*) 411 USE_PTHREADS=1 412 ;; 413 esac 414 415 dnl ======================================================== 416 dnl = 417 dnl = Set the default C compiler 418 dnl = 419 dnl ======================================================== 420 if test -z "$CC"; then 421 case "$target" in 422 423 *-aix*) 424 if test -z "$USE_NSPR_THREADS"; then 425 CC=xlc_r 426 else 427 CC=xlc 428 fi 429 ;; 430 431 *-hpux*) 432 CC=cc 433 ;; 434 435 *-solaris*) 436 CC=cc 437 ;; 438 439 esac 440 fi 441 442 dnl ======================================================== 443 dnl = 444 dnl = Set the default C++ compiler 445 dnl = 446 dnl ======================================================== 447 if test -z "$CXX"; then 448 case "$target" in 449 450 *-aix*) 451 if test -z "$USE_NSPR_THREADS"; then 452 CXX=xlC_r 453 else 454 CXX=xlC 455 fi 456 ;; 457 458 *-hpux*) 459 case "${target_os}" in 460 hpux10.30) 461 CXX=aCC 462 ;; 463 hpux11.*) 464 CXX=aCC 465 ;; 466 *) 467 CXX=CC 468 ;; 469 esac 470 ;; 471 472 *-solaris*) 473 CXX=CC 474 ;; 475 476 esac 477 fi 478 479 if test -z "$SKIP_PATH_CHECKS"; then 480 AC_PATH_PROG(WHOAMI, $WHOAMI whoami, echo not_whoami) 481 fi 482 483 if test -n "$MOZ_DEBUG"; then 484 AC_DEFINE(DEBUG) 485 DEFINES="$DEFINES -UNDEBUG" 486 487 case "${target_os}" in 488 mks*|cygwin*|mingw*|msys*) 489 DEFINES="$DEFINES -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`" 490 ;; 491 *) 492 DEFINES="$DEFINES -DDEBUG_`$WHOAMI`" 493 ;; 494 esac 495 else 496 AC_DEFINE(NDEBUG) 497 DEFINES="$DEFINES -UDEBUG" 498 fi 499 500 if test -z "$SKIP_COMPILER_CHECKS"; then 501 dnl ======================================================== 502 dnl Checks for compilers. 503 dnl ======================================================== 504 if test "$target" != "$host"; then 505 echo "cross compiling from $host to $target" 506 cross_compiling=yes 507 508 case "$build:$target" in 509 powerpc-apple-darwin8*:i?86-apple-darwin*) 510 dnl The Darwin cross compiler doesn't necessarily point itself at a 511 dnl root that has libraries for the proper architecture, it defaults 512 dnl to the system root. The libraries in the system root on current 513 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler 514 dnl checks will fail. Fake a working SDK in that case. 515 _SAVE_CFLAGS=$CFLAGS 516 _SAVE_CXXFLAGS=$CXXFLAGS 517 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS" 518 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS" 519 ;; 520 esac 521 522 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", echo) 523 unset ac_cv_prog_CC 524 dnl Now exit the conditional block to invoke AC_PROG_CC. 525 fi 526 527 dnl In the latest versions of autoconf, AC_PROG_CC is a one-shot macro, 528 dnl declared with AC_DEFUN_ONCE. So it must not be expanded inside a 529 dnl conditional block. Invoke AC_PROG_CC outside any conditional block 530 dnl and before invoking AC_TRY_COMPILE (which requires AC_PROG_CC). 531 AC_PROG_CC 532 533 dnl Reenter the conditional blocks after invoking AC_PROG_CC. 534 if test "$target" != "$host"; then 535 if test -n "$USE_CPLUS"; then 536 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", echo) 537 unset ac_cv_prog_CXX 538 AC_PROG_CXX 539 fi 540 541 case "$build:$target" in 542 powerpc-apple-darwin8*:i?86-apple-darwin*|*:arm*-apple-darwin*) 543 dnl Revert the changes made above. From this point on, the target 544 dnl compiler will never be used without applying the SDK to CFLAGS 545 dnl (see --with-macos-sdk below). 546 CFLAGS=$_SAVE_CFLAGS 547 CXXFLAGS=$_SAVE_CXXFLAGS 548 ;; 549 esac 550 551 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", echo) 552 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", echo) 553 AC_CHECK_PROGS(AS, $AS "${target_alias}-as" "${target}-as", echo) 554 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", echo) 555 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", echo) 556 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", echo) 557 558 _SAVE_CC="$CC" 559 _SAVE_CFLAGS="$CFLAGS" 560 _SAVE_LDFLAGS="$LDFLAGS" 561 562 AC_MSG_CHECKING([for $host compiler]) 563 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc, "") 564 if test -z "$HOST_CC"; then 565 AC_MSG_ERROR([no acceptable cc found in \$PATH]) 566 fi 567 AC_MSG_RESULT([$HOST_CC]) 568 569 CC="$HOST_CC" 570 CFLAGS="$HOST_CFLAGS" 571 LDFLAGS="$HOST_LDFLAGS" 572 573 AC_MSG_CHECKING([whether the $host compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works]) 574 AC_TRY_COMPILE([], [return 0;], 575 [AC_MSG_RESULT([yes])], 576 [AC_MSG_ERROR([installation or configuration problem: $host compiler $HOST_CC cannot create executables.])] ) 577 578 CC=$_SAVE_CC 579 CFLAGS=$_SAVE_CFLAGS 580 LDFLAGS=$_SAVE_LDFLAGS 581 else 582 if test -n "$USE_CPLUS"; then 583 if test "$CC" = "cl" -a -z "$CXX"; then 584 CXX=$CC 585 else 586 AC_PROG_CXX 587 fi 588 fi 589 AC_PROG_RANLIB 590 AC_PATH_PROGS(AS, as, $CC) 591 AC_PATH_PROGS(AR, ar, echo not_ar) 592 AC_PATH_PROGS(LD, ld link, echo not_ld) 593 AC_PATH_PROGS(STRIP, strip, echo not_strip) 594 AC_PATH_PROGS(WINDRES, windres, echo not_windres) 595 if test -z "$HOST_CC"; then 596 HOST_CC="$CC" 597 fi 598 if test -z "$HOST_CFLAGS"; then 599 HOST_CFLAGS="$CFLAGS" 600 fi 601 fi 602 603 AC_PROG_CPP 604 605 if test "$GCC" = "yes"; then 606 GNU_CC=1 607 fi 608 if test "$GXX" = "yes"; then 609 GNU_CXX=1 610 fi 611 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then 612 GNU_AS=1 613 fi 614 rm -f a.out 615 616 case "$build:$target" in 617 i?86-apple-darwin*:powerpc-apple-darwin*) 618 dnl cross_compiling will have erroneously been set to "no" in this 619 dnl case, because the x86 build host is able to run ppc code in a 620 dnl translated environment, making a cross compiler appear native. 621 cross_compiling=yes 622 ;; 623 esac 624 625 if test "$cross_compiling" = "yes"; then 626 CROSS_COMPILE=1 627 else 628 CROSS_COMPILE= 629 fi 630 631 dnl ======================================================== 632 dnl Check for gcc -pipe support 633 dnl ======================================================== 634 AC_MSG_CHECKING([for gcc -pipe support]) 635 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then 636 echo '#include <stdio.h>' > dummy-hello.c 637 echo 'int main() { printf("Hello World\n"); return 0; }' >> dummy-hello.c 638 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5 639 cat dummy-hello.s | ${AS} -o dummy-hello.S - 2>&5 640 if test $? = 0; then 641 _res_as_stdin="yes" 642 else 643 _res_as_stdin="no" 644 fi 645 if test "$_res_as_stdin" = "yes"; then 646 _SAVE_CFLAGS=$CFLAGS 647 CFLAGS="$CFLAGS -pipe" 648 AC_TRY_COMPILE( [ #include <stdio.h> ], 649 [printf("Hello World\n");], 650 [_res_gcc_pipe="yes"], 651 [_res_gcc_pipe="no"] ) 652 CFLAGS=$_SAVE_CFLAGS 653 fi 654 if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then 655 _res="yes"; 656 CFLAGS="$CFLAGS -pipe" 657 CXXFLAGS="$CXXFLAGS -pipe" 658 else 659 _res="no" 660 fi 661 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out 662 AC_MSG_RESULT([$_res]) 663 else 664 AC_MSG_RESULT([no]) 665 fi 666 667 dnl ======================================================== 668 dnl Check for pragma diagnostic 669 dnl ======================================================== 670 671 AC_MSG_CHECKING([for pragma diagnostic]) 672 if test "$GNU_CC" = "1"; then 673 cat >dummy-hello.c <<EOF 674 #ifdef _PR_HAS_PRAGMA_DIAGNOSTIC 675 #pragma GCC diagnostic push 676 #pragma GCC diagnostic ignored "-Wunused-but-set-variable" 677 #endif 678 int main() { 679 char *dummy = ""; 680 return 0; 681 } 682 EOF 683 ${CC} -Werror=unused-but-set-variable -S dummy-hello.c -o dummy-hello.s 2>&5 684 if test $? != 0; then 685 ${CC} -Werror=unused-but-set-variable -D_PR_HAS_PRAGMA_DIAGNOSTIC -S dummy-hello.c -o dummy-hello.s 2>&5 686 if test $? = 0; then 687 CFLAGS="$CFLAGS -D_PR_HAS_PRAGMA_DIAGNOSTIC=1" 688 _res=yes 689 else 690 _res=no 691 fi 692 else 693 _res=no 694 fi 695 rm -f dummy-hello.c dummy-hello.s 696 AC_MSG_RESULT([$_res]) 697 else 698 AC_MSG_RESULT([no]) 699 fi 700 701 dnl ======================================================== 702 dnl Profile guided optimization 703 dnl ======================================================== 704 dnl Test for profiling options 705 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use 706 707 _SAVE_CFLAGS="$CFLAGS" 708 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction" 709 710 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate]) 711 AC_TRY_COMPILE([], [return 0;], 712 [ PROFILE_GEN_CFLAGS="-fprofile-generate" 713 result="yes" ], result="no") 714 AC_MSG_RESULT([$result]) 715 716 if test $result = "yes"; then 717 PROFILE_GEN_LDFLAGS="-fprofile-generate" 718 PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch" 719 PROFILE_USE_LDFLAGS="-fprofile-use" 720 fi 721 722 CFLAGS="$_SAVE_CFLAGS" 723 724 dnl =============================================================== 725 dnl Check for .hidden assembler directive and visibility attribute. 726 dnl Borrowed from glibc configure.in 727 dnl =============================================================== 728 if test "$GNU_CC"; then 729 AC_CACHE_CHECK(for visibility(hidden) attribute, 730 ac_cv_visibility_hidden, 731 [cat > conftest.c <<EOF 732 int foo __attribute__ ((visibility ("hidden"))) = 1; 733 EOF 734 ac_cv_visibility_hidden=no 735 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then 736 if grep '\.hidden.*foo' conftest.s >/dev/null; then 737 ac_cv_visibility_hidden=yes 738 fi 739 fi 740 rm -f conftest.[cs] 741 ]) 742 if test "$ac_cv_visibility_hidden" = "yes"; then 743 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE) 744 AC_CACHE_CHECK(for visibility pragma support, 745 ac_cv_visibility_pragma, 746 [cat > conftest.c <<EOF 747 #pragma GCC visibility push(hidden) 748 int foo_hidden = 1; 749 #pragma GCC visibility push(default) 750 int foo_default = 1; 751 EOF 752 ac_cv_visibility_pragma=no 753 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then 754 if grep '\.hidden.*foo_hidden' conftest.s >/dev/null; then 755 if ! grep '\.hidden.*foo_default' conftest.s > /dev/null; then 756 ac_cv_visibility_pragma=yes 757 fi 758 fi 759 fi 760 rm -f conftest.[cs] 761 ]) 762 if test "$ac_cv_visibility_pragma" = "yes"; then 763 AC_DEFINE(HAVE_VISIBILITY_PRAGMA) 764 # To work around a build problem on Linux x86-64 (Bugzilla bug 765 # 293438), we use the -fvisibility=hidden flag. This flag is less 766 # optimal than #pragma GCC visibility push(hidden) because the flag 767 # assumes that symbols defined outside the current source file have 768 # the default visibility. This has the advantage that we don't need 769 # to wrap system header files, but has the disadvantage that calls 770 # to hidden symbols defined in other source files cannot be 771 # optimized by the compiler. The -fvisibility=hidden flag does 772 # hide and export symbols correctly. 773 #VISIBILITY_FLAGS='-I$(dist_includedir)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h' 774 #WRAP_SYSTEM_INCLUDES=1 775 VISIBILITY_FLAGS="-fvisibility=hidden" 776 WRAP_SYSTEM_INCLUDES= 777 fi 778 fi 779 fi # GNU_CC 780 781 fi # SKIP_COMPILER_CHECKS 782 783 dnl ======================================================== 784 dnl Checks for programs. 785 dnl ======================================================== 786 if test -z "$SKIP_PATH_CHECKS"; then 787 AC_PATH_PROGS(PERL, perl5 perl, echo not_perl) 788 elif test -z "$PERL"; then 789 PERL=perl 790 fi 791 792 dnl ======================================================== 793 dnl Default platform specific options 794 dnl ======================================================== 795 OBJ_SUFFIX=o 796 LIB_SUFFIX=a 797 DLL_SUFFIX=so 798 ASM_SUFFIX=s 799 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@' 800 PR_MD_ASFILES= 801 PR_MD_CSRCS= 802 PR_MD_ARCH_DIR=unix 803 AR_FLAGS='cr $@' 804 AS='$(CC)' 805 ASFLAGS='$(CFLAGS)' 806 807 if test -n "$CROSS_COMPILE"; then 808 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'` 809 OS_RELEASE= 810 OS_TEST="${target_cpu}" 811 case "${target_os}" in 812 linux*) OS_ARCH=Linux ;; 813 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;; 814 mingw*) OS_ARCH=WINNT CPU_ARCH=x86 ;; 815 cygwin*) OS_ARCH=WINNT ;; 816 darwin*) OS_ARCH=Darwin ;; 817 riscos*) OS_ARCH=RISCOS ;; 818 esac 819 else 820 OS_ARCH=`uname -s | sed -e 's|/|_|g'` 821 OS_RELEASE=`uname -r` 822 OS_TEST=`uname -m` 823 fi 824 825 if test "$OS_ARCH" = "AIX"; then 826 OS_RELEASE=`uname -v`.`uname -r` 827 fi 828 829 if test "$OS_ARCH" = "FreeBSD"; then 830 OS_RELEASE=`echo $OS_RELEASE | sed 's/-.*//'` 831 fi 832 833 if test "$OS_ARCH" = "Linux"; then 834 OS_RELEASE=`echo $OS_RELEASE | sed 's/-.*//'` 835 OS_RELEASE=`echo $OS_RELEASE | awk -F\. '{ print $1 "." $2 }'` 836 fi 837 838 ####################################################################### 839 # Master "Core Components" macros for getting the OS target # 840 ####################################################################### 841 842 # 843 # Note: OS_TARGET should be specified on the command line for gmake. 844 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built. 845 # The difference between the Win95 target and the WinNT target is that 846 # the WinNT target uses Windows NT specific features not available 847 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly) 848 # at lesser performance (the Win95 target uses threads; the WinNT target 849 # uses fibers). 850 # 851 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no 852 # cross-compilation. 853 # 854 855 # 856 # The following hack allows one to build on a WIN95 machine (as if 857 # s/he were cross-compiling on a WINNT host for a WIN95 target). 858 # It also accomodates for MKS's uname.exe. If you never intend 859 # to do development on a WIN95 machine, you don't need this hack. 860 # 861 case "$OS_ARCH" in 862 Windows_95) 863 OS_ARCH=Windows_NT 864 OS_TARGET=WIN95 865 ;; 866 Windows_98) 867 OS_ARCH=Windows_NT 868 OS_TARGET=WIN95 869 ;; 870 CYGWIN_9*|CYGWIN_ME*) 871 OS_ARCH='CYGWIN_NT-4.0' 872 OS_TARGET=WIN95 873 ;; 874 esac 875 876 # 877 # On WIN32, we also define the variable CPU_ARCH. 878 # 879 880 case "$OS_ARCH" in 881 Windows_NT) 882 # 883 # If uname -s returns "Windows_NT", we assume that we are using 884 # the uname.exe in MKS toolkit. 885 # 886 # The -r option of MKS uname only returns the major version number. 887 # So we need to use its -v option to get the minor version number. 888 # Moreover, it doesn't have the -p option, so we need to use uname -m. 889 # 890 OS_ARCH=WINNT 891 OS_MINOR_RELEASE=`uname -v` 892 if test "$OS_MINOR_RELEASE" = "00"; then 893 OS_MINOR_RELEASE=0 894 fi 895 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}" 896 CPU_ARCH=`uname -m` 897 # 898 # MKS's uname -m returns "586" on a Pentium machine. 899 # 900 if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then 901 CPU_ARCH=x86 902 fi 903 ;; 904 CYGWIN_NT*|MINGW*_NT*|MSYS_NT*) 905 # 906 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using 907 # the uname.exe in the Cygwin tools. 908 # If uname -s returns "MINGW32_NT-5.1", we assume that we are using 909 # the uname.exe in the MSYS tools. 910 # If uname -s returns "MSYS_NT-6.3", we assume that we are using 911 # the uname.exe in the MSYS2 tools. 912 # 913 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'` 914 OS_ARCH=WINNT 915 CPU_ARCH=`uname -m` 916 # 917 # Cygwin's uname -m returns "i686" on a Pentium Pro machine. 918 # 919 if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then 920 CPU_ARCH=x86 921 fi 922 ;; 923 esac 924 925 if test -n "$MOZILLA_CLIENT" && test "$OS_ARCH" = "WINNT"; then 926 OS_TARGET=WIN95 927 if test -n "$MOZ_DEBUG" -a -z "$USE_DEBUG_RTL"; then 928 USE_DEBUG_RTL=1 929 fi 930 fi 931 if test -z "$OS_TARGET"; then 932 OS_TARGET=$OS_ARCH 933 fi 934 if test "$OS_TARGET" = "WIN95"; then 935 OS_RELEASE="4.0" 936 fi 937 OS_CONFIG="${OS_TARGET}${OS_RELEASE}" 938 939 dnl ======================================================== 940 dnl = ARM toolchain tweaks 941 dnl ======================================================== 942 943 dnl Defaults 944 MOZ_ALIGN=toolchain-default 945 946 case "$target" in 947 arm*-android*|arm*-linuxandroid*) 948 MOZ_THUMB=yes 949 MOZ_ARCH=armv7-a 950 MOZ_FPU=vfp 951 MOZ_FLOAT_ABI=softfp 952 MOZ_SOFT_FLOAT=yes 953 MOZ_ALIGN=no 954 ;; 955 arm*-*) 956 if test -n "$MOZ_PLATFORM_MAEMO"; then 957 MOZ_THUMB=no 958 MOZ_ARCH=armv7-a 959 MOZ_FLOAT_ABI=softfp 960 fi 961 if test "$MOZ_PLATFORM_MAEMO" = 6; then 962 MOZ_THUMB=yes 963 fi 964 ;; 965 esac 966 967 dnl Kept for compatibility with some buildbot mozconfig 968 AC_ARG_ENABLE(thumb2, [], MOZ_THUMB=$enableval) 969 970 AC_ARG_WITH(thumb, 971 [ --with-thumb[[=yes|no|toolchain-default]]] 972 [ Use Thumb instruction set (-mthumb)], 973 if test -z "$GNU_CC"; then 974 AC_MSG_ERROR([--with-thumb is not supported on non-GNU toolchain-defaults]) 975 fi 976 MOZ_THUMB=$withval) 977 978 AC_ARG_WITH(thumb-interwork, 979 [ --with-thumb-interwork[[=yes|no|toolchain-default]] 980 Use Thumb/ARM instuctions interwork (-mthumb-interwork)], 981 if test -z "$GNU_CC"; then 982 AC_MSG_ERROR([--with-thumb-interwork is not supported on non-GNU toolchain-defaults]) 983 fi 984 MOZ_THUMB_INTERWORK=$withval) 985 986 AC_ARG_WITH(arch, 987 [ --with-arch=[[type|toolchain-default]] 988 Use specific CPU features (-march=type)], 989 if test -z "$GNU_CC"; then 990 AC_MSG_ERROR([--with-arch is not supported on non-GNU toolchain-defaults]) 991 fi 992 MOZ_ARCH=$withval) 993 994 AC_ARG_WITH(fpu, 995 [ --with-fpu=[[type|toolchain-default]] 996 Use specific FPU type (-mfpu=type)], 997 if test -z "$GNU_CC"; then 998 AC_MSG_ERROR([--with-fpu is not supported on non-GNU toolchain-defaults]) 999 fi 1000 MOZ_FPU=$withval) 1001 1002 AC_ARG_WITH(float-abi, 1003 [ --with-float-abi=[[type|toolchain-default]] 1004 Use specific arm float ABI (-mfloat-abi=type)], 1005 if test -z "$GNU_CC"; then 1006 AC_MSG_ERROR([--with-float-abi is not supported on non-GNU toolchain-defaults]) 1007 fi 1008 MOZ_FLOAT_ABI=$withval) 1009 1010 AC_ARG_WITH(soft-float, 1011 [ --with-soft-float[[=yes|no|toolchain-default]] 1012 Use soft float library (-msoft-float)], 1013 if test -z "$GNU_CC"; then 1014 AC_MSG_ERROR([--with-soft-float is not supported on non-GNU toolchain-defaults]) 1015 fi 1016 MOZ_SOFT_FLOAT=$withval) 1017 1018 case "$MOZ_ARCH" in 1019 toolchain-default|"") 1020 arch_flag="" 1021 ;; 1022 *) 1023 arch_flag="-march=$MOZ_ARCH" 1024 ;; 1025 esac 1026 1027 case "$MOZ_THUMB" in 1028 yes) 1029 MOZ_THUMB2=1 1030 thumb_flag="-mthumb" 1031 ;; 1032 no) 1033 MOZ_THUMB2= 1034 thumb_flag="-marm" 1035 ;; 1036 *) 1037 _SAVE_CFLAGS="$CFLAGS" 1038 CFLAGS="$arch_flag" 1039 AC_TRY_COMPILE([],[return sizeof(__thumb2__);], 1040 MOZ_THUMB2=1, 1041 MOZ_THUMB2=) 1042 CFLAGS="$_SAVE_CFLAGS" 1043 thumb_flag="" 1044 ;; 1045 esac 1046 1047 case "$MOZ_THUMB_INTERWORK" in 1048 yes) 1049 thumb_interwork_flag="-mthumb-interwork" 1050 ;; 1051 no) 1052 thumb_interwork_flag="-mno-thumb-interwork" 1053 ;; 1054 *) # toolchain-default 1055 thumb_interwork_flag="" 1056 ;; 1057 esac 1058 1059 case "$MOZ_FPU" in 1060 toolchain-default|"") 1061 fpu_flag="" 1062 ;; 1063 *) 1064 fpu_flag="-mfpu=$MOZ_FPU" 1065 ;; 1066 esac 1067 1068 case "$MOZ_FLOAT_ABI" in 1069 toolchain-default|"") 1070 float_abi_flag="" 1071 ;; 1072 *) 1073 float_abi_flag="-mfloat-abi=$MOZ_FLOAT_ABI" 1074 ;; 1075 esac 1076 1077 case "$MOZ_SOFT_FLOAT" in 1078 yes) 1079 soft_float_flag="-msoft-float" 1080 ;; 1081 no) 1082 soft_float_flag="-mno-soft-float" 1083 ;; 1084 *) # toolchain-default 1085 soft_float_flag="" 1086 ;; 1087 esac 1088 1089 case "$MOZ_ALIGN" in 1090 toolchain-default|"") 1091 align_flag="" 1092 ;; 1093 no) 1094 align_flag="-mno-unaligned-access" 1095 ;; 1096 yes) 1097 align_flag="-munaligned-access" 1098 ;; 1099 *) 1100 align_flag="" 1101 ;; 1102 esac 1103 1104 if test -n "$align_flag"; then 1105 _SAVE_CFLAGS="$CFLAGS" 1106 CFLAGS="$CFLAGS $align_flag" 1107 AC_MSG_CHECKING(whether alignment flag ($align_flag) is supported) 1108 AC_TRY_COMPILE([],[],,align_flag="") 1109 CFLAGS="$_SAVE_CFLAGS" 1110 fi 1111 1112 dnl Use echo to avoid accumulating space characters 1113 all_flags=`echo $arch_flag $thumb_flag $thumb_interwork_flag $fpu_flag $float_abi_flag $soft_float_flag $align_flag` 1114 if test -n "$all_flags"; then 1115 _SAVE_CFLAGS="$CFLAGS" 1116 CFLAGS="$all_flags" 1117 AC_MSG_CHECKING(whether the chosen combination of compiler flags ($all_flags) works) 1118 AC_TRY_COMPILE([],[return 0;], 1119 AC_MSG_RESULT([yes]), 1120 AC_MSG_ERROR([no])) 1121 1122 CFLAGS="$_SAVE_CFLAGS $all_flags" 1123 CXXFLAGS="$CXXFLAGS $all_flags" 1124 ASFLAGS="$ASFLAGS $all_flags" 1125 if test -n "$thumb_flag"; then 1126 LDFLAGS="$LDFLAGS $thumb_flag" 1127 fi 1128 fi 1129 1130 dnl ======================================================== 1131 dnl Override of system specific host options 1132 dnl ======================================================== 1133 case "$host" in 1134 *-mingw*|*-msys*) 1135 NSINSTALL=nsinstall 1136 ;; 1137 *-cygwin*|*-mks*) 1138 NSINSTALL='$(CYGWIN_WRAPPER) nsinstall' 1139 if test `echo "${PATH}" | grep -c \;` = 0; then 1140 CYGWIN_WRAPPER='sh $(topsrcdir)/build/cygwin-wrapper' 1141 fi 1142 ;; 1143 *) 1144 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" 1145 ;; 1146 esac 1147 1148 dnl ======================================================== 1149 dnl Override of system specific target options 1150 dnl ======================================================== 1151 case "$target" in 1152 1153 *-aix*) 1154 AC_DEFINE(XP_UNIX) 1155 AC_DEFINE(AIX) 1156 AC_DEFINE(SYSV) 1157 DSO_LDOPTS='-brtl -bnortllib -bM:SRE -bnoentry -bexpall -blibpath:/usr/lib:/lib' 1158 AC_CHECK_HEADER(sys/atomic_op.h, AC_DEFINE(AIX_HAVE_ATOMIC_OP_H)) 1159 case "${target_os}" in 1160 aix3.2*) 1161 AC_DEFINE(AIX_RENAME_SELECT) 1162 AC_DEFINE(_PR_NO_LARGE_FILES) 1163 AIX_LINK_OPTS='-bnso -berok' 1164 PR_MD_ASFILES=os_AIX.s 1165 ;; 1166 aix4.1*) 1167 AC_DEFINE(AIX_TIMERS) 1168 AC_DEFINE(_PR_NO_LARGE_FILES) 1169 AC_DEFINE(AIX4_1) 1170 MKSHLIB= 1171 DSO_LDOPTS= 1172 AIX_LINK_OPTS='-bnso -berok' 1173 LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)_shr' 1174 LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)_shr' 1175 ;; 1176 aix4.2*) 1177 AC_DEFINE(AIX_TIMERS) 1178 AC_DEFINE(_PR_HAVE_OFF64_T) 1179 AIX_LINK_OPTS='-brtl -bnso -berok' 1180 ;; 1181 aix4.3*) 1182 AC_DEFINE(AIX_TIMERS) 1183 AC_DEFINE(_PR_HAVE_OFF64_T) 1184 AC_DEFINE(AIX4_3_PLUS) 1185 AC_DEFINE(HAVE_SOCKLEN_T) 1186 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING) 1187 USE_IPV6=1 1188 AIX_LINK_OPTS='-brtl -bnso -berok' 1189 ;; 1190 *) 1191 AC_DEFINE(AIX_TIMERS) 1192 AC_DEFINE(_PR_HAVE_OFF64_T) 1193 AC_DEFINE(AIX4_3_PLUS) 1194 AC_DEFINE(HAVE_SOCKLEN_T) 1195 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING) 1196 USE_IPV6=1 1197 AIX_LINK_OPTS='-brtl -bnso -berok' 1198 ;; 1199 esac 1200 CFLAGS="$CFLAGS -qro -qroconst" 1201 AIX_WRAP='$(DIST)/lib/aixwrap.o' 1202 AIX_TMP='./_aix_tmp.o' 1203 if test -n "$USE_64"; then 1204 MDCPUCFG_H=_aix64.cfg 1205 OBJECT_MODE=64 1206 else 1207 MDCPUCFG_H=_aix32.cfg 1208 fi 1209 PR_MD_CSRCS=aix.c 1210 RESOLVE_LINK_SYMBOLS=1 1211 ;; 1212 1213 *-darwin*) 1214 AC_DEFINE(XP_UNIX) 1215 AC_DEFINE(DARWIN) 1216 AC_DEFINE(HAVE_BSD_FLOCK) 1217 AC_DEFINE(HAVE_SOCKLEN_T) 1218 AC_DEFINE(HAVE_POINTER_LOCALTIME_R) 1219 changequote(,) 1220 HOST_DARWIN_MAJOR=`echo "$build_os" | sed -E -e 's/^darwin([0-9]+).*$/\1/'` 1221 changequote([,]) 1222 if test "$HOST_DARWIN_MAJOR" -ge 15 ; then 1223 AC_DEFINE(HAS_CONNECTX) 1224 fi 1225 AS='$(CC) -x assembler-with-cpp' 1226 CFLAGS="$CFLAGS -Wall -fno-common" 1227 case "${target_cpu}" in 1228 arm*) 1229 CPU_ARCH=arm 1230 ;; 1231 i*86*|x86_64) 1232 if test -n "$USE_64"; then 1233 CPU_ARCH=x86_64 1234 else 1235 CPU_ARCH=i386 1236 fi 1237 ;; 1238 aarch64) 1239 CPU_ARCH=aarch64 1240 ;; 1241 *) 1242 CPU_ARCH=ppc 1243 ;; 1244 esac 1245 if test "`echo $CC | grep -c '\-arch '`" = "0"; then 1246 case "$CPU_ARCH" in 1247 aarch64) 1248 CC="$CC -arch arm64" 1249 ;; 1250 *) 1251 CC="$CC -arch $CPU_ARCH" 1252 ;; 1253 esac 1254 fi 1255 AC_CHECK_HEADER(crt_externs.h, AC_DEFINE(HAVE_CRT_EXTERNS_H)) 1256 DSO_CFLAGS=-fPIC 1257 DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load -install_name @executable_path/$@ -headerpad_max_install_names' 1258 _OPTIMIZE_FLAGS=-O2 1259 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@' 1260 STRIP="$STRIP -x -S" 1261 DLL_SUFFIX=dylib 1262 USE_PTHREADS=1 1263 MDCPUCFG_H=_darwin.cfg 1264 PR_MD_CSRCS=darwin.c 1265 PR_MD_ASFILES=os_Darwin.s 1266 1267 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then 1268 dnl Use the specified value 1269 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET 1270 elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then 1271 dnl No value specified on the command line or in the environment, 1272 dnl use the lesser of the library's minimum or the architecture's 1273 dnl minimum. 1274 case "${target_cpu}" in 1275 powerpc*) 1276 dnl Architecture minimum 10.3 1277 export MACOSX_DEPLOYMENT_TARGET=10.3 1278 ;; 1279 i*86*) 1280 dnl Architecture minimum 10.4 1281 export MACOSX_DEPLOYMENT_TARGET=10.4 1282 ;; 1283 esac 1284 fi 1285 1286 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is 1287 dnl in use. NEXT_ROOT will be set and exported if it's needed for 1288 dnl ld. 1289 1290 if test "$MACOS_SDK_DIR"; then 1291 dnl Sync this section with the one in Mozilla's top level. 1292 1293 if test ! -d "$MACOS_SDK_DIR"; then 1294 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must 1295 specify a valid SDK. SDKs are installed when the optional cross-development 1296 tools are selected during the Xcode/Developer Tools installation.]) 1297 fi 1298 1299 changequote(,) 1300 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'` 1301 GCC_VERSION_FULL=`echo $CC_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'` 1302 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'` 1303 changequote([,]) 1304 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'` 1305 if test "$GCC_VERSION_MAJOR" -lt "4" ; then 1306 SDK_C_FRAMEWORK="-F${MACOS_SDK_DIR}/System/Library/Frameworks" 1307 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then 1308 SDK_C_FRAMEWORK="$SDK_C_FRAMEWORK -F${MACOS_SDK_DIR}/Library/Frameworks" 1309 fi 1310 1311 SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include ${SDK_C_FRAMEWORK}" 1312 1313 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}" 1314 1315 dnl CPP needs to be set for AC_CHECK_HEADER. 1316 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}" 1317 1318 changequote(,) 1319 HOST_DARWIN_MAJOR=`echo "$build_os" | sed -E -e 's/^darwin([0-9]+).*$/\1/'` 1320 changequote([,]) 1321 if test "$HOST_DARWIN_MAJOR" -lt 9 ; then 1322 dnl The build host is running Tiger (10.4) or earlier. 1323 dnl ld support for -syslibroot is compiler-agnostic, but 1324 dnl only available on Tiger and later. On Tiger and 1325 dnl earlier build hosts, just rely on NEXT_ROOT, because 1326 dnl it's not been shown to cause any problems. 1327 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}" 1328 else 1329 dnl The build host is running Leopard (10.5) or later. 1330 dnl With NEXT_ROOT set, the linker will still not apply 1331 dnl it when resolving dependencies. This causes problems 1332 dnl on Leopard, where an SDK depends on frameworks which 1333 dnl were present in earlier OS releases (and the associated 1334 dnl SDK) but not in Leopard. -syslibroot does not have 1335 dnl this problem, but it results in harmless warnings when 1336 dnl NEXT_ROOT is set. NEXT_ROOT needs to remain set even 1337 dnl on Leopard because the compiler uses it too. 1338 MACOS_SDK_LIBS="-Wl,-syslibroot,${MACOS_SDK_DIR}" 1339 fi 1340 1341 LDFLAGS="${MACOS_SDK_LIBS} $LDFLAGS" 1342 export NEXT_ROOT=$MACOS_SDK_DIR 1343 1344 if test -n "$CROSS_COMPILE" ; then 1345 dnl NEXT_ROOT will be in the environment, but it 1346 dnl shouldn't be set for the build host. HOST_CXX is 1347 dnl presently unused. 1348 HOST_CC="NEXT_ROOT= $HOST_CC" 1349 HOST_CXX="NEXT_ROOT= $HOST_CXX" 1350 fi 1351 else 1352 dnl gcc >= 4.0 uses different paths than above, but knows 1353 dnl how to find them itself. 1354 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}" 1355 1356 dnl CPP needs to be set for AC_CHECK_HEADER. 1357 CPP="$CPP -isysroot ${MACOS_SDK_DIR}" 1358 1359 dnl If gcc >= 4.0.0, we're guaranteed to be on Tiger, which 1360 dnl has an ld that supports -syslibroot. Don't set 1361 dnl NEXT_ROOT because it will be ignored and cause 1362 dnl warnings when -syslibroot is specified. 1363 if test "$GCC_VERSION_FULL" != "4.0.0" ; then 1364 dnl gcc > 4.0.0 will pass -syslibroot to ld automatically 1365 dnl based on the -isysroot it receives. 1366 LDFLAGS="$LDFLAGS -isysroot ${MACOS_SDK_DIR}" 1367 else 1368 dnl gcc 4.0.0 doesn't pass -syslibroot to ld, it needs 1369 dnl to be explicit. 1370 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}" 1371 fi 1372 fi 1373 fi 1374 ;; 1375 1376 *-freebsd*) 1377 if test -z "$USE_NSPR_THREADS"; then 1378 USE_PTHREADS=1 1379 fi 1380 AC_DEFINE(XP_UNIX) 1381 AC_DEFINE(FREEBSD) 1382 AC_DEFINE(HAVE_BSD_FLOCK) 1383 AC_DEFINE(HAVE_SOCKLEN_T) 1384 AC_DEFINE(HAVE_POINTER_LOCALTIME_R) 1385 CFLAGS="$CFLAGS $(DSO_CFLAGS) -ansi -Wall" 1386 MOZ_OBJFORMAT=`test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` 1387 if test "$MOZ_OBJFORMAT" = "elf"; then 1388 DLL_SUFFIX=so 1389 else 1390 DLL_SUFFIX=so.1.0 1391 fi 1392 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@' 1393 DSO_CFLAGS=-fPIC 1394 DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)' 1395 MDCPUCFG_H=_freebsd.cfg 1396 PR_MD_CSRCS=freebsd.c 1397 ;; 1398 1399 *-linux*|*-gnu*|*-k*bsd*-gnu|*-android*|*-linuxandroid*) 1400 if test -z "$USE_NSPR_THREADS"; then 1401 USE_PTHREADS=1 1402 IMPL_STRATEGY=_PTH 1403 fi 1404 AC_DEFINE(XP_UNIX) 1405 AC_DEFINE(_GNU_SOURCE) 1406 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING) 1407 AC_DEFINE(HAVE_POINTER_LOCALTIME_R) 1408 case "${target}" in 1409 *-android*|*-linuxandroid*) 1410 OS_TARGET=Android 1411 AC_DEFINE(LINUX) 1412 ;; 1413 *-linux*) 1414 AC_DEFINE(LINUX) 1415 ;; 1416 esac 1417 CFLAGS="$CFLAGS -Wall" 1418 CXXFLAGS="$CXXFLAGS -Wall" 1419 MDCPUCFG_H=_linux.cfg 1420 PR_MD_CSRCS=linux.c 1421 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@' 1422 DSO_CFLAGS=-fPIC 1423 DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)' 1424 _OPTIMIZE_FLAGS=-O2 1425 _DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb, and that 1426 # combo is not yet good at debugging inlined 1427 # functions (even when using DWARF2 as the 1428 # debugging format) 1429 COMPILER_TAG=_glibc 1430 if echo "$OS_TEST" | grep -c 86 >/dev/null; then 1431 CPU_ARCH=x86 1432 else 1433 CPU_ARCH=$OS_TEST 1434 fi 1435 CPU_ARCH_TAG=_${CPU_ARCH} 1436 case "${target_cpu}" in 1437 alpha) 1438 AC_DEFINE(_ALPHA_) 1439 AC_DEFINE(__alpha) 1440 CFLAGS="$CFLAGS -mieee" 1441 CXXFLAGS="$CXXFLAGS -mieee" 1442 ;; 1443 i*86) 1444 AC_DEFINE(i386) 1445 PR_MD_ASFILES=os_Linux_x86.s 1446 ;; 1447 ia64) 1448 PR_MD_ASFILES=os_Linux_ia64.s 1449 ;; 1450 x86_64) 1451 if test -n "$USE_64"; then 1452 PR_MD_ASFILES=os_Linux_x86_64.s 1453 elif test -n "$USE_X32"; then 1454 PR_MD_ASFILES=os_Linux_x86_64.s 1455 CC="$CC -mx32" 1456 CXX="$CXX -mx32" 1457 else 1458 AC_DEFINE(i386) 1459 PR_MD_ASFILES=os_Linux_x86.s 1460 CC="$CC -m32" 1461 CXX="$CXX -m32" 1462 fi 1463 ;; 1464 ppc|powerpc) 1465 PR_MD_ASFILES=os_Linux_ppc.s 1466 ;; 1467 powerpc64) 1468 if test -n "$USE_64"; then 1469 CC="$CC -m64" 1470 CXX="$CXX -m64" 1471 else 1472 PR_MD_ASFILES=os_Linux_ppc.s 1473 fi 1474 ;; 1475 esac 1476 ;; 1477 1478 *-mingw*|*-msys*|*-cygwin*|*-mks*) 1479 AC_DEFINE(XP_PC) 1480 AC_DEFINE(WIN32) 1481 PR_MD_ARCH_DIR=windows 1482 RESOLVE_LINK_SYMBOLS=1 1483 1484 if test -n "$GNU_CC"; then 1485 CC="$CC -mwindows" 1486 CXX="$CXX -mwindows" 1487 DLL_SUFFIX=dll 1488 MKSHLIB='$(CC) -shared -Wl,--export-all-symbols -Wl,--out-implib -Wl,$(IMPORT_LIBRARY) $(DLLBASE) -o $(subst $(OBJDIR)/,,$(SHARED_LIBRARY))' 1489 RC=$WINDRES 1490 # Use temp file for windres (bug 213281) 1491 RCFLAGS='-O coff --use-temp-file' 1492 else 1493 LD=link 1494 AR='lib -NOLOGO -OUT:"$@"' 1495 AR_FLAGS= 1496 RANLIB='echo not_ranlib' 1497 STRIP='echo not_strip' 1498 RC=rc.exe 1499 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb' 1500 OBJ_SUFFIX=obj 1501 LIB_SUFFIX=lib 1502 DLL_SUFFIX=dll 1503 1504 # Determine compiler version 1505 changequote(,) 1506 _MSVC_VER_FILTER='s|.* \([0-9]\+\.[0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?\).*|\1|p' 1507 changequote([,]) 1508 CC_VERSION=`${CC} -v 2>&1 | sed -ne "$_MSVC_VER_FILTER"` 1509 if test -z "$CC_VERSION"; then 1510 AC_MSG_ERROR([Could not determine MSC version.]) 1511 fi 1512 1513 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | awk -F\. '{ print $1 }'` 1514 _CC_MINOR_VERSION=`echo ${CC_VERSION} | awk -F\. '{ print $2 }'` 1515 _CC_RELEASE=`echo ${CC_VERSION} | awk -F\. '{ print $3 }'` 1516 _CC_BUILD=`echo ${CC_VERSION} | awk -F\. '{ print $4 }'` 1517 MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION} 1518 1519 if test "$_CC_MAJOR_VERSION" -eq "14"; then 1520 dnl -DYNAMICBASE is only supported on VC8SP1 or newer, 1521 dnl so be very specific here! 1522 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762 1523 if test $_CC_RELEASE -gt 50727; then 1524 _USE_DYNAMICBASE=1 1525 elif test $_CC_BUILD -ge 762; then 1526 _USE_DYNAMICBASE=1 1527 fi 1528 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE) 1529 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE) 1530 elif test $_CC_MAJOR_VERSION -ge 15; then 1531 _USE_DYNAMICBASE=1 1532 AC_DEFINE(_CRT_SECURE_NO_WARNINGS) 1533 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS) 1534 fi 1535 1536 if test -n "$_USE_DYNAMICBASE"; then 1537 DLLFLAGS="$DLLFLAGS -DYNAMICBASE" 1538 fi 1539 1540 # Ensure that mt is Microsoft (R) Manifest Tool and not magnetic 1541 # tape manipulation utility (or something else) 1542 if test "$MSC_VER" -ge "1400"; then 1543 changequote(,) 1544 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p' 1545 changequote([,]) 1546 1547 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'` 1548 if test -n "$MSMT_TOOL"; then 1549 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"` 1550 if test -z "$MSMANIFEST_TOOL_VERSION"; then 1551 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.]) 1552 fi 1553 MT=mt 1554 unset MSMT_TOOL 1555 else 1556 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.]) 1557 fi 1558 fi 1559 1560 CFLAGS="$CFLAGS -W3 -nologo -GF -Gy" 1561 DLLFLAGS="$DLLFLAGS -OUT:\"\$@\"" 1562 _DEBUG_FLAGS=-Zi 1563 _OPTIMIZE_FLAGS=-O2 1564 1565 PROFILE_GEN_CFLAGS="-GL" 1566 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT" 1567 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952" 1568 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE" 1569 1570 if test "$MSC_VER" -ge "1800"; then 1571 dnl Visual C++ 2013 requires -FS when parallel building with 1572 dnl make -jN. If not specified, compiler sometimes emits C1041 1573 dnl error. 1574 CFLAGS="$CFLAGS -FS" 1575 dnl -Gw can benefit when using linker optimization on PGO. 1576 dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx 1577 PROFILE_GEN_CFLAGS="$PROFILE_GEN_CFLAGS -Gw" 1578 PROFILE_USE_CFLAGS="$PROFILE_USE_CFLAGS -Gw" 1579 fi 1580 1581 if test -z "$MOZ_OPTIMIZE"; then 1582 CFLAGS="$CFLAGS -Od" 1583 fi 1584 1585 if test "$USE_DEBUG_RTL" = 1; then 1586 if test -n "$USE_STATIC_RTL"; then 1587 CFLAGS="$CFLAGS -MTd" 1588 else 1589 CFLAGS="$CFLAGS -MDd" 1590 fi 1591 else 1592 if test -n "$USE_STATIC_RTL"; then 1593 CFLAGS="$CFLAGS -MT" 1594 else 1595 CFLAGS="$CFLAGS -MD" 1596 fi 1597 fi 1598 1599 if test -n "$MOZ_DEBUG"; then 1600 AC_DEFINE(_DEBUG) 1601 else 1602 DEFINES="$DEFINES -U_DEBUG" 1603 fi 1604 1605 if test -n "$MOZ_DEBUG_SYMBOLS"; then 1606 if test -n "$MOZ_OPTIMIZE"; then 1607 DLLFLAGS="$DLLFLAGS -DEBUG -OPT:REF" 1608 LDFLAGS="$LDFLAGS -DEBUG -OPT:REF" 1609 else 1610 DLLFLAGS="$DLLFLAGS -DEBUG" 1611 LDFLAGS="$LDFLAGS -DEBUG" 1612 fi 1613 fi 1614 1615 OS_DLLFLAGS="-nologo -DLL -SUBSYSTEM:WINDOWS" 1616 if test "$MSC_VER" -le "1200" -a -z "$MOZ_DEBUG_SYMBOLS"; then 1617 OS_DLLFLAGS="$OS_DLLFLAGS -PDB:NONE" 1618 fi 1619 1620 if test "$OS_TARGET" = "WINNT"; then 1621 CFLAGS="$CFLAGS -GT" 1622 LIBNSPR='$(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)' 1623 LIBPLC='$(dist_libdir)/libplc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)' 1624 else 1625 LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)' 1626 LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)' 1627 fi 1628 fi # GNU_CC 1629 1630 if test -n "$USE_STATIC_TLS"; then 1631 AC_DEFINE(_PR_USE_STATIC_TLS) 1632 fi 1633 1634 if test "$OS_TARGET" = "WINNT"; then 1635 AC_DEFINE(WINNT) 1636 else 1637 AC_DEFINE(WIN95) 1638 # undefine WINNT as some versions of mingw gcc define it by default 1639 DEFINES="$DEFINES -UWINNT" 1640 AC_DEFINE(_PR_GLOBAL_THREADS_ONLY) 1641 fi 1642 1643 if test "$CPU_ARCH" = "x86"; then 1644 CPU_ARCH_TAG= 1645 else 1646 CPU_ARCH_TAG=$CPU_ARCH 1647 fi 1648 1649 if test "$USE_DEBUG_RTL" = 1; then 1650 OBJDIR_SUFFIX=OBJD 1651 fi 1652 1653 case "$OS_TARGET" in 1654 WINNT) 1655 MDCPUCFG_H=_winnt.cfg 1656 ;; 1657 WIN95) 1658 MDCPUCFG_H=_win95.cfg 1659 ;; 1660 *) 1661 AC_MSG_ERROR([Missing OS_TARGET for ${target}. Use --enable-win32-target to set.]) 1662 ;; 1663 esac 1664 1665 case "$target_cpu" in 1666 i*86|x86_64) 1667 if test -n "$USE_64"; then 1668 AC_DEFINE(_AMD64_) 1669 else 1670 AC_DEFINE(_X86_) 1671 if test -z "$GNU_CC" -a "$MSC_VER" -ge "1700"; then 1672 dnl Visual C++ 2012 defaults to -arch:SSE2. Use -arch:IA32 1673 dnl to avoid requiring SSE2. 1674 CFLAGS="$CFLAGS -arch:IA32" 1675 fi 1676 fi 1677 ;; 1678 aarch64) 1679 AC_DEFINE(_ARM64_) 1680 USE_64=1 1681 ;; 1682 ia64) 1683 AC_DEFINE(_IA64_) 1684 USE_64=1 1685 ;; 1686 *) 1687 AC_DEFINE(_CPU_ARCH_NOT_DEFINED) 1688 ;; 1689 esac 1690 ;; 1691 1692 *-netbsd*) 1693 AC_DEFINE(XP_UNIX) 1694 AC_DEFINE(NETBSD) 1695 AC_DEFINE(HAVE_BSD_FLOCK) 1696 AC_DEFINE(HAVE_SOCKLEN_T) 1697 AC_DEFINE(HAVE_POINTER_LOCALTIME_R) 1698 if test -z "$USE_NSPR_THREADS"; then 1699 USE_PTHREADS=1 1700 fi 1701 MDCPUCFG_H=_netbsd.cfg 1702 PR_MD_CSRCS=netbsd.c 1703 1704 DSO_CFLAGS='-fPIC -DPIC' 1705 CFLAGS="$CFLAGS -ansi -Wall" 1706 CXXFLAGS="$CXXFLAGS -ansi -Wall" 1707 MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)' 1708 1709 if test -z "$OBJECT_FMT"; then 1710 if echo __ELF__ | ${CC-cc} -E - | grep -q __ELF__ 2>/dev/null; then 1711 OBJECT_FMT=a.out 1712 DLL_SUFFIX=so.1.0 1713 DSO_LDOPTS='-shared' 1714 else 1715 OBJECT_FMT=ELF 1716 DLL_SUFFIX=so 1717 DSO_LDOPTS='-shared -Wl,-soname,$(notdir $@)' 1718 fi 1719 fi 1720 1721 if test "$LIBRUNPATH"; then 1722 DSO_LDOPTS="$DSO_LDOPTS -Wl,-R$LIBRUNPATH" 1723 fi 1724 ;; 1725 1726 *-nto*) 1727 AC_DEFINE(XP_UNIX) 1728 AC_DEFINE(NTO) 1729 AC_DEFINE(_QNX_SOURCE) 1730 AC_DEFINE(HAVE_POINTER_LOCALTIME_R) 1731 MDCPUCFG_H=_nto.cfg 1732 PR_MD_CSRCS=nto.c 1733 MKSHLIB='$(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(notdir $@) -o $@' 1734 DSO_CFLAGS=-fPIC 1735 DSO_LDOPTS=-shared 1736 OS_LIBS="$OS_LIBS -lsocket" 1737 _OPTIMIZE_FLAGS="-O1" 1738 _DEBUG_FLAGS="-gstabs" 1739 ;; 1740 1741 *-openbsd*) 1742 AC_DEFINE(XP_UNIX) 1743 AC_DEFINE(OPENBSD) 1744 AC_DEFINE(HAVE_BSD_FLOCK) 1745 AC_DEFINE(HAVE_SOCKLEN_T) 1746 AC_DEFINE(HAVE_POINTER_LOCALTIME_R) 1747 CFLAGS="$CFLAGS -ansi -Wall" 1748 CXXFLAGS="$CXXFLAGS -ansi -Wall" 1749 DLL_SUFFIX=so.1.0 1750 DSO_CFLAGS=-fPIC 1751 MDCPUCFG_H=_openbsd.cfg 1752 PR_MD_CSRCS=openbsd.c 1753 OS_LIBS="-lc" 1754 if test -z "$USE_NSPR_THREADS"; then 1755 USE_PTHREADS=1 1756 fi 1757 DSO_LDOPTS='-shared -fPIC -Wl,-soname,$(notdir $@)' 1758 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@' 1759 ;; 1760 1761 *-qnx*) 1762 AC_DEFINE(XP_UNIX) 1763 AC_DEFINE(QNX) 1764 AC_DEFINE(_PR_NEED_H_ERRNO) 1765 USE_NSPR_THREADS=1 1766 MDCPUCFG_H=_qnx.cfg 1767 PR_MD_CSRCS=qnx.c 1768 ;; 1769 1770 *-riscos*) 1771 AC_DEFINE(XP_UNIX) 1772 AC_DEFINE(RISCOS) 1773 AC_DEFINE(_PR_NEED_H_ERRNO) 1774 USE_PTHREADS=1 1775 MDCPUCFG_H=_riscos.cfg 1776 PR_MD_CSRCS=riscos.c 1777 DSO_CFLAGS=-fPIC 1778 DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)' 1779 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@' 1780 ;; 1781 1782 *-solaris*) 1783 if test -z "$USE_NSPR_THREADS"; then 1784 USE_PTHREADS=1 1785 fi 1786 AC_DEFINE(XP_UNIX) 1787 AC_DEFINE(SVR4) 1788 AC_DEFINE(SYSV) 1789 AC_DEFINE(__svr4) 1790 AC_DEFINE(__svr4__) 1791 AC_DEFINE(SOLARIS) 1792 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING) 1793 CPU_ARCH=`uname -p` 1794 MDCPUCFG_H=_solaris.cfg 1795 PR_MD_CSRCS=solaris.c 1796 LD=/usr/ccs/bin/ld 1797 MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@' 1798 RESOLVE_LINK_SYMBOLS=1 1799 case "${OS_RELEASE}" in 1800 5.8|5.9) 1801 ;; 1802 *) 1803 # It is safe to use the -Bdirect linker flag on Solaris 10 or later. 1804 USE_B_DIRECT=1 1805 ;; 1806 esac 1807 if test -n "$GNU_CC"; then 1808 DSO_CFLAGS=-fPIC 1809 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then 1810 GCC_USE_GNU_LD=1 1811 fi 1812 DSO_LDOPTS='-shared -Wl,-h,$(notdir $@),-z,combreloc,-z,defs,-z,ignore' 1813 if test -n "$USE_B_DIRECT"; then 1814 DSO_LDOPTS="$DSO_LDOPTS,-Bdirect" 1815 fi 1816 else 1817 DSO_CFLAGS=-KPIC 1818 DSO_LDOPTS='-G -h $(notdir $@) -z combreloc -z defs -z ignore' 1819 if test -n "$USE_B_DIRECT"; then 1820 DSO_LDOPTS="$DSO_LDOPTS -Bdirect" 1821 fi 1822 fi 1823 if test -n "$GNU_CC"; then 1824 CFLAGS="$CFLAGS -Wall" 1825 CXXFLAGS="$CXXFLAGS -Wall" 1826 if test -n "$USE_MDUPDATE"; then 1827 CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)" 1828 CXXFLAGS="$CXXFLAGS -MDupdate \$(DEPENDENCIES)" 1829 fi 1830 GCC_AS=`$CC -print-prog-name=as` 1831 if test "`echo | $GCC_AS -v 2>&1 | grep -c GNU`" != "0"; then 1832 GNU_AS=1 1833 fi 1834 else 1835 CFLAGS="$CFLAGS -xstrconst" 1836 CXXFLAGS="$CXXFLAGS -Qoption cg -xstrconst -features=tmplife" 1837 if test -z "$MOZ_OPTIMIZE"; then 1838 CFLAGS="$CFLAGS -xs" 1839 CXXFLAGS="$CXXFLAGS -xs" 1840 fi 1841 _OPTIMIZE_FLAGS=-xO4 1842 fi 1843 if test -z "$GNU_AS"; then 1844 ASFLAGS="$ASFLAGS -Wa,-P" 1845 fi 1846 if test -n "$USE_64"; then 1847 if test -n "$GNU_CC"; then 1848 CC="$CC -m64" 1849 CXX="$CXX -m64" 1850 else 1851 if test "$OS_TEST" = "i86pc"; then 1852 CC="$CC -xarch=amd64" 1853 CXX="$CXX -xarch=amd64" 1854 else 1855 CC="$CC -xarch=v9" 1856 CXX="$CXX -xarch=v9" 1857 fi 1858 fi 1859 fi 1860 if test "$OS_TEST" = "i86pc"; then 1861 if test -z "$USE_64"; then 1862 AC_DEFINE(i386) 1863 fi 1864 CPU_ARCH_TAG=_$OS_TEST 1865 # The default debug format, DWARF (-g), is not supported by gcc 1866 # on i386-ANY-sysv4/solaris, but the stabs format is. It is 1867 # assumed that the Solaris assembler /usr/ccs/bin/as is used. 1868 # If your gcc uses GNU as, you do not need the -Wa,-s option. 1869 if test -n "$MOZ_DEBUG" && test -n "$GNU_CC"; then 1870 _DEBUG_FLAGS=-gstabs 1871 if test -z "$GNU_AS"; then 1872 _DEBUG_FLAGS="$_DEBUG_FLAGS -Wa,-s" 1873 fi 1874 fi 1875 fi 1876 case "${target_os}" in 1877 solaris2.3*) 1878 AC_DEFINE(_PR_NO_LARGE_FILES) 1879 ;; 1880 solaris2.4*) 1881 AC_DEFINE(_PR_NO_LARGE_FILES) 1882 ;; 1883 solaris2.5*) 1884 AC_DEFINE(SOLARIS2_5) 1885 ;; 1886 *) 1887 AC_DEFINE(_PR_HAVE_OFF64_T) 1888 # The lfcompile64(5) man page on Solaris 2.6 says: 1889 # For applications that do not wish to conform to the POSIX or 1890 # X/Open specifications, the 64-bit transitional interfaces 1891 # are available by default. No compile-time flags need to be 1892 # set. 1893 # But gcc 2.7.2.x fails to define _LARGEFILE64_SOURCE by default. 1894 # The native compiler, gcc 2.8.x, and egcs don't have this problem. 1895 if test -n "$GNU_CC"; then 1896 AC_DEFINE(_LARGEFILE64_SOURCE) 1897 fi 1898 ;; 1899 esac 1900 case "${target_os}" in 1901 solaris2.3*) 1902 ;; 1903 solaris2.4*) 1904 ;; 1905 solaris2.5*) 1906 ;; 1907 solaris2.6*) 1908 ;; 1909 solaris2.7*) 1910 ;; 1911 *) 1912 # Solaris 8 or higher has IPv6. 1913 AC_DEFINE(_PR_INET6) 1914 ;; 1915 esac 1916 if test "$CPU_ARCH" = "sparc"; then 1917 # 64-bit Solaris SPARC requires V9 architecture, so the following 1918 # is not needed. 1919 if test -z "$USE_64"; then 1920 ULTRASPARC_LIBRARY=nspr_flt 1921 fi 1922 fi 1923 # Purify requires that binaries linked against nspr also 1924 # be linked against -lrt (or -lposix4) so add it to OS_LIBS 1925 _rev=`uname -r` 1926 _librt=`echo $_rev 5.6 | awk '{ if ($1 > $2) print "-lrt"; else print "-lposix4" }'` 1927 OS_LIBS="$OS_LIBS $_librt" 1928 ;; 1929 1930 *) 1931 AC_DEFINE(XP_UNIX) 1932 ;; 1933 1934 esac 1935 1936 if test -z "$SKIP_LIBRARY_CHECKS"; then 1937 dnl ======================================================== 1938 dnl Check for system libraries 1939 dnl ======================================================== 1940 1941 1942 dnl We don't want anything to link with libdl even if it's present on OS X, 1943 dnl since it's not used and not part of the default installation. 1944 dnl The same goes for BeOS. 1945 dnl OS/2 has dlfcn in libc. 1946 1947 case $target in 1948 *-darwin*) 1949 ;; 1950 *) 1951 AC_CHECK_LIB(dl, dlopen, 1952 [AC_CHECK_HEADER(dlfcn.h, 1953 OS_LIBS="-ldl $OS_LIBS")]) 1954 ;; 1955 esac 1956 1957 1958 dnl ======================================================== 1959 dnl Check for system header files. 1960 dnl ======================================================== 1961 1962 dnl ======================================================== 1963 dnl Check for typedefs and structs 1964 dnl ======================================================== 1965 1966 dnl ======================================================== 1967 dnl Checks for library functions. 1968 dnl ======================================================== 1969 AC_PROG_GCC_TRADITIONAL 1970 _SAVE_LIBS="$LIBS" 1971 LIBS="$LIBS $OS_LIBS" 1972 AC_CHECK_FUNCS(dladdr gettid lchown setpriority strerror syscall dnl 1973 secure_getenv __secure_getenv) 1974 LIBS="$_SAVE_LIBS" 1975 1976 dnl ======================================================== 1977 dnl Check options 1978 dnl ======================================================== 1979 1980 dnl ====================================================== 1981 dnl = Enable compiling with ccache 1982 dnl ====================================================== 1983 AC_ARG_WITH(ccache, 1984 [ --with-ccache[=path/to/ccache] 1985 Enable compiling with ccache], 1986 CCACHE=$withval, CCACHE="no") 1987 1988 if test "$CCACHE" != "no"; then 1989 if test -n "$CCACHE"; then 1990 if test "$CCACHE" = "yes"; then 1991 CCACHE= 1992 else 1993 if test ! -e "$CCACHE"; then 1994 AC_MSG_ERROR([$CCACHE not found]) 1995 fi 1996 fi 1997 fi 1998 AC_PATH_PROGS(CCACHE, $CCACHE ccache) 1999 if test -z "$CCACHE" -o "$CCACHE" = ":"; then 2000 AC_MSG_ERROR([ccache not found]) 2001 elif test -x "$CCACHE"; then 2002 CC="$CCACHE $CC" 2003 CXX="$CCACHE $CXX" 2004 else 2005 AC_MSG_ERROR([$CCACHE is not executable]) 2006 fi 2007 fi 2008 2009 dnl ======================================================== 2010 dnl = 2011 dnl = --enable-strip 2012 dnl = 2013 dnl = Enable stripping of libs and executables 2014 dnl = 2015 dnl ======================================================== 2016 AC_ARG_ENABLE(strip, 2017 [ --enable-strip Enable stripping of shared libs and programs], 2018 [ if test "$enableval" = "yes"; then 2019 ENABLE_STRIP=1 2020 fi ]) 2021 2022 dnl Check for hpux options 2023 case "${target_os}" in 2024 hpux*) 2025 if test -z "$GNU_CC"; then 2026 2027 AC_CACHE_CHECK(for +Olit support, 2028 ac_cv_hpux_usable_olit_option, 2029 dnl since aCC doesn't throw an error on invalid options, 2030 dnl we have to test this the hard way 2031 [ac_cv_hpux_usable_olit_option=no 2032 rm -f conftest* 2033 echo 'int main() { return 0; }' | cat > conftest.c 2034 ${CC-cc} ${CFLAGS} +Olit=all -o conftest conftest.c > conftest.out 2>&1 2035 if test $? -eq 0; then 2036 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out`"; then 2037 ac_cv_hpux_usable_olit_option=yes 2038 fi 2039 fi 2040 rm -f conftest* 2041 ]) 2042 2043 if test "$ac_cv_hpux_usable_olit_option" = "yes"; then 2044 CFLAGS="$CFLAGS +Olit=all" 2045 CXXFLAGS="$CXXFLAGS +Olit=all" 2046 else 2047 CFLAGS="$CFLAGS +ESlit" 2048 CXXFLAGS="$CXXFLAGS +ESlit" 2049 fi 2050 fi 2051 ;; 2052 esac 2053 2054 case "$target_os" in 2055 darwin*) 2056 _HAVE_PTHREADS=1 2057 ;; 2058 *) 2059 AC_CHECK_LIB(pthreads, pthread_create, 2060 _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads", 2061 AC_CHECK_LIB(pthread, pthread_create, 2062 _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread", 2063 AC_CHECK_LIB(c_r, pthread_create, 2064 _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r", 2065 AC_CHECK_LIB(c, pthread_create, 2066 _HAVE_PTHREADS=1 2067 ) 2068 ) 2069 ) 2070 ) 2071 ;; 2072 esac 2073 2074 AC_ARG_WITH(pthreads, 2075 [ --with-pthreads Use system pthreads library as thread subsystem], 2076 [ if test "$withval" = "yes"; then 2077 if test -n "$_HAVE_PTHREADS"; then 2078 USE_PTHREADS=1 2079 USE_USER_PTHREADS= 2080 USE_NSPR_THREADS= 2081 else 2082 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]); 2083 fi 2084 else 2085 USE_PTHREADS= 2086 _PTHREAD_LDFLAGS= 2087 fi], 2088 [ if test -n "$_HAVE_PTHREADS" && test -z "$USE_USER_PTHREADS" && test -z "$USE_NSPR_THREADS"; then 2089 USE_PTHREADS=1 2090 USE_USER_PTHREADS= 2091 USE_NSPR_THREADS= 2092 fi]) 2093 2094 AC_ARG_ENABLE(user-pthreads, 2095 [ --enable-user-pthreads Build using userland pthreads], 2096 [ if test "$enableval" = "yes"; then 2097 if test -n "$_HAVE_PTHREADS"; then 2098 USE_PTHREADS= 2099 USE_USER_PTHREADS=1 2100 USE_NSPR_THREADS= 2101 else 2102 AC_MSG_ERROR([ --enable-user-pthreads specified for a system without pthread support ]); 2103 fi 2104 fi]) 2105 2106 AC_ARG_ENABLE(nspr-threads, 2107 [ --enable-nspr-threads Build using classic nspr threads], 2108 [ if test "$enableval" = "yes"; then 2109 USE_PTHREADS= 2110 USE_USER_PTHREADS= 2111 USE_NSPR_THREADS=1 2112 fi]) 2113 2114 fi # SKIP_LIBRARY_CHECKS 2115 2116 AC_ARG_ENABLE(ipv6, 2117 [ --enable-ipv6 Compile ipv6 support], 2118 [ if test "$enableval" = "yes"; then 2119 USE_IPV6=1 2120 else 2121 USE_IPV6= 2122 fi]) 2123 2124 if test -n "$USE_PTHREADS"; then 2125 dnl See if -pthread is supported. 2126 rm -f conftest* 2127 ac_cv_have_dash_pthread=no 2128 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread) 2129 echo 'int main() { return 0; }' | cat > conftest.c 2130 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1 2131 if test $? -eq 0; then 2132 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then 2133 ac_cv_have_dash_pthread=yes 2134 case "$target_os" in 2135 freebsd*) 2136 # Freebsd doesn't use -pthread for compiles, it uses them for linking 2137 ;; 2138 *) 2139 CFLAGS="$CFLAGS -pthread" 2140 CXXFLAGS="$CXXFLAGS -pthread" 2141 ;; 2142 esac 2143 fi 2144 fi 2145 rm -f conftest* 2146 AC_MSG_RESULT($ac_cv_have_dash_pthread) 2147 2148 dnl 2149 dnl See if -pthreads is supported. 2150 dnl 2151 ac_cv_have_dash_pthreads=no 2152 if test "$ac_cv_have_dash_pthread" = "no"; then 2153 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads) 2154 echo 'int main() { return 0; }' | cat > conftest.c 2155 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1 2156 if test $? -eq 0; then 2157 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then 2158 ac_cv_have_dash_pthreads=yes 2159 CFLAGS="$CFLAGS -pthreads" 2160 CXXFLAGS="$CXXFLAGS -pthreads" 2161 fi 2162 fi 2163 rm -f conftest* 2164 AC_MSG_RESULT($ac_cv_have_dash_pthreads) 2165 fi 2166 2167 case "$target" in 2168 *-solaris*) 2169 if test "$ac_cv_have_dash_pthreads" = "yes"; then 2170 _PTHREAD_LDFLAGS= 2171 fi 2172 ;; 2173 *-freebsd*) 2174 AC_DEFINE(_REENTRANT) 2175 AC_DEFINE(_THREAD_SAFE) 2176 dnl -pthread links in -lc_r, so don't specify it explicitly. 2177 if test "$ac_cv_have_dash_pthread" = "yes"; then 2178 _PTHREAD_LDFLAGS="-pthread" 2179 else 2180 _PTHREAD_LDFLAGS="-lc_r" 2181 fi 2182 ;; 2183 *-netbsd*) 2184 if test "$ac_cv_have_dash_pthread" = "yes"; then 2185 _PTHREAD_LDFLAGS="-pthread" 2186 fi 2187 ;; 2188 *-openbsd*) 2189 if test "$ac_cv_have_dash_pthread" = "yes"; then 2190 _PTHREAD_LDFLAGS=-pthread 2191 fi 2192 ;; 2193 *-linux*|*-gnu*|*-k*bsd*-gnu) 2194 AC_DEFINE(_REENTRANT) 2195 ;; 2196 esac 2197 2198 else 2199 if test -n "$USE_USER_PTHREADS"; then 2200 USE_PTHREADS= 2201 USE_NSPR_THREADS= 2202 else 2203 _PTHREAD_LDFLAGS= 2204 fi 2205 fi 2206 dnl Special thread exceptions 2207 2208 case "$target" in 2209 *-aix*) 2210 if test -n "$USE_NSPR_THREADS"; then 2211 AC_DEFINE(_PR_LOCAL_THREADS_ONLY) 2212 fi 2213 case "$target_os" in 2214 aix4.1*) 2215 if test -z "$USE_PTHREADS"; then 2216 AC_DEFINE(AIX_RENAME_SELECT) 2217 fi 2218 ;; 2219 aix4.2*) 2220 if test -z "$USE_NSPR_THREADS"; then 2221 AC_DEFINE(HAVE_POINTER_LOCALTIME_R) 2222 fi 2223 ;; 2224 aix4.3*) 2225 if test -z "$USE_NSPR_THREADS"; then 2226 AC_DEFINE(HAVE_POINTER_LOCALTIME_R) 2227 fi 2228 if test -n "$USE_PTHREADS"; then 2229 AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST) 2230 fi 2231 ;; 2232 *) 2233 if test -z "$USE_NSPR_THREADS"; then 2234 AC_DEFINE(HAVE_POINTER_LOCALTIME_R) 2235 fi 2236 if test -n "$USE_PTHREADS"; then 2237 AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST) 2238 fi 2239 ;; 2240 esac 2241 ;; 2242 *-freebsd*) 2243 if test -n "$USE_NSPR_THREADS"; then 2244 AC_DEFINE(_PR_LOCAL_THREADS_ONLY) 2245 fi 2246 ;; 2247 *-hpux*) 2248 if test -n "$USE_NSPR_THREADS"; then 2249 AC_DEFINE(_PR_LOCAL_THREADS_ONLY) 2250 fi 2251 if test "$USE_PTHREADS"; then 2252 AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L) 2253 AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST) 2254 fi 2255 if test "$USE_USER_PTHREADS"; then 2256 AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L) 2257 fi 2258 ;; 2259 *-linux*|*-gnu*|*-k*bsd*-gnu) 2260 if test -n "$USE_NSPR_THREADS"; then 2261 AC_DEFINE(_PR_LOCAL_THREADS_ONLY) 2262 fi 2263 ;; 2264 *-mingw*|*-msys*|*-cygwin*|*-mks*) 2265 dnl win32 cannot use pthreads 2266 USE_PTHREADS= 2267 _PTHREAD_LDFLAGS= 2268 USE_USER_PTHREADS= 2269 ;; 2270 *-netbsd*|*-openbsd*) 2271 if test -n "$USE_NSPR_THREADS"; then 2272 AC_DEFINE(_PR_LOCAL_THREADS_ONLY) 2273 fi 2274 ;; 2275 *-solaris*) 2276 if test -n "$USE_NSPR_THREADS"; then 2277 AC_DEFINE(_PR_LOCAL_THREADS_ONLY) 2278 fi 2279 if test -n "$USE_PTHREADS"; then 2280 AC_DEFINE(_REENTRANT) 2281 AC_DEFINE(HAVE_POINTER_LOCALTIME_R) 2282 if test "$OS_TEST" = "i86pc"; then 2283 if test -n "$USE_64"; then 2284 PR_MD_ASFILES=os_SunOS_x86_64.s 2285 else 2286 PR_MD_ASFILES=os_SunOS_x86.s 2287 fi 2288 else 2289 if test -n "$USE_64"; then 2290 PR_MD_ASFILES=os_SunOS_sparcv9.s 2291 fi 2292 fi 2293 fi 2294 ;; 2295 *-nto*) 2296 if test -n "$USE_PTHREADS"; then 2297 AC_DEFINE(_PR_HAVE_GETHOST_R) 2298 AC_DEFINE(_PR_HAVE_GETHOST_R_POINTER) 2299 fi 2300 ;; 2301 esac 2302 2303 OS_LIBS="$_PTHREAD_LDFLAGS $OS_LIBS" 2304 2305 dnl If the user passed in arg to --enable-optimize or --enable-debug, 2306 dnl make sure that we use it. 2307 if test -n "$_SAVE_OPTIMIZE_FLAGS"; then 2308 _OPTIMIZE_FLAGS="$_SAVE_OPTIMIZE_FLAGS" 2309 fi 2310 2311 if test -n "$_SAVE_DEBUG_FLAGS"; then 2312 _DEBUG_FLAGS="$_SAVE_DEBUG_FLAGS" 2313 fi 2314 2315 if test -n "$MOZ_OPTIMIZE"; then 2316 CFLAGS="$CFLAGS $_OPTIMIZE_FLAGS" 2317 CXXFLAGS="$CXXFLAGS $_OPTIMIZE_FLAGS" 2318 fi 2319 2320 if test -n "$MOZ_DEBUG_SYMBOLS"; then 2321 CFLAGS="$CFLAGS $_DEBUG_FLAGS" 2322 CXXFLAGS="$CXXFLAGS $_DEBUG_FLAGS" 2323 fi 2324 2325 if test -n "$MOZ_OPTIMIZE"; then 2326 OBJDIR_TAG=_OPT 2327 else 2328 OBJDIR_TAG=_DBG 2329 fi 2330 2331 if test -n "$USE_64"; then 2332 COMPILER_TAG=_64 2333 fi 2334 2335 RELEASE_OBJDIR_NAME="${OS_CONFIG}${CPU_ARCH_TAG}${COMPILER_TAG}${IMPL_STRATEGY}${OBJDIR_TAG}.${OBJDIR_SUFFIX}" 2336 2337 dnl ======================================================== 2338 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW 2339 dnl ======================================================== 2340 case "$target_os" in 2341 cygwin*|mks*) 2342 CC="\$(CYGWIN_WRAPPER) $CC" 2343 CXX="\$(CYGWIN_WRAPPER) $CXX" 2344 RC="\$(CYGWIN_WRAPPER) $RC" 2345 ;; 2346 esac 2347 2348 dnl ======================================================== 2349 dnl = Use malloc wrapper lib 2350 dnl ======================================================== 2351 AC_ARG_ENABLE(wrap-malloc, 2352 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)], 2353 [ if test "$enableval" = "yes"; then 2354 _WRAP_MALLOC=1 2355 fi ]) 2356 2357 if test -n "$_WRAP_MALLOC"; then 2358 if test -n "$GNU_CC"; then 2359 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign" 2360 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete" 2361 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup" 2362 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size" 2363 else 2364 AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains]) 2365 fi 2366 fi 2367 2368 dnl ======================================================== 2369 dnl = Location of malloc wrapper lib 2370 dnl ======================================================== 2371 AC_ARG_WITH(wrap-malloc, 2372 [ --with-wrap-malloc=SHAREDLIB Location of malloc wrapper library], 2373 WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval") 2374 2375 dnl ======================================================== 2376 dnl Substitution of found variables. 2377 dnl ======================================================== 2378 AC_SUBST(SHELL_OVERRIDE) 2379 2380 AC_SUBST(MOZILLA_CLIENT) 2381 AC_SUBST(CC) 2382 AC_SUBST(CXX) 2383 AC_SUBST(CFLAGS) 2384 AC_SUBST(CXXFLAGS) 2385 AC_SUBST(CPPFLAGS) 2386 AC_SUBST(HOST_CC) 2387 AC_SUBST(HOST_CFLAGS) 2388 AC_SUBST(LDFLAGS) 2389 AC_SUBST(HOST_LDFLAGS) 2390 AC_SUBST(GNU_CC) 2391 AC_SUBST(GCC_USE_GNU_LD) 2392 AC_SUBST(MSC_VER) 2393 AC_SUBST(CROSS_COMPILE) 2394 2395 AC_SUBST(MOZ_OPTIMIZE) 2396 AC_SUBST(MOZ_DEBUG) 2397 AC_SUBST(MOZ_DEBUG_SYMBOLS) 2398 2399 AC_SUBST(USE_CPLUS) 2400 AC_SUBST(USE_IPV6) 2401 AC_SUBST(USE_N32) 2402 AC_SUBST(USE_X32) 2403 AC_SUBST(USE_64) 2404 AC_SUBST(OBJECT_MODE) 2405 AC_SUBST(ENABLE_STRIP) 2406 2407 AC_SUBST(USE_PTHREADS) 2408 AC_SUBST(USE_BTHREADS) 2409 AC_SUBST(USE_USER_PTHREADS) 2410 AC_SUBST(USE_NSPR_THREADS) 2411 2412 AC_SUBST(LIBNSPR) 2413 AC_SUBST(LIBPLC) 2414 2415 AC_SUBST(MOD_MAJOR_VERSION) 2416 AC_SUBST(MOD_MINOR_VERSION) 2417 AC_SUBST(MOD_PATCH_VERSION) 2418 AC_SUBST(NSPR_MODNAME) 2419 AC_SUBST(MDCPUCFG_H) 2420 AC_SUBST(PR_MD_CSRCS) 2421 AC_SUBST(PR_MD_ASFILES) 2422 AC_SUBST(PR_MD_ARCH_DIR) 2423 AC_SUBST(CPU_ARCH) 2424 2425 AC_SUBST(OBJ_SUFFIX) 2426 AC_SUBST(LIB_SUFFIX) 2427 AC_SUBST(DLL_SUFFIX) 2428 AC_SUBST(ASM_SUFFIX) 2429 AC_SUBST(WRAP_LDFLAGS) 2430 AC_SUBST(MKSHLIB) 2431 AC_SUBST(DSO_CFLAGS) 2432 AC_SUBST(DSO_LDOPTS) 2433 2434 AC_SUBST(OS_TARGET) 2435 AC_SUBST(OS_ARCH) 2436 AC_SUBST(OS_RELEASE) 2437 AC_SUBST(OS_TEST) 2438 AC_SUBST(MACOSX_DEPLOYMENT_TARGET) 2439 2440 AC_SUBST(DEFINES) 2441 AC_SUBST(DEFS) 2442 AC_SUBST(AR) 2443 AC_SUBST(AR_FLAGS) 2444 AC_SUBST(AS) 2445 AC_SUBST(ASFLAGS) 2446 AC_SUBST(LD) 2447 AC_SUBST(RANLIB) 2448 AC_SUBST(PERL) 2449 AC_SUBST(STRIP) 2450 AC_SUBST(FILTER) 2451 AC_SUBST(IMPLIB) 2452 2453 AC_SUBST(PROFILE_GEN_CFLAGS) 2454 AC_SUBST(PROFILE_GEN_LDFLAGS) 2455 AC_SUBST(PROFILE_USE_CFLAGS) 2456 AC_SUBST(PROFILE_USE_LDFLAGS) 2457 2458 AC_SUBST(OS_LIBS) 2459 AC_SUBST(RESOLVE_LINK_SYMBOLS) 2460 AC_SUBST(AIX_LINK_OPTS) 2461 AC_SUBST(NOSUCHFILE) 2462 AC_SUBST(MOZ_OBJFORMAT) 2463 AC_SUBST(ULTRASPARC_LIBRARY) 2464 2465 AC_SUBST(OBJDIR) 2466 AC_SUBST(OBJDIR_NAME) 2467 AC_SUBST(RELEASE_OBJDIR_NAME) 2468 AC_SUBST(NSINSTALL) 2469 AC_SUBST(OPTIMIZER) 2470 AC_SUBST(RC) 2471 AC_SUBST(RCFLAGS) 2472 AC_SUBST(DLLFLAGS) 2473 AC_SUBST(EXEFLAGS) 2474 AC_SUBST(OS_DLLFLAGS) 2475 AC_SUBST(CYGWIN_WRAPPER) 2476 AC_SUBST(VISIBILITY_FLAGS) 2477 AC_SUBST(WRAP_SYSTEM_INCLUDES) 2478 AC_SUBST(MACOS_SDK_DIR) 2479 AC_SUBST(NEXT_ROOT) 2480 AC_SUBST(MT) 2481 2482 dnl ======================================================== 2483 dnl Generate output files. 2484 dnl ======================================================== 2485 MAKEFILES=" 2486 Makefile 2487 config/Makefile 2488 config/autoconf.mk 2489 config/nsprincl.mk 2490 config/nsprincl.sh 2491 config/nspr-config 2492 config/nspr.pc 2493 lib/Makefile 2494 lib/ds/Makefile 2495 lib/libc/Makefile 2496 lib/libc/include/Makefile 2497 lib/libc/src/Makefile 2498 lib/tests/Makefile 2499 pkg/Makefile 2500 pr/Makefile 2501 pr/include/Makefile 2502 pr/include/md/Makefile 2503 pr/include/obsolete/Makefile 2504 pr/include/private/Makefile 2505 pr/src/Makefile 2506 pr/src/io/Makefile 2507 pr/src/linking/Makefile 2508 pr/src/malloc/Makefile 2509 pr/src/md/Makefile 2510 pr/src/md/${PR_MD_ARCH_DIR}/Makefile 2511 pr/src/memory/Makefile 2512 pr/src/misc/Makefile 2513 pr/src/threads/Makefile 2514 pr/tests/Makefile 2515 pr/tests/dll/Makefile 2516 " 2517 2518 if test "$OS_TARGET" = "Linux"; then 2519 MAKEFILES="$MAKEFILES 2520 pkg/linux/Makefile 2521 " 2522 elif test "$OS_TARGET" = "SunOS"; then 2523 MAKEFILES="$MAKEFILES 2524 pkg/solaris/Makefile 2525 pkg/solaris/SUNWpr/Makefile 2526 pkg/solaris/SUNWprd/Makefile 2527 " 2528 fi 2529 2530 if test -z "$USE_PTHREADS" && test -z "$USE_BTHREADS"; then 2531 MAKEFILES="$MAKEFILES 2532 pr/src/threads/combined/Makefile 2533 " 2534 elif test -n "$USE_PTHREADS"; then 2535 MAKEFILES="$MAKEFILES 2536 pr/src/pthreads/Makefile 2537 " 2538 elif test -n "$USE_BTHREADS"; then 2539 MAKEFILES="$MAKEFILES 2540 pr/src/bthreads/Makefile 2541 " 2542 fi 2543 2544 if test -n "$USE_CPLUS"; then 2545 MAKEFILES="$MAKEFILES 2546 pr/src/cplus/Makefile 2547 pr/src/cplus/tests/Makefile 2548 " 2549 fi 2550 2551 echo $MAKEFILES > unallmakefiles 2552 2553 AC_CONFIG_FILES([$MAKEFILES]) 2554 AC_CONFIG_COMMANDS([default], [chmod +x config/nspr-config]) 2555 AC_OUTPUT