common/autoconf/toolchain.m4

changeset 478
2ba6f4da4bf3
parent 459
3156dff953b1
child 494
e64f2cb57d05
     1.1 --- a/common/autoconf/toolchain.m4	Thu Sep 06 17:27:20 2012 -0700
     1.2 +++ b/common/autoconf/toolchain.m4	Tue Sep 18 11:29:16 2012 -0700
     1.3 @@ -31,6 +31,19 @@
     1.4  # the set env variables into the spec file.
     1.5  SETUPDEVENV="# No special vars"
     1.6  if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
     1.7 +    # Store path to cygwin link.exe to help excluding it when searching for 
     1.8 +    # VS linker.
     1.9 +    AC_PATH_PROG(CYGWIN_LINK, link)
    1.10 +    AC_MSG_CHECKING([if the first found link.exe is actually the Cygwin link tool])
    1.11 +    "$CYGWIN_LINK" --version > /dev/null
    1.12 +    if test $? -eq 0 ; then
    1.13 +      AC_MSG_RESULT([yes])
    1.14 +    else
    1.15 +      AC_MSG_RESULT([no])
    1.16 +      # This might be the VS linker. Don't exclude it later on.
    1.17 +      CYGWIN_LINK=""
    1.18 +    fi
    1.19 +    
    1.20      # If vcvarsall.bat has been run, then VCINSTALLDIR is set.
    1.21      if test "x$VCINSTALLDIR" != x; then
    1.22          # No further setup is needed. The build will happen from this kind
    1.23 @@ -57,12 +70,12 @@
    1.24              AC_MSG_RESULT([no])
    1.25              AC_MSG_ERROR([Tried to find a VS installation using both $SEARCH_ROOT but failed. Please run "c:\\cygwin\\bin\\bash.exe -l" from a VS command prompt and then run configure/make from there.])
    1.26          fi
    1.27 -        case "$LEGACY_OPENJDK_TARGET_CPU1" in
    1.28 -          i?86)
    1.29 +        case "$OPENJDK_TARGET_CPU" in
    1.30 +          x86)
    1.31              VARSBAT_ARCH=x86
    1.32              ;;
    1.33 -          *)
    1.34 -            VARSBAT_ARCH=$LEGACY_OPENJDK_TARGET_CPU1
    1.35 +          x86_64)
    1.36 +            VARSBAT_ARCH=amd64
    1.37              ;;
    1.38          esac
    1.39          # Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
    1.40 @@ -122,9 +135,6 @@
    1.41  # Configure the development tool paths and potential sysroot.
    1.42  #
    1.43  AC_LANG(C++)
    1.44 -DEVKIT=
    1.45 -SYS_ROOT=/
    1.46 -AC_SUBST(SYS_ROOT)
    1.47  
    1.48  # The option used to specify the target .o,.a or .so file.
    1.49  # When compiling, how to specify the to be created object file.
    1.50 @@ -153,44 +163,28 @@
    1.51  # Setting only --host, does not seem to be really supported.
    1.52  # Please set both --build and --host if you want to cross compile.
    1.53  
    1.54 -DEFINE_CROSS_COMPILE_ARCH=""
    1.55 -HOSTCC=""
    1.56 -HOSTCXX=""
    1.57 -HOSTLD=""
    1.58 -AC_SUBST(DEFINE_CROSS_COMPILE_ARCH)
    1.59 -AC_MSG_CHECKING([if this is a cross compile])
    1.60 -if test "x$OPENJDK_BUILD_SYSTEM" != "x$OPENJDK_TARGET_SYSTEM"; then
    1.61 -    AC_MSG_RESULT([yes, from $OPENJDK_BUILD_SYSTEM to $OPENJDK_TARGET_SYSTEM])
    1.62 -    # We have detected a cross compile!
    1.63 -    DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$LEGACY_OPENJDK_TARGET_CPU1"
    1.64 +if test "x$COMPILE_TYPE" = "xcross"; then
    1.65      # Now we to find a C/C++ compiler that can build executables for the build
    1.66      # platform. We can't use the AC_PROG_CC macro, since it can only be used
    1.67 -    # once.
    1.68 -    AC_PATH_PROGS(HOSTCC, [cl cc gcc])
    1.69 -    WHICHCMD(HOSTCC)
    1.70 -    AC_PATH_PROGS(HOSTCXX, [cl CC g++])
    1.71 -    WHICHCMD(HOSTCXX)
    1.72 -    AC_PATH_PROG(HOSTLD, ld)
    1.73 -    WHICHCMD(HOSTLD)
    1.74 -    # Building for the build platform should be easy. Therefore
    1.75 -    # we do not need any linkers or assemblers etc.    
    1.76 -else
    1.77 -    AC_MSG_RESULT([no])
    1.78 +    # once. Also, we need to do this before adding a tools dir to the path,
    1.79 +    # otherwise we might pick up cross-compilers which don't use standard naming.
    1.80 +    # Otherwise, we'll set the BUILD_tools to the native tools, but that'll have
    1.81 +    # to wait until they are properly discovered.
    1.82 +    AC_PATH_PROGS(BUILD_CC, [cl cc gcc])
    1.83 +    SET_FULL_PATH(BUILD_CC)
    1.84 +    AC_PATH_PROGS(BUILD_CXX, [cl CC g++])
    1.85 +    SET_FULL_PATH(BUILD_CXX)
    1.86 +    AC_PATH_PROG(BUILD_LD, ld)
    1.87 +    SET_FULL_PATH(BUILD_LD)
    1.88  fi
    1.89 +AC_SUBST(BUILD_CC)
    1.90 +AC_SUBST(BUILD_CXX)
    1.91 +AC_SUBST(BUILD_LD)
    1.92  
    1.93 -# You can force the sys-root if the sys-root encoded into the cross compiler tools
    1.94 -# is not correct.
    1.95 -AC_ARG_WITH(sys-root, [AS_HELP_STRING([--with-sys-root],
    1.96 -    [pass this sys-root to the compilers and linker (useful if the sys-root encoded in
    1.97 -     the cross compiler tools is incorrect)])])
    1.98 -
    1.99 -if test "x$with_sys_root" != x; then
   1.100 -    SYS_ROOT=$with_sys_root
   1.101 -fi
   1.102 -                     
   1.103  # If a devkit is found on the builddeps server, then prepend its path to the
   1.104  # PATH variable. If there are cross compilers available in the devkit, these
   1.105  # will be found by AC_PROG_CC et al.
   1.106 +DEVKIT=
   1.107  BDEPS_CHECK_MODULE(DEVKIT, devkit, xxx,
   1.108                      [# Found devkit
   1.109                       PATH="$DEVKIT/bin:$PATH"
   1.110 @@ -218,21 +212,6 @@
   1.111  ORG_CXXFLAGS="$CXXFLAGS"
   1.112  ORG_OBJCFLAGS="$OBJCFLAGS"
   1.113  
   1.114 -AC_ARG_WITH([tools-dir], [AS_HELP_STRING([--with-tools-dir],
   1.115 -	[search this directory for compilers and tools])], [TOOLS_DIR=$with_tools_dir])
   1.116 -
   1.117 -AC_ARG_WITH([devkit], [AS_HELP_STRING([--with-devkit],
   1.118 -	[use this directory as base for tools-dir and sys-root])], [
   1.119 -    if test "x$with_sys_root" != x; then
   1.120 -      AC_MSG_ERROR([Cannot specify both --with-devkit and --with-sys-root at the same time])
   1.121 -    fi
   1.122 -    if test "x$with_tools_dir" != x; then
   1.123 -      AC_MSG_ERROR([Cannot specify both --with-devkit and --with-tools-dir at the same time])
   1.124 -    fi
   1.125 -    TOOLS_DIR=$with_devkit/bin
   1.126 -    SYS_ROOT=$with_devkit/$host_alias/libc
   1.127 -    ])
   1.128 -
   1.129  # autoconf magic only relies on PATH, so update it if tools dir is specified
   1.130  OLD_PATH="$PATH"
   1.131  if test "x$TOOLS_DIR" != x; then
   1.132 @@ -251,7 +230,7 @@
   1.133      # Do not use cc on MacOSX use gcc instead.
   1.134      CC="gcc"
   1.135  fi
   1.136 -WHICHCMD(CC)
   1.137 +SET_FULL_PATH(CC)
   1.138  
   1.139  AC_PROG_CXX([cl CC g++])
   1.140  if test "x$CXX" = xCC && test "x$OPENJDK_BUILD_OS" = xmacosx; then
   1.141 @@ -259,7 +238,7 @@
   1.142      # c++ code. Override.
   1.143      CXX="g++"
   1.144  fi
   1.145 -WHICHCMD(CXX)
   1.146 +SET_FULL_PATH(CXX)
   1.147  
   1.148  if test "x$CXX" = x || test "x$CC" = x; then
   1.149      HELP_MSG_MISSING_DEPENDENCY([devkit])
   1.150 @@ -268,7 +247,7 @@
   1.151  
   1.152  if test "x$OPENJDK_BUILD_OS" != xwindows; then
   1.153      AC_PROG_OBJC
   1.154 -    WHICHCMD(OBJC)
   1.155 +    SET_FULL_PATH(OBJC)
   1.156  else
   1.157      OBJC=
   1.158  fi
   1.159 @@ -279,19 +258,11 @@
   1.160  CXXFLAGS="$ORG_CXXFLAGS"
   1.161  OBJCFLAGS="$ORG_OBJCFLAGS"
   1.162  
   1.163 -# If we are not cross compiling, use the same compilers for
   1.164 -# building the build platform executables.
   1.165 -if test "x$DEFINE_CROSS_COMPILE_ARCH" = x; then
   1.166 -    HOSTCC="$CC"
   1.167 -    HOSTCXX="$CXX"
   1.168 -fi
   1.169 -
   1.170 -AC_CHECK_TOOL(LD, ld)
   1.171 -WHICHCMD(LD)
   1.172  LD="$CC"
   1.173  LDEXE="$CC"
   1.174  LDCXX="$CXX"
   1.175  LDEXECXX="$CXX"
   1.176 +AC_SUBST(LD)
   1.177  # LDEXE is the linker to use, when creating executables.
   1.178  AC_SUBST(LDEXE)
   1.179  # Linking C++ libraries.
   1.180 @@ -299,8 +270,10 @@
   1.181  # Linking C++ executables.
   1.182  AC_SUBST(LDEXECXX)
   1.183  
   1.184 -AC_CHECK_TOOL(AR, ar)
   1.185 -WHICHCMD(AR)
   1.186 +if test "x$OPENJDK_BUILD_OS" != xwindows; then
   1.187 +    AC_CHECK_TOOL(AR, ar)
   1.188 +    SET_FULL_PATH(AR)
   1.189 +fi
   1.190  if test "x$OPENJDK_BUILD_OS" = xmacosx; then
   1.191      ARFLAGS="-r"
   1.192  else
   1.193 @@ -316,25 +289,31 @@
   1.194      EXE_OUT_OPTION=-out:
   1.195      LD_OUT_OPTION=-out:
   1.196      AR_OUT_OPTION=-out:
   1.197 -    # On Windows, reject /usr/bin/link, which is a cygwin
   1.198 +    # On Windows, reject /usr/bin/link (as determined in CYGWIN_LINK), which is a cygwin
   1.199      # program for something completely different.
   1.200 -    AC_CHECK_PROG([WINLD], [link],[link],,, [/usr/bin/link])
   1.201 +    AC_CHECK_PROG([WINLD], [link],[link],,, [$CYGWIN_LINK])
   1.202      # Since we must ignore the first found link, WINLD will contain
   1.203      # the full path to the link.exe program.
   1.204 -    WHICHCMD_SPACESAFE([WINLD])
   1.205 +    SET_FULL_PATH_SPACESAFE([WINLD])
   1.206 +    printf "Windows linker was found at $WINLD\n"
   1.207 +    AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
   1.208 +    "$WINLD" --version > /dev/null
   1.209 +    if test $? -eq 0 ; then
   1.210 +      AC_MSG_RESULT([no])
   1.211 +      AC_MSG_ERROR([This is the Cygwin link tool. Please check your PATH and rerun configure.])
   1.212 +    else
   1.213 +      AC_MSG_RESULT([yes])
   1.214 +    fi
   1.215      LD="$WINLD"
   1.216      LDEXE="$WINLD"
   1.217      LDCXX="$WINLD"
   1.218      LDEXECXX="$WINLD"
   1.219 -    # Set HOSTLD to same as LD until we fully support cross compilation
   1.220 -    # on windows.
   1.221 -    HOSTLD="$WINLD"
   1.222  
   1.223      AC_CHECK_PROG([MT], [mt], [mt],,, [/usr/bin/mt])
   1.224 -    WHICHCMD_SPACESAFE([MT])
   1.225 +    SET_FULL_PATH_SPACESAFE([MT])
   1.226      # The resource compiler
   1.227      AC_CHECK_PROG([RC], [rc], [rc],,, [/usr/bin/rc])
   1.228 -    WHICHCMD_SPACESAFE([RC])
   1.229 +    SET_FULL_PATH_SPACESAFE([RC])
   1.230  
   1.231      RC_FLAGS="-nologo /l 0x409 /r"
   1.232      AS_IF([test "x$VARIANT" = xOPT], [
   1.233 @@ -354,12 +333,12 @@
   1.234  
   1.235      # lib.exe is used to create static libraries.
   1.236      AC_CHECK_PROG([WINAR], [lib],[lib],,,)
   1.237 -    WHICHCMD_SPACESAFE([WINAR])
   1.238 +    SET_FULL_PATH_SPACESAFE([WINAR])
   1.239      AR="$WINAR"
   1.240      ARFLAGS="-nologo -NODEFAULTLIB:MSVCRT"
   1.241  
   1.242      AC_CHECK_PROG([DUMPBIN], [dumpbin], [dumpbin],,,)
   1.243 -    WHICHCMD_SPACESAFE([DUMPBIN])
   1.244 +    SET_FULL_PATH_SPACESAFE([DUMPBIN])
   1.245  
   1.246      COMPILER_TYPE=CL
   1.247      CCXXFLAGS="$CCXXFLAGS -nologo"
   1.248 @@ -368,10 +347,20 @@
   1.249  AC_SUBST(COMPILER_TYPE)
   1.250  
   1.251  AC_PROG_CPP
   1.252 -WHICHCMD(CPP)
   1.253 +SET_FULL_PATH(CPP)
   1.254  
   1.255  AC_PROG_CXXCPP
   1.256 -WHICHCMD(CXXCPP)
   1.257 +SET_FULL_PATH(CXXCPP)
   1.258 +
   1.259 +if test "x$COMPILE_TYPE" != "xcross"; then
   1.260 +    # If we are not cross compiling, use the same compilers for
   1.261 +    # building the build platform executables. The cross-compilation
   1.262 +    # case needed to be done earlier, but this can only be done after
   1.263 +    # the native tools have been localized.
   1.264 +    BUILD_CC="$CC"
   1.265 +    BUILD_CXX="$CXX"
   1.266 +    BUILD_LD="$LD"
   1.267 +fi
   1.268  
   1.269  # for solaris we really need solaris tools, and not gnu equivalent
   1.270  #   these seems to normally reside in /usr/ccs/bin so add that to path before
   1.271 @@ -386,27 +375,24 @@
   1.272  # Find the right assembler.
   1.273  if test "x$OPENJDK_BUILD_OS" = xsolaris; then
   1.274      AC_PATH_PROG(AS, as)
   1.275 -    WHICHCMD(AS)
   1.276 -    ASFLAGS=" "
   1.277 +    SET_FULL_PATH(AS)
   1.278  else
   1.279      AS="$CC -c"
   1.280 -    ASFLAGS=" "
   1.281  fi
   1.282  AC_SUBST(AS)
   1.283 -AC_SUBST(ASFLAGS)
   1.284  
   1.285  if test "x$OPENJDK_BUILD_OS" = xsolaris; then
   1.286 -    AC_PATH_PROG(NM, nm)
   1.287 -    WHICHCMD(NM)
   1.288 +    AC_PATH_PROGS(NM, [gnm nm])
   1.289 +    SET_FULL_PATH(NM)
   1.290      AC_PATH_PROG(STRIP, strip)
   1.291 -    WHICHCMD(STRIP)
   1.292 +    SET_FULL_PATH(STRIP)
   1.293      AC_PATH_PROG(MCS, mcs)
   1.294 -    WHICHCMD(MCS)
   1.295 -else
   1.296 +    SET_FULL_PATH(MCS)
   1.297 +elif test "x$OPENJDK_BUILD_OS" != xwindows; then
   1.298      AC_CHECK_TOOL(NM, nm)
   1.299 -    WHICHCMD(NM)
   1.300 +    SET_FULL_PATH(NM)
   1.301      AC_CHECK_TOOL(STRIP, strip)
   1.302 -    WHICHCMD(STRIP)
   1.303 +    SET_FULL_PATH(STRIP)
   1.304  fi
   1.305  
   1.306  ###
   1.307 @@ -421,6 +407,11 @@
   1.308     AC_PATH_TOOL(OBJCOPY, objcopy)
   1.309  fi
   1.310  
   1.311 +if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
   1.312 +   AC_PATH_PROG(LIPO, lipo)
   1.313 +   SET_FULL_PATH(LIPO)
   1.314 +fi
   1.315 +
   1.316  # Restore old path without tools dir
   1.317  PATH="$OLD_PATH"
   1.318  ])
   1.319 @@ -449,15 +440,13 @@
   1.320      SET_SHARED_LIBRARY_MAPFILE='-Xlinker -version-script=[$]1'
   1.321      C_FLAG_REORDER=''
   1.322      CXX_FLAG_REORDER=''
   1.323 -    SET_SHARED_LIBRARY_ORIGIN='-Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$$$ORIGIN/[$]1'
   1.324 +    SET_SHARED_LIBRARY_ORIGIN='-Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$$$ORIGIN[$]1'
   1.325 +    SET_EXECUTABLE_ORIGIN='-Xlinker -rpath -Xlinker \$$$$ORIGIN[$]1'
   1.326      LD="$CC"
   1.327      LDEXE="$CC"
   1.328      LDCXX="$CXX"
   1.329      LDEXECXX="$CXX"
   1.330      POST_STRIP_CMD="$STRIP -g"
   1.331 -    if test "x$JDK_VARIANT" = xembedded; then
   1.332 -        POST_STRIP_CMD="$STRIP --strip-unneeded"
   1.333 -    fi
   1.334  
   1.335      # Linking is different on MacOSX
   1.336      if test "x$OPENJDK_BUILD_OS" = xmacosx; then
   1.337 @@ -470,6 +459,7 @@
   1.338          SET_SHARED_LIBRARY_NAME='-Xlinker -install_name -Xlinker @rpath/[$]1' 
   1.339          SET_SHARED_LIBRARY_MAPFILE=''
   1.340          SET_SHARED_LIBRARY_ORIGIN='-Xlinker -rpath -Xlinker @loader_path/.'
   1.341 +        SET_EXECUTABLE_ORIGIN="$SET_SHARED_LIBRARY_ORIGIN"
   1.342          POST_STRIP_CMD="$STRIP -S"
   1.343      fi
   1.344  else
   1.345 @@ -480,7 +470,7 @@
   1.346          LIBRARY_PREFIX=lib
   1.347          SHARED_LIBRARY='lib[$]1.so'
   1.348          STATIC_LIBRARY='lib[$]1.a'
   1.349 -        SHARED_LIBRARY_FLAGS="-z defs -xildoff -ztext -G"
   1.350 +        SHARED_LIBRARY_FLAGS="-G"
   1.351          SHARED_LIBRARY_SUFFIX='.so'
   1.352          STATIC_LIBRARY_SUFFIX='.a'
   1.353          OBJ_SUFFIX='.o'
   1.354 @@ -489,7 +479,8 @@
   1.355          SET_SHARED_LIBRARY_MAPFILE='-M[$]1'
   1.356  	C_FLAG_REORDER='-xF'
   1.357  	CXX_FLAG_REORDER='-xF'
   1.358 -        SET_SHARED_LIBRARY_ORIGIN='-R \$$$$ORIGIN/[$]1'
   1.359 +        SET_SHARED_LIBRARY_ORIGIN='-R\$$$$ORIGIN[$]1'
   1.360 +        SET_EXECUTABLE_ORIGIN="$SET_SHARED_LIBRARY_ORIGIN"
   1.361          CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
   1.362          CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
   1.363          CFLAGS_JDKLIB_EXTRA='-xstrconst'
   1.364 @@ -511,6 +502,7 @@
   1.365          SET_SHARED_LIBRARY_NAME=''
   1.366          SET_SHARED_LIBRARY_MAPFILE=''
   1.367          SET_SHARED_LIBRARY_ORIGIN=''
   1.368 +        SET_EXECUTABLE_ORIGIN=''
   1.369      fi
   1.370  fi
   1.371  
   1.372 @@ -527,6 +519,7 @@
   1.373  AC_SUBST(C_FLAG_REORDER)
   1.374  AC_SUBST(CXX_FLAG_REORDER)
   1.375  AC_SUBST(SET_SHARED_LIBRARY_ORIGIN)
   1.376 +AC_SUBST(SET_EXECUTABLE_ORIGIN)
   1.377  AC_SUBST(POST_STRIP_CMD)
   1.378  AC_SUBST(POST_MCS_CMD)
   1.379  
   1.380 @@ -542,6 +535,25 @@
   1.381  # Setup the opt flags for different compilers
   1.382  # and different operating systems.
   1.383  #
   1.384 +
   1.385 +#
   1.386 +# NOTE: check for -mstackrealign needs to be below potential addition of -m32
   1.387 +#
   1.388 +if test "x$OPENJDK_TARGET_CPU_BITS" = x32 && test "x$OPENJDK_TARGET_OS" = xmacosx; then
   1.389 +    # On 32-bit MacOSX the OS requires C-entry points to be 16 byte aligned.
   1.390 +    # While waiting for a better solution, the current workaround is to use -mstackrealign.
   1.391 +    CFLAGS="$CFLAGS -mstackrealign"
   1.392 +    AC_MSG_CHECKING([if 32-bit compiler supports -mstackrealign])
   1.393 +    AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
   1.394 +                   [
   1.395 +		        AC_MSG_RESULT([yes])
   1.396 +                   ],
   1.397 +	           [
   1.398 +		        AC_MSG_RESULT([no])
   1.399 +	                AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
   1.400 +	           ])
   1.401 +fi
   1.402 +
   1.403  C_FLAG_DEPS="-MMD -MF"
   1.404  CXX_FLAG_DEPS="-MMD -MF"
   1.405  
   1.406 @@ -566,7 +578,7 @@
   1.407  	    CXXFLAGS_DEBUG_SYMBOLS="-g"
   1.408  	    if test "x$OPENJDK_TARGET_CPU_BITS" = "x64" && test "x$DEBUG_LEVEL" = "xfastdebug"; then
   1.409  	       CFLAGS_DEBUG_SYMBOLS="-g1"
   1.410 -	       CXXFLAGS_DEBUG_SYMBOLSG="-g1"
   1.411 +	       CXXFLAGS_DEBUG_SYMBOLS="-g1"
   1.412  	    fi
   1.413  	    ;;
   1.414  	esac
   1.415 @@ -578,52 +590,56 @@
   1.416          #
   1.417          # Forte has different names for this with their C++ compiler...
   1.418          #
   1.419 -	C_FLAG_DEPS="-xMMD -xMF"
   1.420 -	CXX_FLAG_DEPS="-xMMD -xMF"
   1.421 +        C_FLAG_DEPS="-xMMD -xMF"
   1.422 +        CXX_FLAG_DEPS="-xMMD -xMF"
   1.423  
   1.424 -# Extra options used with HIGHEST
   1.425 -#
   1.426 -# WARNING: Use of OPTIMIZATION_LEVEL=HIGHEST in your Makefile needs to be
   1.427 -#          done with care, there are some assumptions below that need to
   1.428 -#          be understood about the use of pointers, and IEEE behavior.
   1.429 -#
   1.430 -# Use non-standard floating point mode (not IEEE 754)
   1.431 -CC_HIGHEST="$CC_HIGHEST -fns"
   1.432 -# Do some simplification of floating point arithmetic (not IEEE 754)
   1.433 -CC_HIGHEST="$CC_HIGHEST -fsimple"
   1.434 -# Use single precision floating point with 'float'
   1.435 -CC_HIGHEST="$CC_HIGHEST -fsingle"
   1.436 -# Assume memory references via basic pointer types do not alias
   1.437 -#   (Source with excessing pointer casting and data access with mixed 
   1.438 -#    pointer types are not recommended)
   1.439 -CC_HIGHEST="$CC_HIGHEST -xalias_level=basic"
   1.440 -# Use intrinsic or inline versions for math/std functions
   1.441 -#   (If you expect perfect errno behavior, do not use this)
   1.442 -CC_HIGHEST="$CC_HIGHEST -xbuiltin=%all"
   1.443 -# Loop data dependency optimizations (need -xO3 or higher)
   1.444 -CC_HIGHEST="$CC_HIGHEST -xdepend"
   1.445 -# Pointer parameters to functions do not overlap
   1.446 -#   (Similar to -xalias_level=basic usage, but less obvious sometimes.
   1.447 -#    If you pass in multiple pointers to the same data, do not use this)
   1.448 -CC_HIGHEST="$CC_HIGHEST -xrestrict"
   1.449 -# Inline some library routines
   1.450 -#   (If you expect perfect errno behavior, do not use this)
   1.451 -CC_HIGHEST="$CC_HIGHEST -xlibmil"
   1.452 -# Use optimized math routines
   1.453 -#   (If you expect perfect errno behavior, do not use this)
   1.454 -#  Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
   1.455 -#CC_HIGHEST="$CC_HIGHEST -xlibmopt"
   1.456 +        # Extra options used with HIGHEST
   1.457 +        #
   1.458 +        # WARNING: Use of OPTIMIZATION_LEVEL=HIGHEST in your Makefile needs to be
   1.459 +        #          done with care, there are some assumptions below that need to
   1.460 +        #          be understood about the use of pointers, and IEEE behavior.
   1.461 +        #
   1.462 +        # Use non-standard floating point mode (not IEEE 754)
   1.463 +        CC_HIGHEST="$CC_HIGHEST -fns"
   1.464 +        # Do some simplification of floating point arithmetic (not IEEE 754)
   1.465 +        CC_HIGHEST="$CC_HIGHEST -fsimple"
   1.466 +        # Use single precision floating point with 'float'
   1.467 +        CC_HIGHEST="$CC_HIGHEST -fsingle"
   1.468 +        # Assume memory references via basic pointer types do not alias
   1.469 +        #   (Source with excessing pointer casting and data access with mixed 
   1.470 +        #    pointer types are not recommended)
   1.471 +        CC_HIGHEST="$CC_HIGHEST -xalias_level=basic"
   1.472 +        # Use intrinsic or inline versions for math/std functions
   1.473 +        #   (If you expect perfect errno behavior, do not use this)
   1.474 +        CC_HIGHEST="$CC_HIGHEST -xbuiltin=%all"
   1.475 +        # Loop data dependency optimizations (need -xO3 or higher)
   1.476 +        CC_HIGHEST="$CC_HIGHEST -xdepend"
   1.477 +        # Pointer parameters to functions do not overlap
   1.478 +        #   (Similar to -xalias_level=basic usage, but less obvious sometimes.
   1.479 +        #    If you pass in multiple pointers to the same data, do not use this)
   1.480 +        CC_HIGHEST="$CC_HIGHEST -xrestrict"
   1.481 +        # Inline some library routines
   1.482 +        #   (If you expect perfect errno behavior, do not use this)
   1.483 +        CC_HIGHEST="$CC_HIGHEST -xlibmil"
   1.484 +        # Use optimized math routines
   1.485 +        #   (If you expect perfect errno behavior, do not use this)
   1.486 +        #  Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
   1.487 +        #CC_HIGHEST="$CC_HIGHEST -xlibmopt"
   1.488  
   1.489 -        case $LEGACY_OPENJDK_TARGET_CPU1 in
   1.490 -          i586)
   1.491 -            C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xchip=pentium"
   1.492 -            C_O_FLAG_HI="-xO4 -Wu,-O4~yz"
   1.493 -            C_O_FLAG_NORM="-xO2 -Wu,-O2~yz"
   1.494 -            C_O_FLAG_NONE=""
   1.495 -            CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xchip=pentium"
   1.496 -            CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz"
   1.497 -            CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz"
   1.498 -            CXX_O_FLAG_NONE=""
   1.499 +        case $OPENJDK_TARGET_CPU_ARCH in
   1.500 +          x86)
   1.501 +            C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xregs=no%frameptr"
   1.502 +            C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr"
   1.503 +            C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr"
   1.504 +            C_O_FLAG_NONE="-xregs=no%frameptr"
   1.505 +            CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr"
   1.506 +            CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr"
   1.507 +            CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz -xregs=no%frameptr"
   1.508 +            CXX_O_FLAG_NONE="-xregs=no%frameptr"
   1.509 +            if test "x$OPENJDK_TARGET_CPU" = xx86; then
   1.510 +               C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium"
   1.511 +               CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium"
   1.512 +            fi
   1.513              ;;
   1.514            sparc)
   1.515              CFLAGS_JDK="${CFLAGS_JDK} -xmemalign=4s"
   1.516 @@ -647,9 +663,11 @@
   1.517      ;;
   1.518    CL )
   1.519      D_FLAG=
   1.520 -    C_O_FLAG_HI="-O2"
   1.521 +    C_O_FLAG_HIGHEST="-O2"
   1.522 +    C_O_FLAG_HI="-O1"
   1.523      C_O_FLAG_NORM="-O1"
   1.524      C_O_FLAG_NONE="-Od"
   1.525 +    CXX_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST"
   1.526      CXX_O_FLAG_HI="$C_O_FLAG_HI"
   1.527      CXX_O_FLAG_NORM="$C_O_FLAG_NORM"
   1.528      CXX_O_FLAG_NONE="$C_O_FLAG_NONE"
   1.529 @@ -680,15 +698,15 @@
   1.530  [
   1.531  
   1.532  if test "x$CFLAGS" != "x${ADDED_CFLAGS}"; then
   1.533 -   AC_MSG_WARN([Ignoring CFLAGS($CFLAGS) found in environment. Use --with-extra-cflags"])
   1.534 +   AC_MSG_WARN([Ignoring CFLAGS($CFLAGS) found in environment. Use --with-extra-cflags])
   1.535  fi
   1.536  
   1.537  if test "x$CXXFLAGS" != "x${ADDED_CXXFLAGS}"; then
   1.538 -   AC_MSG_WARN([Ignoring CXXFLAGS($CXXFLAGS) found in environment. Use --with-extra-cxxflags"])
   1.539 +   AC_MSG_WARN([Ignoring CXXFLAGS($CXXFLAGS) found in environment. Use --with-extra-cxxflags])
   1.540  fi
   1.541  
   1.542  if test "x$LDFLAGS" != "x${ADDED_LDFLAGS}"; then
   1.543 -   AC_MSG_WARN([Ignoring LDFLAGS($LDFLAGS) found in environment. Use --with-extra-ldflags"])
   1.544 +   AC_MSG_WARN([Ignoring LDFLAGS($LDFLAGS) found in environment. Use --with-extra-ldflags])
   1.545  fi
   1.546  
   1.547  AC_ARG_WITH(extra-cflags, [AS_HELP_STRING([--with-extra-cflags],
   1.548 @@ -704,6 +722,15 @@
   1.549  CXXFLAGS_JDK="${CXXFLAGS_JDK} $with_extra_cxxflags"
   1.550  LDFLAGS_JDK="${LDFLAGS_JDK} $with_extra_ldflags"
   1.551  
   1.552 +# Hotspot needs these set in their legacy form
   1.553 +LEGACY_EXTRA_CFLAGS=$with_extra_cflags
   1.554 +LEGACY_EXTRA_CXXFLAGS=$with_extra_cxxflags
   1.555 +LEGACY_EXTRA_LDFLAGS=$with_extra_ldflags
   1.556 +
   1.557 +AC_SUBST(LEGACY_EXTRA_CFLAGS)
   1.558 +AC_SUBST(LEGACY_EXTRA_CXXFLAGS)
   1.559 +AC_SUBST(LEGACY_EXTRA_LDFLAGS)
   1.560 +
   1.561  ###############################################################################
   1.562  #
   1.563  # Now setup the CFLAGS and LDFLAGS for the JDK build.
   1.564 @@ -729,19 +756,30 @@
   1.565  	  esac
   1.566            ;;
   1.567        ossc )
   1.568 -      	  CFLAGS_JDK="$CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -norunpath -xnolib"
   1.569 -      	  CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX"
   1.570 +          CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
   1.571 +          case $OPENJDK_TARGET_CPU_ARCH in
   1.572 +          x86 )
   1.573 +            CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -Di386"
   1.574 +       	    CFLAGS_JDK="$CFLAGS_JDK -erroff=E_BAD_PRAGMA_PACK_VALUE"
   1.575 +          ;;
   1.576 +          esac
   1.577 +
   1.578 +      	  CFLAGS_JDK="$CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal"
   1.579 +      	  CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
   1.580 +
   1.581 +          LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext"
   1.582 +          LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib"
   1.583            ;;
   1.584        cl )
   1.585            CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
   1.586                 -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \
   1.587  	       -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
   1.588  	       -DWIN32 -DIAL"
   1.589 -          case $LEGACY_OPENJDK_TARGET_CPU1 in
   1.590 -              i?86 )
   1.591 +          case $OPENJDK_TARGET_CPU in
   1.592 +              x86 )
   1.593                    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_X86_ -Dx86"
   1.594                    ;;
   1.595 -              amd64 )
   1.596 +              x86_64 )
   1.597                    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_AMD64_ -Damd64"
   1.598                    ;;
   1.599            esac
   1.600 @@ -749,24 +787,6 @@
   1.601  esac
   1.602  
   1.603  ###############################################################################
   1.604 -#
   1.605 -# Cross-compile arch specific flags
   1.606 -
   1.607 -#
   1.608 -if test "x$JDK_VARIANT" = "xembedded"; then
   1.609 -   CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DJAVASE_EMBEDDED"
   1.610 -fi
   1.611 -
   1.612 -case $OPENJDK_TARGET_CPU_ARCH in
   1.613 -arm )
   1.614 -    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -fsigned-char"
   1.615 -    ;;
   1.616 -ppc )
   1.617 -    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -fsigned-char"
   1.618 -    ;;
   1.619 -esac
   1.620 -
   1.621 -###############################################################################
   1.622  
   1.623  CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64"
   1.624  
   1.625 @@ -774,11 +794,17 @@
   1.626  PACKAGE_PATH=/opt/local
   1.627  AC_SUBST(PACKAGE_PATH)
   1.628  
   1.629 -# Sometimes we use a cpu dir (.../lib/amd64/server) 
   1.630 -# Sometimes not (.../lib/server) 
   1.631 -LIBARCHDIR="$LEGACY_OPENJDK_TARGET_CPU2/"
   1.632 -if test "x$ENDIAN" = xlittle; then
   1.633 -    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
   1.634 +if test "x$OPENJDK_TARGET_CPU_ENDIAN" = xlittle; then
   1.635 +    # The macro _LITTLE_ENDIAN needs to be defined the same to avoid the
   1.636 +    #   Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN
   1.637 +    #   (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h).
   1.638 +    #   Note: -Dmacro         is the same as    #define macro 1
   1.639 +    #         -Dmacro=	    is the same as    #define macro
   1.640 +    if test "x$OPENJDK_TARGET_OS" = xsolaris; then
   1.641 +        CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
   1.642 +    else
   1.643 +        CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
   1.644 +    fi
   1.645  else
   1.646      CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN"
   1.647  fi
   1.648 @@ -793,27 +819,29 @@
   1.649  fi
   1.650  if test "x$OPENJDK_TARGET_OS" = xmacosx; then
   1.651      CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE"
   1.652 -    LIBARCHDIR=""
   1.653  fi
   1.654  if test "x$OPENJDK_TARGET_OS" = xbsd; then
   1.655      CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE"
   1.656  fi
   1.657  if test "x$DEBUG_LEVEL" = xrelease; then
   1.658      CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DNDEBUG"
   1.659 +    if test "x$OPENJDK_TARGET_OS" = xsolaris; then
   1.660 +        CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DTRIMMED"
   1.661 +    fi
   1.662  else
   1.663      CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DDEBUG"
   1.664  fi
   1.665  
   1.666 -CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DARCH='\"$LEGACY_OPENJDK_TARGET_CPU1\"' -D$LEGACY_OPENJDK_TARGET_CPU1"
   1.667 +CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
   1.668  CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DRELEASE='\"$RELEASE\"'"
   1.669  
   1.670  CCXXFLAGS_JDK="$CCXXFLAGS_JDK \
   1.671          -I${JDK_OUTPUTDIR}/include \
   1.672          -I${JDK_OUTPUTDIR}/include/$OPENJDK_TARGET_OS \
   1.673          -I${JDK_TOPDIR}/src/share/javavm/export \
   1.674 -        -I${JDK_TOPDIR}/src/$LEGACY_OPENJDK_TARGET_OS_API/javavm/export \
   1.675 +        -I${JDK_TOPDIR}/src/$OPENJDK_TARGET_OS_API_DIR/javavm/export \
   1.676          -I${JDK_TOPDIR}/src/share/native/common \
   1.677 -        -I${JDK_TOPDIR}/src/$LEGACY_OPENJDK_TARGET_OS_API/native/common"
   1.678 +        -I${JDK_TOPDIR}/src/$OPENJDK_TARGET_OS_API_DIR/native/common"
   1.679  
   1.680  # The shared libraries are compiled using the picflag.
   1.681  CFLAGS_JDKLIB="$CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
   1.682 @@ -833,7 +861,7 @@
   1.683  # Thus we offer the compiler to find libjvm.so first in server then in client. It works. Ugh.
   1.684  if test "x$COMPILER_TYPE" = xCL; then
   1.685      LDFLAGS_JDK="$LDFLAGS_JDK -nologo -opt:ref -incremental:no"
   1.686 -    if test "x$LEGACY_OPENJDK_TARGET_CPU1" = xi586; then 
   1.687 +    if test "x$OPENJDK_TARGET_CPU" = xx86; then 
   1.688          LDFLAGS_JDK="$LDFLAGS_JDK -safeseh"
   1.689      fi
   1.690      # TODO: make -debug optional "--disable-full-debug-symbols"
   1.691 @@ -861,20 +889,18 @@
   1.692      fi
   1.693  
   1.694      LDFLAGS_JDKLIB="${LDFLAGS_JDK} $SHARED_LIBRARY_FLAGS \
   1.695 -                    -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}server \
   1.696 -                    -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}client \
   1.697 -  	            -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}"
   1.698 -    LDFLAGS_JDKLIB_SUFFIX="-ljvm -ljava"
   1.699 +                    -L${JDK_OUTPUTDIR}/lib${OPENJDK_TARGET_CPU_LIBDIR}/server \
   1.700 +                    -L${JDK_OUTPUTDIR}/lib${OPENJDK_TARGET_CPU_LIBDIR}/client \
   1.701 +                    -L${JDK_OUTPUTDIR}/lib${OPENJDK_TARGET_CPU_LIBDIR}"
   1.702 +
   1.703 +    LDFLAGS_JDKLIB_SUFFIX="-ljava -ljvm"
   1.704      if test "x$COMPILER_NAME" = xossc; then
   1.705          LDFLAGS_JDKLIB_SUFFIX="$LDFLAGS_JDKLIB_SUFFIX -lc"
   1.706      fi
   1.707  
   1.708 -    # Only the jli library is explicitly linked when the launchers are built.
   1.709 -    # The libjvm is then dynamically loaded/linked by the launcher.
   1.710      LDFLAGS_JDKEXE="${LDFLAGS_JDK}"
   1.711 -    if test "x$OPENJDK_TARGET_OS" != "xmacosx"; then
   1.712 -       LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}jli"
   1.713 -       LDFLAGS_JDKEXE_SUFFIX="-ljli"
   1.714 +    if test "x$OPENJDK_TARGET_OS" = xlinux; then
   1.715 +        LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE -Xlinker --allow-shlib-undefined"
   1.716      fi
   1.717  fi
   1.718  
   1.719 @@ -905,4 +931,5 @@
   1.720  AC_SUBST(LDFLAGS_JDKEXE)
   1.721  AC_SUBST(LDFLAGS_JDKLIB_SUFFIX)
   1.722  AC_SUBST(LDFLAGS_JDKEXE_SUFFIX)
   1.723 +AC_SUBST(LDFLAGS_CXX_JDK)
   1.724  ])

mercurial