make/autoconf/flags.m4
branchihse-cflags-rewrite-branch
changeset 56144 c9a52985c325
parent 56125 4e2422994c9e
child 56145 718aa4c360c4
equal deleted inserted replaced
56125:4e2422994c9e 56144:c9a52985c325
   315 ])
   315 ])
   316 
   316 
   317 
   317 
   318 AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK],
   318 AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK],
   319 [
   319 [
       
   320   # Additional macosx handling
       
   321   if test "x$FLAGS_OS" = xmacosx; then
       
   322     # MACOSX_VERSION_MIN specifies the lowest version of Macosx that the built
       
   323     # binaries should be compatible with, even if compiled on a newer version
       
   324     # of the OS. It currently has a hard coded value. Setting this also limits
       
   325     # exposure to API changes in header files. Bumping this is likely to
       
   326     # require code changes to build.
       
   327     MACOSX_VERSION_MIN=10.7.0
       
   328     AC_SUBST(MACOSX_VERSION_MIN)
       
   329 
       
   330     # Setting --with-macosx-version-max=<version> makes it an error to build or
       
   331     # link to macosx APIs that are newer than the given OS version. The expected
       
   332     # format for <version> is either nn.n.n or nn.nn.nn. See /usr/include/AvailabilityMacros.h.
       
   333     AC_ARG_WITH([macosx-version-max], [AS_HELP_STRING([--with-macosx-version-max],
       
   334         [error on use of newer functionality. @<:@macosx@:>@])],
       
   335         [
       
   336           if echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]]\.[[0-9]]\$"; then
       
   337               MACOSX_VERSION_MAX=$with_macosx_version_max
       
   338           elif echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]][[0-9]]\.[[0-9]][[0-9]]\$"; then
       
   339               MACOSX_VERSION_MAX=$with_macosx_version_max
       
   340           elif test "x$with_macosx_version_max" = "xno"; then
       
   341               # Use build system default
       
   342               MACOSX_VERSION_MAX=
       
   343           else
       
   344               AC_MSG_ERROR([osx version format must be nn.n.n or nn.nn.nn])
       
   345           fi
       
   346         ],
       
   347         [MACOSX_VERSION_MAX=]
       
   348     )
       
   349     AC_SUBST(MACOSX_VERSION_MAX)
       
   350   fi
   320 
   351 
   321   FLAGS_SETUP_ABI_PROFILE
   352   FLAGS_SETUP_ABI_PROFILE
   322 
   353 
   323   # Optional POSIX functionality needed by the JVM
   354   # Optional POSIX functionality needed by the JVM
   324   #
   355   #
   339   FLAGS_CPU_BITS=OPENJDK_TARGET_CPU_BITS
   370   FLAGS_CPU_BITS=OPENJDK_TARGET_CPU_BITS
   340   FLAGS_CPU_ENDIAN=OPENJDK_TARGET_CPU_ENDIAN
   371   FLAGS_CPU_ENDIAN=OPENJDK_TARGET_CPU_ENDIAN
   341   FLAGS_CPU_LEGACY=OPENJDK_TARGET_CPU_LEGACY
   372   FLAGS_CPU_LEGACY=OPENJDK_TARGET_CPU_LEGACY
   342   FLAGS_ADD_LP64=OPENJDK_TARGET_ADD_LP64
   373   FLAGS_ADD_LP64=OPENJDK_TARGET_ADD_LP64
   343 
   374 
       
   375   # On some platforms (mac) the linker warns about non existing -L dirs.
       
   376   # For any of the variants server, client or minimal, the dir matches the
       
   377   # variant name. The "main" variant should be used for linking. For the
       
   378   # rest, the dir is just server.
       
   379   if HOTSPOT_CHECK_JVM_VARIANT(server) || HOTSPOT_CHECK_JVM_VARIANT(client) \
       
   380       || HOTSPOT_CHECK_JVM_VARIANT(minimal); then
       
   381     JVM_VARIANT_PATH=$JVM_VARIANT_MAIN
       
   382   else
       
   383     JVM_VARIANT_PATH=server
       
   384   fi
       
   385 
   344   FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([TARGET])
   386   FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([TARGET])
   345 
   387 
   346   FLAGS_OS=OPENJDK_BUILD_OS
   388   FLAGS_OS=OPENJDK_BUILD_OS
   347   FLAGS_OS_TYPE=OPENJDK_BUILD_OS_TYPE
   389   FLAGS_OS_TYPE=OPENJDK_BUILD_OS_TYPE
   348   FLAGS_CPU=OPENJDK_BUILD_CPU
   390   FLAGS_CPU=OPENJDK_BUILD_CPU
   349   FLAGS_CPU_ARCH=OPENJDK_BUILD_CPU_ARCH
   391   FLAGS_CPU_ARCH=OPENJDK_BUILD_CPU_ARCH
   350   FLAGS_CPU_BITS=OPENJDK_BUILD_CPU_BITS
   392   FLAGS_CPU_BITS=OPENJDK_BUILD_CPU_BITS
   351   FLAGS_CPU_ENDIAN=OPENJDK_BUILD_CPU_ENDIAN
   393   FLAGS_CPU_ENDIAN=OPENJDK_BUILD_CPU_ENDIAN
   352   FLAGS_CPU_LEGACY=OPENJDK_BUILD_CPU_LEGACY
   394   FLAGS_CPU_LEGACY=OPENJDK_BUILD_CPU_LEGACY
   353   FLAGS_ADD_LP64=OPENJDK_BUILD_ADD_LP64=
   395   FLAGS_ADD_LP64=OPENJDK_BUILD_ADD_LP64=
       
   396 
       
   397   # When building a buildjdk, it's always only the server variant
       
   398   OPENJDK_BUILD_JVM_VARIANT_PATH=server
   354 
   399 
   355   FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([BUILD], [OPENJDK_BUILD_])
   400   FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([BUILD], [OPENJDK_BUILD_])
   356 
   401 
   357   # Tests are only ever compiled for TARGET
   402   # Tests are only ever compiled for TARGET
   358   # Flags for compiling test libraries
   403   # Flags for compiling test libraries
   407   fi
   452   fi
   408 
   453 
   409   $2CFLAGS_JDK="${$2CFLAGS_JDK} ${$2EXTRA_CFLAGS}"
   454   $2CFLAGS_JDK="${$2CFLAGS_JDK} ${$2EXTRA_CFLAGS}"
   410   $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2EXTRA_CXXFLAGS}"
   455   $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2EXTRA_CXXFLAGS}"
   411   $2LDFLAGS_JDK="${$2LDFLAGS_JDK} ${$2EXTRA_LDFLAGS}"
   456   $2LDFLAGS_JDK="${$2LDFLAGS_JDK} ${$2EXTRA_LDFLAGS}"
       
   457 
       
   458 
       
   459   # PER TOOLCHAIN:
       
   460     # LINKER_BASIC
       
   461     # LINKER: shared-lib-special, exe-special
       
   462     # LINKER: arch/cpu-special
       
   463   # COMPILER-ARCH/CPU-special (-m, -f...)
       
   464   # COMPILER-warnings
       
   465   # COMPILER: shared-lib-special, exe-special
       
   466 
       
   467   # LINKER LDFLAGS
       
   468 
       
   469   # BASIC_LDFLAGS (per toolchain)
       
   470   if test "x$TOOLCHAIN_TYPE" = xgcc; then
       
   471     # If this is a --hash-style=gnu system, use --hash-style=both, why?
       
   472     # We have previously set HAS_GNU_HASH if this is the case
       
   473     if test -n "$HAS_GNU_HASH"; then
       
   474       BASIC_LDFLAGS="-Wl,--hash-style=both"
       
   475       LIBJSIG_HASHSTYLE_LDFLAGS="-Wl,--hash-style=both"
       
   476       AC_SUBST(LIBJSIG_HASHSTYLE_LDFLAGS)
       
   477     fi
       
   478 
       
   479     # And since we now know that the linker is gnu, then add -z defs, to forbid
       
   480     # undefined symbols in object files.
       
   481     BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,defs"
       
   482 
       
   483     BASIC_LDFLAGS_JDK_ONLY=
       
   484     BASIC_LDFLAGS_JVM_ONLY="-Wl,-z,noexecstack -Wl,-O1"
       
   485 
       
   486     BASIC_LDFLAGS_JDK_LIB_ONLY="-Wl,-z,noexecstack"
       
   487     LIBJSIG_NOEXECSTACK_LDFLAGS="-Wl,-z,noexecstack"
       
   488 
       
   489 
       
   490     if test "x$HAS_LINKER_RELRO" = "xtrue"; then
       
   491       BASIC_LDFLAGS_JVM_ONLY="$BASIC_LDFLAGS_JVM_ONLY $LINKER_RELRO_FLAG"
       
   492     fi
       
   493 
       
   494   elif test "x$TOOLCHAIN_TYPE" = xclang; then
       
   495     BASIC_LDFLAGS_JVM_ONLY="-mno-omit-leaf-frame-pointer -mstack-alignment=16 -stdlib=libstdc++ -fPIC"
       
   496   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
       
   497     BASIC_LDFLAGS="-Wl,-z,defs"
       
   498     BASIC_LDFLAGS_ONLYCXX="-norunpath"
       
   499     BASIC_LDFLAGS_ONLYCXX_JDK_ONLY="-xnolib"
       
   500 
       
   501     BASIC_LDFLAGS_JDK_ONLY="-ztext"
       
   502     BASIC_LDFLAGS_JVM_ONLY="-library=%none -mt -z noversion"
       
   503   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
       
   504     BASIC_LDFLAGS="-b64 -brtl -bnolibpath -bexpall -bernotok -btextpsize:64K -bdatapsize:64K -bstackpsize:64K"
       
   505   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
       
   506     BASIC_LDFLAGS="-nologo -opt:ref"
       
   507     BASIC_LDFLAGS_JDK_ONLY="-incremental:no"
       
   508     BASIC_LDFLAGS_JVM_ONLY="-opt:icf,8 -subsystem:windows -base:0x8000000"
       
   509   fi
       
   510   $2LDFLAGS_JDK="${$2LDFLAGS_JDK} ${BASIC_LDFLAGS}"
       
   511   $2JVM_LDFLAGS="${$2JVM_LDFLAGS} ${BASIC_LDFLAGS} $BASIC_LDFLAGS_ONLYCXX"
       
   512   $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $BASIC_LDFLAGS_ONLYCXX"
       
   513 
       
   514   # CPU_LDFLAGS (per toolchain)
       
   515   # This can differ between TARGET and BUILD.
       
   516   if test "x$TOOLCHAIN_TYPE" = xgcc; then
       
   517       if test "x$FLAGS_CPU" = xx86; then
       
   518         $2_CPU_LDFLAGS_JVM_ONLY="-march=i586"
       
   519       fi
       
   520   elif test "x$TOOLCHAIN_TYPE" = xclang; then
       
   521   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
       
   522     if test "x$FLAGS_CPU_ARCH" = "xsparc"; then
       
   523       $2_CPU_LDFLAGS_JVM_ONLY="-xarch=sparc"
       
   524     fi
       
   525   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
       
   526   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
       
   527     if test "x$FLAGS_CPU" = "xx86"; then
       
   528       $2_CPU_LDFLAGS="-safeseh"
       
   529       # NOTE: Old build added -machine. Probably not needed.
       
   530       $2_CPU_LDFLAGS_JVM_ONLY="-machine:I386"
       
   531     else
       
   532       $2_CPU_LDFLAGS_JVM_ONLY="-machine:AMD64"
       
   533     fi
       
   534     fi
       
   535   fi
       
   536   $2LDFLAGS_JDK="${$2LDFLAGS_JDK} ${$2_CPU_LDFLAGS}"
       
   537   $2JVM_LDFLAGS="${$2JVM_LDFLAGS} ${$2_CPU_LDFLAGS} ${$2_CPU_LDFLAGS_JVM_ONLY}"
       
   538 
       
   539   # OS_LDFLAGS (per toolchain)
       
   540   if test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xgcc; then
       
   541     if test "x$FLAGS_OS" = xmacosx; then
       
   542       # Assume clang or gcc.
       
   543       # FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
       
   544       OS_LDFLAGS_JVM_ONLY="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
       
   545 
       
   546       OS_LDFLAGS_JDK_ONLY="[$]$2LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
       
   547     fi
       
   548   fi
       
   549   $2LDFLAGS_JDK="${$2LDFLAGS_JDK} ${$OS_LDFLAGS_JDK_ONLY}"
       
   550   $2JVM_LDFLAGS="${$2JVM_LDFLAGS} ${$OS_LDFLAGS_JVM_ONLY}"
       
   551 
       
   552   # DEBUGLEVEL_LDFLAGS (per toolchain)
       
   553   if test "x$TOOLCHAIN_TYPE" = xgcc; then
       
   554     if test "x$FLAGS_OS" = xlinux; then
       
   555        if test x$DEBUG_LEVEL = xrelease; then
       
   556           DEBUGLEVEL_LDFLAGS_JDK_ONLY="${$2LDFLAGS_JDK} -Wl,-O1"
       
   557        else
       
   558           # mark relocations read only on (fast/slow) debug builds
       
   559           if test "x$HAS_LINKER_RELRO" = "xtrue"; then
       
   560             DEBUGLEVEL_LDFLAGS_JDK_ONLY="$LINKER_RELRO_FLAG"
       
   561           fi
       
   562        fi
       
   563        if test x$DEBUG_LEVEL = xslowdebug; then
       
   564           if test "x$HAS_LINKER_NOW" = "xtrue"; then
       
   565             # do relocations at load
       
   566             DEBUGLEVEL_LDFLAGS="$LINKER_NOW_FLAG"
       
   567           fi
       
   568        fi
       
   569     fi
       
   570   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
       
   571     # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
       
   572     # Hotspot now overflows its 64K TOC (currently only for debug),
       
   573     # so we build with '-qpic=large -bbigtoc'.
       
   574     if test "x$DEBUG_LEVEL" != xrelease; then
       
   575       DEBUGLEVEL_LDFLAGS_JVM_ONLY="[$]$2JVM_LDFLAGS -bbigtoc"
       
   576     fi
       
   577   fi
       
   578 
       
   579   # EXECUTABLE_LDFLAGS (per toolchain)
       
   580   if test "x$TOOLCHAIN_TYPE" = xgcc; then
       
   581     EXECUTABLE_LDFLAGS="[$]$2LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
       
   582   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
       
   583     if test "x$FLAGS_CPU" = "x86_64"; then
       
   584       LDFLAGS_STACK_SIZE=1048576
       
   585     else
       
   586       LDFLAGS_STACK_SIZE=327680
       
   587     fi
       
   588     $2_CPU_EXECUTABLE_LDFLAGS="${$2LDFLAGS_JDKEXE} -stack:$LDFLAGS_STACK_SIZE"
       
   589   fi
       
   590   $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDK}"
       
   591   $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDKEXE} ${$2EXTRA_LDFLAGS_JDK}"
       
   592 
       
   593   # LIBRARY_LDFLAGS (per toolchain)
       
   594   # Customize LDFLAGS for libs
       
   595   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
       
   596     LDFLAGS_JDK_LIBPATH="-libpath:${OUTPUTDIR}/support/modules_libs/java.base"
       
   597   else
       
   598     LDFLAGS_JDK_LIBPATH="-L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base \
       
   599         -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/${$2JVM_VARIANT_PATH}"
       
   600   fi
       
   601 
       
   602   LIBRARY_LDFLAGS_JDK_ONLY="${SHARED_LIBRARY_FLAGS} ${LDFLAGS_NO_EXEC_STACK} $LDFLAGS_JDK_LIBPATH ${$2EXTRA_LDFLAGS_JDK} $BASIC_LDFLAGS_JDK_LIB_ONLY"
       
   603   $2LDFLAGS_JDKLIB="${LIBRARY_LDFLAGS_JDK_ONLY} "
       
   604 
       
   605   # PER OS?
       
   606     # LIBS: default libs
   412 
   607 
   413   ###############################################################################
   608   ###############################################################################
   414   #
   609   #
   415   # Now setup the CFLAGS and LDFLAGS for the JDK build.
   610   # Now setup the CFLAGS and LDFLAGS for the JDK build.
   416   # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build.
   611   # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build.
   688         -Wsign-compare -Wundef -Wunused-function -Wformat=2"
   883         -Wsign-compare -Wundef -Wunused-function -Wformat=2"
   689   fi
   884   fi
   690 
   885 
   691   # Additional macosx handling
   886   # Additional macosx handling
   692   if test "x$FLAGS_OS" = xmacosx; then
   887   if test "x$FLAGS_OS" = xmacosx; then
   693     # MACOSX_VERSION_MIN specifies the lowest version of Macosx that the built
       
   694     # binaries should be compatible with, even if compiled on a newer version
       
   695     # of the OS. It currently has a hard coded value. Setting this also limits
       
   696     # exposure to API changes in header files. Bumping this is likely to
       
   697     # require code changes to build.
       
   698     MACOSX_VERSION_MIN=10.7.0
       
   699     AC_SUBST(MACOSX_VERSION_MIN)
       
   700 
       
   701     # Setting --with-macosx-version-max=<version> makes it an error to build or
       
   702     # link to macosx APIs that are newer than the given OS version. The expected
       
   703     # format for <version> is either nn.n.n or nn.nn.nn. See /usr/include/AvailabilityMacros.h.
       
   704     AC_ARG_WITH([macosx-version-max], [AS_HELP_STRING([--with-macosx-version-max],
       
   705         [error on use of newer functionality. @<:@macosx@:>@])],
       
   706         [
       
   707           if echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]]\.[[0-9]]\$"; then
       
   708               MACOSX_VERSION_MAX=$with_macosx_version_max
       
   709           elif echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]][[0-9]]\.[[0-9]][[0-9]]\$"; then
       
   710               MACOSX_VERSION_MAX=$with_macosx_version_max
       
   711           elif test "x$with_macosx_version_max" = "xno"; then
       
   712               # Use build system default
       
   713               MACOSX_VERSION_MAX=
       
   714           else
       
   715               AC_MSG_ERROR([osx version format must be nn.n.n or nn.nn.nn])
       
   716           fi
       
   717         ],
       
   718         [MACOSX_VERSION_MAX=]
       
   719     )
       
   720     AC_SUBST(MACOSX_VERSION_MAX)
       
   721 
       
   722     # Let the flags variables get resolved in make for easier override on make
   888     # Let the flags variables get resolved in make for easier override on make
   723     # command line. AvailabilityMacros.h versions have no dots, ex: 1070.
   889     # command line. AvailabilityMacros.h versions have no dots, ex: 1070.
   724     $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
   890     $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
   725         -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
   891         -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
   726         -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
   892         -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
   727     $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
       
   728     $2JVM_CFLAGS="[$]$2JVM_CFLAGS \
   893     $2JVM_CFLAGS="[$]$2JVM_CFLAGS \
   729         -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
   894         -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
   730         -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
   895         -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
   731     $2ARFLAGS="$2$ARFLAGS -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
   896     $2ARFLAGS="$2$ARFLAGS -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
   732 
   897 
   761   AC_SUBST($2CFLAGS_JDKLIB)
   926   AC_SUBST($2CFLAGS_JDKLIB)
   762   AC_SUBST($2CFLAGS_JDKEXE)
   927   AC_SUBST($2CFLAGS_JDKEXE)
   763   AC_SUBST($2CXXFLAGS_JDKLIB)
   928   AC_SUBST($2CXXFLAGS_JDKLIB)
   764   AC_SUBST($2CXXFLAGS_JDKEXE)
   929   AC_SUBST($2CXXFLAGS_JDKEXE)
   765 
   930 
   766   # Setup LDFLAGS et al.
       
   767   #
       
   768 
   931 
   769   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
   932   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
   770     LDFLAGS_MICROSOFT="-nologo -opt:ref"
       
   771     $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no"
       
   772     $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_MICROSOFT -opt:icf,8 -subsystem:windows -base:0x8000000"
       
   773     if test "x$FLAGS_CPU_BITS" = "x32"; then
       
   774       LDFLAGS_SAFESH="-safeseh"
       
   775       $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_SAFESH"
       
   776       $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_SAFESH"
       
   777       # NOTE: Old build added -machine. Probably not needed.
       
   778       $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -machine:I386"
       
   779     else
       
   780       $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -machine:AMD64"
       
   781     fi
       
   782   elif test "x$TOOLCHAIN_TYPE" = xclang; then
       
   783       $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -mno-omit-leaf-frame-pointer -mstack-alignment=16 -stdlib=libstdc++ -fPIC"
       
   784       if test "x$FLAGS_OS" = xmacosx; then
       
   785         # FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
       
   786         $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
       
   787     fi
       
   788   elif test "x$TOOLCHAIN_TYPE" = xgcc; then
       
   789     # If this is a --hash-style=gnu system, use --hash-style=both, why?
       
   790     # We have previously set HAS_GNU_HASH if this is the case
       
   791     if test -n "$HAS_GNU_HASH"; then
       
   792       $2LDFLAGS_HASH_STYLE="-Wl,--hash-style=both"
       
   793       $2LDFLAGS_JDK="${$2LDFLAGS_JDK} [$]$2LDFLAGS_HASH_STYLE"
       
   794       $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS [$]$2LDFLAGS_HASH_STYLE"
       
   795     fi
       
   796       if test "x$FLAGS_OS" = xmacosx; then
       
   797         $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
       
   798     fi
       
   799     if test "x$FLAGS_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_NO_UNDEF_SYM="-Wl,-z,defs"
       
   803       $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM"
       
   804       $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS  $LDFLAGS_NO_UNDEF_SYM"
       
   805       LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack"
       
   806       $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_NO_EXEC_STACK"
       
   807       if test "x$FLAGS_CPU" = xx86; then
       
   808         $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -march=i586"
       
   809       fi
       
   810       case $DEBUG_LEVEL in
       
   811         release )
       
   812           # tell linker to optimize libraries.
       
   813           # Should this be supplied to the OSS linker as well?
       
   814           LDFLAGS_DEBUGLEVEL_release="-Wl,-O1"
       
   815           $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release"
       
   816           $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_DEBUGLEVEL_release"
       
   817           if test "x$HAS_LINKER_RELRO" = "xtrue"; then
       
   818             $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_RELRO_FLAG"
       
   819           fi
       
   820           ;;
       
   821         slowdebug )
       
   822           # Hotspot always let the linker optimize
       
   823           $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-O1"
       
   824           if test "x$HAS_LINKER_NOW" = "xtrue"; then
       
   825             # do relocations at load
       
   826             $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LINKER_NOW_FLAG"
       
   827             $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LINKER_NOW_FLAG"
       
   828             $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_NOW_FLAG"
       
   829           fi
       
   830           if test "x$HAS_LINKER_RELRO" = "xtrue"; then
       
   831             # mark relocations read only
       
   832             $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LINKER_RELRO_FLAG"
       
   833             $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
       
   834             $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_RELRO_FLAG"
       
   835           fi
       
   836           ;;
       
   837         fastdebug )
       
   838           # Hotspot always let the linker optimize
       
   839           $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-O1"
       
   840           if test "x$HAS_LINKER_RELRO" = "xtrue"; then
       
   841             # mark relocations read only
       
   842             $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LINKER_RELRO_FLAG"
       
   843             $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
       
   844             $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_RELRO_FLAG"
       
   845           fi
       
   846           ;;
       
   847         * )
       
   848           AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL])
       
   849           ;;
       
   850         esac
       
   851     fi
       
   852   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
       
   853     LDFLAGS_SOLSTUDIO="-Wl,-z,defs"
       
   854     $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -ztext"
       
   855     LDFLAGS_CXX_SOLSTUDIO="-norunpath"
       
   856     $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib"
       
   857     $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_SOLSTUDIO -library=%none -mt $LDFLAGS_CXX_SOLSTUDIO -z noversion"
       
   858     if test "x$FLAGS_CPU_ARCH" = "xsparc"; then
       
   859       $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -xarch=sparc"
       
   860     fi
       
   861   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
       
   862     LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok -btextpsize:64K -bdatapsize:64K -bstackpsize:64K"
       
   863     $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_XLC"
       
   864     $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_XLC"
       
   865     # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
       
   866     # Hotspot now overflows its 64K TOC (currently only for debug),
       
   867     # so we build with '-qpic=large -bbigtoc'.
       
   868     if test "x$DEBUG_LEVEL" = xslowdebug || test "x$DEBUG_LEVEL" = xfastdebug; then
       
   869       $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -bbigtoc"
       
   870     fi
       
   871   fi
       
   872 
       
   873   # Customize LDFLAGS for executables
       
   874 
       
   875   $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDK}"
       
   876 
       
   877   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
       
   878     if test "x$FLAGS_CPU_BITS" = "x64"; then
       
   879       LDFLAGS_STACK_SIZE=1048576
       
   880     else
       
   881       LDFLAGS_STACK_SIZE=327680
       
   882     fi
       
   883     $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE"
       
   884   elif test "x$FLAGS_OS" = xlinux; then
       
   885     $2LDFLAGS_JDKEXE="[$]$2LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
       
   886   fi
       
   887 
       
   888   $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDKEXE} ${$2EXTRA_LDFLAGS_JDK}"
       
   889 
       
   890   # Customize LDFLAGS for libs
       
   891   $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDK}"
       
   892 
       
   893   $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${SHARED_LIBRARY_FLAGS}"
       
   894   $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${LDFLAGS_NO_EXEC_STACK}"
       
   895   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
       
   896     $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \
       
   897         -libpath:${OUTPUTDIR}/support/modules_libs/java.base"
       
   898     $2JDKLIB_LIBS=""
   933     $2JDKLIB_LIBS=""
   899   else
   934   else
   900     $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \
       
   901         -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base"
       
   902 
       
   903     if test "x$1" = "xTARGET"; then
       
   904       # On some platforms (mac) the linker warns about non existing -L dirs.
       
   905       # For any of the variants server, client or minimal, the dir matches the
       
   906       # variant name. The "main" variant should be used for linking. For the
       
   907       # rest, the dir is just server.
       
   908       if HOTSPOT_CHECK_JVM_VARIANT(server) || HOTSPOT_CHECK_JVM_VARIANT(client) \
       
   909           || HOTSPOT_CHECK_JVM_VARIANT(minimal); then
       
   910         $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \
       
   911             -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/$JVM_VARIANT_MAIN"
       
   912       else
       
   913         $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \
       
   914             -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/server"
       
   915       fi
       
   916     elif test "x$1" = "xBUILD"; then
       
   917       # When building a buildjdk, it's always only the server variant
       
   918       $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \
       
   919           -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/server"
       
   920     fi
       
   921 
       
   922     $2JDKLIB_LIBS="-ljava -ljvm"
   935     $2JDKLIB_LIBS="-ljava -ljvm"
   923     if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
   936     if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
   924       $2JDKLIB_LIBS="[$]$2JDKLIB_LIBS -lc"
   937       $2JDKLIB_LIBS="[$]$2JDKLIB_LIBS -lc"
   925     fi
   938     fi
   926 
   939   fi
   927   fi
       
   928 
       
   929   $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${$2JAVA_BASE_LDFLAGS}"
       
   930 
   940 
   931   # Set $2JVM_LIBS (per os)
   941   # Set $2JVM_LIBS (per os)
   932   if test "x$FLAGS_OS" = xlinux; then
   942   if test "x$FLAGS_OS" = xlinux; then
   933     $2JVM_LIBS="[$]$2JVM_LIBS -lm -ldl -lpthread"
   943     $2JVM_LIBS="[$]$2JVM_LIBS -lm -ldl -lpthread"
   934   elif test "x$FLAGS_OS" = xsolaris; then
   944   elif test "x$FLAGS_OS" = xsolaris; then
   958       $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -march=i586"
   968       $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -march=i586"
   959     fi
   969     fi
   960   elif test "x$FLAGS_OS" = xmacosx; then
   970   elif test "x$FLAGS_OS" = xmacosx; then
   961     $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16"
   971     $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16"
   962   fi
   972   fi
   963 
       
   964   $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${$2EXTRA_LDFLAGS_JDK}"
       
   965 
   973 
   966   AC_SUBST($2LDFLAGS_JDKLIB)
   974   AC_SUBST($2LDFLAGS_JDKLIB)
   967   AC_SUBST($2LDFLAGS_JDKEXE)
   975   AC_SUBST($2LDFLAGS_JDKEXE)
   968   AC_SUBST($2JDKLIB_LIBS)
   976   AC_SUBST($2JDKLIB_LIBS)
   969   AC_SUBST($2JDKEXE_LIBS)
   977   AC_SUBST($2JDKEXE_LIBS)