Blob Blame History Raw
diff -urp '--exclude=*~' gettext-0.21.orig/gettext-tools/gnulib-lib/javacomp.c gettext-0.21/gettext-tools/gnulib-lib/javacomp.c
--- gettext-0.21.orig/gettext-tools/gnulib-lib/javacomp.c	2022-03-09 12:22:05.000000000 +0900
+++ gettext-0.21/gettext-tools/gnulib-lib/javacomp.c	2022-03-20 18:23:53.636052943 +0900
@@ -116,9 +116,8 @@ default_target_version (void)
                && (java_version_cache[1] >= '2'
                    && java_version_cache[1] <= '7')
                && java_version_cache[2] == '\0')
-        /* Assume that these (not yet released) Java versions will behave
-           like the preceding ones.  */
-        java_version_cache = "11";
+        /* It's one of the valid target version values.  */
+        ;
       else
         java_version_cache = "1.1";
     }
@@ -128,7 +127,7 @@ default_target_version (void)
 /* ======================= Source version dependent ======================= */
 
 /* Convert a source version to an index.  */
-#define SOURCE_VERSION_BOUND 8 /* exclusive upper bound */
+#define SOURCE_VERSION_BOUND 14 /* exclusive upper bound */
 static unsigned int
 source_version_index (const char *source_version)
 {
@@ -144,7 +143,7 @@ source_version_index (const char *source
   else if (source_version[0] == '9' && source_version[1] == '\0')
     return 5;
   else if (source_version[0] == '1'
-           && (source_version[1] >= '0' && source_version[1] <= '1')
+           && (source_version[1] >= '0' && source_version[1] <= '7')
            && source_version[2] == '\0')
     return source_version[1] - '0' + 6;
   error (EXIT_FAILURE, 0, _("invalid source_version argument to compile_java_class"));
@@ -171,6 +170,10 @@ get_goodcode_snippet (const char *source
     return "class conftest { public void m() { var i = new Integer(0); } }\n";
   if (strcmp (source_version, "11") == 0)
     return "class conftest { Readable r = (var b) -> 0; }\n";
+  if (source_version[0] == '1'
+    && (source_version[1] >= '2' && source_version[1] <= '7')
+    && source_version[2] == '\0')
+    return "class conftest { Readable r = (var b) -> 0; }\n";
   error (EXIT_FAILURE, 0, _("invalid source_version argument to compile_java_class"));
   return NULL;
 }
@@ -197,6 +200,10 @@ get_failcode_snippet (const char *source
     return "class conftestfail { Readable r = (var b) -> 0; }\n";
   if (strcmp (source_version, "11") == 0)
     return NULL;
+  if (source_version[0] == '1'
+    && (source_version[1] >= '2' && source_version[1] <= '7')
+    && source_version[2] == '\0')
+    return NULL;
   error (EXIT_FAILURE, 0, _("invalid source_version argument to compile_java_class"));
   return NULL;
 }
@@ -204,7 +211,7 @@ get_failcode_snippet (const char *source
 /* ======================= Target version dependent ======================= */
 
 /* Convert a target version to an index.  */
-#define TARGET_VERSION_BOUND 11 /* exclusive upper bound */
+#define TARGET_VERSION_BOUND 17 /* exclusive upper bound */
 static unsigned int
 target_version_index (const char *target_version)
 {
@@ -215,7 +222,7 @@ target_version_index (const char *target
   else if (target_version[0] == '9' && target_version[1] == '\0')
     return 8;
   else if (target_version[0] == '1'
-           && (target_version[1] >= '0' && target_version[1] <= '1')
+           && (target_version[1] >= '0' && target_version[1] <= '7')
            && target_version[2] == '\0')
     return target_version[1] - '0' + 9;
   error (EXIT_FAILURE, 0, _("invalid target_version argument to compile_java_class"));
@@ -245,10 +252,10 @@ corresponding_classfile_version (const c
     return 52;
   if (strcmp (target_version, "9") == 0)
     return 53;
-  if (strcmp (target_version, "10") == 0)
-    return 54;
-  if (strcmp (target_version, "11") == 0)
-    return 55;
+  if (target_version[0] == '1'
+           && (target_version[1] >= '0' && target_version[1] <= '7')
+           && target_version[2] == '\0')
+    return target_version[1] + 54;
   error (EXIT_FAILURE, 0, _("invalid target_version argument to compile_java_class"));
   return 0;
 }
@@ -2439,7 +2446,7 @@ compile_java_class (const char * const *
         }
     }
 
-  error (0, 0, _("Java compiler not found, try installing gcj or set $JAVAC"));
+  /* error (0, 0, _("Java compiler not found, try installing gcj or set $JAVAC")); */
   err = true;
 
  done2:
diff -urp '--exclude=*~' gettext-0.21.orig/gettext-tools/src/write-java.c gettext-0.21/gettext-tools/src/write-java.c
--- gettext-0.21.orig/gettext-tools/src/write-java.c	2022-03-09 12:17:21.000000000 +0900
+++ gettext-0.21/gettext-tools/src/write-java.c	2022-03-20 18:26:06.941734979 +0900
@@ -1209,8 +1209,14 @@ msgdomain_write_java (message_list_ty *m
      Java compilers create the class files in the source file's directory -
      which is in a temporary directory in our case.  */
   java_sources[0] = java_file_name;
-  if (compile_java_class (java_sources, 1, NULL, 0, "1.5", "1.6", directory,
+  if (1
+      && (compile_java_class (java_sources, 1, NULL, 0, "17", "17", directory,
+                          true, false, true, verbose > 0)) /* assume JDK 17 */
+      && (compile_java_class (java_sources, 1, NULL, 0, "11", "11", directory,
+                          true, false, true, verbose > 0)) /* assume JDK 11 */
+      && (compile_java_class (java_sources, 1, NULL, 0, "1.5", "1.6", directory,
                           true, false, true, verbose > 0))
+     )
     {
       if (!verbose)
         error (0, 0,