diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/ApplicationInfoProperties.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/ApplicationInfoProperties.groovy
index fddf9529d4ca..86df918e6b66 100644
--- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/ApplicationInfoProperties.groovy
+++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/ApplicationInfoProperties.groovy
@@ -39,6 +39,7 @@ class ApplicationInfoProperties {
final String motto
final String companyName
final String shortCompanyName
+ final String svgRelativePath
final boolean isEAP
@SuppressWarnings(["GrUnresolvedAccess", "GroovyAssignabilityCheck"])
@@ -57,6 +58,7 @@ class ApplicationInfoProperties {
minorVersionMainPart = minorVersion.takeWhile { it != '.' }
isEAP = Boolean.parseBoolean(root.version.first().@eap)
shortCompanyName = root.company.first().@shortName ?: shortenCompanyName(companyName)
+ svgRelativePath = root.icon.first().@svg
}
String getUpperCaseProductName() { shortProductName.toUpperCase() }
diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy
index 0e485ce523e7..489389f6c811 100644
--- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy
+++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy
@@ -224,10 +224,24 @@ idea.fatal.error.notification=disabled
}
}
+ if (buildContext.applicationInfo.svgRelativePath != null) {
+ buildContext.ant.copy(file: findBrandingResource(buildContext.applicationInfo.svgRelativePath), tofile: "$buildContext.paths.distAll/bin/${buildContext.productProperties.baseFileName}.svg")
+ }
+
buildContext.productProperties.copyAdditionalFiles(buildContext, buildContext.paths.distAll)
}
}
+ private File findBrandingResource(String relativePath) {
+ def inModule = buildContext.findFileInModuleSources(buildContext.productProperties.applicationInfoModule, relativePath)
+ if (inModule != null) return inModule
+ def inResources = buildContext.productProperties.brandingResourcePaths.collect { new File(it, relativePath) }.find { it.exists() }
+ if (inResources == null) {
+ buildContext.messages.error("Cannot find '$relativePath' in sources of '$buildContext.productProperties.applicationInfoModule' and in $buildContext.productProperties.brandingResourcePaths")
+ }
+ return inResources
+ }
+
private void copyLogXml() {
def src = new File("$buildContext.paths.communityHome/bin/log.xml")
def dst = new File("$buildContext.paths.distAll/bin/log.xml")
diff --git a/platform/platform-resources/src/idea/ApplicationInfo.xsd b/platform/platform-resources/src/idea/ApplicationInfo.xsd
index 38aee3685f6e..1d4892d03529 100644
--- a/platform/platform-resources/src/idea/ApplicationInfo.xsd
+++ b/platform/platform-resources/src/idea/ApplicationInfo.xsd
@@ -279,6 +279,7 @@
+