summaryrefslogtreecommitdiff
path: root/Tools/Source/GenBuild/org
diff options
context:
space:
mode:
authorjwang36 <jwang36@6f19259b-4bc3-4df7-8a09-765794883524>2006-08-18 00:54:57 +0000
committerjwang36 <jwang36@6f19259b-4bc3-4df7-8a09-765794883524>2006-08-18 00:54:57 +0000
commit471e8e4c3dd416a9d5a72116bfc0cb7dc1fd05b7 (patch)
tree713b55c79f3d545f6960c3c780b28812ca75255c /Tools/Source/GenBuild/org
parentb1cfb8a5034e95a29e5475dcaeb3e692a2edbb00 (diff)
downloadedk2-471e8e4c3dd416a9d5a72116bfc0cb7dc1fd05b7.zip
edk2-471e8e4c3dd416a9d5a72116bfc0cb7dc1fd05b7.tar.gz
edk2-471e8e4c3dd416a9d5a72116bfc0cb7dc1fd05b7.tar.bz2
Added to fix the issue of many property override warning when build with -v option; and also improve the build performance.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1318 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Tools/Source/GenBuild/org')
-rw-r--r--Tools/Source/GenBuild/org/tianocore/build/global/PropertyManager.java100
1 files changed, 100 insertions, 0 deletions
diff --git a/Tools/Source/GenBuild/org/tianocore/build/global/PropertyManager.java b/Tools/Source/GenBuild/org/tianocore/build/global/PropertyManager.java
new file mode 100644
index 0000000..50a2ead
--- /dev/null
+++ b/Tools/Source/GenBuild/org/tianocore/build/global/PropertyManager.java
@@ -0,0 +1,100 @@
+package org.tianocore.build.global;
+
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.Stack;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.PropertyHelper;
+
+public class PropertyManager {
+ private static Stack<HashMap<String, String>> propertyTableStack = new Stack<HashMap<String, String>>();
+ private static HashMap<String, String> orgPropertyTable = null;
+ private static HashMap<String, String> oldPropertyTable = null;
+ private static HashMap<String, String> bakPropertyTable = null;
+ private static Project prj = null;
+
+ public static void save() {
+ if (orgPropertyTable == null) {
+ Hashtable prjProperties = prj.getProperties();
+ orgPropertyTable = new HashMap<String, String>();
+
+ Set keys = prjProperties.keySet();
+ Iterator iter = keys.iterator();
+ while (iter.hasNext()) {
+ String item = (String)iter.next();
+ orgPropertyTable.put(item, (String)prjProperties.get(item));
+ }
+ }
+
+ if (bakPropertyTable != null) {
+ propertyTableStack.push(bakPropertyTable);
+ oldPropertyTable = bakPropertyTable;
+ } else {
+ oldPropertyTable = orgPropertyTable;
+ }
+ bakPropertyTable = new HashMap<String, String>();
+ }
+
+ public static void restore() {
+ if (bakPropertyTable == null) {
+ return;
+ }
+ Set keys = bakPropertyTable.keySet();
+
+ Iterator iter = keys.iterator();
+ while (iter.hasNext()) {
+ String name = (String)iter.next();
+ String value = (String)bakPropertyTable.get(name);
+ setProperty(prj, name, value);
+ }
+
+ if (propertyTableStack.size() > 0) {
+ bakPropertyTable = (HashMap<String, String>)propertyTableStack.pop();
+ } else {
+ bakPropertyTable = null;
+ }
+
+ if (propertyTableStack.size() == 0) {
+ oldPropertyTable = orgPropertyTable;
+ } else {
+ oldPropertyTable = (HashMap<String, String>)propertyTableStack.peek();
+ }
+ }
+
+ public static void setProject(Project prj) {
+ PropertyManager.prj = prj;
+ }
+
+ public static void setProperty(String name, String value) {
+ if (prj == null) {
+ return;
+ }
+
+ setProperty(prj, name, value);
+
+ if (oldPropertyTable == null || bakPropertyTable == null) {
+ return;
+ }
+
+ String oldValue = oldPropertyTable.get(name);
+ if (oldValue == null) {
+ oldValue = value;
+ }
+ bakPropertyTable.put(name, oldValue);
+ }
+
+ public static void setProperty(Project project, String name, String value) {
+ if (project == null) {
+ if (prj == null) {
+ return;
+ }
+ project = prj;
+ }
+
+ PropertyHelper.getPropertyHelper(project).setProperty(null, name, value, false);
+ }
+}
+