301 AC_SUBST(CC_OUT_OPTION) |
335 AC_SUBST(CC_OUT_OPTION) |
302 AC_SUBST(EXE_OUT_OPTION) |
336 AC_SUBST(EXE_OUT_OPTION) |
303 AC_SUBST(LD_OUT_OPTION) |
337 AC_SUBST(LD_OUT_OPTION) |
304 AC_SUBST(AR_OUT_OPTION) |
338 AC_SUBST(AR_OUT_OPTION) |
305 |
339 |
306 # On Windows, we need to set RC flags. |
|
307 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
308 RC_FLAGS="-nologo -l0x409" |
|
309 JVM_RCFLAGS="-nologo" |
|
310 if test "x$DEBUG_LEVEL" = xrelease; then |
|
311 RC_FLAGS="$RC_FLAGS -DNDEBUG" |
|
312 JVM_RCFLAGS="$JVM_RCFLAGS -DNDEBUG" |
|
313 fi |
|
314 |
|
315 # The version variables used to create RC_FLAGS may be overridden |
|
316 # in a custom configure script, or possibly the command line. |
|
317 # Let those variables be expanded at make time in spec.gmk. |
|
318 # The \$ are escaped to the shell, and the $(...) variables |
|
319 # are evaluated by make. |
|
320 RC_FLAGS="$RC_FLAGS \ |
|
321 -D\"JDK_VERSION_STRING=\$(VERSION_STRING)\" \ |
|
322 -D\"JDK_COMPANY=\$(COMPANY_NAME)\" \ |
|
323 -D\"JDK_COMPONENT=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) binary\" \ |
|
324 -D\"JDK_VER=\$(VERSION_NUMBER)\" \ |
|
325 -D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \ |
|
326 -D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_FEATURE)\" \ |
|
327 -D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\"" |
|
328 |
|
329 JVM_RCFLAGS="$JVM_RCFLAGS \ |
|
330 -D\"HS_BUILD_ID=\$(VERSION_STRING)\" \ |
|
331 -D\"HS_COMPANY=\$(COMPANY_NAME)\" \ |
|
332 -D\"JDK_DOTVER=\$(VERSION_NUMBER_FOUR_POSITIONS)\" \ |
|
333 -D\"HS_COPYRIGHT=Copyright $COPYRIGHT_YEAR\" \ |
|
334 -D\"HS_NAME=\$(PRODUCT_NAME) \$(VERSION_SHORT)\" \ |
|
335 -D\"JDK_VER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\" \ |
|
336 -D\"HS_FNAME=jvm.dll\" \ |
|
337 -D\"HS_INTERNAL_NAME=jvm\"" |
|
338 fi |
|
339 AC_SUBST(RC_FLAGS) |
|
340 AC_SUBST(JVM_RCFLAGS) |
|
341 |
|
342 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
343 # silence copyright notice and other headers. |
|
344 COMMON_CCXXFLAGS="$COMMON_CCXXFLAGS -nologo" |
|
345 fi |
|
346 ]) |
|
347 |
|
348 AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_LIBS], |
|
349 [ |
|
350 ############################################################################### |
|
351 # |
|
352 # How to compile shared libraries. |
|
353 # |
|
354 |
|
355 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
356 PICFLAG="-fPIC" |
|
357 C_FLAG_REORDER='' |
|
358 CXX_FLAG_REORDER='' |
|
359 |
|
360 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
|
361 # Linking is different on MacOSX |
|
362 if test "x$STATIC_BUILD" = xtrue; then |
|
363 SHARED_LIBRARY_FLAGS ='-undefined dynamic_lookup' |
|
364 else |
|
365 SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG" |
|
366 JVM_CFLAGS="$JVM_CFLAGS $PICFLAG" |
|
367 fi |
|
368 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path$(or [$]1,/.)' |
|
369 SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN" |
|
370 SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1' |
|
371 SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1' |
|
372 else |
|
373 # Default works for linux, might work on other platforms as well. |
|
374 SHARED_LIBRARY_FLAGS='-shared' |
|
375 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN[$]1' |
|
376 SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN" |
|
377 SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1' |
|
378 SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1' |
|
379 fi |
|
380 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
|
381 C_FLAG_REORDER='' |
|
382 CXX_FLAG_REORDER='' |
|
383 |
|
384 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
|
385 # Linking is different on MacOSX |
|
386 PICFLAG='' |
|
387 SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG" |
|
388 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path$(or [$]1,/.)' |
|
389 SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN" |
|
390 SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1' |
|
391 SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1' |
|
392 |
|
393 if test "x$STATIC_BUILD" = xfalse; then |
|
394 JVM_CFLAGS="$JVM_CFLAGS -fPIC" |
|
395 fi |
|
396 else |
|
397 # Default works for linux, might work on other platforms as well. |
|
398 PICFLAG='-fPIC' |
|
399 SHARED_LIBRARY_FLAGS='-shared' |
|
400 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN[$]1' |
|
401 SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1' |
|
402 SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1' |
|
403 |
|
404 # arm specific settings |
|
405 if test "x$OPENJDK_TARGET_CPU" = "xarm"; then |
|
406 # '-Wl,-z,origin' isn't used on arm. |
|
407 SET_SHARED_LIBRARY_ORIGIN='-Wl,-rpath,\$$$$ORIGIN[$]1' |
|
408 else |
|
409 SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN" |
|
410 fi |
|
411 |
|
412 fi |
|
413 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
414 if test "x$OPENJDK_TARGET_CPU" = xsparcv9; then |
|
415 PICFLAG="-xcode=pic32" |
|
416 else |
|
417 PICFLAG="-KPIC" |
|
418 fi |
|
419 C_FLAG_REORDER='-xF' |
|
420 CXX_FLAG_REORDER='-xF' |
|
421 SHARED_LIBRARY_FLAGS="-G" |
|
422 SET_EXECUTABLE_ORIGIN='-R\$$ORIGIN[$]1' |
|
423 SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN" |
|
424 SET_SHARED_LIBRARY_NAME='-h [$]1' |
|
425 SET_SHARED_LIBRARY_MAPFILE='-M[$]1' |
|
426 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
|
427 # '-qpic' defaults to 'qpic=small'. This means that the compiler generates only |
|
428 # one instruction for accessing the TOC. If the TOC grows larger than 64K, the linker |
|
429 # will have to patch this single instruction with a call to some out-of-order code which |
|
430 # does the load from the TOC. This is of course slow. But in that case we also would have |
|
431 # to use '-bbigtoc' for linking anyway so we could also change the PICFLAG to 'qpic=large'. |
|
432 # With 'qpic=large' the compiler will by default generate a two-instruction sequence which |
|
433 # can be patched directly by the linker and does not require a jump to out-of-order code. |
|
434 # Another alternative instead of using 'qpic=large -bbigtoc' may be to use '-qminimaltoc' |
|
435 # instead. This creates a distinct TOC for every compilation unit (and thus requires two |
|
436 # loads for accessing a global variable). But there are rumors that this may be seen as a |
|
437 # 'performance feature' because of improved code locality of the symbols used in a |
|
438 # compilation unit. |
|
439 PICFLAG="-qpic" |
|
440 JVM_CFLAGS="$JVM_CFLAGS $PICFLAG" |
|
441 C_FLAG_REORDER='' |
|
442 CXX_FLAG_REORDER='' |
|
443 SHARED_LIBRARY_FLAGS="-qmkshrobj -bM:SRE -bnoentry" |
|
444 SET_EXECUTABLE_ORIGIN="" |
|
445 SET_SHARED_LIBRARY_ORIGIN='' |
|
446 SET_SHARED_LIBRARY_NAME='' |
|
447 SET_SHARED_LIBRARY_MAPFILE='' |
|
448 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
449 PICFLAG="" |
|
450 C_FLAG_REORDER='' |
|
451 CXX_FLAG_REORDER='' |
|
452 SHARED_LIBRARY_FLAGS="-dll" |
|
453 SET_EXECUTABLE_ORIGIN='' |
|
454 SET_SHARED_LIBRARY_ORIGIN='' |
|
455 SET_SHARED_LIBRARY_NAME='' |
|
456 SET_SHARED_LIBRARY_MAPFILE='-def:[$]1' |
|
457 fi |
|
458 |
|
459 AC_SUBST(C_FLAG_REORDER) |
|
460 AC_SUBST(CXX_FLAG_REORDER) |
|
461 AC_SUBST(SET_EXECUTABLE_ORIGIN) |
|
462 AC_SUBST(SET_SHARED_LIBRARY_ORIGIN) |
|
463 AC_SUBST(SET_SHARED_LIBRARY_NAME) |
|
464 AC_SUBST(SET_SHARED_LIBRARY_MAPFILE) |
|
465 AC_SUBST(SHARED_LIBRARY_FLAGS) |
|
466 |
|
467 # The (cross) compiler is now configured, we can now test capabilities |
|
468 # of the target platform. |
|
469 ]) |
|
470 |
|
471 # Documentation on common flags used for solstudio in HIGHEST. |
|
472 # |
|
473 # WARNING: Use of OPTIMIZATION_LEVEL=HIGHEST in your Makefile needs to be |
|
474 # done with care, there are some assumptions below that need to |
|
475 # be understood about the use of pointers, and IEEE behavior. |
|
476 # |
|
477 # -fns: Use non-standard floating point mode (not IEEE 754) |
|
478 # -fsimple: Do some simplification of floating point arithmetic (not IEEE 754) |
|
479 # -fsingle: Use single precision floating point with 'float' |
|
480 # -xalias_level=basic: Assume memory references via basic pointer types do not alias |
|
481 # (Source with excessing pointer casting and data access with mixed |
|
482 # pointer types are not recommended) |
|
483 # -xbuiltin=%all: Use intrinsic or inline versions for math/std functions |
|
484 # (If you expect perfect errno behavior, do not use this) |
|
485 # -xdepend: Loop data dependency optimizations (need -xO3 or higher) |
|
486 # -xrestrict: Pointer parameters to functions do not overlap |
|
487 # (Similar to -xalias_level=basic usage, but less obvious sometimes. |
|
488 # If you pass in multiple pointers to the same data, do not use this) |
|
489 # -xlibmil: Inline some library routines |
|
490 # (If you expect perfect errno behavior, do not use this) |
|
491 # -xlibmopt: Use optimized math routines (CURRENTLY DISABLED) |
|
492 # (If you expect perfect errno behavior, do not use this) |
|
493 # Can cause undefined external on Solaris 8 X86 on __sincos, removing for now |
|
494 |
|
495 # FIXME: this will never happen since sparc != sparcv9, ie 32 bit, which we don't build anymore. |
|
496 # Bug? |
|
497 #if test "x$OPENJDK_TARGET_CPU" = xsparc; then |
|
498 # CFLAGS_JDK="${CFLAGS_JDK} -xmemalign=4s" |
|
499 # CXXFLAGS_JDK="${CXXFLAGS_JDK} -xmemalign=4s" |
|
500 #fi |
|
501 |
|
502 AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_OPTIMIZATION], |
|
503 [ |
|
504 |
|
505 ############################################################################### |
|
506 # |
|
507 # Setup the opt flags for different compilers |
|
508 # and different operating systems. |
|
509 # |
|
510 |
|
511 # FIXME: this was indirectly the old default, but just inherited. |
|
512 # if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
513 # C_FLAG_DEPS="-MMD -MF" |
|
514 # fi |
|
515 |
|
516 # Generate make dependency files |
340 # Generate make dependency files |
517 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
341 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
518 C_FLAG_DEPS="-MMD -MF" |
342 C_FLAG_DEPS="-MMD -MF" |
519 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
343 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
520 C_FLAG_DEPS="-MMD -MF" |
344 C_FLAG_DEPS="-MMD -MF" |
524 C_FLAG_DEPS="-qmakedep=gcc -MF" |
348 C_FLAG_DEPS="-qmakedep=gcc -MF" |
525 fi |
349 fi |
526 CXX_FLAG_DEPS="$C_FLAG_DEPS" |
350 CXX_FLAG_DEPS="$C_FLAG_DEPS" |
527 AC_SUBST(C_FLAG_DEPS) |
351 AC_SUBST(C_FLAG_DEPS) |
528 AC_SUBST(CXX_FLAG_DEPS) |
352 AC_SUBST(CXX_FLAG_DEPS) |
529 |
353 ]) |
530 # Debug symbols |
354 |
531 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
355 AC_DEFUN_ONCE([FLAGS_POST_TOOLCHAIN], |
532 if test "x$OPENJDK_TARGET_CPU_BITS" = "x64" && test "x$DEBUG_LEVEL" = "xfastdebug"; then |
356 [ |
533 # reduce from default "-g2" option to save space |
357 FLAGS_SETUP_TOOLCHAIN_CONTROL |
534 CFLAGS_DEBUG_SYMBOLS="-g1" |
358 |
535 CXXFLAGS_DEBUG_SYMBOLS="-g1" |
359 if test "x$BUILD_SYSROOT" != x; then |
536 else |
360 FLAGS_SETUP_SYSROOT_FLAGS([BUILD_]) |
537 CFLAGS_DEBUG_SYMBOLS="-g" |
361 else |
538 CXXFLAGS_DEBUG_SYMBOLS="-g" |
362 BUILD_SYSROOT_CFLAGS="$SYSROOT_CFLAGS" |
539 fi |
363 BUILD_SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS" |
540 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
364 fi |
541 CFLAGS_DEBUG_SYMBOLS="-g" |
365 AC_SUBST(BUILD_SYSROOT_CFLAGS) |
542 CXXFLAGS_DEBUG_SYMBOLS="-g" |
366 AC_SUBST(BUILD_SYSROOT_LDFLAGS) |
543 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
367 |
544 CFLAGS_DEBUG_SYMBOLS="-g -xs" |
368 ]) |
545 # -g0 enables debug symbols without disabling inlining. |
369 |
546 CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs" |
370 AC_DEFUN([FLAGS_SETUP_FLAGS], |
547 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
371 [ |
548 CFLAGS_DEBUG_SYMBOLS="-g" |
372 FLAGS_SETUP_MACOSX_VERSION |
549 CXXFLAGS_DEBUG_SYMBOLS="-g" |
|
550 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
551 CFLAGS_DEBUG_SYMBOLS="-Zi" |
|
552 CXXFLAGS_DEBUG_SYMBOLS="-Zi" |
|
553 fi |
|
554 AC_SUBST(CFLAGS_DEBUG_SYMBOLS) |
|
555 AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS) |
|
556 |
|
557 # Debug symbols for JVM_CFLAGS |
|
558 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
559 JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -xs" |
|
560 if test "x$DEBUG_LEVEL" = xslowdebug; then |
|
561 JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g" |
|
562 else |
|
563 # -g0 does not disable inlining, which -g does. |
|
564 JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g0" |
|
565 fi |
|
566 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
567 JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -Z7 -d2Zi+" |
|
568 else |
|
569 JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g" |
|
570 fi |
|
571 AC_SUBST(JVM_CFLAGS_SYMBOLS) |
|
572 |
|
573 # bounds, memory and behavior checking options |
|
574 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
575 case $DEBUG_LEVEL in |
|
576 release ) |
|
577 # no adjustment |
|
578 ;; |
|
579 fastdebug ) |
|
580 # no adjustment |
|
581 ;; |
|
582 slowdebug ) |
|
583 # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS/JVM_CFLAGS_SYMBOLS it |
|
584 # get's added conditionally on whether we produce debug symbols or not. |
|
585 # This is most likely not really correct. |
|
586 |
|
587 # Add runtime stack smashing and undefined behavior checks. |
|
588 # Not all versions of gcc support -fstack-protector |
|
589 STACK_PROTECTOR_CFLAG="-fstack-protector-all" |
|
590 FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$STACK_PROTECTOR_CFLAG -Werror], IF_FALSE: [STACK_PROTECTOR_CFLAG=""]) |
|
591 |
|
592 CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1" |
|
593 CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1" |
|
594 if test "x$STACK_PROTECTOR_CFLAG" != x; then |
|
595 JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS $STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1" |
|
596 fi |
|
597 ;; |
|
598 esac |
|
599 fi |
|
600 |
|
601 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
602 if test "x$DEBUG_LEVEL" != xrelease; then |
|
603 if test "x$OPENJDK_TARGET_CPU" = xx86_64; then |
|
604 JVM_CFLAGS="$JVM_CFLAGS -homeparams" |
|
605 fi |
|
606 fi |
|
607 fi |
|
608 |
|
609 # Optimization levels |
|
610 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
611 CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil" |
|
612 |
|
613 if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then |
|
614 # FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global? |
|
615 C_O_FLAG_HIGHEST_JVM="-xO4" |
|
616 C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -xregs=no%frameptr" |
|
617 C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr" |
|
618 C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr" |
|
619 C_O_FLAG_DEBUG="-xregs=no%frameptr" |
|
620 C_O_FLAG_DEBUG_JVM="" |
|
621 C_O_FLAG_NONE="-xregs=no%frameptr" |
|
622 CXX_O_FLAG_HIGHEST_JVM="-xO4" |
|
623 CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr" |
|
624 CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr" |
|
625 CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz -xregs=no%frameptr" |
|
626 CXX_O_FLAG_DEBUG="-xregs=no%frameptr" |
|
627 CXX_O_FLAG_DEBUG_JVM="" |
|
628 CXX_O_FLAG_NONE="-xregs=no%frameptr" |
|
629 if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then |
|
630 C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium" |
|
631 CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium" |
|
632 fi |
|
633 elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then |
|
634 C_O_FLAG_HIGHEST_JVM="-xO4" |
|
635 C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xalias_level=basic -xprefetch=auto,explicit -xchip=ultra" |
|
636 C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0" |
|
637 C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0" |
|
638 C_O_FLAG_DEBUG="" |
|
639 C_O_FLAG_DEBUG_JVM="" |
|
640 C_O_FLAG_NONE="" |
|
641 CXX_O_FLAG_HIGHEST_JVM="-xO4" |
|
642 CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra" |
|
643 CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0" |
|
644 CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0" |
|
645 CXX_O_FLAG_DEBUG="" |
|
646 CXX_O_FLAG_DEBUG_JVM="" |
|
647 CXX_O_FLAG_NONE="" |
|
648 fi |
|
649 else |
|
650 # The remaining toolchains share opt flags between CC and CXX; |
|
651 # setup for C and duplicate afterwards. |
|
652 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
653 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
|
654 # On MacOSX we optimize for size, something |
|
655 # we should do for all platforms? |
|
656 C_O_FLAG_HIGHEST_JVM="-Os" |
|
657 C_O_FLAG_HIGHEST="-Os" |
|
658 C_O_FLAG_HI="-Os" |
|
659 C_O_FLAG_NORM="-Os" |
|
660 C_O_FLAG_SIZE="-Os" |
|
661 else |
|
662 C_O_FLAG_HIGHEST_JVM="-O3" |
|
663 C_O_FLAG_HIGHEST="-O3" |
|
664 C_O_FLAG_HI="-O3" |
|
665 C_O_FLAG_NORM="-O2" |
|
666 C_O_FLAG_SIZE="-Os" |
|
667 fi |
|
668 C_O_FLAG_DEBUG="-O0" |
|
669 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
|
670 C_O_FLAG_DEBUG_JVM="" |
|
671 elif test "x$OPENJDK_TARGET_OS" = xlinux; then |
|
672 C_O_FLAG_DEBUG_JVM="-O0" |
|
673 fi |
|
674 C_O_FLAG_NONE="-O0" |
|
675 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
|
676 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
|
677 # On MacOSX we optimize for size, something |
|
678 # we should do for all platforms? |
|
679 C_O_FLAG_HIGHEST_JVM="-Os" |
|
680 C_O_FLAG_HIGHEST="-Os" |
|
681 C_O_FLAG_HI="-Os" |
|
682 C_O_FLAG_NORM="-Os" |
|
683 C_O_FLAG_SIZE="-Os" |
|
684 else |
|
685 C_O_FLAG_HIGHEST_JVM="-O3" |
|
686 C_O_FLAG_HIGHEST="-O3" |
|
687 C_O_FLAG_HI="-O3" |
|
688 C_O_FLAG_NORM="-O2" |
|
689 C_O_FLAG_SIZE="-Os" |
|
690 fi |
|
691 C_O_FLAG_DEBUG="-O0" |
|
692 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
|
693 C_O_FLAG_DEBUG_JVM="" |
|
694 elif test "x$OPENJDK_TARGET_OS" = xlinux; then |
|
695 C_O_FLAG_DEBUG_JVM="-O0" |
|
696 fi |
|
697 C_O_FLAG_NONE="-O0" |
|
698 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
|
699 C_O_FLAG_HIGHEST_JVM="-O3 -qhot=level=1 -qinline -qinlglue" |
|
700 C_O_FLAG_HIGHEST="-O3 -qhot=level=1 -qinline -qinlglue" |
|
701 C_O_FLAG_HI="-O3 -qinline -qinlglue" |
|
702 C_O_FLAG_NORM="-O2" |
|
703 C_O_FLAG_DEBUG="-qnoopt" |
|
704 # FIXME: Value below not verified. |
|
705 C_O_FLAG_DEBUG_JVM="" |
|
706 C_O_FLAG_NONE="-qnoopt" |
|
707 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
708 C_O_FLAG_HIGHEST_JVM="-O2 -Oy-" |
|
709 C_O_FLAG_HIGHEST="-O2" |
|
710 C_O_FLAG_HI="-O1" |
|
711 C_O_FLAG_NORM="-O1" |
|
712 C_O_FLAG_DEBUG="-Od" |
|
713 C_O_FLAG_DEBUG_JVM="" |
|
714 C_O_FLAG_NONE="-Od" |
|
715 C_O_FLAG_SIZE="-Os" |
|
716 fi |
|
717 CXX_O_FLAG_HIGHEST_JVM="$C_O_FLAG_HIGHEST_JVM" |
|
718 CXX_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST" |
|
719 CXX_O_FLAG_HI="$C_O_FLAG_HI" |
|
720 CXX_O_FLAG_NORM="$C_O_FLAG_NORM" |
|
721 CXX_O_FLAG_DEBUG="$C_O_FLAG_DEBUG" |
|
722 CXX_O_FLAG_DEBUG_JVM="$C_O_FLAG_DEBUG_JVM" |
|
723 CXX_O_FLAG_NONE="$C_O_FLAG_NONE" |
|
724 CXX_O_FLAG_SIZE="$C_O_FLAG_SIZE" |
|
725 fi |
|
726 |
|
727 # Adjust optimization flags according to debug level. |
|
728 case $DEBUG_LEVEL in |
|
729 release ) |
|
730 # no adjustment |
|
731 ;; |
|
732 fastdebug ) |
|
733 # Not quite so much optimization |
|
734 C_O_FLAG_HI="$C_O_FLAG_NORM" |
|
735 CXX_O_FLAG_HI="$CXX_O_FLAG_NORM" |
|
736 ;; |
|
737 slowdebug ) |
|
738 # Disable optimization |
|
739 C_O_FLAG_HIGHEST_JVM="$C_O_FLAG_DEBUG_JVM" |
|
740 C_O_FLAG_HIGHEST="$C_O_FLAG_DEBUG" |
|
741 C_O_FLAG_HI="$C_O_FLAG_DEBUG" |
|
742 C_O_FLAG_NORM="$C_O_FLAG_DEBUG" |
|
743 C_O_FLAG_SIZE="$C_O_FLAG_DEBUG" |
|
744 CXX_O_FLAG_HIGHEST_JVM="$CXX_O_FLAG_DEBUG_JVM" |
|
745 CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_DEBUG" |
|
746 CXX_O_FLAG_HI="$CXX_O_FLAG_DEBUG" |
|
747 CXX_O_FLAG_NORM="$CXX_O_FLAG_DEBUG" |
|
748 CXX_O_FLAG_SIZE="$CXX_O_FLAG_DEBUG" |
|
749 ;; |
|
750 esac |
|
751 |
|
752 AC_SUBST(C_O_FLAG_HIGHEST_JVM) |
|
753 AC_SUBST(C_O_FLAG_HIGHEST) |
|
754 AC_SUBST(C_O_FLAG_HI) |
|
755 AC_SUBST(C_O_FLAG_NORM) |
|
756 AC_SUBST(C_O_FLAG_DEBUG) |
|
757 AC_SUBST(C_O_FLAG_NONE) |
|
758 AC_SUBST(C_O_FLAG_SIZE) |
|
759 AC_SUBST(CXX_O_FLAG_HIGHEST_JVM) |
|
760 AC_SUBST(CXX_O_FLAG_HIGHEST) |
|
761 AC_SUBST(CXX_O_FLAG_HI) |
|
762 AC_SUBST(CXX_O_FLAG_NORM) |
|
763 AC_SUBST(CXX_O_FLAG_DEBUG) |
|
764 AC_SUBST(CXX_O_FLAG_NONE) |
|
765 AC_SUBST(CXX_O_FLAG_SIZE) |
|
766 ]) |
|
767 |
|
768 |
|
769 AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK], |
|
770 [ |
|
771 |
|
772 FLAGS_SETUP_ABI_PROFILE |
373 FLAGS_SETUP_ABI_PROFILE |
773 |
374 |
774 # Optional POSIX functionality needed by the JVM |
375 FLAGS_SETUP_SHARED_LIBS |
775 # |
376 FLAGS_SETUP_DEBUG_SYMBOLS |
776 # Check if clock_gettime is available and in which library. This indicates |
377 FLAGS_SETUP_WARNINGS |
777 # availability of CLOCK_MONOTONIC for hotspot. But we don't need to link, so |
378 FLAGS_SETUP_QUALITY_CHECKS |
778 # don't let it update LIBS. |
379 FLAGS_SETUP_OPTIMIZATION |
779 save_LIBS="$LIBS" |
380 |
780 AC_SEARCH_LIBS(clock_gettime, rt, [HAS_CLOCK_GETTIME=true], []) |
381 FLAGS_SETUP_CFLAGS |
781 if test "x$LIBS" = "x-lrt "; then |
382 FLAGS_SETUP_LDFLAGS |
782 CLOCK_GETTIME_IN_LIBRT=true |
383 |
783 fi |
384 FLAGS_SETUP_ARFLAGS |
784 LIBS="$save_LIBS" |
385 FLAGS_SETUP_STRIPFLAGS |
785 |
386 FLAGS_SETUP_RCFLAGS |
786 FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([TARGET]) |
387 |
787 FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([BUILD], [OPENJDK_BUILD_]) |
388 FLAGS_SETUP_ASFLAGS |
788 |
389 FLAGS_SETUP_ASFLAGS_CPU_DEP([TARGET]) |
789 # Tests are only ever compiled for TARGET |
390 FLAGS_SETUP_ASFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_]) |
790 # Flags for compiling test libraries |
|
791 CFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA" |
|
792 CXXFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA" |
|
793 |
|
794 # Flags for compiling test executables |
|
795 CFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK" |
|
796 CXXFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK" |
|
797 |
|
798 AC_SUBST(CFLAGS_TESTLIB) |
|
799 AC_SUBST(CFLAGS_TESTEXE) |
|
800 AC_SUBST(CXXFLAGS_TESTLIB) |
|
801 AC_SUBST(CXXFLAGS_TESTEXE) |
|
802 |
|
803 LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB" |
|
804 LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE $JAVA_BASE_LDFLAGS" |
|
805 |
|
806 AC_SUBST(LDFLAGS_TESTLIB) |
|
807 AC_SUBST(LDFLAGS_TESTEXE) |
|
808 |
|
809 ]) |
|
810 |
|
811 ################################################################################ |
|
812 # $1 - Either BUILD or TARGET to pick the correct OS/CPU variables to check |
|
813 # conditionals against. |
|
814 # $2 - Optional prefix for each variable defined. |
|
815 AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER], |
|
816 [ |
|
817 # Special extras... |
|
818 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
819 if test "x$OPENJDK_$1_CPU_ARCH" = "xsparc"; then |
|
820 $2CFLAGS_JDKLIB_EXTRA="${$2CFLAGS_JDKLIB_EXTRA} -xregs=no%appl" |
|
821 $2CXXFLAGS_JDKLIB_EXTRA="${$2CXXFLAGS_JDKLIB_EXTRA} -xregs=no%appl" |
|
822 fi |
|
823 $2CFLAGS_JDKLIB_EXTRA="${$2CFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt" |
|
824 $2CXXFLAGS_JDKLIB_EXTRA="${$2CXXFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt" |
|
825 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
|
826 $2CFLAGS_JDK="${$2CFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt" |
|
827 $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt" |
|
828 elif test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
829 $2CXXSTD_CXXFLAG="-std=gnu++98" |
|
830 FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [[$]$2CXXSTD_CXXFLAG -Werror], |
|
831 IF_FALSE: [$2CXXSTD_CXXFLAG=""]) |
|
832 $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2CXXSTD_CXXFLAG}" |
|
833 $2JVM_CFLAGS="${$2JVM_CFLAGS} ${$2CXXSTD_CXXFLAG}" |
|
834 AC_SUBST($2CXXSTD_CXXFLAG) |
|
835 fi |
|
836 if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
|
837 $2CFLAGS_JDK="${$2CFLAGS_JDK} -D__solaris__" |
|
838 $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} -D__solaris__" |
|
839 fi |
|
840 |
|
841 $2CFLAGS_JDK="${$2CFLAGS_JDK} ${$2EXTRA_CFLAGS}" |
|
842 $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2EXTRA_CXXFLAGS}" |
|
843 $2LDFLAGS_JDK="${$2LDFLAGS_JDK} ${$2EXTRA_LDFLAGS}" |
|
844 |
|
845 ############################################################################### |
|
846 # |
|
847 # Now setup the CFLAGS and LDFLAGS for the JDK build. |
|
848 # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build. |
|
849 # |
|
850 |
|
851 # Setup compiler/platform specific flags into |
|
852 # $2CFLAGS_JDK - C Compiler flags |
|
853 # $2CXXFLAGS_JDK - C++ Compiler flags |
|
854 # $2COMMON_CCXXFLAGS_JDK - common to C and C++ |
|
855 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
856 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_GNU_SOURCE" |
|
857 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_REENTRANT" |
|
858 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -fcheck-new" |
|
859 if test "x$OPENJDK_$1_CPU" = xx86; then |
|
860 # Force compatibility with i586 on 32 bit intel platforms. |
|
861 $2COMMON_CCXXFLAGS="${$2COMMON_CCXXFLAGS} -march=i586" |
|
862 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -march=i586" |
|
863 fi |
|
864 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \ |
|
865 -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE" |
|
866 case $OPENJDK_$1_CPU_ARCH in |
|
867 arm ) |
|
868 # on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing |
|
869 $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" |
|
870 $2COMMON_CCXXFLAGS_JDK="${$2COMMON_CCXXFLAGS_JDK} -fsigned-char" |
|
871 ;; |
|
872 ppc ) |
|
873 # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing |
|
874 $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" |
|
875 ;; |
|
876 s390 ) |
|
877 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer -mbackchain -march=z10" |
|
878 $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" |
|
879 ;; |
|
880 * ) |
|
881 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer" |
|
882 $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" |
|
883 ;; |
|
884 esac |
|
885 TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($2)) |
|
886 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
|
887 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_GNU_SOURCE" |
|
888 |
|
889 # Restrict the debug information created by Clang to avoid |
|
890 # too big object files and speed the build up a little bit |
|
891 # (see http://llvm.org/bugs/show_bug.cgi?id=7554) |
|
892 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -flimit-debug-info" |
|
893 if test "x$OPENJDK_$1_OS" = xlinux; then |
|
894 if test "x$OPENJDK_$1_CPU" = xx86; then |
|
895 # Force compatibility with i586 on 32 bit intel platforms. |
|
896 $2COMMON_CCXXFLAGS="${$2COMMON_CCXXFLAGS} -march=i586" |
|
897 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -march=i586" |
|
898 fi |
|
899 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wno-sometimes-uninitialized" |
|
900 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \ |
|
901 -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE" |
|
902 case $OPENJDK_$1_CPU_ARCH in |
|
903 ppc ) |
|
904 # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing |
|
905 $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" |
|
906 ;; |
|
907 * ) |
|
908 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer" |
|
909 $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" |
|
910 ;; |
|
911 esac |
|
912 fi |
|
913 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
914 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DSPARC_WORKS" |
|
915 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS" |
|
916 if test "x$OPENJDK_$1_CPU_ARCH" = xx86; then |
|
917 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_$1_CPU_LEGACY_LIB" |
|
918 fi |
|
919 |
|
920 $2CFLAGS_JDK="[$]$2CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal" |
|
921 $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib" |
|
922 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
|
923 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_REENTRANT" |
|
924 $2CFLAGS_JDK="[$]$2CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" |
|
925 $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" |
|
926 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
927 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK \ |
|
928 -MD -Zc:wchar_t- -W3 -wd4800 \ |
|
929 -DWIN32_LEAN_AND_MEAN \ |
|
930 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \ |
|
931 -DWIN32 -DIAL" |
|
932 if test "x$OPENJDK_$1_CPU" = xx86_64; then |
|
933 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64" |
|
934 else |
|
935 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86" |
|
936 fi |
|
937 # If building with Visual Studio 2010, we can still use _STATIC_CPPLIB to |
|
938 # avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual |
|
939 # studio. |
|
940 if test "x$TOOLCHAIN_VERSION" = "x2010"; then |
|
941 STATIC_CPPLIB_FLAGS="-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB" |
|
942 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS" |
|
943 $2JVM_CFLAGS="[$]$2JVM_CFLAGS $STATIC_CPPLIB_FLAGS" |
|
944 fi |
|
945 fi |
|
946 |
|
947 ############################################################################### |
|
948 |
|
949 # Adjust flags according to debug level. |
|
950 case $DEBUG_LEVEL in |
|
951 fastdebug | slowdebug ) |
|
952 $2CFLAGS_JDK="[$]$2CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS $CFLAGS_DEBUG_OPTIONS" |
|
953 $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS $CXXFLAGS_DEBUG_OPTIONS" |
|
954 ;; |
|
955 release ) |
|
956 ;; |
|
957 * ) |
|
958 AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL]) |
|
959 ;; |
|
960 esac |
|
961 |
|
962 # Set some common defines. These works for all compilers, but assume |
|
963 # -D is universally accepted. |
|
964 |
|
965 # Setup endianness |
|
966 if test "x$OPENJDK_$1_CPU_ENDIAN" = xlittle; then |
|
967 # The macro _LITTLE_ENDIAN needs to be defined the same to avoid the |
|
968 # Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN |
|
969 # (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h). |
|
970 # Note: -Dmacro is the same as #define macro 1 |
|
971 # -Dmacro= is the same as #define macro |
|
972 if test "x$OPENJDK_$1_OS" = xsolaris; then |
|
973 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN=" |
|
974 else |
|
975 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN" |
|
976 fi |
|
977 else |
|
978 # Same goes for _BIG_ENDIAN. Do we really need to set *ENDIAN on Solaris if they |
|
979 # are defined in the system? |
|
980 if test "x$OPENJDK_$1_OS" = xsolaris; then |
|
981 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN=" |
|
982 else |
|
983 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN" |
|
984 fi |
|
985 fi |
|
986 |
|
987 # Always enable optional macros for VM. |
|
988 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D__STDC_FORMAT_MACROS" |
|
989 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D__STDC_LIMIT_MACROS" |
|
990 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D__STDC_CONSTANT_MACROS" |
|
991 |
|
992 # Setup target OS define. Use OS target name but in upper case. |
|
993 OPENJDK_$1_OS_UPPERCASE=`$ECHO $OPENJDK_$1_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` |
|
994 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D$OPENJDK_$1_OS_UPPERCASE" |
|
995 |
|
996 # Setup target CPU |
|
997 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \ |
|
998 $OPENJDK_$1_ADD_LP64 \ |
|
999 -DARCH='\"$OPENJDK_$1_CPU_LEGACY\"' -D$OPENJDK_$1_CPU_LEGACY" |
|
1000 |
|
1001 # Setup debug/release defines |
|
1002 if test "x$DEBUG_LEVEL" = xrelease; then |
|
1003 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DNDEBUG" |
|
1004 if test "x$OPENJDK_$1_OS" = xsolaris; then |
|
1005 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DTRIMMED" |
|
1006 fi |
|
1007 else |
|
1008 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DDEBUG" |
|
1009 fi |
|
1010 |
|
1011 # Optional POSIX functionality needed by the VM |
|
1012 |
|
1013 if test "x$HAS_CLOCK_GETTIME" = "xtrue"; then |
|
1014 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DSUPPORTS_CLOCK_MONOTONIC" |
|
1015 if test "x$CLOCK_GETTIME_IN_LIBRT" = "xtrue"; then |
|
1016 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DNEEDS_LIBRT" |
|
1017 fi |
|
1018 fi |
|
1019 |
|
1020 |
|
1021 # Set some additional per-OS defines. |
|
1022 if test "x$OPENJDK_$1_OS" = xlinux; then |
|
1023 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DLINUX" |
|
1024 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -pipe $PICFLAG -fno-rtti -fno-exceptions \ |
|
1025 -fvisibility=hidden -fno-strict-aliasing -fno-omit-frame-pointer" |
|
1026 elif test "x$OPENJDK_$1_OS" = xsolaris; then |
|
1027 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DSOLARIS" |
|
1028 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -template=no%extdef -features=no%split_init \ |
|
1029 -D_Crun_inline_placement -library=stlport4 $PICFLAG -mt -features=no%except" |
|
1030 elif test "x$OPENJDK_$1_OS" = xmacosx; then |
|
1031 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" |
|
1032 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_ALLBSD_SOURCE" |
|
1033 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE" |
|
1034 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \ |
|
1035 -mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \ |
|
1036 -fno-omit-frame-pointer" |
|
1037 elif test "x$OPENJDK_$1_OS" = xaix; then |
|
1038 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DAIX" |
|
1039 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qtune=balanced \ |
|
1040 -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \ |
|
1041 -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno" |
|
1042 # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows. |
|
1043 # Hotspot now overflows its 64K TOC (currently only for debug), |
|
1044 # so for debug we build with '-qpic=large -bbigtoc'. |
|
1045 if test "x$DEBUG_LEVEL" = xslowdebug || test "x$DEBUG_LEVEL" = xfastdebug; then |
|
1046 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qpic=large" |
|
1047 fi |
|
1048 elif test "x$OPENJDK_$1_OS" = xbsd; then |
|
1049 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE" |
|
1050 elif test "x$OPENJDK_$1_OS" = xwindows; then |
|
1051 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_" |
|
1052 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -nologo -W3 -MD -MP" |
|
1053 fi |
|
1054 |
|
1055 # Set some additional per-CPU defines. |
|
1056 if test "x$OPENJDK_$1_OS-$OPENJDK_$1_CPU" = xwindows-x86; then |
|
1057 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -arch:IA32" |
|
1058 elif test "x$OPENJDK_$1_OS-$OPENJDK_$1_CPU" = xsolaris-sparcv9; then |
|
1059 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -xarch=sparc" |
|
1060 elif test "x$OPENJDK_$1_CPU" = xppc64; then |
|
1061 if test "x$OPENJDK_$1_OS" = xlinux; then |
|
1062 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string" |
|
1063 # fixes `relocation truncated to fit' error for gcc 4.1. |
|
1064 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mminimal-toc" |
|
1065 # Use ppc64 instructions, but schedule for power5 |
|
1066 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mcpu=powerpc64 -mtune=power5" |
|
1067 elif test "x$OPENJDK_$1_OS" = xaix; then |
|
1068 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qarch=ppc64" |
|
1069 fi |
|
1070 elif test "x$OPENJDK_$1_CPU" = xppc64le; then |
|
1071 if test "x$OPENJDK_$1_OS" = xlinux; then |
|
1072 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string" |
|
1073 # Little endian machine uses ELFv2 ABI. |
|
1074 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DABI_ELFv2" |
|
1075 # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI. |
|
1076 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mcpu=power8 -mtune=power8" |
|
1077 fi |
|
1078 elif test "x$OPENJDK_$1_CPU" = xs390x; then |
|
1079 if test "x$OPENJDK_$1_OS" = xlinux; then |
|
1080 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mbackchain -march=z10" |
|
1081 fi |
|
1082 fi |
|
1083 |
|
1084 if test "x$OPENJDK_$1_CPU_ENDIAN" = xlittle; then |
|
1085 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DVM_LITTLE_ENDIAN" |
|
1086 fi |
|
1087 |
|
1088 if test "x$OPENJDK_$1_CPU_BITS" = x64; then |
|
1089 if test "x$OPENJDK_$1_OS" != xsolaris && test "x$OPENJDK_$1_OS" != xaix; then |
|
1090 # Solaris does not have _LP64=1 in the old build. |
|
1091 # xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it. |
|
1092 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_LP64=1" |
|
1093 fi |
|
1094 fi |
|
1095 |
|
1096 # Set $2JVM_CFLAGS warning handling |
|
1097 if test "x$OPENJDK_$1_OS" = xlinux; then |
|
1098 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wpointer-arith -Wsign-compare -Wunused-function \ |
|
1099 -Wunused-value -Woverloaded-virtual" |
|
1100 |
|
1101 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
1102 TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: [4.8], PREFIX: $2, |
|
1103 IF_AT_LEAST: [ |
|
1104 # These flags either do not work or give spurious warnings prior to gcc 4.8. |
|
1105 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wno-format-zero-length -Wtype-limits -Wuninitialized" |
|
1106 ] |
|
1107 ) |
|
1108 fi |
|
1109 if ! HOTSPOT_CHECK_JVM_VARIANT(zero); then |
|
1110 # Non-zero builds have stricter warnings |
|
1111 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wreturn-type -Wundef -Wformat=2" |
|
1112 else |
|
1113 if test "x$TOOLCHAIN_TYPE" = xclang; then |
|
1114 # Some versions of llvm do not like -Wundef |
|
1115 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wno-undef" |
|
1116 fi |
|
1117 fi |
|
1118 elif test "x$OPENJDK_$1_OS" = xmacosx; then |
|
1119 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wno-deprecated -Wpointer-arith \ |
|
1120 -Wsign-compare -Wundef -Wunused-function -Wformat=2" |
|
1121 fi |
|
1122 |
|
1123 # Additional macosx handling |
|
1124 if test "x$OPENJDK_$1_OS" = xmacosx; then |
|
1125 # MACOSX_VERSION_MIN specifies the lowest version of Macosx that the built |
|
1126 # binaries should be compatible with, even if compiled on a newer version |
|
1127 # of the OS. It currently has a hard coded value. Setting this also limits |
|
1128 # exposure to API changes in header files. Bumping this is likely to |
|
1129 # require code changes to build. |
|
1130 MACOSX_VERSION_MIN=10.7.0 |
|
1131 AC_SUBST(MACOSX_VERSION_MIN) |
|
1132 |
|
1133 # Setting --with-macosx-version-max=<version> makes it an error to build or |
|
1134 # link to macosx APIs that are newer than the given OS version. The expected |
|
1135 # format for <version> is either nn.n.n or nn.nn.nn. See /usr/include/AvailabilityMacros.h. |
|
1136 AC_ARG_WITH([macosx-version-max], [AS_HELP_STRING([--with-macosx-version-max], |
|
1137 [error on use of newer functionality. @<:@macosx@:>@])], |
|
1138 [ |
|
1139 if echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]]\.[[0-9]]\$"; then |
|
1140 MACOSX_VERSION_MAX=$with_macosx_version_max |
|
1141 elif echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]][[0-9]]\.[[0-9]][[0-9]]\$"; then |
|
1142 MACOSX_VERSION_MAX=$with_macosx_version_max |
|
1143 elif test "x$with_macosx_version_max" = "xno"; then |
|
1144 # Use build system default |
|
1145 MACOSX_VERSION_MAX= |
|
1146 else |
|
1147 AC_MSG_ERROR([osx version format must be nn.n.n or nn.nn.nn]) |
|
1148 fi |
|
1149 ], |
|
1150 [MACOSX_VERSION_MAX=] |
|
1151 ) |
|
1152 AC_SUBST(MACOSX_VERSION_MAX) |
|
1153 |
|
1154 # Let the flags variables get resolved in make for easier override on make |
|
1155 # command line. AvailabilityMacros.h versions have no dots, ex: 1070. |
|
1156 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \ |
|
1157 -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \ |
|
1158 -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
|
1159 $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
|
1160 $2JVM_CFLAGS="[$]$2JVM_CFLAGS \ |
|
1161 -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \ |
|
1162 -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
|
1163 $2ARFLAGS="$2$ARFLAGS -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
|
1164 |
|
1165 if test -n "$MACOSX_VERSION_MAX"; then |
|
1166 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \ |
|
1167 -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))" |
|
1168 $2JVM_CFLAGS="[$]$2JVM_CFLAGS \ |
|
1169 -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))" |
|
1170 fi |
|
1171 fi |
|
1172 |
|
1173 # Setup some hard coded includes |
|
1174 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \ |
|
1175 -I\$(SUPPORT_OUTPUTDIR)/modules_include/java.base \ |
|
1176 -I\$(SUPPORT_OUTPUTDIR)/modules_include/java.base/\$(OPENJDK_TARGET_OS_INCLUDE_SUBDIR) \ |
|
1177 -I${TOPDIR}/src/java.base/share/native/libjava \ |
|
1178 -I${TOPDIR}/src/java.base/$OPENJDK_$1_OS_TYPE/native/libjava \ |
|
1179 -I${TOPDIR}/src/hotspot/share/include \ |
|
1180 -I${TOPDIR}/src/hotspot/os/${HOTSPOT_$1_OS_TYPE}/include" |
|
1181 |
|
1182 # The shared libraries are compiled using the picflag. |
|
1183 $2CFLAGS_JDKLIB="[$]$2COMMON_CCXXFLAGS_JDK \ |
|
1184 [$]$2CFLAGS_JDK [$]$2EXTRA_CFLAGS_JDK $PICFLAG [$]$2CFLAGS_JDKLIB_EXTRA" |
|
1185 $2CXXFLAGS_JDKLIB="[$]$2COMMON_CCXXFLAGS_JDK \ |
|
1186 [$]$2CXXFLAGS_JDK [$]$2EXTRA_CXXFLAGS_JDK $PICFLAG [$]$2CXXFLAGS_JDKLIB_EXTRA" |
|
1187 |
|
1188 # Executable flags |
|
1189 $2CFLAGS_JDKEXE="[$]$2COMMON_CCXXFLAGS_JDK [$]$2CFLAGS_JDK [$]$2EXTRA_CFLAGS_JDK" |
|
1190 $2CXXFLAGS_JDKEXE="[$]$2COMMON_CCXXFLAGS_JDK [$]$2CXXFLAGS_JDK [$]$2EXTRA_CXXFLAGS_JDK" |
|
1191 |
|
1192 AC_SUBST($2CFLAGS_JDKLIB) |
|
1193 AC_SUBST($2CFLAGS_JDKEXE) |
|
1194 AC_SUBST($2CXXFLAGS_JDKLIB) |
|
1195 AC_SUBST($2CXXFLAGS_JDKEXE) |
|
1196 |
|
1197 # Setup LDFLAGS et al. |
|
1198 # |
|
1199 |
|
1200 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
1201 LDFLAGS_MICROSOFT="-nologo -opt:ref" |
|
1202 $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no" |
|
1203 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_MICROSOFT -opt:icf,8 -subsystem:windows -base:0x8000000" |
|
1204 if test "x$OPENJDK_$1_CPU_BITS" = "x32"; then |
|
1205 LDFLAGS_SAFESH="-safeseh" |
|
1206 $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_SAFESH" |
|
1207 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_SAFESH" |
|
1208 # NOTE: Old build added -machine. Probably not needed. |
|
1209 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -machine:I386" |
|
1210 else |
|
1211 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -machine:AMD64" |
|
1212 fi |
|
1213 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
|
1214 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -mno-omit-leaf-frame-pointer -mstack-alignment=16 -stdlib=libstdc++ -fPIC" |
|
1215 if test "x$OPENJDK_$1_OS" = xmacosx; then |
|
1216 # FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead. |
|
1217 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.." |
|
1218 fi |
|
1219 elif test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
1220 # If this is a --hash-style=gnu system, use --hash-style=both, why? |
|
1221 # We have previously set HAS_GNU_HASH if this is the case |
|
1222 if test -n "$HAS_GNU_HASH"; then |
|
1223 $2LDFLAGS_HASH_STYLE="-Wl,--hash-style=both" |
|
1224 $2LDFLAGS_JDK="${$2LDFLAGS_JDK} [$]$2LDFLAGS_HASH_STYLE" |
|
1225 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS [$]$2LDFLAGS_HASH_STYLE" |
|
1226 fi |
|
1227 if test "x$OPENJDK_$1_OS" = xmacosx; then |
|
1228 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.." |
|
1229 fi |
|
1230 if test "x$OPENJDK_$1_OS" = xlinux; then |
|
1231 # And since we now know that the linker is gnu, then add -z defs, to forbid |
|
1232 # undefined symbols in object files. |
|
1233 LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs" |
|
1234 $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM" |
|
1235 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_NO_UNDEF_SYM" |
|
1236 LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack" |
|
1237 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_NO_EXEC_STACK" |
|
1238 if test "x$OPENJDK_$1_CPU" = xx86; then |
|
1239 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -march=i586" |
|
1240 fi |
|
1241 case $DEBUG_LEVEL in |
|
1242 release ) |
|
1243 # tell linker to optimize libraries. |
|
1244 # Should this be supplied to the OSS linker as well? |
|
1245 LDFLAGS_DEBUGLEVEL_release="-Wl,-O1" |
|
1246 $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release" |
|
1247 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_DEBUGLEVEL_release" |
|
1248 if test "x$HAS_LINKER_RELRO" = "xtrue"; then |
|
1249 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_RELRO_FLAG" |
|
1250 fi |
|
1251 ;; |
|
1252 slowdebug ) |
|
1253 # Hotspot always let the linker optimize |
|
1254 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-O1" |
|
1255 if test "x$HAS_LINKER_NOW" = "xtrue"; then |
|
1256 # do relocations at load |
|
1257 $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LINKER_NOW_FLAG" |
|
1258 $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LINKER_NOW_FLAG" |
|
1259 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_NOW_FLAG" |
|
1260 fi |
|
1261 if test "x$HAS_LINKER_RELRO" = "xtrue"; then |
|
1262 # mark relocations read only |
|
1263 $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LINKER_RELRO_FLAG" |
|
1264 $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG" |
|
1265 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_RELRO_FLAG" |
|
1266 fi |
|
1267 ;; |
|
1268 fastdebug ) |
|
1269 # Hotspot always let the linker optimize |
|
1270 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-O1" |
|
1271 if test "x$HAS_LINKER_RELRO" = "xtrue"; then |
|
1272 # mark relocations read only |
|
1273 $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LINKER_RELRO_FLAG" |
|
1274 $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG" |
|
1275 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_RELRO_FLAG" |
|
1276 fi |
|
1277 ;; |
|
1278 * ) |
|
1279 AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL]) |
|
1280 ;; |
|
1281 esac |
|
1282 fi |
|
1283 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
1284 LDFLAGS_SOLSTUDIO="-Wl,-z,defs" |
|
1285 $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -ztext" |
|
1286 LDFLAGS_CXX_SOLSTUDIO="-norunpath" |
|
1287 $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib" |
|
1288 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_SOLSTUDIO -library=%none -mt $LDFLAGS_CXX_SOLSTUDIO -z noversion" |
|
1289 if test "x$OPENJDK_$1_CPU_ARCH" = "xsparc"; then |
|
1290 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -xarch=sparc" |
|
1291 fi |
|
1292 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
|
1293 LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok -btextpsize:64K -bdatapsize:64K -bstackpsize:64K" |
|
1294 $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_XLC" |
|
1295 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_XLC" |
|
1296 # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows. |
|
1297 # Hotspot now overflows its 64K TOC (currently only for debug), |
|
1298 # so we build with '-qpic=large -bbigtoc'. |
|
1299 if test "x$DEBUG_LEVEL" = xslowdebug || test "x$DEBUG_LEVEL" = xfastdebug; then |
|
1300 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -bbigtoc" |
|
1301 fi |
|
1302 fi |
|
1303 |
|
1304 # Customize LDFLAGS for executables |
|
1305 |
|
1306 $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDK}" |
|
1307 |
|
1308 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
1309 if test "x$OPENJDK_$1_CPU_BITS" = "x64"; then |
|
1310 LDFLAGS_STACK_SIZE=1048576 |
|
1311 else |
|
1312 LDFLAGS_STACK_SIZE=327680 |
|
1313 fi |
|
1314 $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE" |
|
1315 elif test "x$OPENJDK_$1_OS" = xlinux; then |
|
1316 $2LDFLAGS_JDKEXE="[$]$2LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined" |
|
1317 fi |
|
1318 |
|
1319 $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDKEXE} ${$2EXTRA_LDFLAGS_JDK}" |
|
1320 |
|
1321 # Customize LDFLAGS for libs |
|
1322 $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDK}" |
|
1323 |
|
1324 $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${SHARED_LIBRARY_FLAGS}" |
|
1325 $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${LDFLAGS_NO_EXEC_STACK}" |
|
1326 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
1327 $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \ |
|
1328 -libpath:${OUTPUTDIR}/support/modules_libs/java.base" |
|
1329 $2JDKLIB_LIBS="" |
|
1330 else |
|
1331 $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \ |
|
1332 -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base" |
|
1333 |
|
1334 if test "x$1" = "xTARGET"; then |
|
1335 # On some platforms (mac) the linker warns about non existing -L dirs. |
|
1336 # For any of the variants server, client or minimal, the dir matches the |
|
1337 # variant name. The "main" variant should be used for linking. For the |
|
1338 # rest, the dir is just server. |
|
1339 if HOTSPOT_CHECK_JVM_VARIANT(server) || HOTSPOT_CHECK_JVM_VARIANT(client) \ |
|
1340 || HOTSPOT_CHECK_JVM_VARIANT(minimal); then |
|
1341 $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \ |
|
1342 -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/$JVM_VARIANT_MAIN" |
|
1343 else |
|
1344 $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \ |
|
1345 -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/server" |
|
1346 fi |
|
1347 elif test "x$1" = "xBUILD"; then |
|
1348 # When building a buildjdk, it's always only the server variant |
|
1349 $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \ |
|
1350 -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/server" |
|
1351 fi |
|
1352 |
|
1353 $2JDKLIB_LIBS="-ljava -ljvm" |
|
1354 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
1355 $2JDKLIB_LIBS="[$]$2JDKLIB_LIBS -lc" |
|
1356 fi |
|
1357 |
|
1358 fi |
|
1359 |
|
1360 $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${$2JAVA_BASE_LDFLAGS}" |
|
1361 |
|
1362 # Set $2JVM_LIBS (per os) |
|
1363 if test "x$OPENJDK_$1_OS" = xlinux; then |
|
1364 $2JVM_LIBS="[$]$2JVM_LIBS -lm -ldl -lpthread" |
|
1365 elif test "x$OPENJDK_$1_OS" = xsolaris; then |
|
1366 # FIXME: This hard-coded path is not really proper. |
|
1367 if test "x$OPENJDK_$1_CPU" = xx86_64; then |
|
1368 $2SOLARIS_LIBM_LIBS="/usr/lib/amd64/libm.so.1" |
|
1369 elif test "x$OPENJDK_$1_CPU" = xsparcv9; then |
|
1370 $2SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1" |
|
1371 fi |
|
1372 $2JVM_LIBS="[$]$2JVM_LIBS -lsocket -lsched -ldl $SOLARIS_LIBM_LIBS -lCrun \ |
|
1373 -lthread -ldoor -lc -ldemangle -lnsl -lrt" |
|
1374 elif test "x$OPENJDK_$1_OS" = xmacosx; then |
|
1375 $2JVM_LIBS="[$]$2JVM_LIBS -lm" |
|
1376 elif test "x$OPENJDK_$1_OS" = xaix; then |
|
1377 $2JVM_LIBS="[$]$2JVM_LIBS -Wl,-lC_r -lm -ldl -lpthread" |
|
1378 elif test "x$OPENJDK_$1_OS" = xbsd; then |
|
1379 $2JVM_LIBS="[$]$2JVM_LIBS -lm" |
|
1380 elif test "x$OPENJDK_$1_OS" = xwindows; then |
|
1381 $2JVM_LIBS="[$]$2JVM_LIBS kernel32.lib user32.lib gdi32.lib winspool.lib \ |
|
1382 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \ |
|
1383 wsock32.lib winmm.lib version.lib psapi.lib" |
|
1384 fi |
|
1385 |
|
1386 # Set $2JVM_ASFLAGS |
|
1387 if test "x$OPENJDK_$1_OS" = xlinux; then |
|
1388 if test "x$OPENJDK_$1_CPU" = xx86; then |
|
1389 $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -march=i586" |
|
1390 fi |
|
1391 elif test "x$OPENJDK_$1_OS" = xmacosx; then |
|
1392 $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16" |
|
1393 fi |
|
1394 |
|
1395 $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${$2EXTRA_LDFLAGS_JDK}" |
|
1396 |
|
1397 AC_SUBST($2LDFLAGS_JDKLIB) |
|
1398 AC_SUBST($2LDFLAGS_JDKEXE) |
|
1399 AC_SUBST($2JDKLIB_LIBS) |
|
1400 AC_SUBST($2JDKEXE_LIBS) |
|
1401 AC_SUBST($2LDFLAGS_CXX_JDK) |
|
1402 AC_SUBST($2LDFLAGS_HASH_STYLE) |
|
1403 AC_SUBST($2LDFLAGS_NO_EXEC_STACK) |
|
1404 |
|
1405 AC_SUBST($2JVM_CFLAGS) |
|
1406 AC_SUBST($2JVM_LDFLAGS) |
|
1407 AC_SUBST($2JVM_ASFLAGS) |
|
1408 AC_SUBST($2JVM_LIBS) |
|
1409 |
|
1410 ]) |
391 ]) |
1411 |
392 |
1412 # FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE], |
393 # FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE], |
1413 # IF_FALSE: [RUN-IF-FALSE]) |
394 # IF_FALSE: [RUN-IF-FALSE]) |
1414 # ------------------------------------------------------------ |
395 # ------------------------------------------------------------ |