./common/autoconf/platform.m4

Print this page
rev 677 : [mq]: build-zero-on-arm

@@ -340,10 +340,11 @@
         ZERO_ARCHFLAG="-m31"
         ;;
       *)
         ZERO_ARCHFLAG="-m${OPENJDK_TARGET_CPU_BITS}"
     esac
+    PLATFORM_COMPILER_CHECK_ARGUMENTS([$ZERO_ARCHFLAG], [], [ZERO_ARCHFLAG=""])
     AC_SUBST(ZERO_ARCHFLAG)
 
     # ZERO_ARCHDEF is used to enable architecture-specific code
     case "${OPENJDK_TARGET_CPU}" in
       ppc*)    ZERO_ARCHDEF=PPC   ;;

@@ -415,14 +416,49 @@
 AC_SUBST(OS_VERSION_MAJOR)
 AC_SUBST(OS_VERSION_MINOR)
 AC_SUBST(OS_VERSION_MICRO)
 ])
 
+# Check that the compiler supports an argument
+# $1: the compiler argumen to check
+# $2: action-if-true
+# $3: action-if-false
+AC_DEFUN([PLATFORM_COMPILER_CHECK_ARGUMENTS],
+[
+  AC_MSG_CHECKING([if compiler supports "$1"])
+  saved_cflags="$CFLAGS"
+  CFLAGS="$1"
+  AC_COMPILE_IFELSE([
+    AC_LANG_SOURCE([
+      [int main() { return 0; }]
+    ])
+  ], [supports=yes], [supports=no])
+  CFLAGS="$saved_cflags"
+  if "x$supports" = "xyes" ; then
+    AC_MSG_RESULT([$supports])
+    $2
+  else
+    AC_MSG_RESULT([$supports])
+    $3
+  fi
+])
+
+# Check that the compiler supports -mX flags
+# Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does
+AC_DEFUN([PLATFORM_CHECK_COMPILER_TARGET_BITS_FLAGS],
+[
+  PLATFORM_COMPILER_CHECK_ARGUMENTS(["-m${OPENJDK_TARGET_CPU_BITS}"],
+    [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true],
+    [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false])
+  AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG)
+])
+
 # Support macro for PLATFORM_SETUP_OPENJDK_TARGET_BITS.
 # Add -mX to various FLAGS variables.
 AC_DEFUN([PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS],
 [
+
   # keep track of c/cxx flags that we added outselves...
   #   to prevent emitting warning...
   ADDED_CFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}"
   ADDED_CXXFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}"
   ADDED_LDFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}"

@@ -442,10 +478,13 @@
 #
 # Now we check if libjvm.so will use 32 or 64 bit pointers for the C/C++ code.
 # (The JVM can use 32 or 64 bit Java pointers but that decision
 # is made at runtime.)
 #
+
+PLATFORM_CHECK_COMPILER_TARGET_BITS_FLAGS
+
 if test "x$OPENJDK_TARGET_OS" = xsolaris; then
   # Always specify -m flags on Solaris
   PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS
 elif test "x$COMPILE_TYPE" = xreduced; then
   if test "x$OPENJDK_TARGET_OS" != xwindows; then