diff options
author | Jake Petroules <jake.petroules@petroules.com> | 2015-05-09 01:02:43 -0700 |
---|---|---|
committer | Jake Petroules <jake.petroules@petroules.com> | 2015-05-11 16:28:46 +0000 |
commit | 0b965aa0b64ae1a8b93a27627a19bf8e422739b7 (patch) | |
tree | b0ad64941e2f4d4a51901a01f09151d634702b78 /share | |
parent | 2f507d112c8563297b51e9f6bfb2101044f27d95 (diff) |
Add support for determining the Java compiler version.
Change-Id: I2a34759fb57284f9d002d81a06997fdb02a95f06
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Diffstat (limited to 'share')
-rw-r--r-- | share/qbs/modules/java/JavaModule.qbs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/share/qbs/modules/java/JavaModule.qbs b/share/qbs/modules/java/JavaModule.qbs index cb6b19277..88450f335 100644 --- a/share/qbs/modules/java/JavaModule.qbs +++ b/share/qbs/modules/java/JavaModule.qbs @@ -31,6 +31,7 @@ import qbs import qbs.FileInfo import qbs.ModUtils +import qbs.Process import "utils.js" as JavaUtils @@ -48,6 +49,13 @@ Module { property string jarName: "jar" property path jdkPath + property string compilerVersion: rawCompilerVersion ? rawCompilerVersion[1] : undefined + property var compilerVersionParts: compilerVersion ? compilerVersion.split(/[\._]/).map(function(item) { return parseInt(item, 10); }) : [] + property int compilerVersionMajor: compilerVersionParts[0] + property int compilerVersionMinor: compilerVersionParts[1] + property int compilerVersionPatch: compilerVersionParts[2] + property int compilerVersionUpdate: compilerVersionParts[3] + property string languageVersion PropertyOptions { name: "languageVersion" @@ -65,6 +73,34 @@ Module { // Internal properties property path classFilesDir: FileInfo.joinPaths(product.buildDirectory, "classFiles") + // private properties + readonly property var rawCompilerVersion: { + var p = new Process(); + try { + p.exec(compilerFilePath, ["-version"]); + var match = p.readStdErr().trim().match(/^javac (([0-9]+(?:\.[0-9]+){2,2})_([0-9]+))$/); + if (match !== null) + return match; + } finally { + p.close(); + } + } + + validate: { + var validator = new ModUtils.PropertyValidator("java"); + validator.setRequiredProperty("compilerVersion", compilerVersion); + validator.setRequiredProperty("compilerVersionParts", compilerVersionParts); + validator.setRequiredProperty("compilerVersionMajor", compilerVersionMajor); + validator.setRequiredProperty("compilerVersionMinor", compilerVersionMinor); + validator.setRequiredProperty("compilerVersionUpdate", compilerVersionUpdate); + validator.addVersionValidator("compilerVersion", compilerVersion.replace("_", "."), 4, 4); + validator.addRangeValidator("compilerVersionMajor", compilerVersionMajor, 1); + validator.addRangeValidator("compilerVersionMinor", compilerVersionMinor, 0); + validator.addRangeValidator("compilerVersionPatch", compilerVersionPatch, 0); + validator.addRangeValidator("compilerVersionUpdate", compilerVersionUpdate, 0); + validator.validate(); + } + FileTagger { patterns: "*.java" fileTags: ["java.java"] |