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 -])