< prev index next >

common/autoconf/flags.m4

Print this page




 189     AR_OUT_OPTION=-out:
 190   else
 191     # The option used to specify the target .o,.a or .so file.
 192     # When compiling, how to specify the to be created object file.
 193     CC_OUT_OPTION='-o$(SPACE)'
 194     # When linking, how to specify the to be created executable.
 195     EXE_OUT_OPTION='-o$(SPACE)'
 196     # When linking, how to specify the to be created dynamically linkable library.
 197     LD_OUT_OPTION='-o$(SPACE)'
 198     # When archiving, how to specify the to be create static archive for object files.
 199     AR_OUT_OPTION='rcs$(SPACE)'
 200   fi
 201   AC_SUBST(CC_OUT_OPTION)
 202   AC_SUBST(EXE_OUT_OPTION)
 203   AC_SUBST(LD_OUT_OPTION)
 204   AC_SUBST(AR_OUT_OPTION)
 205 
 206   # On Windows, we need to set RC flags.
 207   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 208     RC_FLAGS="-nologo -l0x409"
 209     if test "x$VARIANT" = xOPT; then
 210       RC_FLAGS="$RC_FLAGS -DNDEBUG"
 211     fi
 212 
 213     # The version variables used to create RC_FLAGS may be overridden
 214     # in a custom configure script, or possibly the command line.
 215     # Let those variables be expanded at make time in spec.gmk.
 216     # The \$ are escaped to the shell, and the $(...) variables
 217     # are evaluated by make.
 218     RC_FLAGS="$RC_FLAGS \
 219         -D\"JDK_VERSION_STRING=\$(VERSION_STRING)\" \
 220         -D\"JDK_COMPANY=\$(COMPANY_NAME)\" \
 221         -D\"JDK_COMPONENT=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) binary\" \
 222         -D\"JDK_VER=\$(VERSION_NUMBER)\" \
 223         -D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \
 224         -D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_MAJOR)\" \
 225         -D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\""
 226   fi
 227   AC_SUBST(RC_FLAGS)
 228 
 229   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then


 237   ###############################################################################
 238   #
 239   # How to compile shared libraries.
 240   #
 241 
 242   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 243     PICFLAG="-fPIC"
 244     C_FLAG_REORDER=''
 245     CXX_FLAG_REORDER=''
 246 
 247     if test "x$OPENJDK_TARGET_OS" = xmacosx; then
 248       # Linking is different on MacOSX
 249       if test "x$STATIC_BUILD" = xtrue; then
 250         SHARED_LIBRARY_FLAGS ='-undefined dynamic_lookup'
 251       else
 252         SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
 253       fi
 254       SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
 255       SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
 256       SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
 257       SET_SHARED_LIBRARY_MAPFILE=''
 258     else
 259       # Default works for linux, might work on other platforms as well.
 260       SHARED_LIBRARY_FLAGS='-shared'
 261       SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$$$ORIGIN[$]1'
 262       SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
 263       SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
 264       SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
 265     fi
 266   elif test "x$TOOLCHAIN_TYPE" = xclang; then
 267     C_FLAG_REORDER=''
 268     CXX_FLAG_REORDER=''
 269 
 270     if test "x$OPENJDK_TARGET_OS" = xmacosx; then
 271       # Linking is different on MacOSX
 272       PICFLAG=''
 273       SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
 274       SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
 275       SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
 276       SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
 277       SET_SHARED_LIBRARY_MAPFILE=''
 278     else
 279       # Default works for linux, might work on other platforms as well.
 280       PICFLAG='-fPIC'
 281       SHARED_LIBRARY_FLAGS='-shared'
 282       SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$$$ORIGIN[$]1'
 283       SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
 284       SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
 285       SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
 286     fi
 287   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
 288     PICFLAG="-KPIC"
 289     C_FLAG_REORDER='-xF'
 290     CXX_FLAG_REORDER='-xF'
 291     SHARED_LIBRARY_FLAGS="-G"
 292     SET_EXECUTABLE_ORIGIN='-R\$$$$ORIGIN[$]1'
 293     SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
 294     SET_SHARED_LIBRARY_NAME='-h [$]1'
 295     SET_SHARED_LIBRARY_MAPFILE='-M[$]1'
 296   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 297     PICFLAG="-qpic=large"
 298     C_FLAG_REORDER=''
 299     CXX_FLAG_REORDER=''
 300     SHARED_LIBRARY_FLAGS="-qmkshrobj"
 301     SET_EXECUTABLE_ORIGIN=""
 302     SET_SHARED_LIBRARY_ORIGIN=''
 303     SET_SHARED_LIBRARY_NAME=''
 304     SET_SHARED_LIBRARY_MAPFILE=''
 305   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 306     PICFLAG=""
 307     C_FLAG_REORDER=''
 308     CXX_FLAG_REORDER=''
 309     SHARED_LIBRARY_FLAGS="-dll"
 310     SET_EXECUTABLE_ORIGIN=''
 311     SET_SHARED_LIBRARY_ORIGIN=''
 312     SET_SHARED_LIBRARY_NAME=''
 313     SET_SHARED_LIBRARY_MAPFILE=''
 314   fi
 315 
 316   AC_SUBST(C_FLAG_REORDER)
 317   AC_SUBST(CXX_FLAG_REORDER)
 318   AC_SUBST(SET_EXECUTABLE_ORIGIN)
 319   AC_SUBST(SET_SHARED_LIBRARY_ORIGIN)
 320   AC_SUBST(SET_SHARED_LIBRARY_NAME)
 321   AC_SUBST(SET_SHARED_LIBRARY_MAPFILE)
 322   AC_SUBST(SHARED_LIBRARY_FLAGS)
 323 
 324   if test "x$OPENJDK_TARGET_OS" = xsolaris; then
 325     CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
 326     CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
 327     CFLAGS_JDKLIB_EXTRA='-xstrconst'
 328   fi
 329   # The (cross) compiler is now configured, we can now test capabilities
 330   # of the target platform.
 331 ])
 332 
 333 # Documentation on common flags used for solstudio in HIGHEST.


 406     CFLAGS_DEBUG_SYMBOLS="-g -xs"
 407     # -g0 enables debug symbols without disabling inlining.
 408     CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs"
 409   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 410     CFLAGS_DEBUG_SYMBOLS="-g"
 411     CXXFLAGS_DEBUG_SYMBOLS="-g"
 412   fi
 413   AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
 414   AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS)
 415 
 416   # bounds, memory and behavior checking options
 417   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 418     case $DEBUG_LEVEL in
 419     release )
 420       # no adjustment
 421       ;;
 422     fastdebug )
 423       # no adjustment
 424       ;;
 425     slowdebug )




 426       # Add runtime stack smashing and undefined behavior checks.
 427       # Not all versions of gcc support -fstack-protector
 428       STACK_PROTECTOR_CFLAG="-fstack-protector-all"
 429       FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$STACK_PROTECTOR_CFLAG -Werror], IF_FALSE: [STACK_PROTECTOR_CFLAG=""])
 430 
 431       CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
 432       CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
 433       ;;
 434     esac
 435   fi
 436 
 437   # Optimization levels
 438   if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
 439     CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil"
 440 
 441     if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
 442       # FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global?
 443       C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -xregs=no%frameptr"
 444       C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr"
 445       C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr"
 446       C_O_FLAG_DEBUG="-xregs=no%frameptr"
 447       C_O_FLAG_NONE="-xregs=no%frameptr"
 448       CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr"
 449       CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr"
 450       CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz -xregs=no%frameptr"
 451       CXX_O_FLAG_DEBUG="-xregs=no%frameptr"
 452       CXX_O_FLAG_NONE="-xregs=no%frameptr"
 453       if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
 454         C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium"
 455         CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium"
 456       fi
 457     elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
 458       C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xalias_level=basic -xprefetch=auto,explicit -xchip=ultra"
 459       C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0"
 460       C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0"
 461       C_O_FLAG_DEBUG=""
 462       C_O_FLAG_NONE=""
 463       CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
 464       CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
 465       CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
 466       C_O_FLAG_DEBUG=""
 467       CXX_O_FLAG_NONE=""
 468     fi
 469   else
 470     # The remaining toolchains share opt flags between CC and CXX;
 471     # setup for C and duplicate afterwards.
 472     if test "x$TOOLCHAIN_TYPE" = xgcc; then
 473       if test "x$OPENJDK_TARGET_OS" = xmacosx; then
 474         # On MacOSX we optimize for size, something
 475         # we should do for all platforms?
 476         C_O_FLAG_HIGHEST="-Os"
 477         C_O_FLAG_HI="-Os"
 478         C_O_FLAG_NORM="-Os"
 479       else
 480         C_O_FLAG_HIGHEST="-O3"
 481         C_O_FLAG_HI="-O3"
 482         C_O_FLAG_NORM="-O2"
 483       fi
 484       C_O_FLAG_DEBUG="-O0"
 485       C_O_FLAG_NONE="-O0"
 486     elif test "x$TOOLCHAIN_TYPE" = xclang; then


 629     CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
 630   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 631     CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
 632     CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
 633   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 634     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK \
 635         -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
 636         -DWIN32_LEAN_AND_MEAN \
 637         -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
 638         -D_WINSOCK_DEPRECATED_NO_WARNINGS \
 639         -DWIN32 -DIAL"
 640     if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
 641       COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64"
 642     else
 643       COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86"
 644     fi
 645     # If building with Visual Studio 2010, we can still use _STATIC_CPPLIB to
 646     # avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual
 647     # studio.
 648     if test "x$TOOLCHAIN_VERSION" = "x2010"; then
 649       COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
 650           -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
 651     fi
 652   fi
 653 
 654   ###############################################################################
 655 
 656   # Adjust flags according to debug level.
 657   case $DEBUG_LEVEL in
 658     fastdebug | slowdebug )
 659       CFLAGS_JDK="$CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS $CFLAGS_DEBUG_OPTIONS"
 660       CXXFLAGS_JDK="$CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS $CXXFLAGS_DEBUG_OPTIONS"
 661       JAVAC_FLAGS="$JAVAC_FLAGS -g"
 662       ;;
 663     release )
 664       ;;
 665     * )
 666       AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL])
 667       ;;
 668   esac
 669 
 670   # Setup LP64


 698   # Setup target OS define. Use OS target name but in upper case.
 699   OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
 700   COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D$OPENJDK_TARGET_OS_UPPERCASE"
 701 
 702   # Setup target CPU
 703   COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
 704 
 705   # Setup debug/release defines
 706   if test "x$DEBUG_LEVEL" = xrelease; then
 707     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DNDEBUG"
 708     if test "x$OPENJDK_TARGET_OS" = xsolaris; then
 709       COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DTRIMMED"
 710     fi
 711   else
 712     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG"
 713   fi
 714 
 715   # Set some additional per-OS defines.
 716   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
 717     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
 718   elif test "x$OPENJDK_TARGET_OS" = xaix; then
 719     # FIXME: PPC64 should not be here.
 720     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DPPC64"
 721   elif test "x$OPENJDK_TARGET_OS" = xbsd; then
 722     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
 723   fi
 724 
 725   # Additional macosx handling
 726   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
 727     # Setting these parameters makes it an error to link to macosx APIs that are
 728     # newer than the given OS version and makes the linked binaries compatible
 729     # even if built on a newer version of the OS.
 730     # The expected format is X.Y.Z
 731     MACOSX_VERSION_MIN=10.7.0
 732     AC_SUBST(MACOSX_VERSION_MIN)
 733 
 734     # The macro takes the version with no dots, ex: 1070
 735     # Let the flags variables get resolved in make for easier override on make
 736     # command line.
 737     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
 738     LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
 739   fi
 740 


 758   AC_SUBST(CFLAGS_JDKEXE)
 759   AC_SUBST(CXXFLAGS_JDKLIB)
 760   AC_SUBST(CXXFLAGS_JDKEXE)
 761 
 762   # Flags for compiling test libraries
 763   CFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
 764   CXXFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
 765 
 766   # Flags for compiling test executables
 767   CFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK"
 768   CXXFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK"
 769 
 770   AC_SUBST(CFLAGS_TESTLIB)
 771   AC_SUBST(CFLAGS_TESTEXE)
 772   AC_SUBST(CXXFLAGS_TESTLIB)
 773   AC_SUBST(CXXFLAGS_TESTEXE)
 774 
 775   # Setup LDFLAGS et al.
 776   #
 777 
 778   # Now this is odd. The JDK native libraries have to link against libjvm.so
 779   # On 32-bit machines there is normally two distinct libjvm.so:s, client and server.
 780   # Which should we link to? Are we lucky enough that the binary api to the libjvm.so library
 781   # is identical for client and server? Yes. Which is picked at runtime (client or server)?
 782   # Neither, since the chosen libjvm.so has already been loaded by the launcher, all the following
 783   # libraries will link to whatever is in memory. Yuck.
 784   #
 785   # Thus we offer the compiler to find libjvm.so first in server then in client. It works. Ugh.
 786   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 787     LDFLAGS_JDK="$LDFLAGS_JDK -nologo -opt:ref -incremental:no"

 788     if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
 789       LDFLAGS_JDK="$LDFLAGS_JDK -safeseh"

 790     fi
 791     # TODO: make -debug optional "--disable-full-debug-symbols"
 792     LDFLAGS_JDK="$LDFLAGS_JDK -debug"

 793   elif test "x$TOOLCHAIN_TYPE" = xgcc; then
 794     # If this is a --hash-style=gnu system, use --hash-style=both, why?
 795     # We have previously set HAS_GNU_HASH if this is the case
 796     if test -n "$HAS_GNU_HASH"; then
 797       LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,--hash-style=both"

 798     fi
 799     if test "x$OPENJDK_TARGET_OS" = xlinux; then
 800       # And since we now know that the linker is gnu, then add -z defs, to forbid
 801       # undefined symbols in object files.
 802       LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,-z,defs"

 803       case $DEBUG_LEVEL in
 804         release )
 805           # tell linker to optimize libraries.
 806           # Should this be supplied to the OSS linker as well?
 807           LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,-O1"

 808           ;;
 809         slowdebug )
 810           if test "x$HAS_LINKER_NOW" = "xtrue"; then
 811             # do relocations at load
 812             LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_NOW_FLAG"
 813             LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_NOW_FLAG"
 814           fi
 815           if test "x$HAS_LINKER_RELRO" = "xtrue"; then
 816             # mark relocations read only
 817             LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
 818             LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
 819           fi
 820           ;;
 821         fastdebug )
 822           if test "x$HAS_LINKER_RELRO" = "xtrue"; then
 823             # mark relocations read only
 824             LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
 825             LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
 826           fi
 827           ;;
 828         * )
 829           AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL])
 830           ;;
 831         esac
 832     fi
 833   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
 834     LDFLAGS_JDK="$LDFLAGS_JDK -Wl,-z,defs -xildoff -ztext"
 835     LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib"


 836   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 837     LDFLAGS_JDK="${LDFLAGS_JDK} -brtl -bnolibpath -bexpall -bernotok"

 838   fi
 839 
 840   # Customize LDFLAGS for executables
 841 
 842   LDFLAGS_JDKEXE="${LDFLAGS_JDK}"
 843 
 844   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 845     if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then
 846       LDFLAGS_STACK_SIZE=1048576
 847     else
 848       LDFLAGS_STACK_SIZE=327680
 849     fi
 850     LDFLAGS_JDKEXE="${LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE"
 851   elif test "x$OPENJDK_TARGET_OS" = xlinux; then
 852     LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
 853   fi
 854 
 855   # Customize LDFLAGS for libs
 856   LDFLAGS_JDKLIB="${LDFLAGS_JDK}"
 857 


1030         DISABLE_WARNING_PREFIX=
1031       fi
1032       CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
1033       # Repeate the check for the BUILD_CC
1034       CC_OLD="$CC"
1035       CC="$BUILD_CC"
1036       FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [-Wno-this-is-a-warning-that-do-not-exist],
1037           IF_TRUE: [BUILD_CC_CAN_DISABLE_WARNINGS=true],
1038           IF_FALSE: [BUILD_CC_CAN_DISABLE_WARNINGS=false]
1039       )
1040       if test "x$BUILD_CC_CAN_DISABLE_WARNINGS" = "xtrue"; then
1041         BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
1042       else
1043         BUILD_CC_DISABLE_WARNING_PREFIX=
1044       fi
1045       CC="$CC_OLD"
1046       ;;
1047     clang)
1048       DISABLE_WARNING_PREFIX="-Wno-"
1049       CFLAGS_WARNINGS_ARE_ERRORS="-Werror"




1050       ;;
1051   esac
1052   AC_SUBST(DISABLE_WARNING_PREFIX)
1053   AC_SUBST(CFLAGS_WARNINGS_ARE_ERRORS)
1054 ])


 189     AR_OUT_OPTION=-out:
 190   else
 191     # The option used to specify the target .o,.a or .so file.
 192     # When compiling, how to specify the to be created object file.
 193     CC_OUT_OPTION='-o$(SPACE)'
 194     # When linking, how to specify the to be created executable.
 195     EXE_OUT_OPTION='-o$(SPACE)'
 196     # When linking, how to specify the to be created dynamically linkable library.
 197     LD_OUT_OPTION='-o$(SPACE)'
 198     # When archiving, how to specify the to be create static archive for object files.
 199     AR_OUT_OPTION='rcs$(SPACE)'
 200   fi
 201   AC_SUBST(CC_OUT_OPTION)
 202   AC_SUBST(EXE_OUT_OPTION)
 203   AC_SUBST(LD_OUT_OPTION)
 204   AC_SUBST(AR_OUT_OPTION)
 205 
 206   # On Windows, we need to set RC flags.
 207   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 208     RC_FLAGS="-nologo -l0x409"
 209     if test "x$DEBUG_LEVEL" = xrelease; then
 210       RC_FLAGS="$RC_FLAGS -DNDEBUG"
 211     fi
 212 
 213     # The version variables used to create RC_FLAGS may be overridden
 214     # in a custom configure script, or possibly the command line.
 215     # Let those variables be expanded at make time in spec.gmk.
 216     # The \$ are escaped to the shell, and the $(...) variables
 217     # are evaluated by make.
 218     RC_FLAGS="$RC_FLAGS \
 219         -D\"JDK_VERSION_STRING=\$(VERSION_STRING)\" \
 220         -D\"JDK_COMPANY=\$(COMPANY_NAME)\" \
 221         -D\"JDK_COMPONENT=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) binary\" \
 222         -D\"JDK_VER=\$(VERSION_NUMBER)\" \
 223         -D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \
 224         -D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_MAJOR)\" \
 225         -D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\""
 226   fi
 227   AC_SUBST(RC_FLAGS)
 228 
 229   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then


 237   ###############################################################################
 238   #
 239   # How to compile shared libraries.
 240   #
 241 
 242   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 243     PICFLAG="-fPIC"
 244     C_FLAG_REORDER=''
 245     CXX_FLAG_REORDER=''
 246 
 247     if test "x$OPENJDK_TARGET_OS" = xmacosx; then
 248       # Linking is different on MacOSX
 249       if test "x$STATIC_BUILD" = xtrue; then
 250         SHARED_LIBRARY_FLAGS ='-undefined dynamic_lookup'
 251       else
 252         SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
 253       fi
 254       SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
 255       SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
 256       SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
 257       SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1'
 258     else
 259       # Default works for linux, might work on other platforms as well.
 260       SHARED_LIBRARY_FLAGS='-shared'
 261       SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$$$ORIGIN[$]1'
 262       SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
 263       SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
 264       SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
 265     fi
 266   elif test "x$TOOLCHAIN_TYPE" = xclang; then
 267     C_FLAG_REORDER=''
 268     CXX_FLAG_REORDER=''
 269 
 270     if test "x$OPENJDK_TARGET_OS" = xmacosx; then
 271       # Linking is different on MacOSX
 272       PICFLAG=''
 273       SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
 274       SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
 275       SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
 276       SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
 277       SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1'
 278     else
 279       # Default works for linux, might work on other platforms as well.
 280       PICFLAG='-fPIC'
 281       SHARED_LIBRARY_FLAGS='-shared'
 282       SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$$$ORIGIN[$]1'
 283       SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
 284       SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
 285       SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
 286     fi
 287   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
 288     PICFLAG="-KPIC"
 289     C_FLAG_REORDER='-xF'
 290     CXX_FLAG_REORDER='-xF'
 291     SHARED_LIBRARY_FLAGS="-G"
 292     SET_EXECUTABLE_ORIGIN='-R\$$$$ORIGIN[$]1'
 293     SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
 294     SET_SHARED_LIBRARY_NAME='-h [$]1'
 295     SET_SHARED_LIBRARY_MAPFILE='-M[$]1'
 296   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 297     PICFLAG="-qpic=large"
 298     C_FLAG_REORDER=''
 299     CXX_FLAG_REORDER=''
 300     SHARED_LIBRARY_FLAGS="-qmkshrobj"
 301     SET_EXECUTABLE_ORIGIN=""
 302     SET_SHARED_LIBRARY_ORIGIN=''
 303     SET_SHARED_LIBRARY_NAME=''
 304     SET_SHARED_LIBRARY_MAPFILE=''
 305   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 306     PICFLAG=""
 307     C_FLAG_REORDER=''
 308     CXX_FLAG_REORDER=''
 309     SHARED_LIBRARY_FLAGS="-dll"
 310     SET_EXECUTABLE_ORIGIN=''
 311     SET_SHARED_LIBRARY_ORIGIN=''
 312     SET_SHARED_LIBRARY_NAME=''
 313     SET_SHARED_LIBRARY_MAPFILE='-def:[$]1'
 314   fi
 315 
 316   AC_SUBST(C_FLAG_REORDER)
 317   AC_SUBST(CXX_FLAG_REORDER)
 318   AC_SUBST(SET_EXECUTABLE_ORIGIN)
 319   AC_SUBST(SET_SHARED_LIBRARY_ORIGIN)
 320   AC_SUBST(SET_SHARED_LIBRARY_NAME)
 321   AC_SUBST(SET_SHARED_LIBRARY_MAPFILE)
 322   AC_SUBST(SHARED_LIBRARY_FLAGS)
 323 
 324   if test "x$OPENJDK_TARGET_OS" = xsolaris; then
 325     CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
 326     CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
 327     CFLAGS_JDKLIB_EXTRA='-xstrconst'
 328   fi
 329   # The (cross) compiler is now configured, we can now test capabilities
 330   # of the target platform.
 331 ])
 332 
 333 # Documentation on common flags used for solstudio in HIGHEST.


 406     CFLAGS_DEBUG_SYMBOLS="-g -xs"
 407     # -g0 enables debug symbols without disabling inlining.
 408     CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs"
 409   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 410     CFLAGS_DEBUG_SYMBOLS="-g"
 411     CXXFLAGS_DEBUG_SYMBOLS="-g"
 412   fi
 413   AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
 414   AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS)
 415 
 416   # bounds, memory and behavior checking options
 417   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 418     case $DEBUG_LEVEL in
 419     release )
 420       # no adjustment
 421       ;;
 422     fastdebug )
 423       # no adjustment
 424       ;;
 425     slowdebug )
 426       # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS it
 427       # get's added contitionally on whether we produce debug symbols or not.
 428       # This is most likely not really correct.
 429 
 430       # Add runtime stack smashing and undefined behavior checks.
 431       # Not all versions of gcc support -fstack-protector
 432       STACK_PROTECTOR_CFLAG="-fstack-protector-all"
 433       FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$STACK_PROTECTOR_CFLAG -Werror], IF_FALSE: [STACK_PROTECTOR_CFLAG=""])
 434 
 435       CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
 436       CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
 437       ;;
 438     esac
 439   fi
 440 
 441   # Optimization levels
 442   if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
 443     CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil"
 444 
 445     if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
 446       # FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global?
 447       C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -xregs=no%frameptr"
 448       C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr"
 449       C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr"
 450       C_O_FLAG_DEBUG="-xregs=no%frameptr"
 451       C_O_FLAG_NONE="-xregs=no%frameptr"
 452       CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr"
 453       CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr"
 454       CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz -xregs=no%frameptr"
 455       CXX_O_FLAG_DEBUG="-xregs=no%frameptr"
 456       CXX_O_FLAG_NONE="-xregs=no%frameptr"
 457       if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
 458         C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium"
 459         CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium"
 460       fi
 461     elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
 462       C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xalias_level=basic -xprefetch=auto,explicit -xchip=ultra"
 463       C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0"
 464       C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0"
 465       C_O_FLAG_DEBUG=""
 466       C_O_FLAG_NONE=""
 467       CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
 468       CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
 469       CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
 470       CXX_O_FLAG_DEBUG=""
 471       CXX_O_FLAG_NONE=""
 472     fi
 473   else
 474     # The remaining toolchains share opt flags between CC and CXX;
 475     # setup for C and duplicate afterwards.
 476     if test "x$TOOLCHAIN_TYPE" = xgcc; then
 477       if test "x$OPENJDK_TARGET_OS" = xmacosx; then
 478         # On MacOSX we optimize for size, something
 479         # we should do for all platforms?
 480         C_O_FLAG_HIGHEST="-Os"
 481         C_O_FLAG_HI="-Os"
 482         C_O_FLAG_NORM="-Os"
 483       else
 484         C_O_FLAG_HIGHEST="-O3"
 485         C_O_FLAG_HI="-O3"
 486         C_O_FLAG_NORM="-O2"
 487       fi
 488       C_O_FLAG_DEBUG="-O0"
 489       C_O_FLAG_NONE="-O0"
 490     elif test "x$TOOLCHAIN_TYPE" = xclang; then


 633     CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
 634   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 635     CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
 636     CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
 637   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 638     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK \
 639         -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
 640         -DWIN32_LEAN_AND_MEAN \
 641         -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
 642         -D_WINSOCK_DEPRECATED_NO_WARNINGS \
 643         -DWIN32 -DIAL"
 644     if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
 645       COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64"
 646     else
 647       COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86"
 648     fi
 649     # If building with Visual Studio 2010, we can still use _STATIC_CPPLIB to
 650     # avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual
 651     # studio.
 652     if test "x$TOOLCHAIN_VERSION" = "x2010"; then
 653       STATIC_CPPLIB_FLAGS="-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
 654       COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS"
 655     fi
 656   fi
 657 
 658   ###############################################################################
 659 
 660   # Adjust flags according to debug level.
 661   case $DEBUG_LEVEL in
 662     fastdebug | slowdebug )
 663       CFLAGS_JDK="$CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS $CFLAGS_DEBUG_OPTIONS"
 664       CXXFLAGS_JDK="$CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS $CXXFLAGS_DEBUG_OPTIONS"
 665       JAVAC_FLAGS="$JAVAC_FLAGS -g"
 666       ;;
 667     release )
 668       ;;
 669     * )
 670       AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL])
 671       ;;
 672   esac
 673 
 674   # Setup LP64


 702   # Setup target OS define. Use OS target name but in upper case.
 703   OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
 704   COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D$OPENJDK_TARGET_OS_UPPERCASE"
 705 
 706   # Setup target CPU
 707   COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
 708 
 709   # Setup debug/release defines
 710   if test "x$DEBUG_LEVEL" = xrelease; then
 711     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DNDEBUG"
 712     if test "x$OPENJDK_TARGET_OS" = xsolaris; then
 713       COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DTRIMMED"
 714     fi
 715   else
 716     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG"
 717   fi
 718 
 719   # Set some additional per-OS defines.
 720   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
 721     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"



 722   elif test "x$OPENJDK_TARGET_OS" = xbsd; then
 723     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
 724   fi
 725 
 726   # Additional macosx handling
 727   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
 728     # Setting these parameters makes it an error to link to macosx APIs that are
 729     # newer than the given OS version and makes the linked binaries compatible
 730     # even if built on a newer version of the OS.
 731     # The expected format is X.Y.Z
 732     MACOSX_VERSION_MIN=10.7.0
 733     AC_SUBST(MACOSX_VERSION_MIN)
 734 
 735     # The macro takes the version with no dots, ex: 1070
 736     # Let the flags variables get resolved in make for easier override on make
 737     # command line.
 738     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
 739     LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
 740   fi
 741 


 759   AC_SUBST(CFLAGS_JDKEXE)
 760   AC_SUBST(CXXFLAGS_JDKLIB)
 761   AC_SUBST(CXXFLAGS_JDKEXE)
 762 
 763   # Flags for compiling test libraries
 764   CFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
 765   CXXFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
 766 
 767   # Flags for compiling test executables
 768   CFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK"
 769   CXXFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK"
 770 
 771   AC_SUBST(CFLAGS_TESTLIB)
 772   AC_SUBST(CFLAGS_TESTEXE)
 773   AC_SUBST(CXXFLAGS_TESTLIB)
 774   AC_SUBST(CXXFLAGS_TESTEXE)
 775 
 776   # Setup LDFLAGS et al.
 777   #
 778 








 779   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 780     LDFLAGS_MICROSOFT="-nologo -opt:ref"
 781     LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no"
 782     if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
 783       LDFLAGS_SAFESH="-safeseh"
 784       LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SAFESH"
 785     fi
 786     # TODO: make -debug optional "--disable-full-debug-symbols"
 787     LDFLAGS_MICROSOFT_DEBUG="-debug"
 788     LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_MICROSOFT_DEBUG"
 789   elif test "x$TOOLCHAIN_TYPE" = xgcc; then
 790     # If this is a --hash-style=gnu system, use --hash-style=both, why?
 791     # We have previously set HAS_GNU_HASH if this is the case
 792     if test -n "$HAS_GNU_HASH"; then
 793       LDFLAGS_HASH_STYLE="-Wl,--hash-style=both"
 794       LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_HASH_STYLE"
 795     fi
 796     if test "x$OPENJDK_TARGET_OS" = xlinux; then
 797       # And since we now know that the linker is gnu, then add -z defs, to forbid
 798       # undefined symbols in object files.
 799       LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs"
 800       LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM"
 801       case $DEBUG_LEVEL in
 802         release )
 803           # tell linker to optimize libraries.
 804           # Should this be supplied to the OSS linker as well?
 805           LDFLAGS_DEBUGLEVEL_release="-Wl,-O1"
 806           LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release"
 807           ;;
 808         slowdebug )
 809           if test "x$HAS_LINKER_NOW" = "xtrue"; then
 810             # do relocations at load
 811             LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_NOW_FLAG"
 812             LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_NOW_FLAG"
 813           fi
 814           if test "x$HAS_LINKER_RELRO" = "xtrue"; then
 815             # mark relocations read only
 816             LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
 817             LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
 818           fi
 819           ;;
 820         fastdebug )
 821           if test "x$HAS_LINKER_RELRO" = "xtrue"; then
 822             # mark relocations read only
 823             LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
 824             LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
 825           fi
 826           ;;
 827         * )
 828           AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL])
 829           ;;
 830         esac
 831     fi
 832   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
 833     LDFLAGS_SOLSTUDIO="-Wl,-z,defs"
 834     LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -xildoff -ztext"
 835     LDFLAGS_CXX_SOLSTUDIO="-norunpath"
 836     LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib"
 837   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 838     LDFLAGS_XLC="-brtl -bnolibpath -bexpall -bernotok"
 839     LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_XLC"
 840   fi
 841 
 842   # Customize LDFLAGS for executables
 843 
 844   LDFLAGS_JDKEXE="${LDFLAGS_JDK}"
 845 
 846   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 847     if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then
 848       LDFLAGS_STACK_SIZE=1048576
 849     else
 850       LDFLAGS_STACK_SIZE=327680
 851     fi
 852     LDFLAGS_JDKEXE="${LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE"
 853   elif test "x$OPENJDK_TARGET_OS" = xlinux; then
 854     LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
 855   fi
 856 
 857   # Customize LDFLAGS for libs
 858   LDFLAGS_JDKLIB="${LDFLAGS_JDK}"
 859 


1032         DISABLE_WARNING_PREFIX=
1033       fi
1034       CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
1035       # Repeate the check for the BUILD_CC
1036       CC_OLD="$CC"
1037       CC="$BUILD_CC"
1038       FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [-Wno-this-is-a-warning-that-do-not-exist],
1039           IF_TRUE: [BUILD_CC_CAN_DISABLE_WARNINGS=true],
1040           IF_FALSE: [BUILD_CC_CAN_DISABLE_WARNINGS=false]
1041       )
1042       if test "x$BUILD_CC_CAN_DISABLE_WARNINGS" = "xtrue"; then
1043         BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
1044       else
1045         BUILD_CC_DISABLE_WARNING_PREFIX=
1046       fi
1047       CC="$CC_OLD"
1048       ;;
1049     clang)
1050       DISABLE_WARNING_PREFIX="-Wno-"
1051       CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
1052       ;;
1053     xlc)
1054       DISABLE_WARNING_PREFIX="-qsuppress="
1055       CFLAGS_WARNINGS_ARE_ERRORS="-qhalt=w"
1056       ;;
1057   esac
1058   AC_SUBST(DISABLE_WARNING_PREFIX)
1059   AC_SUBST(CFLAGS_WARNINGS_ARE_ERRORS)
1060 ])
< prev index next >