Bug 567374 - [Robotics, ROS2] Configure CMAKE_PREFIX_PATH in project setup, enable "sourcing" multiple setup files

- Don't add an environment variable, if content is unset

Change-Id: I85dddd0dced1e33dbb277e089c22bc8479af9421
Signed-off-by: Ansgar Radermacher <ansgar.radermacher@cea.fr>
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen/src/org/eclipse/papyrus/robotics/ros2/codegen/utils/ProjectTools.xtend b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen/src/org/eclipse/papyrus/robotics/ros2/codegen/utils/ProjectTools.xtend
index 514dc16..b4ca741 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen/src/org/eclipse/papyrus/robotics/ros2/codegen/utils/ProjectTools.xtend
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen/src/org/eclipse/papyrus/robotics/ros2/codegen/utils/ProjectTools.xtend
@@ -46,6 +46,7 @@
 import org.eclipse.uml2.uml.Class
 import org.eclipse.uml2.uml.Package
 import org.eclipse.papyrus.robotics.ros2.codegen.component.RoboticsCppCreator
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription
 
 /** 
  * get or create a CDT project with a given name
@@ -96,17 +97,16 @@
 		var cdesc = mngr.getProjectDescription(project, true)
 
 		try {
-			val amentPrefix = new EnvironmentVariable(Ros2Constants.AMENT_PREFIX_PATH, EnvironmentUtils.get(Ros2Constants.AMENT_PREFIX_PATH))
-			val cmakePrefix = new EnvironmentVariable(Ros2Constants.CMAKE_PREFIX_PATH, EnvironmentUtils.get(Ros2Constants.CMAKE_PREFIX_PATH))
-			val pythonPath = new EnvironmentVariable(Ros2Constants.PYTHON_PATH, EnvironmentUtils.get(Ros2Constants.PYTHON_PATH))
+			val amentPrefix = EnvironmentUtils.get(Ros2Constants.AMENT_PREFIX_PATH)
+			val cmakePrefix = EnvironmentUtils.get(Ros2Constants.CMAKE_PREFIX_PATH)
+			val pythonPath = EnvironmentUtils.get(Ros2Constants.PYTHON_PATH)
 
 			// loop over all configurations
 			for (configDescr : cdesc.getConfigurations()) {
 
-				val contribEnv = CCorePlugin.getDefault().getBuildEnvironmentManager().getContributedEnvironment();
-				contribEnv.addVariable(amentPrefix, configDescr);
-				contribEnv.addVariable(cmakePrefix, configDescr);
-				contribEnv.addVariable(pythonPath, configDescr);
+				addEnvironmenVar(configDescr, Ros2Constants.AMENT_PREFIX_PATH, amentPrefix)
+				addEnvironmenVar(configDescr, Ros2Constants.CMAKE_PREFIX_PATH, cmakePrefix)
+				addEnvironmenVar(configDescr, Ros2Constants.PYTHON_PATH, pythonPath)
 
 				val main = ManagedBuildManager.getConfigurationForDescription(configDescr)
 
@@ -142,6 +142,16 @@
 	}
 
 	/**
+	 * Add a environment variable, if non null
+	 */
+	static def addEnvironmenVar(ICConfigurationDescription configDescr, String key, String value) {
+		if (value !== null) {
+			val contribEnv = CCorePlugin.getDefault().getBuildEnvironmentManager().getContributedEnvironment();
+			contribEnv.addVariable(new EnvironmentVariable(key, value), configDescr);
+		}
+	}
+
+	/**
 	 * Wait up to 10 seconds for the CDT indexer to finish
 	 */
 	static def waitForCDT() {