< prev index next >

make/autoconf/flags-cflags.m4

Print this page
8248238: Adding Windows support to OpenJDK on AArch64

Summary: Adding Windows support for AArch64

Contributed-by: Ludovic Henry <luhenry@microsoft.com>, Monica Beckwith <monica.beckwith@microsoft.com>
Reviewed-by:


 633   fi
 634 
 635   # setup CPU bit size
 636   $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -DARCH='\"$FLAGS_CPU_LEGACY\"' \
 637       -D$FLAGS_CPU_LEGACY"
 638 
 639   if test "x$FLAGS_CPU_BITS" = x64; then
 640     # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
 641     # unpack200.exe.
 642     if test "x$FLAGS_OS" = xlinux || test "x$FLAGS_OS" = xmacosx; then
 643       $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_LP64=1"
 644     fi
 645     if test "x$FLAGS_OS" != xaix; then
 646       # xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it.
 647       $1_DEFINES_CPU_JVM="${$1_DEFINES_CPU_JVM} -D_LP64=1"
 648     fi
 649   fi
 650 
 651   # toolchain dependend, per-cpu
 652   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 653     if test "x$FLAGS_CPU" = xx86_64; then


 654       $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_AMD64_ -Damd64"
 655     else
 656       $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_X86_ -Dx86"
 657     fi
 658   fi
 659 
 660   # CFLAGS PER CPU
 661   if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
 662     # COMMON to gcc and clang
 663     if test "x$FLAGS_CPU" = xx86; then
 664       # Force compatibility with i586 on 32 bit intel platforms.
 665       $1_CFLAGS_CPU="-march=i586"
 666     fi
 667   fi
 668 
 669   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 670     if test "x$FLAGS_CPU" = xaarch64; then
 671       # -Wno-psabi to get rid of annoying "note: parameter passing for argument of type '<type> changed in GCC 9.1"
 672       $1_CFLAGS_CPU="-Wno-psabi"
 673     elif test "x$FLAGS_CPU" = xarm; then


 707       if test "x$FLAGS_CPU_ARCH" != xarm &&  test "x$FLAGS_CPU_ARCH" != xppc; then
 708         # for all archs except arm and ppc, prevent gcc to omit frame pointer
 709         $1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer"
 710       fi
 711     fi
 712 
 713   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 714     if test "x$FLAGS_CPU" = xppc64; then
 715       $1_CFLAGS_CPU_JVM="-qarch=ppc64"
 716     fi
 717 
 718   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 719     if test "x$FLAGS_CPU" = xx86; then
 720       $1_CFLAGS_CPU_JVM="-arch:IA32"
 721     elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
 722       if test "x$DEBUG_LEVEL" != xrelease; then
 723         # NOTE: This is probably redundant; -homeparams is default on
 724         # non-release builds.
 725         $1_CFLAGS_CPU_JVM="-homeparams"
 726       fi


 727     fi
 728   fi
 729 
 730   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 731     FLAGS_SETUP_GCC6_COMPILER_FLAGS($1, $3)
 732     $1_TOOLCHAIN_CFLAGS="${$1_GCC6_CFLAGS}"
 733 
 734     $1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized"
 735   fi
 736 
 737   # Prevent the __FILE__ macro from generating absolute paths into the built
 738   # binaries. Depending on toolchain, different mitigations are possible.
 739   # * GCC and Clang of new enough versions have -fmacro-prefix-map.
 740   # * For most other toolchains, supplying all source files and -I flags as
 741   #   relative paths fixes the issue.
 742   FILE_MACRO_CFLAGS=
 743   if test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = "xfalse"; then
 744     if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
 745       # Check if compiler supports -fmacro-prefix-map. If so, use that to make
 746       # the __FILE__ macro resolve to paths relative to the workspace root.




 633   fi
 634 
 635   # setup CPU bit size
 636   $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -DARCH='\"$FLAGS_CPU_LEGACY\"' \
 637       -D$FLAGS_CPU_LEGACY"
 638 
 639   if test "x$FLAGS_CPU_BITS" = x64; then
 640     # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
 641     # unpack200.exe.
 642     if test "x$FLAGS_OS" = xlinux || test "x$FLAGS_OS" = xmacosx; then
 643       $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_LP64=1"
 644     fi
 645     if test "x$FLAGS_OS" != xaix; then
 646       # xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it.
 647       $1_DEFINES_CPU_JVM="${$1_DEFINES_CPU_JVM} -D_LP64=1"
 648     fi
 649   fi
 650 
 651   # toolchain dependend, per-cpu
 652   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 653     if test "x$FLAGS_CPU" = xaarch64; then
 654       $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_ARM64_ -Darm64"
 655     elif test "x$FLAGS_CPU" = xx86_64; then
 656       $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_AMD64_ -Damd64"
 657     else
 658       $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_X86_ -Dx86"
 659     fi
 660   fi
 661 
 662   # CFLAGS PER CPU
 663   if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
 664     # COMMON to gcc and clang
 665     if test "x$FLAGS_CPU" = xx86; then
 666       # Force compatibility with i586 on 32 bit intel platforms.
 667       $1_CFLAGS_CPU="-march=i586"
 668     fi
 669   fi
 670 
 671   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 672     if test "x$FLAGS_CPU" = xaarch64; then
 673       # -Wno-psabi to get rid of annoying "note: parameter passing for argument of type '<type> changed in GCC 9.1"
 674       $1_CFLAGS_CPU="-Wno-psabi"
 675     elif test "x$FLAGS_CPU" = xarm; then


 709       if test "x$FLAGS_CPU_ARCH" != xarm &&  test "x$FLAGS_CPU_ARCH" != xppc; then
 710         # for all archs except arm and ppc, prevent gcc to omit frame pointer
 711         $1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer"
 712       fi
 713     fi
 714 
 715   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 716     if test "x$FLAGS_CPU" = xppc64; then
 717       $1_CFLAGS_CPU_JVM="-qarch=ppc64"
 718     fi
 719 
 720   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 721     if test "x$FLAGS_CPU" = xx86; then
 722       $1_CFLAGS_CPU_JVM="-arch:IA32"
 723     elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
 724       if test "x$DEBUG_LEVEL" != xrelease; then
 725         # NOTE: This is probably redundant; -homeparams is default on
 726         # non-release builds.
 727         $1_CFLAGS_CPU_JVM="-homeparams"
 728       fi
 729     elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
 730       $1_CFLAGS_CPU_JVM=""
 731     fi
 732   fi
 733 
 734   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 735     FLAGS_SETUP_GCC6_COMPILER_FLAGS($1, $3)
 736     $1_TOOLCHAIN_CFLAGS="${$1_GCC6_CFLAGS}"
 737 
 738     $1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized"
 739   fi
 740 
 741   # Prevent the __FILE__ macro from generating absolute paths into the built
 742   # binaries. Depending on toolchain, different mitigations are possible.
 743   # * GCC and Clang of new enough versions have -fmacro-prefix-map.
 744   # * For most other toolchains, supplying all source files and -I flags as
 745   #   relative paths fixes the issue.
 746   FILE_MACRO_CFLAGS=
 747   if test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = "xfalse"; then
 748     if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
 749       # Check if compiler supports -fmacro-prefix-map. If so, use that to make
 750       # the __FILE__ macro resolve to paths relative to the workspace root.


< prev index next >