+
+ source_version can be: support for
+ 1.3 inner classes
+ 1.4 assert keyword
+ 1.5 generic classes and methods
+ 1.6 (not yet supported)
+ target_version can be: classfile version:
+ 1.1 45.3
+ 1.2 46.0
+ 1.3 47.0
+ 1.4 48.0
+ 1.5 49.0
+ 1.6 50.0
+ target_version can also be given as NULL. In this case, the required
+ target_version is determined from the found JVM (see javaversion.h).
+ Specifying target_version is useful when building a library (.jar) that is
+ useful outside the given package. Passing target_version = NULL is useful
+ when building an application.
+ It is unreasonable to ask for:
+ - target_version < 1.4 with source_version >= 1.4, or
+ - target_version < 1.5 with source_version >= 1.5, or
+ - target_version < 1.6 with source_version >= 1.6,
+ because even Sun's javac doesn't support these combinations.
+ It is redundant to ask for a target_version > source_version, since the
+ smaller target_version = source_version will also always work and newer JVMs
+ support the older target_versions too. Except for the case
+ target_version = 1.4, source_version = 1.3, which allows gcj versions 3.0
+ to 3.2 to be used.
+