common/autoconf/platform.m4

changeset 478
2ba6f4da4bf3
parent 458
c8d320b48626
child 494
e64f2cb57d05
     1.1 --- a/common/autoconf/platform.m4	Thu Sep 06 17:27:20 2012 -0700
     1.2 +++ b/common/autoconf/platform.m4	Tue Sep 18 11:29:16 2012 -0700
     1.3 @@ -23,279 +23,86 @@
     1.4  # questions.
     1.5  #
     1.6  
     1.7 -AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD_AND_LEGACY_VARS],
     1.8 -[
     1.9 -    # Expects $host_os $host_cpu $build_os and $build_cpu
    1.10 -    # and $with_target_bits to have been setup!
    1.11 -    #
    1.12 -    # Translate the standard triplet(quadruplet) definition
    1.13 -    # of the target/build system into
    1.14 -    # OPENJDK_TARGET_OS=aix,bsd,hpux,linux,macosx,solaris,windows
    1.15 -    # OPENJDK_TARGET_OS_FAMILY=bsd,gnu,sysv,win32,wince
    1.16 -    # OPENJDK_TARGET_OS_API=posix,winapi
    1.17 -    # 
    1.18 -    # OPENJDK_TARGET_CPU=ia32,x64,sparc,sparcv9,arm,arm64,ppc,ppc64
    1.19 -    # OPENJDK_TARGET_CPU_ARCH=x86,sparc,pcc,arm
    1.20 -    # OPENJDK_TARGET_CPU_BITS=32,64
    1.21 -    # OPENJDK_TARGET_CPU_ENDIAN=big,little
    1.22 -    #
    1.23 -    # The same values are setup for BUILD_...
    1.24 -    # 
    1.25 -    # And the legacy variables, for controlling the old makefiles.
    1.26 -    # LEGACY_OPENJDK_TARGET_CPU1=i586,amd64/x86_64,sparc,sparcv9,arm,arm64...
    1.27 -    # LEGACY_OPENJDK_TARGET_CPU2=i386,amd64,sparc,sparcv9,arm,arm64...
    1.28 -    # LEGACY_OPENJDK_TARGET_CPU3=sparcv9,amd64 (but only on solaris)
    1.29 -    # LEGACY_OPENJDK_TARGET_OS_API=solaris,windows
    1.30 -    #
    1.31 -    # We also copy the autoconf trip/quadruplet
    1.32 -    # verbatim to OPENJDK_TARGET_SYSTEM (from the autoconf "host") and OPENJDK_BUILD_SYSTEM
    1.33 -    OPENJDK_TARGET_SYSTEM="$host"
    1.34 -    OPENJDK_BUILD_SYSTEM="$build"
    1.35 -    AC_SUBST(OPENJDK_TARGET_SYSTEM)
    1.36 -    AC_SUBST(OPENJDK_BUILD_SYSTEM)
    1.37 -    
    1.38 -    PLATFORM_EXTRACT_VARS_FROM_OS_TO(OPENJDK_TARGET,$host_os)
    1.39 -    PLATFORM_EXTRACT_VARS_FROM_CPU_TO(OPENJDK_TARGET,$host_cpu)
    1.40 -
    1.41 -    PLATFORM_EXTRACT_VARS_FROM_OS_TO(OPENJDK_BUILD,$build_os)
    1.42 -    PLATFORM_EXTRACT_VARS_FROM_CPU_TO(OPENJDK_BUILD,$build_cpu)
    1.43 -
    1.44 -    if test "x$OPENJDK_TARGET_OS" != xsolaris; then
    1.45 -        LEGACY_OPENJDK_TARGET_CPU3=""
    1.46 -        LEGACY_OPENJDK_BUILD_CPU3=""
    1.47 -    fi
    1.48 -
    1.49 -    # On MacOSX and MacOSX only, we have a different name for the x64 CPU in ARCH (LEGACY_OPENJDK_TARGET_CPU1) ...
    1.50 -    if test "x$OPENJDK_TARGET_OS" = xmacosx && test "x$OPENJDK_TARGET_CPU" = xx64; then
    1.51 -        LEGACY_OPENJDK_TARGET_CPU1="x86_64"
    1.52 -    fi
    1.53 -
    1.54 -    PLATFORM_SET_RELEASE_FILE_OS_VALUES
    1.55 -])
    1.56 -
    1.57 -AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS_TO],
    1.58 -[
    1.59 -    PLATFORM_EXTRACT_VARS_FROM_OS($2)
    1.60 -    $1_OS="$VAR_OS"
    1.61 -    $1_OS_FAMILY="$VAR_OS_FAMILY"
    1.62 -    $1_OS_API="$VAR_OS_API"
    1.63 -
    1.64 -    AC_SUBST($1_OS)
    1.65 -    AC_SUBST($1_OS_FAMILY)
    1.66 -    AC_SUBST($1_OS_API)
    1.67 -
    1.68 -    if test "x$$1_OS_API" = xposix; then
    1.69 -        LEGACY_$1_OS_API="solaris"
    1.70 -    fi
    1.71 -    if test "x$$1_OS_API" = xwinapi; then
    1.72 -        LEGACY_$1_OS_API="windows"
    1.73 -    fi
    1.74 -    AC_SUBST(LEGACY_$1_OS_API)    
    1.75 -])
    1.76 -
    1.77 -AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU_TO],
    1.78 -[
    1.79 -    PLATFORM_EXTRACT_VARS_FROM_CPU($2)
    1.80 -    $1_CPU="$VAR_CPU"
    1.81 -    $1_CPU_ARCH="$VAR_CPU_ARCH"
    1.82 -    $1_CPU_BITS="$VAR_CPU_BITS"
    1.83 -    $1_CPU_ENDIAN="$VAR_CPU_ENDIAN"
    1.84 -
    1.85 -    AC_SUBST($1_CPU)
    1.86 -    AC_SUBST($1_CPU_ARCH)
    1.87 -    AC_SUBST($1_CPU_BITS)
    1.88 -    AC_SUBST($1_CPU_ENDIAN)
    1.89 -    
    1.90 -    # Also store the legacy naming of the cpu.
    1.91 -    # Ie i586 and amd64 instead of ia32 and x64
    1.92 -    LEGACY_$1_CPU1="$VAR_LEGACY_CPU"
    1.93 -    AC_SUBST(LEGACY_$1_CPU1)
    1.94 -
    1.95 -    # And the second legacy naming of the cpu.
    1.96 -    # Ie i386 and amd64 instead of ia32 and x64.
    1.97 -    LEGACY_$1_CPU2="$LEGACY_$1_CPU1"
    1.98 -    if test "x$LEGACY_$1_CPU1" = xi586; then 
    1.99 -        LEGACY_$1_CPU2=i386
   1.100 -    fi
   1.101 -    AC_SUBST(LEGACY_$1_CPU2)
   1.102 -
   1.103 -    # And the third legacy naming of the cpu.
   1.104 -    # Ie only amd64 or sparcv9, used for the ISA_DIR on Solaris.
   1.105 -    LEGACY_$1_CPU3=""
   1.106 -    if test "x$$1_CPU" = xx64; then 
   1.107 -        LEGACY_$1_CPU3=amd64
   1.108 -    fi
   1.109 -    if test "x$$1_CPU" = xsparcv9; then 
   1.110 -        LEGACY_$1_CPU3=sparcv9
   1.111 -    fi
   1.112 -    AC_SUBST(LEGACY_$1_CPU3)
   1.113 -])
   1.114 -
   1.115 +# Support macro for PLATFORM_EXTRACT_TARGET_AND_BUILD.
   1.116 +# Converts autoconf style CPU name to OpenJDK style, into
   1.117 +# VAR_CPU, VAR_CPU_ARCH, VAR_CPU_BITS and VAR_CPU_ENDIAN.
   1.118  AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU],
   1.119  [
   1.120    # First argument is the cpu name from the trip/quad
   1.121    case "$1" in
   1.122      x86_64)
   1.123 -      VAR_CPU=x64
   1.124 +      VAR_CPU=x86_64
   1.125        VAR_CPU_ARCH=x86
   1.126        VAR_CPU_BITS=64
   1.127        VAR_CPU_ENDIAN=little
   1.128 -      VAR_LEGACY_CPU=amd64
   1.129        ;;
   1.130      i?86)
   1.131 -      VAR_CPU=ia32
   1.132 +      VAR_CPU=x86
   1.133        VAR_CPU_ARCH=x86
   1.134        VAR_CPU_BITS=32
   1.135        VAR_CPU_ENDIAN=little
   1.136 -      VAR_LEGACY_CPU=i586
   1.137 -      ;;
   1.138 -    alpha*)
   1.139 -      VAR_CPU=alpha
   1.140 -      VAR_CPU_ARCH=alpha
   1.141 -      VAR_CPU_BITS=64
   1.142 -      VAR_CPU_ENDIAN=big
   1.143 -      VAR_LEGACY_CPU=alpha
   1.144        ;;
   1.145      arm*)
   1.146        VAR_CPU=arm
   1.147        VAR_CPU_ARCH=arm
   1.148        VAR_CPU_BITS=32
   1.149        VAR_CPU_ENDIAN=little
   1.150 -      VAR_LEGACY_CPU=arm
   1.151        ;;
   1.152 -    mips)
   1.153 -      VAR_CPU=mips
   1.154 -      VAR_CPU_ARCH=mips
   1.155 -      VAR_CPU_BITS=woot
   1.156 -      VAR_CPU_ENDIAN=woot
   1.157 -      VAR_LEGACY_CPU=mips
   1.158 -       ;;
   1.159 -    mipsel)
   1.160 -      VAR_CPU=mipsel
   1.161 -      VAR_CPU_ARCH=mips
   1.162 -      VAR_CPU_BITS=woot
   1.163 -      VAR_CPU_ENDIAN=woot
   1.164 -      VAR_LEGACY_CPU=mipsel
   1.165 -       ;;
   1.166      powerpc)
   1.167        VAR_CPU=ppc
   1.168        VAR_CPU_ARCH=ppc
   1.169        VAR_CPU_BITS=32
   1.170        VAR_CPU_ENDIAN=big
   1.171 -      VAR_LEGACY_CPU=ppc
   1.172         ;;
   1.173      powerpc64)
   1.174        VAR_CPU=ppc64
   1.175        VAR_CPU_ARCH=ppc
   1.176        VAR_CPU_BITS=64
   1.177        VAR_CPU_ENDIAN=big
   1.178 -      VAR_LEGACY_CPU=ppc64
   1.179         ;;
   1.180      sparc)
   1.181        VAR_CPU=sparc
   1.182        VAR_CPU_ARCH=sparc
   1.183        VAR_CPU_BITS=32
   1.184        VAR_CPU_ENDIAN=big
   1.185 -      VAR_LEGACY_CPU=sparc
   1.186         ;;
   1.187 -    sparc64)
   1.188 +    sparcv9)
   1.189        VAR_CPU=sparcv9
   1.190        VAR_CPU_ARCH=sparc
   1.191        VAR_CPU_BITS=64
   1.192        VAR_CPU_ENDIAN=big
   1.193 -      VAR_LEGACY_CPU=sparcv9
   1.194 -       ;;
   1.195 -    s390)
   1.196 -      VAR_CPU=s390
   1.197 -      VAR_CPU_ARCH=s390
   1.198 -      VAR_CPU_BITS=32
   1.199 -      VAR_CPU_ENDIAN=woot
   1.200 -      VAR_LEGACY_CPU=s390
   1.201 -      VAR_LEGACY_CPU=s390
   1.202 -       ;;
   1.203 -    s390x)
   1.204 -      VAR_CPU=s390x
   1.205 -      VAR_CPU_ARCH=s390
   1.206 -      VAR_CPU_BITS=64
   1.207 -      VAR_CPU_ENDIAN=woot
   1.208 -      VAR_LEGACY_CPU=s390x
   1.209         ;;
   1.210      *)
   1.211        AC_MSG_ERROR([unsupported cpu $1])
   1.212        ;;
   1.213    esac
   1.214 -
   1.215 -  # Workaround cygwin not knowing about 64 bit.
   1.216 -  if test "x$VAR_OS" = "xwindows"; then
   1.217 -      if test "x$PROCESSOR_IDENTIFIER" != "x"; then
   1.218 -          PROC_ARCH=`echo $PROCESSOR_IDENTIFIER | $CUT -f1 -d' '`
   1.219 -          case "$PROC_ARCH" in
   1.220 -            intel64|Intel64|INTEL64|em64t|EM64T|amd64|AMD64|8664|x86_64)
   1.221 -              VAR_CPU=x64
   1.222 -              VAR_CPU_BITS=64
   1.223 -              VAR_LEGACY_CPU=amd64
   1.224 -              ;;
   1.225 -          esac
   1.226 -      fi
   1.227 -  fi
   1.228 -
   1.229 -  # on solaris x86...default seems to be 32-bit
   1.230 -  if test "x$VAR_OS" = "xsolaris" && \
   1.231 -     test "x$with_target_bits" = "x" && \
   1.232 -     test "x$VAR_CPU_ARCH" = "xx86"
   1.233 -  then
   1.234 -      with_target_bits=32
   1.235 -  fi
   1.236 -
   1.237 -  if test "x$VAR_CPU_ARCH" = "xx86"; then
   1.238 -      if test "x$with_target_bits" = "x64"; then
   1.239 -          VAR_CPU=x64
   1.240 -          VAR_CPU_BITS=64
   1.241 -          VAR_LEGACY_CPU=amd64
   1.242 -      fi
   1.243 -      if test "x$with_target_bits" = "x32"; then
   1.244 -          VAR_CPU=ia32
   1.245 -          VAR_CPU_BITS=32
   1.246 -          VAR_LEGACY_CPU=i586
   1.247 -      fi
   1.248 -  fi 
   1.249 -
   1.250 -  if test "x$VAR_CPU_ARCH" = "xsparc"; then
   1.251 -      if test "x$with_target_bits" = "x64"; then
   1.252 -          VAR_CPU=sparcv9
   1.253 -          VAR_CPU_BITS=64
   1.254 -          VAR_LEGACY_CPU=sparcv9
   1.255 -      fi
   1.256 -  fi 
   1.257  ])
   1.258  
   1.259 +# Support macro for PLATFORM_EXTRACT_TARGET_AND_BUILD.
   1.260 +# Converts autoconf style OS name to OpenJDK style, into
   1.261 +# VAR_OS and VAR_OS_API.
   1.262  AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS],
   1.263  [
   1.264    case "$1" in
   1.265      *linux*)
   1.266        VAR_OS=linux
   1.267        VAR_OS_API=posix
   1.268 -      VAR_OS_FAMILY=gnu
   1.269        ;;
   1.270      *solaris*)
   1.271        VAR_OS=solaris
   1.272        VAR_OS_API=posix
   1.273 -      VAR_OS_FAMILY=sysv
   1.274        ;;
   1.275      *darwin*)
   1.276        VAR_OS=macosx
   1.277        VAR_OS_API=posix
   1.278 -      VAR_OS_FAMILY=bsd
   1.279        ;;
   1.280      *bsd*)
   1.281        VAR_OS=bsd
   1.282        VAR_OS_API=posix
   1.283 -      VAR_OS_FAMILY=bsd
   1.284        ;;
   1.285      *cygwin*|*windows*)
   1.286        VAR_OS=windows
   1.287        VAR_OS_API=winapi
   1.288 -      VAR_OS_FAMILY=windows
   1.289        ;;
   1.290      *)
   1.291        AC_MSG_ERROR([unsupported operating system $1])
   1.292 @@ -303,6 +110,208 @@
   1.293    esac
   1.294  ])
   1.295  
   1.296 +# Expects $host_os $host_cpu $build_os and $build_cpu
   1.297 +# and $with_target_bits to have been setup!
   1.298 +#
   1.299 +# Translate the standard triplet(quadruplet) definition
   1.300 +# of the target/build system into OPENJDK_TARGET_OS, OPENJDK_TARGET_CPU,
   1.301 +# OPENJDK_BUILD_OS, etc.
   1.302 +AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
   1.303 +[
   1.304 +    # Copy the autoconf trip/quadruplet verbatim to OPENJDK_TARGET_AUTOCONF_NAME
   1.305 +    # (from the autoconf "host") and OPENJDK_BUILD_AUTOCONF_NAME
   1.306 +    # Note that we might later on rewrite e.g. OPENJDK_TARGET_CPU due to reduced build,
   1.307 +    # but this will not change the value of OPENJDK_TARGET_AUTOCONF_NAME.     
   1.308 +    OPENJDK_TARGET_AUTOCONF_NAME="$host"
   1.309 +    OPENJDK_BUILD_AUTOCONF_NAME="$build"
   1.310 +    AC_SUBST(OPENJDK_TARGET_AUTOCONF_NAME)
   1.311 +    AC_SUBST(OPENJDK_BUILD_AUTOCONF_NAME)
   1.312 +
   1.313 +    # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
   1.314 +    PLATFORM_EXTRACT_VARS_FROM_OS($host_os)
   1.315 +    PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu)
   1.316 +    # ... and setup our own variables. (Do this explicitely to facilitate searching)
   1.317 +    OPENJDK_TARGET_OS="$VAR_OS"
   1.318 +    OPENJDK_TARGET_OS_API="$VAR_OS_API"
   1.319 +    OPENJDK_TARGET_CPU="$VAR_CPU"
   1.320 +    OPENJDK_TARGET_CPU_ARCH="$VAR_CPU_ARCH"
   1.321 +    OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS"
   1.322 +    OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN"
   1.323 +    AC_SUBST(OPENJDK_TARGET_OS)
   1.324 +    AC_SUBST(OPENJDK_TARGET_OS_API)
   1.325 +    AC_SUBST(OPENJDK_TARGET_CPU)
   1.326 +    AC_SUBST(OPENJDK_TARGET_CPU_ARCH)
   1.327 +    AC_SUBST(OPENJDK_TARGET_CPU_BITS)
   1.328 +    AC_SUBST(OPENJDK_TARGET_CPU_ENDIAN)
   1.329 +
   1.330 +    # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
   1.331 +    PLATFORM_EXTRACT_VARS_FROM_OS($build_os)
   1.332 +    PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu)
   1.333 +    # ..and setup our own variables. (Do this explicitely to facilitate searching)
   1.334 +    OPENJDK_BUILD_OS="$VAR_OS"
   1.335 +    OPENJDK_BUILD_OS_API="$VAR_OS_API"
   1.336 +    OPENJDK_BUILD_CPU="$VAR_CPU"
   1.337 +    OPENJDK_BUILD_CPU_ARCH="$VAR_CPU_ARCH"
   1.338 +    OPENJDK_BUILD_CPU_BITS="$VAR_CPU_BITS"
   1.339 +    OPENJDK_BUILD_CPU_ENDIAN="$VAR_CPU_ENDIAN"
   1.340 +    AC_SUBST(OPENJDK_BUILD_OS)
   1.341 +    AC_SUBST(OPENJDK_BUILD_OS_API)
   1.342 +    AC_SUBST(OPENJDK_BUILD_CPU)
   1.343 +    AC_SUBST(OPENJDK_BUILD_CPU_ARCH)
   1.344 +    AC_SUBST(OPENJDK_BUILD_CPU_BITS)
   1.345 +    AC_SUBST(OPENJDK_BUILD_CPU_ENDIAN)
   1.346 +])
   1.347 +
   1.348 +# Check if a reduced build (32-bit on 64-bit platforms) is requested, and modify behaviour
   1.349 +# accordingly. Must be done after setting up build and target system, but before
   1.350 +# doing anything else with these values.
   1.351 +AC_DEFUN([PLATFORM_SETUP_TARGET_CPU_BITS],
   1.352 +[
   1.353 +  AC_ARG_WITH(target-bits, [AS_HELP_STRING([--with-target-bits],
   1.354 +     [build 32-bit or 64-bit binaries (for platforms that support it), e.g. --with-target-bits=32 @<:@guessed@:>@])])
   1.355 +
   1.356 +  # We have three types of compiles:
   1.357 +  # native  == normal compilation, target system == build system
   1.358 +  # cross   == traditional cross compilation, target system != build system; special toolchain needed
   1.359 +  # reduced == using native compilers, but with special flags (e.g. -m32) to produce 32-bit builds on 64-bit machines
   1.360 +  #
   1.361 +  if test "x$OPENJDK_BUILD_AUTOCONF_NAME" != "x$OPENJDK_TARGET_AUTOCONF_NAME"; then
   1.362 +    # We're doing a proper cross-compilation
   1.363 +    COMPILE_TYPE="cross"
   1.364 +  else
   1.365 +    COMPILE_TYPE="native"
   1.366 +  fi
   1.367 +
   1.368 +  if test "x$with_target_bits" != x; then
   1.369 +    if test "x$COMPILE_TYPE" = "xcross"; then
   1.370 +      AC_MSG_ERROR([It is not possible to combine --with-target-bits=X and proper cross-compilation. Choose either.])
   1.371 +    fi
   1.372 +
   1.373 +    if test "x$with_target_bits" = x32 && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
   1.374 +      # A reduced build is requested
   1.375 +      COMPILE_TYPE="reduced"
   1.376 +      OPENJDK_TARGET_CPU_BITS=32
   1.377 +      if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
   1.378 +        OPENJDK_TARGET_CPU=x86
   1.379 +      elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
   1.380 +        OPENJDK_TARGET_CPU=sparc
   1.381 +      else
   1.382 +        AC_MSG_ERROR([Reduced build (--with-target-bits=32) is only supported on x86_64 and sparcv9])
   1.383 +      fi 
   1.384 +    elif test "x$with_target_bits" = x64 && test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
   1.385 +      AC_MSG_ERROR([It is not possible to use --with-target-bits=64 on a 32 bit system. Use proper cross-compilation instead.])
   1.386 +    elif test "x$with_target_bits" = "x$OPENJDK_TARGET_CPU_BITS"; then
   1.387 +      AC_MSG_NOTICE([--with-target-bits are set to build platform address size; argument has no meaning])
   1.388 +    else
   1.389 +      AC_MSG_ERROR([--with-target-bits can only be 32 or 64, you specified $with_target_bits!])
   1.390 +    fi
   1.391 +  fi
   1.392 +  AC_SUBST(COMPILE_TYPE)
   1.393 +
   1.394 +AC_MSG_CHECKING([for compilation type])
   1.395 +AC_MSG_RESULT([$COMPILE_TYPE])
   1.396 +])
   1.397 +
   1.398 +    # Setup the legacy variables, for controlling the old makefiles.
   1.399 +    #
   1.400 +AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS],
   1.401 +[
   1.402 +    # Also store the legacy naming of the cpu.
   1.403 +    # Ie i586 and amd64 instead of x86 and x86_64
   1.404 +    OPENJDK_TARGET_CPU_LEGACY="$OPENJDK_TARGET_CPU"
   1.405 +    if test "x$OPENJDK_TARGET_CPU" = xx86; then 
   1.406 +      OPENJDK_TARGET_CPU_LEGACY="i586"
   1.407 +    elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then 
   1.408 +      # On all platforms except MacOSX replace x86_64 with amd64.
   1.409 +      OPENJDK_TARGET_CPU_LEGACY="amd64"
   1.410 +    fi
   1.411 +    AC_SUBST(OPENJDK_TARGET_CPU_LEGACY)
   1.412 +
   1.413 +    # And the second legacy naming of the cpu.
   1.414 +    # Ie i386 and amd64 instead of x86 and x86_64.
   1.415 +    OPENJDK_TARGET_CPU_LEGACY_LIB="$OPENJDK_TARGET_CPU"
   1.416 +    if test "x$OPENJDK_TARGET_CPU" = xx86; then 
   1.417 +      OPENJDK_TARGET_CPU_LEGACY_LIB="i386"
   1.418 +    elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then 
   1.419 +      OPENJDK_TARGET_CPU_LEGACY_LIB="amd64"
   1.420 +    fi
   1.421 +    AC_SUBST(OPENJDK_TARGET_CPU_LEGACY_LIB)
   1.422 +
   1.423 +    # This is the name of the cpu (but using i386 and amd64 instead of
   1.424 +    # x86 and x86_64, respectively), preceeded by a /, to be used when
   1.425 +    # locating libraries. On macosx, it's empty, though.
   1.426 +    OPENJDK_TARGET_CPU_LIBDIR="/$OPENJDK_TARGET_CPU_LEGACY_LIB"
   1.427 +    if test "x$OPENJDK_TARGET_OS" = xmacosx; then
   1.428 +        OPENJDK_TARGET_CPU_LIBDIR=""
   1.429 +    fi
   1.430 +    AC_SUBST(OPENJDK_TARGET_CPU_LIBDIR)
   1.431 +
   1.432 +    # OPENJDK_TARGET_CPU_ISADIR is normally empty. On 64-bit Solaris systems, it is set to
   1.433 +    # /amd64 or /sparcv9. This string is appended to some library paths, like this:
   1.434 +    # /usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libexample.so
   1.435 +    OPENJDK_TARGET_CPU_ISADIR=""
   1.436 +    if test "x$OPENJDK_TARGET_OS" = xsolaris; then
   1.437 +      if test "x$OPENJDK_TARGET_CPU" = xx86_64; then 
   1.438 +          OPENJDK_TARGET_CPU_ISADIR="/amd64"
   1.439 +      elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then 
   1.440 +          OPENJDK_TARGET_CPU_ISADIR="/sparcv9"
   1.441 +      fi
   1.442 +    fi
   1.443 +    AC_SUBST(OPENJDK_TARGET_CPU_ISADIR)
   1.444 +
   1.445 +    # Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property
   1.446 +    OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU"
   1.447 +    if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
   1.448 +      # On linux only, we replace x86 with i386.
   1.449 +      OPENJDK_TARGET_CPU_OSARCH="i386"
   1.450 +    elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
   1.451 +      # On all platforms except macosx, we replace x86_64 with amd64.
   1.452 +      OPENJDK_TARGET_CPU_OSARCH="amd64"
   1.453 +    fi
   1.454 +    AC_SUBST(OPENJDK_TARGET_CPU_OSARCH)
   1.455 +
   1.456 +    OPENJDK_TARGET_CPU_JLI="$OPENJDK_TARGET_CPU"
   1.457 +    if test "x$OPENJDK_TARGET_CPU" = xx86; then 
   1.458 +      OPENJDK_TARGET_CPU_JLI="i386"
   1.459 +    elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
   1.460 +      # On all platforms except macosx, we replace x86_64 with amd64.
   1.461 +      OPENJDK_TARGET_CPU_JLI="amd64"
   1.462 +    fi
   1.463 +    # Now setup the -D flags for building libjli.
   1.464 +    OPENJDK_TARGET_CPU_JLI_CFLAGS="-DLIBARCHNAME='\"$OPENJDK_TARGET_CPU_JLI\"'"
   1.465 +    if test "x$OPENJDK_TARGET_OS" = xsolaris; then
   1.466 +      if test "x$OPENJDK_TARGET_CPU_ARCH" = xsparc; then
   1.467 +        OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"sparc\"' -DLIBARCH64NAME='\"sparcv9\"'"
   1.468 +      elif test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then 
   1.469 +        OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"i386\"' -DLIBARCH64NAME='\"amd64\"'"
   1.470 +      fi
   1.471 +    fi
   1.472 +    AC_SUBST(OPENJDK_TARGET_CPU_JLI_CFLAGS)
   1.473 +
   1.474 +    # Setup OPENJDK_TARGET_OS_API_DIR, used in source paths.
   1.475 +    if test "x$OPENJDK_TARGET_OS_API" = xposix; then
   1.476 +        OPENJDK_TARGET_OS_API_DIR="solaris"
   1.477 +    fi
   1.478 +    if test "x$OPENJDK_TARGET_OS_API" = xwinapi; then
   1.479 +        OPENJDK_TARGET_OS_API_DIR="windows"
   1.480 +    fi
   1.481 +    AC_SUBST(OPENJDK_TARGET_OS_API_DIR)
   1.482 +
   1.483 +    if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
   1.484 +        A_LP64="LP64:="
   1.485 +        ADD_LP64="-D_LP64=1"
   1.486 +    fi
   1.487 +    AC_SUBST(LP64,$A_LP64)
   1.488 +
   1.489 +    if test "x$COMPILE_TYPE" = "xcross"; then
   1.490 +      # FIXME: ... or should this include reduced builds..?
   1.491 +      DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_TARGET_CPU_LEGACY"
   1.492 +    else
   1.493 +      DEFINE_CROSS_COMPILE_ARCH=""
   1.494 +    fi
   1.495 +    AC_SUBST(DEFINE_CROSS_COMPILE_ARCH)
   1.496 +])
   1.497 +
   1.498  AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES],
   1.499  [
   1.500      if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
   1.501 @@ -315,7 +324,11 @@
   1.502      fi
   1.503      if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
   1.504          REQUIRED_OS_NAME=Windows
   1.505 -        REQUIRED_OS_VERSION=5.1
   1.506 +        if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then
   1.507 +            REQUIRED_OS_VERSION=5.2
   1.508 +        else
   1.509 +            REQUIRED_OS_VERSION=5.1
   1.510 +        fi
   1.511      fi
   1.512      if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
   1.513          REQUIRED_OS_NAME=Darwin
   1.514 @@ -338,42 +351,10 @@
   1.515  AC_CANONICAL_HOST
   1.516  AC_CANONICAL_TARGET
   1.517  
   1.518 -AC_ARG_WITH(target-bits, [AS_HELP_STRING([--with-target-bits],
   1.519 -   [build 32-bit or 64-bit binaries (for platforms that support it), e.g. --with-target-bits=32 @<:@guessed@:>@])])
   1.520 -
   1.521 -if test "x$with_target_bits" != x && \
   1.522 -   test "x$with_target_bits" != x32 && \
   1.523 -   test "x$with_target_bits" != x64 ; then
   1.524 -    AC_MSG_ERROR([--with-target-bits can only be 32 or 64, you specified $with_target_bits!])
   1.525 -fi
   1.526 -# Translate the standard cpu-vendor-kernel-os quadruplets into
   1.527 -# the new TARGET_.... and BUILD_... and the legacy names used by
   1.528 -# the openjdk build.
   1.529 -# It uses $host_os $host_cpu $build_os $build_cpu and $with_target_bits
   1.530 -PLATFORM_EXTRACT_TARGET_AND_BUILD_AND_LEGACY_VARS
   1.531 -
   1.532 -# The LEGACY_OPENJDK_TARGET_CPU3 is the setting for ISA_DIR.
   1.533 -if test "x$LEGACY_OPENJDK_TARGET_CPU3" != x; then
   1.534 -   LEGACY_OPENJDK_TARGET_CPU3="/${LEGACY_OPENJDK_TARGET_CPU3}"
   1.535 -fi
   1.536 -
   1.537 -# Now the following vars are defined.
   1.538 -# OPENJDK_TARGET_OS=aix,bsd,hpux,linux,macosx,solaris,windows
   1.539 -# OPENJDK_TARGET_OS_FAMILY=bsd,gnu,sysv,win32,wince
   1.540 -# OPENJDK_TARGET_OS_API=posix,winapi
   1.541 -#
   1.542 -# OPENJDK_TARGET_CPU=ia32,x64,sparc,sparcv9,arm,arm64,ppc,ppc64
   1.543 -# OPENJDK_TARGET_CPU_ARCH=x86,sparc,pcc,arm
   1.544 -# OPENJDK_TARGET_CPU_BITS=32,64
   1.545 -# OPENJDK_TARGET_CPU_ENDIAN=big,little
   1.546 -#
   1.547 -# There is also a:
   1.548 -# LEGACY_OPENJDK_TARGET_CPU1=i586,amd64,....  # used to set the old var ARCH
   1.549 -# LEGACY_OPENJDK_TARGET_CPU2=i386,amd64,.... # used to set the old var LIBARCH
   1.550 -# LEGACY_OPENJDK_TARGET_CPU3=only sparcv9,amd64 # used to set the ISA_DIR on Solaris
   1.551 -# There was also a BUILDARCH that had i486,amd64,... but we do not use that
   1.552 -# in the new build.
   1.553 -# LEGACY_OPENJDK_TARGET_OS_API=solaris,windows # used to select source roots
   1.554 +PLATFORM_EXTRACT_TARGET_AND_BUILD
   1.555 +PLATFORM_SETUP_TARGET_CPU_BITS
   1.556 +PLATFORM_SET_RELEASE_FILE_OS_VALUES
   1.557 +PLATFORM_SETUP_LEGACY_VARS
   1.558  ])
   1.559  
   1.560  AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION],
   1.561 @@ -391,7 +372,26 @@
   1.562  AC_SUBST(OS_VERSION_MICRO)
   1.563  ])
   1.564  
   1.565 -AC_DEFUN_ONCE([PLATFORM_TEST_OPENJDK_TARGET_BITS],
   1.566 +# Support macro for PLATFORM_SETUP_OPENJDK_TARGET_BITS.
   1.567 +# Add -mX to various FLAGS variables.
   1.568 +AC_DEFUN([PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS],
   1.569 +[
   1.570 +  # keep track of c/cxx flags that we added outselves...
   1.571 +  #   to prevent emitting warning...
   1.572 +  ADDED_CFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}"
   1.573 +  ADDED_CXXFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}"
   1.574 +  ADDED_LDFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}"
   1.575 +
   1.576 +  CFLAGS="${CFLAGS}${ADDED_CFLAGS}"
   1.577 +  CXXFLAGS="${CXXFLAGS}${ADDED_CXXFLAGS}"
   1.578 +  LDFLAGS="${LDFLAGS}${ADDED_LDFLAGS}"
   1.579 +
   1.580 +  CFLAGS_JDK="${CFLAGS_JDK}${ADDED_CFLAGS}"
   1.581 +  CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}"
   1.582 +  LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}"
   1.583 +])
   1.584 +
   1.585 +AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_BITS],
   1.586  [
   1.587  ###############################################################################
   1.588  #
   1.589 @@ -399,72 +399,47 @@
   1.590  # (The JVM can use 32 or 64 bit Java pointers but that decision
   1.591  # is made at runtime.)
   1.592  #
   1.593 -AC_LANG_PUSH(C++)
   1.594 -OLD_CXXFLAGS="$CXXFLAGS"
   1.595 -if test "x$OPENJDK_TARGET_OS" != xwindows && test "x$with_target_bits" != x; then
   1.596 -	CXXFLAGS="-m${with_target_bits} $CXXFLAGS"
   1.597 +if test "x$OPENJDK_TARGET_OS" = xsolaris; then
   1.598 +  # Always specify -m flags on Solaris
   1.599 +  PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS
   1.600 +elif test "x$COMPILE_TYPE" = xreduced; then
   1.601 +  if test "x$OPENJDK_TARGET_OS" != xwindows; then
   1.602 +    # Specify -m if running reduced on other Posix platforms
   1.603 +    PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS
   1.604 +  fi
   1.605  fi
   1.606 +
   1.607 +# Make compilation sanity check
   1.608 +AC_CHECK_HEADERS([stdio.h], , [
   1.609 +  AC_MSG_NOTICE([Failed to compile stdio.h. This likely implies missing compile dependencies.])
   1.610 +  if test "x$COMPILE_TYPE" = xreduced; then
   1.611 +    AC_MSG_NOTICE([You are doing a reduced build. Check that you have 32-bit libraries installed.])
   1.612 +  elif test "x$COMPILE_TYPE" = xcross; then
   1.613 +    AC_MSG_NOTICE([You are doing a cross-compilation. Check that you have all target platform libraries installed.])
   1.614 +  fi
   1.615 +  AC_MSG_ERROR([Cannot continue.])
   1.616 +])
   1.617 +
   1.618  AC_CHECK_SIZEOF([int *], [1111])
   1.619 -CXXFLAGS="$OLD_CXXFLAGS"
   1.620 -AC_LANG_POP(C++)
   1.621  
   1.622 -# keep track of c/cxx flags that we added outselves...
   1.623 -#   to prevent emitting warning...
   1.624 -ADDED_CFLAGS=
   1.625 -ADDED_CXXFLAGS=
   1.626 -ADDED_LDFLAGS=
   1.627 +if test "x$SIZEOF_INT_P" != "x$ac_cv_sizeof_int_p"; then
   1.628 +  # Workaround autoconf bug, see http://lists.gnu.org/archive/html/autoconf/2010-07/msg00004.html
   1.629 +  SIZEOF_INT_P="$ac_cv_sizeof_int_p"
   1.630 +fi
   1.631  
   1.632 -if test "x$ac_cv_sizeof_int_p" = x0; then 
   1.633 -    # The test failed, lets pick the assumed value.
   1.634 -    ARCH_DATA_MODEL=$OPENJDK_TARGET_CPU_BITS
   1.635 +if test "x$SIZEOF_INT_P" = x; then 
   1.636 +    # The test failed, lets stick to the assumed value.
   1.637 +    AC_MSG_WARN([The number of bits in the target could not be determined, using $OPENJDK_TARGET_CPU_BITS.])
   1.638  else
   1.639 -    ARCH_DATA_MODEL=`expr 8 \* $ac_cv_sizeof_int_p`
   1.640 +    TESTED_TARGET_CPU_BITS=`expr 8 \* $SIZEOF_INT_P`
   1.641  
   1.642 -    if test "x$OPENJDK_TARGET_OS" != xwindows && test "x$with_target_bits" != x; then
   1.643 -       ADDED_CFLAGS=" -m${with_target_bits}"
   1.644 -       ADDED_CXXFLAGS=" -m${with_target_bits}"
   1.645 -       ADDED_LDFLAGS=" -m${with_target_bits}"
   1.646 -
   1.647 -       CFLAGS="${CFLAGS}${ADDED_CFLAGS}"
   1.648 -       CXXFLAGS="${CXXFLAGS}${ADDED_CXXFLAGS}"
   1.649 -       LDFLAGS="${LDFLAGS}${ADDED_LDFLAGS}"
   1.650 -
   1.651 -       CFLAGS_JDK="${CFLAGS_JDK}${ADDED_CFLAGS}"
   1.652 -       CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}"
   1.653 -       LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}"
   1.654 +    if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then
   1.655 +        AC_MSG_ERROR([The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)])
   1.656      fi
   1.657  fi
   1.658  
   1.659 -if test "x$ARCH_DATA_MODEL" = x64; then
   1.660 -    A_LP64="LP64:="
   1.661 -    ADD_LP64="-D_LP64=1"
   1.662 -fi
   1.663  AC_MSG_CHECKING([for target address size])
   1.664 -AC_MSG_RESULT([$ARCH_DATA_MODEL bits])
   1.665 -AC_SUBST(LP64,$A_LP64)
   1.666 -AC_SUBST(ARCH_DATA_MODEL)
   1.667 -
   1.668 -if test "x$ARCH_DATA_MODEL" != "x$OPENJDK_TARGET_CPU_BITS"; then
   1.669 -    AC_MSG_ERROR([The tested number of bits in the target ($ARCH_DATA_MODEL) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)])
   1.670 -fi
   1.671 -
   1.672 -#
   1.673 -# NOTE: check for -mstackrealign needs to be below potential addition of -m32
   1.674 -#
   1.675 -if test "x$OPENJDK_TARGET_CPU_BITS" = x32 && test "x$OPENJDK_TARGET_OS" = xmacosx; then
   1.676 -    # On 32-bit MacOSX the OS requires C-entry points to be 16 byte aligned.
   1.677 -    # While waiting for a better solution, the current workaround is to use -mstackrealign.
   1.678 -    CFLAGS="$CFLAGS -mstackrealign"
   1.679 -    AC_MSG_CHECKING([if 32-bit compiler supports -mstackrealign])
   1.680 -    AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
   1.681 -                   [
   1.682 -		        AC_MSG_RESULT([yes])
   1.683 -                   ],
   1.684 -	           [
   1.685 -		        AC_MSG_RESULT([no])
   1.686 -	                AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
   1.687 -	           ])
   1.688 -fi
   1.689 +AC_MSG_RESULT([$OPENJDK_TARGET_CPU_BITS bits])
   1.690  ])
   1.691  
   1.692  AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS],
   1.693 @@ -478,21 +453,7 @@
   1.694  if test "x$ENDIAN" = xuniversal_endianness; then
   1.695      AC_MSG_ERROR([Building with both big and little endianness is not supported])
   1.696  fi
   1.697 -if test "x$ENDIAN" = xunknown; then
   1.698 -    ENDIAN="$OPENJDK_TARGET_CPU_ENDIAN"
   1.699 +if test "x$ENDIAN" != "x$OPENJDK_TARGET_CPU_ENDIAN"; then
   1.700 +    AC_MSG_ERROR([The tested endian in the target ($ENDIAN) differs from the endian expected to be found in the target ($OPENJDK_TARGET_CPU_ENDIAN)])
   1.701  fi
   1.702 -if test "x$ENDIAN" != "x$OPENJDK_TARGET_CPU_ENDIAN"; then
   1.703 -    AC_MSG_WARN([The tested endian in the target ($ENDIAN) differs from the endian expected to be found in the target ($OPENJDK_TARGET_CPU_ENDIAN)])
   1.704 -    ENDIAN="$OPENJDK_TARGET_CPU_ENDIAN"
   1.705 -fi
   1.706 -AC_SUBST(ENDIAN)
   1.707  ])
   1.708 -
   1.709 -AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_ISADIR],
   1.710 -[
   1.711 -###############################################################################
   1.712 -#
   1.713 -# Could someone enlighten this configure script with a comment about libCrun?
   1.714 -#
   1.715 -#
   1.716 -])

mercurial