443 IF_FALSE: [$2CXXSTD_CXXFLAG=""]) |
443 IF_FALSE: [$2CXXSTD_CXXFLAG=""]) |
444 $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2CXXSTD_CXXFLAG}" |
444 $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2CXXSTD_CXXFLAG}" |
445 $2JVM_CFLAGS="${$2JVM_CFLAGS} ${$2CXXSTD_CXXFLAG}" |
445 $2JVM_CFLAGS="${$2JVM_CFLAGS} ${$2CXXSTD_CXXFLAG}" |
446 AC_SUBST($2CXXSTD_CXXFLAG) |
446 AC_SUBST($2CXXSTD_CXXFLAG) |
447 fi |
447 fi |
448 if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
448 |
|
449 $2CFLAGS_JDK="${$2CFLAGS_JDK} ${$2EXTRA_CFLAGS}" |
|
450 $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2EXTRA_CXXFLAGS}" |
|
451 $2LDFLAGS_JDK="${$2LDFLAGS_JDK} ${$2EXTRA_LDFLAGS}" |
|
452 |
|
453 #### OS DEFINES, these should be independent on toolchain |
|
454 if test "x$FLAGS_OS" = xlinux; then |
|
455 $2_CFLAGS_OS_DEF_JVM="-DLINUX" |
|
456 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK \ |
|
457 -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE" |
|
458 elif test "x$FLAGS_OS" = xsolaris; then |
|
459 $2_CFLAGS_OS_DEF_JVM="-DSOLARIS" |
449 $2_SPECIAL_2="-D__solaris__" # add on both CFLAGS |
460 $2_SPECIAL_2="-D__solaris__" # add on both CFLAGS |
450 $2CFLAGS_JDK="${$2CFLAGS_JDK} ${$2_SPECIAL_2}" |
461 $2CFLAGS_JDK="${$2CFLAGS_JDK} ${$2_SPECIAL_2}" |
451 $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2_SPECIAL_2}" |
462 $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2_SPECIAL_2}" |
452 fi |
463 elif test "x$FLAGS_OS" = xmacosx; then |
453 |
464 $2_CFLAGS_OS_DEF_JVM="-D_ALLBSD_SOURCE -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE" |
454 $2CFLAGS_JDK="${$2CFLAGS_JDK} ${$2EXTRA_CFLAGS}" |
465 $2_CFLAGS_OS_DEF_JDK="-D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" |
455 $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2EXTRA_CXXFLAGS}" |
466 elif test "x$FLAGS_OS" = xaix; then |
456 $2LDFLAGS_JDK="${$2LDFLAGS_JDK} ${$2EXTRA_LDFLAGS}" |
467 $2_CFLAGS_OS_DEF_JVM="-DAIX" |
457 |
468 elif test "x$FLAGS_OS" = xbsd; then |
|
469 $2_CFLAGS_OS_DEF_JDK="-D_ALLBSD_SOURCE" |
|
470 elif test "x$FLAGS_OS" = xwindows; then |
|
471 $2_CFLAGS_OS_DEF_JVM="-D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_" |
|
472 fi |
|
473 |
|
474 # Setup target OS define. Use OS target name but in upper case. |
|
475 FLAGS_OS_UPPERCASE=`$ECHO $FLAGS_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` |
|
476 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D$FLAGS_OS_UPPERCASE ${$2_CFLAGS_OS_DEF_JDK}" |
|
477 |
|
478 #### CPU DEFINES, these should be independent on toolchain |
|
479 |
|
480 # Setup target CPU |
|
481 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \ |
|
482 $FLAGS_ADD_LP64 \ |
|
483 -DARCH='\"$FLAGS_CPU_LEGACY\"' -D$FLAGS_CPU_LEGACY" |
|
484 |
|
485 # Setup endianness |
|
486 if test "x$FLAGS_CPU_ENDIAN" = xlittle; then |
|
487 # The macro _LITTLE_ENDIAN needs to be defined the same to avoid the |
|
488 # Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN |
|
489 # (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h). |
|
490 # Note: -Dmacro is the same as #define macro 1 |
|
491 # -Dmacro= is the same as #define macro |
|
492 if test "x$FLAGS_OS" = xsolaris; then |
|
493 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN=" |
|
494 else |
|
495 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN" |
|
496 fi |
|
497 else |
|
498 # Same goes for _BIG_ENDIAN. Do we really need to set *ENDIAN on Solaris if they |
|
499 # are defined in the system? |
|
500 if test "x$FLAGS_OS" = xsolaris; then |
|
501 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN=" |
|
502 else |
|
503 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN" |
|
504 fi |
|
505 fi |
|
506 |
|
507 #### TOOLCHAIN DEFINES |
|
508 |
|
509 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
510 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_GNU_SOURCE -D_REENTRANT" |
|
511 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
|
512 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_GNU_SOURCE" |
|
513 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
514 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DSPARC_WORKS" |
|
515 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS" |
|
516 if test "x$FLAGS_CPU_ARCH" = xx86; then |
|
517 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$FLAGS_CPU_LEGACY_LIB" |
|
518 fi |
|
519 $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK -DCC_NOEX" |
|
520 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
|
521 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_REENTRANT" |
|
522 $2_COMMON_TOOLCHAIN_DEFINES="-D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" |
|
523 $2CFLAGS_JDK="[$]$2CFLAGS_JDK ${$2_COMMON_TOOLCHAIN_DEFINES}" |
|
524 $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK ${$2_COMMON_TOOLCHAIN_DEFINES}" |
|
525 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
526 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK \ |
|
527 -DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \ |
|
528 -DWIN32 -DIAL" |
|
529 if test "x$FLAGS_CPU" = xx86_64; then |
|
530 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64" |
|
531 else |
|
532 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86" |
|
533 fi |
|
534 fi |
458 |
535 |
459 # PER TOOLCHAIN: |
536 # PER TOOLCHAIN: |
460 # LINKER_BASIC |
537 # LINKER_BASIC |
461 # LINKER: shared-lib-special, exe-special |
538 # LINKER: shared-lib-special, exe-special |
462 # LINKER: arch/cpu-special |
539 # LINKER: arch/cpu-special |
614 # Setup compiler/platform specific flags into |
691 # Setup compiler/platform specific flags into |
615 # $2CFLAGS_JDK - C Compiler flags |
692 # $2CFLAGS_JDK - C Compiler flags |
616 # $2CXXFLAGS_JDK - C++ Compiler flags |
693 # $2CXXFLAGS_JDK - C++ Compiler flags |
617 # $2COMMON_CCXXFLAGS_JDK - common to C and C++ |
694 # $2COMMON_CCXXFLAGS_JDK - common to C and C++ |
618 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
695 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
619 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_GNU_SOURCE" |
|
620 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_REENTRANT" |
|
621 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -fcheck-new" |
696 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -fcheck-new" |
622 if test "x$FLAGS_CPU" = xx86; then |
697 if test "x$FLAGS_CPU" = xx86; then |
623 # Force compatibility with i586 on 32 bit intel platforms. |
698 # Force compatibility with i586 on 32 bit intel platforms. |
624 $2COMMON_CCXXFLAGS="${$2COMMON_CCXXFLAGS} -march=i586" |
699 $2COMMON_CCXXFLAGS="${$2COMMON_CCXXFLAGS} -march=i586" |
625 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -march=i586" |
700 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -march=i586" |
626 fi |
701 fi |
627 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \ |
702 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \ |
628 -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE" |
703 -pipe" |
629 case $FLAGS_CPU_ARCH in |
704 case $FLAGS_CPU_ARCH in |
630 arm ) |
705 arm ) |
631 # on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing |
706 # on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing |
632 $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" |
707 $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" |
633 $2COMMON_CCXXFLAGS_JDK="${$2COMMON_CCXXFLAGS_JDK} -fsigned-char" |
708 $2COMMON_CCXXFLAGS_JDK="${$2COMMON_CCXXFLAGS_JDK} -fsigned-char" |
645 $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" |
720 $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" |
646 ;; |
721 ;; |
647 esac |
722 esac |
648 TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($2)) |
723 TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($2)) |
649 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
724 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
650 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_GNU_SOURCE" |
|
651 |
725 |
652 # Restrict the debug information created by Clang to avoid |
726 # Restrict the debug information created by Clang to avoid |
653 # too big object files and speed the build up a little bit |
727 # too big object files and speed the build up a little bit |
654 # (see http://llvm.org/bugs/show_bug.cgi?id=7554) |
728 # (see http://llvm.org/bugs/show_bug.cgi?id=7554) |
655 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -flimit-debug-info" |
729 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -flimit-debug-info" |
672 $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" |
746 $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" |
673 ;; |
747 ;; |
674 esac |
748 esac |
675 fi |
749 fi |
676 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
750 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
677 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DSPARC_WORKS" |
|
678 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS" |
|
679 if test "x$FLAGS_CPU_ARCH" = xx86; then |
|
680 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$FLAGS_CPU_LEGACY_LIB" |
|
681 fi |
|
682 |
751 |
683 $2CFLAGS_JDK="[$]$2CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal" |
752 $2CFLAGS_JDK="[$]$2CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal" |
684 $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib" |
753 $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -norunpath -xnolib" |
685 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
754 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
686 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_REENTRANT" |
|
687 $2CFLAGS_JDK="[$]$2CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" |
|
688 $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" |
|
689 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
755 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
690 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK \ |
756 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK \ |
691 -MD -Zc:wchar_t- -W3 -wd4800 \ |
757 -MD -Zc:wchar_t- -W3 -wd4800" |
692 -DWIN32_LEAN_AND_MEAN \ |
|
693 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \ |
|
694 -DWIN32 -DIAL" |
|
695 if test "x$FLAGS_CPU" = xx86_64; then |
|
696 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64" |
|
697 else |
|
698 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86" |
|
699 fi |
|
700 # If building with Visual Studio 2010, we can still use _STATIC_CPPLIB to |
|
701 # avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual |
|
702 # studio. |
|
703 if test "x$TOOLCHAIN_VERSION" = "x2010"; then |
|
704 STATIC_CPPLIB_FLAGS="-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB" |
|
705 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS" |
|
706 $2JVM_CFLAGS="[$]$2JVM_CFLAGS $STATIC_CPPLIB_FLAGS" |
|
707 fi |
|
708 fi |
758 fi |
709 |
759 |
710 ############################################################################### |
760 ############################################################################### |
711 |
761 |
712 # Adjust flags according to debug level. |
762 # Adjust flags according to debug level. |
723 esac |
773 esac |
724 |
774 |
725 # Set some common defines. These works for all compilers, but assume |
775 # Set some common defines. These works for all compilers, but assume |
726 # -D is universally accepted. |
776 # -D is universally accepted. |
727 |
777 |
728 # Setup endianness |
|
729 if test "x$FLAGS_CPU_ENDIAN" = xlittle; then |
|
730 # The macro _LITTLE_ENDIAN needs to be defined the same to avoid the |
|
731 # Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN |
|
732 # (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h). |
|
733 # Note: -Dmacro is the same as #define macro 1 |
|
734 # -Dmacro= is the same as #define macro |
|
735 if test "x$FLAGS_OS" = xsolaris; then |
|
736 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN=" |
|
737 else |
|
738 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN" |
|
739 fi |
|
740 else |
|
741 # Same goes for _BIG_ENDIAN. Do we really need to set *ENDIAN on Solaris if they |
|
742 # are defined in the system? |
|
743 if test "x$FLAGS_OS" = xsolaris; then |
|
744 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN=" |
|
745 else |
|
746 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN" |
|
747 fi |
|
748 fi |
|
749 |
|
750 # Always enable optional macros for VM. |
778 # Always enable optional macros for VM. |
751 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D__STDC_FORMAT_MACROS" |
779 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D__STDC_FORMAT_MACROS" |
752 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D__STDC_LIMIT_MACROS" |
780 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D__STDC_LIMIT_MACROS" |
753 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D__STDC_CONSTANT_MACROS" |
781 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D__STDC_CONSTANT_MACROS" |
754 |
|
755 # Setup target OS define. Use OS target name but in upper case. |
|
756 FLAGS_OS_UPPERCASE=`$ECHO $FLAGS_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` |
|
757 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D$FLAGS_OS_UPPERCASE" |
|
758 |
|
759 # Setup target CPU |
|
760 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \ |
|
761 $FLAGS_ADD_LP64 \ |
|
762 -DARCH='\"$FLAGS_CPU_LEGACY\"' -D$FLAGS_CPU_LEGACY" |
|
763 |
782 |
764 # Setup debug/release defines |
783 # Setup debug/release defines |
765 if test "x$DEBUG_LEVEL" = xrelease; then |
784 if test "x$DEBUG_LEVEL" = xrelease; then |
766 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DNDEBUG" |
785 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DNDEBUG" |
767 if test "x$FLAGS_OS" = xsolaris; then |
786 if test "x$FLAGS_OS" = xsolaris; then |