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,