]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/global/GlobalData.java
Update GenBuild to append FLAGS from FPD files to the FLAGS defined in tools_def.txt
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / global / GlobalData.java
index facd1771a273a6f0ccfb66cb04a64ea8a4c61acf..ceb19d91db7d78c9400a26f819255e43feec0f1b 100644 (file)
@@ -17,14 +17,17 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 package org.tianocore.build.global;\r
 \r
 import java.io.File;\r
+import java.io.IOException;\r
 import java.util.HashMap;\r
 import java.util.HashSet;\r
 import java.util.Iterator;\r
 import java.util.List;\r
 import java.util.Map;\r
 import java.util.Set;\r
+import java.util.regex.Matcher;\r
+import java.util.regex.Pattern;\r
 \r
-import org.apache.tools.ant.BuildException;\r
+import org.apache.xmlbeans.XmlException;\r
 import org.apache.xmlbeans.XmlObject;\r
 \r
 import org.tianocore.common.exception.EdkException;\r
@@ -139,7 +142,7 @@ public class GlobalData {
       @throws BuildException\r
             Framework Dababase or SPD or MSA file is not valid\r
     **/\r
-    public synchronized static void initInfo(String workspaceDatabaseFile, String workspaceDir, String toolsDefFilename ) throws BuildException {\r
+    public synchronized static void initInfo(String workspaceDatabaseFile, String workspaceDir, String toolsDefFilename ) throws EdkException {\r
         //\r
         // ensure this method will be revoked only once\r
         //\r
@@ -161,12 +164,8 @@ public class GlobalData {
         // CONF dir + tools definition file name\r
         //\r
         File toolsDefFile = new File(workspaceDir + File.separatorChar + toolsDefFilename);\r
-        EdkLog.log("Using tool definiton file [" + toolsDefFile.getPath() + "].");\r
-        try {\r
-            toolsDef = new ToolChainConfig(toolsDefFile);\r
-        } catch (Exception e) {\r
-            throw new BuildException(e.getMessage());\r
-        }\r
+        EdkLog.log("Init", EdkLog.EDK_ALWAYS, "Using tool definition file [" + toolsDefFile.getPath() + "].");\r
+        toolsDef = new ToolChainConfig(toolsDefFile);\r
 \r
         //\r
         // Parse Framework Database\r
@@ -178,7 +177,7 @@ public class GlobalData {
             // validate FrameworkDatabaseFile\r
             //\r
             if (!db.validate()) {\r
-                throw new BuildException("Framework Database file [" + dbFile.getPath() + "] format is invalid!");\r
+                throw new EdkException("Framework Database file [" + dbFile.getPath() + "] format is invalid!");\r
             }\r
             //\r
             // Get package list\r
@@ -190,6 +189,15 @@ public class GlobalData {
                     String fileName = iter.next().getStringValue().trim();\r
                     Spd spd = new Spd(new File(workspaceDir + File.separatorChar + fileName));\r
                     packageList.add(spd.getPackageId());\r
+                    //\r
+                    // Report warning if existing two packages with same GUID and Version\r
+                    //\r
+                    if (spdTable.containsKey(spd.getPackageId())) {\r
+                        //\r
+                        // BUGBUG\r
+                        //\r
+                        EdkLog.log("Init", EdkLog.EDK_WARNING, "Warning: Existing two packages with same GUID and Version. They are ... " + spd.getPackageId().getSpdFile().getPath());\r
+                    }\r
                     spdTable.put(spd.getPackageId(), spd);\r
                 }\r
             }\r
@@ -204,31 +212,43 @@ public class GlobalData {
                     String fileName = iter.next().getStringValue().trim();\r
                     File fpdFile = new File(workspaceDir + File.separatorChar + fileName);\r
                     if ( !fpdFile.exists() ) {\r
-                        throw new BuildException("Platform file [" + fpdFile.getPath() + "] not exists. ");\r
+                        throw new EdkException("Platform file [" + fpdFile.getPath() + "] not exists. ");\r
                     }\r
                     XmlObject fpdDoc = XmlObject.Factory.parse(fpdFile);\r
                     //\r
                     // Verify FPD file, if is invalid, throw Exception\r
                     //\r
                     if (!fpdDoc.validate()) {\r
-                        throw new BuildException("Framework Platform Surface Area file [" + fpdFile.getPath() + "] format is invalid!");\r
+                        throw new EdkException("Framework Platform Surface Area file [" + fpdFile.getPath() + "] format is invalid!");\r
                     }\r
                     //\r
                     // We can change Map to XmlObject\r
                     //\r
-                    //\r
-                    // TBD check SPD or FPD is existed in FS\r
-                    //\r
                     Map<String, XmlObject> fpdDocMap = new HashMap<String, XmlObject>();\r
                     fpdDocMap.put("PlatformSurfaceArea", fpdDoc);\r
                     SurfaceAreaQuery saq = new SurfaceAreaQuery(fpdDocMap);\r
                     PlatformIdentification platformId = saq.getFpdHeader();\r
                     platformId.setFpdFile(fpdFile);\r
+                    //\r
+                    // Report warning if existing two platfrom with same GUID and Version\r
+                    //\r
+                    if (platformList.contains(platformId)) {\r
+                        //\r
+                        // BUGBUG\r
+                        //\r
+                        EdkLog.log("Init", EdkLog.EDK_WARNING, "Warning: Existing two platforms with same GUID and Version. They are ... " + fpdFile.getPath());\r
+                    }\r
                     platformList.add(platformId);\r
                 }\r
             }\r
-        } catch (Exception e) {\r
-            throw new BuildException("Parse WORKSPACE Database file [" + dbFile.getPath() + "] Error.\n" + e.getMessage());\r
+        } catch(IOException ex) {\r
+            EdkException edkException = new EdkException("Parse WORKSPACE Database file [" + dbFile.getPath() + "] Error.\n" + ex.getMessage());\r
+            edkException.setStackTrace(ex.getStackTrace());\r
+            throw edkException;\r
+        } catch(XmlException ex) {\r
+            EdkException edkException = new EdkException("Parse WORKSPACE Database file [" + dbFile.getPath() + "] Error.\n" + ex.getMessage());\r
+            edkException.setStackTrace(ex.getStackTrace());\r
+            throw edkException;\r
         }\r
     }\r
 \r
@@ -245,7 +265,7 @@ public class GlobalData {
     /**\r
       Get the MSA file name with absolute path\r
      */\r
-    public synchronized static File getMsaFile(ModuleIdentification moduleId) throws BuildException {\r
+    public synchronized static File getMsaFile(ModuleIdentification moduleId) throws EdkException {\r
         File msaFile = null;\r
         //\r
         // TBD. Do only when package is null.\r
@@ -260,13 +280,13 @@ public class GlobalData {
             }\r
         }\r
         if (msaFile == null){\r
-            throw new BuildException("Can't find Module [" + moduleId.getName() + "] in any SPD package!");\r
+            throw new EdkException("Can't find Module [" + moduleId.getName() + "] in any SPD package!");\r
         } else {\r
             return msaFile;\r
         }\r
     }\r
 \r
-    public synchronized static PackageIdentification getPackageForModule(ModuleIdentification moduleId) {\r
+    public synchronized static PackageIdentification getPackageForModule(ModuleIdentification moduleId) throws EdkException {\r
         //\r
         // If package already defined in module\r
         //\r
@@ -280,12 +300,16 @@ public class GlobalData {
             packageId = (PackageIdentification)iter.next();\r
             moduleId.setPackage(packageId);\r
             Spd spd = spdTable.get(packageId);\r
-            if (spd.getModuleFile(moduleId) != null ) {\r
-                break ;\r
+            File tempMsaFile = null;\r
+            if ((tempMsaFile = spd.getModuleFile(moduleId)) != null ) {\r
+                if (tempMsaFile.getParent().equalsIgnoreCase(moduleId.getMsaFile().getParent())) {\r
+                    break ;\r
+                }\r
+                tempMsaFile = null;\r
             }\r
         }\r
         if (packageId == null){\r
-            throw new BuildException("Can't find Module [" + moduleId.getName() + "] in any SPD package!");\r
+            throw new EdkException("Can't find Module [" + moduleId.getName() + "] in any SPD package!");\r
         } else {\r
             return packageId;\r
         }\r
@@ -303,7 +327,7 @@ public class GlobalData {
     }\r
 \r
 \r
-    public synchronized static void registerFpdModuleSA(FpdModuleIdentification fpdModuleId, Map<String, XmlObject> doc) {\r
+    public synchronized static void registerFpdModuleSA(FpdModuleIdentification fpdModuleId, Map<String, XmlObject> doc) throws EdkException{\r
         Map<String, XmlObject> result = new HashMap<String, XmlObject>();\r
         Set keySet = doc.keySet();\r
         Iterator iter = keySet.iterator();\r
@@ -329,7 +353,7 @@ public class GlobalData {
       @return ModuleSA info and MSA info for fpdModuleId\r
       @throws BuildException Can't find MSA\r
     **/\r
-    public synchronized static Map<String, XmlObject> getDoc(FpdModuleIdentification fpdModuleId) throws BuildException {\r
+    public synchronized static Map<String, XmlObject> getDoc(FpdModuleIdentification fpdModuleId) throws EdkException{\r
         if (parsedModules.containsKey(fpdModuleId)) {\r
             return parsedModules.get(fpdModuleId);\r
         }\r
@@ -359,10 +383,11 @@ public class GlobalData {
         return doc;\r
     }\r
 \r
-    public synchronized static Map<String, XmlObject> getDoc(ModuleIdentification moduleId, String arch) throws BuildException {\r
+    public synchronized static Map<String, XmlObject> getDoc(ModuleIdentification moduleId, String arch) throws EdkException{\r
         FpdModuleIdentification fpdModuleId = new FpdModuleIdentification(moduleId, arch);\r
         return getDoc(fpdModuleId);\r
     }\r
+    \r
     /**\r
       Query the native MSA information with module base name.\r
 \r
@@ -374,7 +399,7 @@ public class GlobalData {
       @throws BuildException\r
               MSA file is not valid\r
     **/\r
-    public synchronized static Map<String, XmlObject> getNativeMsa(ModuleIdentification moduleId) throws BuildException {\r
+    public synchronized static Map<String, XmlObject> getNativeMsa(ModuleIdentification moduleId) throws EdkException {\r
         if (nativeMsa.containsKey(moduleId)) {\r
             return nativeMsa.get(moduleId);\r
         }\r
@@ -384,9 +409,9 @@ public class GlobalData {
         return msaMap;\r
     }\r
 \r
-    public synchronized static Map<String, XmlObject> getNativeMsa(File msaFile) throws BuildException {\r
+    public synchronized static Map<String, XmlObject> getNativeMsa(File msaFile) throws EdkException {\r
         if (!msaFile.exists()) {\r
-            throw new BuildException("Module Surface Area file [" + msaFile.getPath() + "] can't be found!");\r
+            throw new EdkException("Module Surface Area file [" + msaFile.getPath() + "] can't be found!");\r
         }\r
         try {\r
             ModuleSurfaceAreaDocument doc = (ModuleSurfaceAreaDocument)XmlObject.Factory.parse(msaFile);\r
@@ -394,7 +419,7 @@ public class GlobalData {
             // Validate File if they accord with XML Schema\r
             //\r
             if ( !doc.validate()){\r
-                throw new BuildException("Module Surface Area file [" + msaFile.getPath() + "] format is invalid!");\r
+                throw new EdkException("Module Surface Area file [" + msaFile.getPath() + "] format is invalid!");\r
             }\r
             //\r
             // parse MSA file\r
@@ -412,9 +437,14 @@ public class GlobalData {
             msaMap.put("Externs", cloneXmlObject(msa.getExterns(), true));\r
             msaMap.put("PcdCoded", cloneXmlObject(msa.getPcdCoded(), true));\r
             return msaMap;\r
-        }\r
-        catch (Exception ex){\r
-            throw new BuildException("Parsing MSA file [" + msaFile.getPath() + "] error. \n" + ex.getMessage() );\r
+        } catch(IOException ex) {\r
+            EdkException edkException = new EdkException("Parsing MSA file [" + msaFile.getPath() + "] error. \n" + ex.getMessage());\r
+            edkException.setStackTrace(ex.getStackTrace());\r
+            throw edkException;\r
+        } catch(XmlException ex) {\r
+            EdkException edkException = new EdkException("Parsing MSA file [" + msaFile.getPath() + "] error. \n" + ex.getMessage());\r
+            edkException.setStackTrace(ex.getStackTrace());\r
+            throw edkException;\r
         }\r
     }\r
 \r
@@ -422,7 +452,7 @@ public class GlobalData {
         return fpdBuildOptionsMap;\r
     }\r
 \r
-    public static void setFpdBuildOptions(XmlObject fpdBuildOptions) {\r
+    public static void setFpdBuildOptions(XmlObject fpdBuildOptions) throws EdkException {\r
         GlobalData.fpdBuildOptions = cloneXmlObject(fpdBuildOptions, true);\r
         fpdBuildOptionsMap.put("BuildOptions", GlobalData.fpdBuildOptions);\r
     }\r
@@ -449,8 +479,7 @@ public class GlobalData {
      * The header file path is relative to workspace dir\r
      */\r
     public static String[] getLibraryClassHeaderFiles(\r
-            PackageIdentification[] packages, String name)\r
-            throws BuildException {\r
+            PackageIdentification[] packages, String name) throws EdkException{\r
         if (packages == null) {\r
             // throw Exception or not????\r
             return new String[0];\r
@@ -468,7 +497,7 @@ public class GlobalData {
         //\r
         // If can't find library class declaration in every package\r
         //\r
-        throw new BuildException("Can not find library class [" + name\r
+        throw new EdkException("Can not find library class [" + name\r
                 + "] declaration in any SPD package!");\r
     }\r
 \r
@@ -476,7 +505,7 @@ public class GlobalData {
      * The header file path is relative to workspace dir\r
      */\r
     public static String getPackageHeaderFiles(PackageIdentification packages,\r
-            String moduleType) throws BuildException {\r
+            String moduleType) {\r
         if (packages == null) {\r
             return new String("");\r
         }\r
@@ -500,8 +529,7 @@ public class GlobalData {
     /**\r
      * return two values: {cName, GuidValue}\r
      */\r
-    public static String[] getGuid(List<PackageIdentification> packages, String name)\r
-            throws BuildException {\r
+    public static String[] getGuid(List<PackageIdentification> packages, String name) {\r
         if (packages == null) {\r
             // throw Exception or not????\r
             return new String[0];\r
@@ -525,7 +553,7 @@ public class GlobalData {
      * return two values: {cName, GuidValue}\r
      */\r
     public static String[] getPpiGuid(List<PackageIdentification> packages,\r
-            String name) throws BuildException {\r
+            String name) {\r
         if (packages == null) {\r
             return new String[0];\r
         }\r
@@ -547,7 +575,7 @@ public class GlobalData {
      * return two values: {cName, GuidValue}\r
      */\r
     public static String[] getProtocolGuid(List<PackageIdentification> packages,\r
-            String name) throws BuildException {\r
+            String name) {\r
         if (packages == null) {\r
             return new String[0];\r
         }\r
@@ -566,7 +594,7 @@ public class GlobalData {
 \r
     }\r
 \r
-    public synchronized static PlatformIdentification getPlatformByName(String name) throws BuildException {\r
+    public synchronized static PlatformIdentification getPlatformByName(String name) throws EdkException {\r
         Iterator iter = platformList.iterator();\r
         while(iter.hasNext()){\r
             PlatformIdentification platformId = (PlatformIdentification)iter.next();\r
@@ -574,10 +602,10 @@ public class GlobalData {
                 return platformId;\r
             }\r
         }\r
-        throw new BuildException("Can't find platform [" + name + "] in the current WORKSPACE database!");\r
+        throw new EdkException("Can't find platform [" + name + "] in the current WORKSPACE database!");\r
     }\r
 \r
-    public synchronized static PlatformIdentification getPlatform(String filename) throws BuildException {\r
+    public synchronized static PlatformIdentification getPlatform(String filename) throws EdkException {\r
         File file = new File(workspaceDir + File.separatorChar + filename);\r
         Iterator iter = platformList.iterator();\r
         while(iter.hasNext()){\r
@@ -586,10 +614,10 @@ public class GlobalData {
                 return platformId;\r
             }\r
         }\r
-        throw new BuildException("Can't find platform file [" + filename + "] in the current WORKSPACE database!");\r
+        throw new EdkException("Can't find platform file [" + filename + "] in the current WORKSPACE database!");\r
     }\r
 \r
-    public synchronized static PackageIdentification refreshPackageIdentification(PackageIdentification packageId) throws BuildException {\r
+    public synchronized static PackageIdentification refreshPackageIdentification(PackageIdentification packageId) throws EdkException {\r
         Iterator iter = packageList.iterator();\r
         while(iter.hasNext()){\r
             PackageIdentification packageItem = (PackageIdentification)iter.next();\r
@@ -599,15 +627,15 @@ public class GlobalData {
                 return packageId;\r
             }\r
         }\r
-        throw new BuildException("Can't find package GUID value " + packageId.toGuidString() + " in the current workspace!");\r
+        throw new EdkException("Can't find package GUID value " + packageId.toGuidString() + " in the current workspace!");\r
     }\r
 \r
-    public synchronized static ModuleIdentification refreshModuleIdentification(ModuleIdentification moduleId) throws BuildException {\r
+    public synchronized static ModuleIdentification refreshModuleIdentification(ModuleIdentification moduleId) throws EdkException {\r
         PackageIdentification packageId = getPackageForModule(moduleId);\r
         moduleId.setPackage(packageId);\r
         Spd spd = spdTable.get(packageId);\r
         if (spd == null) {\r
-            throw new BuildException("Can't find package GUID value " + packageId.toGuidString() + " in the current workspace!");\r
+            throw new EdkException("Can't find package GUID value " + packageId.toGuidString() + " in the current workspace!");\r
         }\r
         Set<ModuleIdentification> modules = spd.getModules();\r
         Iterator<ModuleIdentification> iter = modules.iterator();\r
@@ -620,7 +648,7 @@ public class GlobalData {
                 return moduleId;\r
             }\r
         }\r
-        throw new BuildException("Can't find module GUID value " + moduleId.toGuidString() + " in " + packageId + " under the current workspace!");\r
+        throw new EdkException("Can't find module GUID value " + moduleId.toGuidString() + " in " + packageId + " under the current workspace!");\r
     }\r
 \r
     public synchronized static Set<PackageIdentification> getPackageList(){\r
@@ -636,7 +664,7 @@ public class GlobalData {
       @return XmlObject after clone\r
       @throws BuildException parse original XmlObject error. \r
     **/\r
-    private static XmlObject cloneXmlObject(XmlObject object, boolean deep) throws BuildException {\r
+    private static XmlObject cloneXmlObject(XmlObject object, boolean deep) throws EdkException {\r
         if ( object == null) {\r
             return null;\r
         }\r
@@ -644,8 +672,10 @@ public class GlobalData {
         try {\r
             result = XmlObject.Factory.parse(object.getDomNode()\r
                             .cloneNode(deep));\r
-        } catch (Exception ex) {\r
-            throw new BuildException(ex.getMessage());\r
+        } catch (XmlException ex) {\r
+            EdkException edkException = new EdkException(ex.getMessage());\r
+            edkException.setStackTrace(ex.getStackTrace());\r
+            throw edkException;\r
         }\r
         return result;\r
     }\r
@@ -653,7 +683,7 @@ public class GlobalData {
     ///\r
     /// Tool Chain Related, try to refine and put some logic process to ToolChainFactory\r
     ///\r
-    public static ToolChainInfo getToolChainInfo() {\r
+    public synchronized static ToolChainInfo getToolChainInfo() {\r
         if (toolChainInfo == null) {\r
             toolChainInfo = toolsDef.getConfigInfo().intersection(toolChainEnvInfo);\r
             if (toolChainPlatformInfo != null) {\r
@@ -661,8 +691,8 @@ public class GlobalData {
             }\r
             toolChainInfo.addCommands(toolsDef.getConfigInfo().getCommands());\r
             toolChainInfo.normalize();\r
-            EdkLog.log("Current build tool chain information summary: ");\r
-            EdkLog.log(toolChainInfo + "");\r
+            EdkLog.log("Init", EdkLog.EDK_ALWAYS, "Current build tool chain information summary: ");\r
+            EdkLog.log("Init", EdkLog.EDK_ALWAYS, toolChainInfo + "");\r
         }\r
         return toolChainInfo;\r
     }\r
@@ -698,16 +728,16 @@ public class GlobalData {
         return false;\r
     }\r
 \r
-    public static String getCommandSetting(String[] commandDescription, FpdModuleIdentification fpdModuleId) throws EdkException {\r
+    public synchronized static String getCommandSetting(String[] commandDescription, FpdModuleIdentification fpdModuleId) throws EdkException {\r
         ToolChainKey toolChainKey = new ToolChainKey(commandDescription);\r
         ToolChainMap toolChainConfig = toolsDef.getConfig();\r
         String setting = null;\r
 \r
+        setting = toolChainConfig.get(toolChainKey);\r
+        if (setting == null) {\r
+          setting = "";\r
+        }\r
         if (!commandDescription[ToolChainElement.ATTRIBUTE.value].equals(ToolChainAttribute.FLAGS.toString())) {\r
-            setting = toolChainConfig.get(toolChainKey);\r
-            if (setting == null) {\r
-                setting = "";\r
-            }\r
             return setting;\r
         }\r
 \r
@@ -718,7 +748,98 @@ public class GlobalData {
         ToolChainMap option = moduleToolChainOption.get(fpdModuleId);\r
         ToolChainKey toolChainFamilyKey = null;\r
 \r
-        if ((option == null) || (option != null && (setting = option.get(toolChainKey)) == null)) {\r
+        if (option != null && option.get(toolChainKey) != null)  \r
+        {\r
+          String str = option.get(toolChainKey);\r
+\r
+          Pattern myPattern = Pattern.compile("[^\\\\]?(\".*?[^\\\\]\")[ \t,]+");\r
+          Matcher matcher = myPattern.matcher(str + " ");\r
+          while (matcher.find()) \r
+          {\r
+            setting = setting + " " + str.substring(matcher.start(1), matcher.end(1));\r
+          }\r
+        } \r
+//        else \r
+//        {\r
+          if (toolChainFamilyKey == null) \r
+          {\r
+            toolChainFamilyKey = new ToolChainKey(commandDescription);\r
+            toolChainFamilyKey.setKey(ToolChainAttribute.FAMILY.toString(), ToolChainElement.ATTRIBUTE.value);\r
+            String family = toolChainConfig.get(toolChainFamilyKey);\r
+            toolChainFamilyKey.setKey(family, ToolChainElement.TOOLCHAIN.value);\r
+            toolChainFamilyKey.setKey(ToolChainAttribute.FLAGS.toString(), ToolChainElement.ATTRIBUTE.value);\r
+          }\r
+\r
+          option = moduleToolChainFamilyOption.get(fpdModuleId);\r
+          if (option != null && option.get(toolChainFamilyKey) != null) \r
+          {\r
+            String str = option.get(toolChainFamilyKey);\r
+\r
+            Pattern myPattern = Pattern.compile("[^\\\\]?(\".*?[^\\\\]\")[ \t,]+");\r
+            Matcher matcher = myPattern.matcher(str + " ");\r
+            while (matcher.find()) \r
+            {\r
+              setting = setting + " " + str.substring(matcher.start(1), matcher.end(1));\r
+            }\r
+          }\r
+//        }\r
+\r
+        //\r
+        // get platform options, if any\r
+        //\r
+        // tool tag first\r
+//        if (platformToolChainOption != null && platformToolChainOption.get(toolChainKey) != null) \r
+        if (platformToolChainOption.get(toolChainKey) != null) \r
+        {\r
+          String str = platformToolChainOption.get(toolChainKey);\r
+\r
+          Pattern myPattern = Pattern.compile("[^\\\\]?(\".*?[^\\\\]\")[ \t,]+");\r
+          Matcher matcher = myPattern.matcher(str + " ");\r
+          while (matcher.find()) \r
+          {\r
+            setting = setting + " " + str.substring(matcher.start(1), matcher.end(1));\r
+          }\r
+        } \r
+//        else \r
+//        {\r
+          // then tool chain family\r
+          if (toolChainFamilyKey == null) \r
+          {\r
+            toolChainFamilyKey = new ToolChainKey(commandDescription);\r
+            toolChainFamilyKey.setKey(ToolChainAttribute.FAMILY.toString(), ToolChainElement.ATTRIBUTE.value);\r
+            String family = toolChainConfig.get(toolChainFamilyKey);\r
+            toolChainFamilyKey.setKey(family, ToolChainElement.TOOLCHAIN.value);\r
+            toolChainFamilyKey.setKey(ToolChainAttribute.FLAGS.toString(), ToolChainElement.ATTRIBUTE.value);\r
+          }\r
+\r
+//          if (platformToolChainFamilyOption != null && platformToolChainFamilyOption.get(toolChainFamilyKey) != null) \r
+          if (platformToolChainFamilyOption.get(toolChainFamilyKey) != null) \r
+          {\r
+            String str = platformToolChainFamilyOption.get(toolChainFamilyKey);\r
+\r
+            setting = setting + " " + str;\r
+\r
+//            Pattern myPattern = Pattern.compile("[^\\\\]?(\".*?[^\\\\]\")[ \t,]+");\r
+//            Matcher matcher = myPattern.matcher(str + " ");\r
+//            while (matcher.find()) \r
+//            {\r
+//              setting = setting + " " + str.substring(matcher.start(1), matcher.end(1));\r
+//            }\r
+          }\r
+//        }\r
+\r
+        return setting;\r
+\r
+/*\r
+        //\r
+        // get module specific options, if any\r
+        //\r
+        // tool tag first\r
+        ToolChainMap option = moduleToolChainOption.get(fpdModuleId);\r
+        ToolChainKey toolChainFamilyKey = null;\r
+        \r
+        if ((option == null) || (option != null && (setting = option.get(toolChainKey)) == null)) \r
+        {\r
             //\r
             // then tool chain family\r
             //\r
@@ -758,6 +879,7 @@ public class GlobalData {
         }\r
 \r
         return setting;\r
+*/\r
     }\r
 \r
     public static void setToolChainEnvInfo(ToolChainInfo envInfo) {\r