in subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovyc.java [988:1082]
private List<String> extractJointOptions(Path classpath) {
List<String> jointOptions = new ArrayList<>();
if (!jointCompilation) return jointOptions;
// map "debug" and "debuglevel" to "-Fg"
if (javac.getDebug()) {
jointOptions.add("-Fg" + Optional.ofNullable(javac.getDebugLevel()).map(level -> ":" + level).orElse(""));
} else {
jointOptions.add("-Fg:none");
}
// map "deprecation" to "-Fdeprecation"
if (javac.getDeprecation()) {
jointOptions.add("-Fdeprecation");
}
// map "nowarn" to "-Fnowarn"
if (javac.getNowarn()) {
jointOptions.add("-Fnowarn");
}
// map "verbose" to "-Fverbose"
if (javac.getVerbose()) {
jointOptions.add("-Fverbose");
}
RuntimeConfigurable rc = javac.getRuntimeConfigurableWrapper();
for (Map.Entry<String, Object> e : rc.getAttributeMap().entrySet()) {
String key = e.getKey();
if ("depend".equals(key)
|| "encoding".equals(key)
|| "extdirs".equals(key)
|| "nativeheaderdir".equals(key)
|| "release".equals(key)
|| "source".equals(key)
|| "target".equals(key)) {
switch (key) {
case "nativeheaderdir":
key = "h";
break;
case "release":
key = "-" + key; // to get "--" when passed to javac
break;
default:
}
// map "depend", "encoding", etc. to "-Jkey=val"
jointOptions.add("-J" + key + "=" + getProject().replaceProperties(e.getValue().toString()));
} else if (key.contains("classpath")) {
if (key.startsWith("boot")) {
// map "bootclasspath" or "bootclasspathref" to "-Jbootclasspath="
jointOptions.add("-Jbootclasspath=" + javac.getBootclasspath());
} else {
// map "classpath" or "classpathref" to "--classpath"
classpath.add(javac.getClasspath());
}
} else if (key.contains("module") && key.contains("path")) {
if (key.startsWith("upgrade")) {
// map "upgrademodulepath" or "upgrademodulepathref" to "-J-upgrade-module-path="
jointOptions.add("-J-upgrade-module-path=" + javac.getUpgrademodulepath());
} else if (key.contains("source")) {
// map "modulesourcepath" or "modulesourcepathref" to "-J-module-source-path="
jointOptions.add("-J-module-source-path=" + javac.getModulesourcepath());
} else {
// map "modulepath" or "modulepathref" to "-J-module-path="
jointOptions.add("-J-module-path=" + javac.getModulepath());
}
} else if (!key.contains("debug") && !"deprecation".equals(key) && !"nowarn".equals(key) && !"verbose".equals(key)) {
log.warn("The option " + key + " cannot be set on the contained <javac> element. The option will be ignored.");
}
// TODO: defaultexcludes, excludes(file)?, includes(file)?, includeDestClasses, tempdir
}
// Ant's <javac> supports nested <compilerarg value=""> elements (there
// can be multiple of them) for additional options to be passed to javac.
for (RuntimeConfigurable childrc : Collections.list(rc.getChildren())) {
if ("compilerarg".equals(childrc.getElementTag())) {
for (Map.Entry<String, Object> e : childrc.getAttributeMap().entrySet()) {
String key = e.getKey();
if ("value".equals(key)) {
String value = getProject().replaceProperties(e.getValue().toString());
StringTokenizer st = new StringTokenizer(value, " ");
while (st.hasMoreTokens()) {
String option = st.nextToken();
// GROOVY-5063: map "-Werror", etc. to "-FWerror"
jointOptions.add(option.replaceFirst("^-(W|X|proc:)", "-F$1"));
}
}
}
}
}
return jointOptions;
}