316 AC_SUBST(OPENJDK_TARGET_OS_API_DIR) 317 318 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then 319 A_LP64="LP64:=" 320 # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in 321 # unpack200.exe 322 if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xmacosx; then 323 ADD_LP64="-D_LP64=1" 324 fi 325 fi 326 AC_SUBST(LP64,$A_LP64) 327 328 if test "x$COMPILE_TYPE" = "xcross"; then 329 # FIXME: ... or should this include reduced builds..? 330 DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_TARGET_CPU_LEGACY" 331 else 332 DEFINE_CROSS_COMPILE_ARCH="" 333 fi 334 AC_SUBST(DEFINE_CROSS_COMPILE_ARCH) 335 336 # Some Zero and Shark settings. 337 # ZERO_ARCHFLAG tells the compiler which mode to build for 338 case "${OPENJDK_TARGET_CPU}" in 339 s390) 340 ZERO_ARCHFLAG="-m31" 341 ;; 342 *) 343 ZERO_ARCHFLAG="-m${OPENJDK_TARGET_CPU_BITS}" 344 esac 345 PLATFORM_COMPILER_CHECK_ARGUMENTS([$ZERO_ARCHFLAG], [], [ZERO_ARCHFLAG=""]) 346 AC_SUBST(ZERO_ARCHFLAG) 347 348 # ZERO_ARCHDEF is used to enable architecture-specific code 349 case "${OPENJDK_TARGET_CPU}" in 350 ppc*) ZERO_ARCHDEF=PPC ;; 351 s390*) ZERO_ARCHDEF=S390 ;; 352 sparc*) ZERO_ARCHDEF=SPARC ;; 353 x86_64*) ZERO_ARCHDEF=AMD64 ;; 354 x86) ZERO_ARCHDEF=IA32 ;; 355 *) ZERO_ARCHDEF=$(echo "${OPENJDK_TARGET_CPU_LEGACY_LIB}" | tr a-z A-Z) 356 esac 357 AC_SUBST(ZERO_ARCHDEF) 358 359 ]) 360 361 AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES], 362 [ 363 if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then 364 REQUIRED_OS_NAME=SunOS 365 REQUIRED_OS_VERSION=5.10 366 fi 367 if test "x$OPENJDK_TARGET_OS" = "xlinux"; then 401 PLATFORM_SETUP_TARGET_CPU_BITS 402 PLATFORM_SET_RELEASE_FILE_OS_VALUES 403 PLATFORM_SETUP_LEGACY_VARS 404 ]) 405 406 AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION], 407 [ 408 ############################################################################### 409 410 # Note that this is the build platform OS version! 411 412 OS_VERSION="`uname -r | ${SED} 's!\.! !g' | ${SED} 's!-! !g'`" 413 OS_VERSION_MAJOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 1 -d ' '`" 414 OS_VERSION_MINOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 2 -d ' '`" 415 OS_VERSION_MICRO="`${ECHO} ${OS_VERSION} | ${CUT} -f 3 -d ' '`" 416 AC_SUBST(OS_VERSION_MAJOR) 417 AC_SUBST(OS_VERSION_MINOR) 418 AC_SUBST(OS_VERSION_MICRO) 419 ]) 420 421 # PLATFORM_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE], 422 # [RUN-IF-FALSE]) 423 # ------------------------------------------------------------ 424 # Check that the c and c++ compilers support an argument 425 AC_DEFUN([PLATFORM_COMPILER_CHECK_ARGUMENTS], 426 [ 427 AC_MSG_CHECKING([if compiler supports "$1"]) 428 supports=yes 429 430 saved_cflags="$CFLAGS" 431 CFLAGS="$CFLAGS $1" 432 AC_LANG_PUSH([C]) 433 AC_COMPILE_IFELSE([ 434 AC_LANG_SOURCE([[int i;]]) 435 ], [], [supports=no]) 436 AC_LANG_POP([C]) 437 CFLAGS="$saved_cflags" 438 439 saved_cxxflags="$CXXFLAGS" 440 CXXFLAGS="$CXXFLAG $1" 441 AC_LANG_PUSH([C++]) 442 AC_COMPILE_IFELSE([ 443 AC_LANG_SOURCE([[int i;]]) 444 ], [], [supports=no]) 445 AC_LANG_POP([C++]) 446 CXXFLAGS="$saved_cxxflags" 447 448 AC_MSG_RESULT([$supports]) 449 if test "x$supports" = "xyes" ; then 450 m4_ifval([$2], [$2], [:]) 451 else 452 m4_ifval([$3], [$3], [:]) 453 fi 454 ]) 455 456 # Check that the compiler supports -mX flags 457 # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does 458 AC_DEFUN([PLATFORM_CHECK_COMPILER_TARGET_BITS_FLAGS], 459 [ 460 PLATFORM_COMPILER_CHECK_ARGUMENTS([-m${OPENJDK_TARGET_CPU_BITS}], 461 [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true], 462 [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false]) 463 AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG) 464 ]) 465 466 # Support macro for PLATFORM_SETUP_OPENJDK_TARGET_BITS. 467 # Add -mX to various FLAGS variables. 468 AC_DEFUN([PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS], 469 [ 470 # keep track of c/cxx flags that we added outselves... 471 # to prevent emitting warning... 472 ADDED_CFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}" 473 ADDED_CXXFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}" 474 ADDED_LDFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}" 475 476 CFLAGS="${CFLAGS}${ADDED_CFLAGS}" 477 CXXFLAGS="${CXXFLAGS}${ADDED_CXXFLAGS}" 478 LDFLAGS="${LDFLAGS}${ADDED_LDFLAGS}" 479 480 CFLAGS_JDK="${CFLAGS_JDK}${ADDED_CFLAGS}" 481 CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}" 482 LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}" 483 ]) 484 485 AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_BITS], 486 [ 487 ############################################################################### 488 # 489 # Now we check if libjvm.so will use 32 or 64 bit pointers for the C/C++ code. 490 # (The JVM can use 32 or 64 bit Java pointers but that decision 491 # is made at runtime.) 492 # 493 494 PLATFORM_CHECK_COMPILER_TARGET_BITS_FLAGS 495 496 if test "x$OPENJDK_TARGET_OS" = xsolaris; then 497 # Always specify -m flags on Solaris 498 PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS 499 elif test "x$COMPILE_TYPE" = xreduced; then 500 if test "x$OPENJDK_TARGET_OS" != xwindows; then 501 # Specify -m if running reduced on other Posix platforms 502 PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS 503 fi 504 fi 505 506 # Make compilation sanity check 507 AC_CHECK_HEADERS([stdio.h], , [ 508 AC_MSG_NOTICE([Failed to compile stdio.h. This likely implies missing compile dependencies.]) 509 if test "x$COMPILE_TYPE" = xreduced; then 510 AC_MSG_NOTICE([You are doing a reduced build. Check that you have 32-bit libraries installed.]) 511 elif test "x$COMPILE_TYPE" = xcross; then 512 AC_MSG_NOTICE([You are doing a cross-compilation. Check that you have all target platform libraries installed.]) 513 fi 514 AC_MSG_ERROR([Cannot continue.]) | 316 AC_SUBST(OPENJDK_TARGET_OS_API_DIR) 317 318 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then 319 A_LP64="LP64:=" 320 # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in 321 # unpack200.exe 322 if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xmacosx; then 323 ADD_LP64="-D_LP64=1" 324 fi 325 fi 326 AC_SUBST(LP64,$A_LP64) 327 328 if test "x$COMPILE_TYPE" = "xcross"; then 329 # FIXME: ... or should this include reduced builds..? 330 DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_TARGET_CPU_LEGACY" 331 else 332 DEFINE_CROSS_COMPILE_ARCH="" 333 fi 334 AC_SUBST(DEFINE_CROSS_COMPILE_ARCH) 335 336 # ZERO_ARCHDEF is used to enable architecture-specific code 337 case "${OPENJDK_TARGET_CPU}" in 338 ppc*) ZERO_ARCHDEF=PPC ;; 339 s390*) ZERO_ARCHDEF=S390 ;; 340 sparc*) ZERO_ARCHDEF=SPARC ;; 341 x86_64*) ZERO_ARCHDEF=AMD64 ;; 342 x86) ZERO_ARCHDEF=IA32 ;; 343 *) ZERO_ARCHDEF=$(echo "${OPENJDK_TARGET_CPU_LEGACY_LIB}" | tr a-z A-Z) 344 esac 345 AC_SUBST(ZERO_ARCHDEF) 346 347 ]) 348 349 AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES], 350 [ 351 if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then 352 REQUIRED_OS_NAME=SunOS 353 REQUIRED_OS_VERSION=5.10 354 fi 355 if test "x$OPENJDK_TARGET_OS" = "xlinux"; then 389 PLATFORM_SETUP_TARGET_CPU_BITS 390 PLATFORM_SET_RELEASE_FILE_OS_VALUES 391 PLATFORM_SETUP_LEGACY_VARS 392 ]) 393 394 AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION], 395 [ 396 ############################################################################### 397 398 # Note that this is the build platform OS version! 399 400 OS_VERSION="`uname -r | ${SED} 's!\.! !g' | ${SED} 's!-! !g'`" 401 OS_VERSION_MAJOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 1 -d ' '`" 402 OS_VERSION_MINOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 2 -d ' '`" 403 OS_VERSION_MICRO="`${ECHO} ${OS_VERSION} | ${CUT} -f 3 -d ' '`" 404 AC_SUBST(OS_VERSION_MAJOR) 405 AC_SUBST(OS_VERSION_MINOR) 406 AC_SUBST(OS_VERSION_MICRO) 407 ]) 408 409 # Support macro for PLATFORM_SETUP_OPENJDK_TARGET_BITS. 410 # Add -mX to various FLAGS variables. 411 AC_DEFUN([PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS], 412 [ 413 # keep track of c/cxx flags that we added outselves... 414 # to prevent emitting warning... 415 ADDED_CFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}" 416 ADDED_CXXFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}" 417 ADDED_LDFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}" 418 419 CFLAGS="${CFLAGS}${ADDED_CFLAGS}" 420 CXXFLAGS="${CXXFLAGS}${ADDED_CXXFLAGS}" 421 LDFLAGS="${LDFLAGS}${ADDED_LDFLAGS}" 422 423 CFLAGS_JDK="${CFLAGS_JDK}${ADDED_CFLAGS}" 424 CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}" 425 LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}" 426 ]) 427 428 AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_BITS], 429 [ 430 ############################################################################### 431 # 432 # Now we check if libjvm.so will use 32 or 64 bit pointers for the C/C++ code. 433 # (The JVM can use 32 or 64 bit Java pointers but that decision 434 # is made at runtime.) 435 # 436 437 if test "x$OPENJDK_TARGET_OS" = xsolaris; then 438 # Always specify -m flags on Solaris 439 PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS 440 elif test "x$COMPILE_TYPE" = xreduced; then 441 if test "x$OPENJDK_TARGET_OS" != xwindows; then 442 # Specify -m if running reduced on other Posix platforms 443 PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS 444 fi 445 fi 446 447 # Make compilation sanity check 448 AC_CHECK_HEADERS([stdio.h], , [ 449 AC_MSG_NOTICE([Failed to compile stdio.h. This likely implies missing compile dependencies.]) 450 if test "x$COMPILE_TYPE" = xreduced; then 451 AC_MSG_NOTICE([You are doing a reduced build. Check that you have 32-bit libraries installed.]) 452 elif test "x$COMPILE_TYPE" = xcross; then 453 AC_MSG_NOTICE([You are doing a cross-compilation. Check that you have all target platform libraries installed.]) 454 fi 455 AC_MSG_ERROR([Cannot continue.]) |