common/autoconf/flags.m4
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/common/autoconf/flags.m4	Tue Dec 13 12:40:54 2016
--- new/common/autoconf/flags.m4	Tue Dec 13 12:40:53 2016

*** 21,30 **** --- 21,125 ---- # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA # or visit www.oracle.com if you need additional information or have any # questions. # + ################################################################################ + # + # Setup ABI profile (for arm) + # + AC_DEFUN([FLAGS_SETUP_ABI_PROFILE], + [ + AC_ARG_WITH(abi-profile, [AS_HELP_STRING([--with-abi-profile], + [specify ABI profile for ARM builds (arm-vfp-sflt,arm-vfp-hflt,arm-sflt, armv5-vfp-sflt,armv6-vfp-hflt,arm64,aarch64) @<:@toolchain dependent@:>@ ])]) + + if test "x$with_abi_profile" != x; then + if test "x$OPENJDK_TARGET_CPU" != xarm && \ + test "x$OPENJDK_TARGET_CPU" != xaarch64; then + AC_MSG_ERROR([--with-abi-profile only available on arm/aarch64]) + fi + + OPENJDK_TARGET_ABI_PROFILE=$with_abi_profile + AC_MSG_CHECKING([for ABI profle]) + AC_MSG_RESULT([$OPENJDK_TARGET_ABI_PROFILE]) + + if test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-vfp-sflt; then + ARM_FLOAT_TYPE=vfp-sflt + ARM_ARCH_TYPE_FLAGS='-march=armv7-a -mthumb' + elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-vfp-hflt; then + ARM_FLOAT_TYPE=vfp-hflt + ARM_ARCH_TYPE_FLAGS='-march=armv7-a -mthumb' + elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-sflt; then + ARM_FLOAT_TYPE=sflt + ARM_ARCH_TYPE_FLAGS='-march=armv5t -marm' + elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarmv5-vfp-sflt; then + ARM_FLOAT_TYPE=vfp-sflt + ARM_ARCH_TYPE_FLAGS='-march=armv5t -marm' + elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarmv6-vfp-hflt; then + ARM_FLOAT_TYPE=vfp-hflt + ARM_ARCH_TYPE_FLAGS='-march=armv6 -marm' + elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm64; then + # No special flags, just need to trigger setting JDK_ARCH_ABI_PROP_NAME + ARM_FLOAT_TYPE= + ARM_ARCH_TYPE_FLAGS= + elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xaarch64; then + # No special flags, just need to trigger setting JDK_ARCH_ABI_PROP_NAME + ARM_FLOAT_TYPE= + ARM_ARCH_TYPE_FLAGS= + else + AC_MSG_ERROR([Invalid ABI profile: "$OPENJDK_TARGET_ABI_PROFILE"]) + fi + + if test "x$ARM_FLOAT_TYPE" = xvfp-sflt; then + ARM_FLOAT_TYPE_FLAGS='-mfloat-abi=softfp -mfpu=vfp -DFLOAT_ARCH=-vfp-sflt' + elif test "x$ARM_FLOAT_TYPE" = xvfp-hflt; then + ARM_FLOAT_TYPE_FLAGS='-mfloat-abi=hard -mfpu=vfp -DFLOAT_ARCH=-vfp-hflt' + elif test "x$ARM_FLOAT_TYPE" = xsflt; then + ARM_FLOAT_TYPE_FLAGS='-msoft-float -mfpu=vfp' + fi + AC_MSG_CHECKING([for $ARM_FLOAT_TYPE floating point flags]) + AC_MSG_RESULT([$ARM_FLOAT_TYPE_FLAGS]) + + AC_MSG_CHECKING([for arch type flags]) + AC_MSG_RESULT([$ARM_ARCH_TYPE_FLAGS]) + + # Now set JDK_ARCH_ABI_PROP_NAME. This is equivalent to the last part of the + # autoconf target triplet. + [ JDK_ARCH_ABI_PROP_NAME=`$ECHO $OPENJDK_TARGET_AUTOCONF_NAME | $SED -e 's/.*-\([^-]*\)$/\1/'` ] + # Sanity check that it is a known ABI. + if test "x$JDK_ARCH_ABI_PROP_NAME" != xgnu && \ + test "x$JDK_ARCH_ABI_PROP_NAME" != xgnueabi && \ + test "x$JDK_ARCH_ABI_PROP_NAME" != xgnueabihf; then + AC_MSG_WARN([Unknown autoconf target triplet ABI: "$JDK_ARCH_ABI_PROP_NAME"]) + fi + AC_MSG_CHECKING([for ABI property name]) + AC_MSG_RESULT([$JDK_ARCH_ABI_PROP_NAME]) + AC_SUBST(JDK_ARCH_ABI_PROP_NAME) + + # Pass these on to the open part of configure as if they were set using + # --with-extra-c[xx]flags. + EXTRA_CFLAGS="$EXTRA_CFLAGS $ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS" + EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS $ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS" + # Get rid of annoying "note: the mangling of 'va_list' has changed in GCC 4.4" + # FIXME: This should not really be set using extra_cflags. + if test "x$OPENJDK_TARGET_CPU" = xarm; then + EXTRA_CFLAGS="$EXTRA_CFLAGS -Wno-psabi" + EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -Wno-psabi" + fi + # Also add JDK_ARCH_ABI_PROP_NAME define, but only to CFLAGS. + EXTRA_CFLAGS="$EXTRA_CFLAGS -DJDK_ARCH_ABI_PROP_NAME='\"\$(JDK_ARCH_ABI_PROP_NAME)\"'" + # And pass the architecture flags to the linker as well + EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS" + fi + + # When building with an abi profile, the name of that profile is appended on the + # bundle platform, which is used in bundle names. + if test "x$OPENJDK_TARGET_ABI_PROFILE" != x; then + OPENJDK_TARGET_BUNDLE_PLATFORM="$OPENJDK_TARGET_OS_BUNDLE-$OPENJDK_TARGET_ABI_PROFILE" + fi + ]) + # Reset the global CFLAGS/LDFLAGS variables and initialize them with the # corresponding configure arguments instead AC_DEFUN_ONCE([FLAGS_SETUP_USER_SUPPLIED_FLAGS], [ if test "x$CFLAGS" != "x${ADDED_CFLAGS}"; then
*** 304,316 **** --- 399,419 ---- else # Default works for linux, might work on other platforms as well. PICFLAG='-fPIC' SHARED_LIBRARY_FLAGS='-shared' SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN[$]1' SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN" SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1' SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1' + + # arm specific settings + if test "x$OPENJDK_TARGET_CPU" = "xarm"; then + # '-Wl,-z,origin' isn't used on arm. + SET_SHARED_LIBRARY_ORIGIN='-Wl,-rpath,\$$$$ORIGIN[$]1' + else + SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN" + fi + fi elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then if test "x$OPENJDK_TARGET_CPU" = xsparcv9; then PICFLAG="-xcode=pic32" else
*** 667,676 **** --- 770,780 ---- AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK], [ + FLAGS_SETUP_ABI_PROFILE FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([TARGET]) FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([BUILD], [OPENJDK_BUILD_]) # Tests are only ever compiled for TARGET # Flags for compiling test libraries
*** 756,765 **** --- 860,870 ---- -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE" case $OPENJDK_$1_CPU_ARCH in arm ) # on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" + $2COMMON_CCXXFLAGS_JDK="${$2COMMON_CCXXFLAGS_JDK} -fsigned-char" ;; ppc ) # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing" ;;

common/autoconf/flags.m4
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File