]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: Correct CCFLAG for PcdValueInit
authorBobCF <bob.c.feng@intel.com>
Fri, 7 Dec 2018 02:39:52 +0000 (10:39 +0800)
committerBobCF <bob.c.feng@intel.com>
Fri, 7 Dec 2018 02:39:52 +0000 (10:39 +0800)
https://bugzilla.tianocore.org/show_bug.cgi?id=1361
This patch is going to correct the CCFlag
for building PcdValueInit

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: BobCF <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
BaseTools/Source/Python/Workspace/DscBuildData.py

index 59d118216d3178a218783956dca81ef3fb220e13..b485c75a84b657525000b2006009c4e1af0a8cac 100644 (file)
@@ -2352,16 +2352,16 @@ class DscBuildData(PlatformBuildClassObject):
 \r
     def ParseCCFlags(self, ccflag):\r
         ccflags = set()\r
-        flag = ""\r
-        for ch in ccflag:\r
-            if ch in (r"/", "-"):\r
-                if flag.strip():\r
-                    ccflags.add(flag.strip())\r
-                flag = ch\r
-            else:\r
-                flag += ch\r
-        if flag.strip():\r
-            ccflags.add(flag.strip())\r
+        ccflaglist = ccflag.split(" ")\r
+        i = 0\r
+        while i < len(ccflaglist):\r
+            item = ccflaglist[i].strip()\r
+            if item in (r"/D", r"/U","-D","-U"):\r
+                ccflags.add(" ".join((ccflaglist[i],ccflaglist[i+1])))\r
+                i = i+1\r
+            elif item.startswith((r"/D", r"/U","-D","-U")):\r
+                ccflags.add(item)\r
+            i +=1\r
         return ccflags\r
     def GenerateByteArrayValue (self, StructuredPcds):\r
         #\r
@@ -2488,7 +2488,7 @@ class DscBuildData(PlatformBuildClassObject):
                     if 'COMMON' not in BuildOptions:\r
                         BuildOptions['COMMON'] = set()\r
                     if Arch == TAB_STAR:\r
-                        BuildOptions['COMMON'].add(self.BuildOptions[Options])\r
+                        BuildOptions['COMMON']|= self.ParseCCFlags(self.BuildOptions[Options])\r
                     if Arch in self.SupArchList:\r
                         if Arch not in BuildOptions:\r
                             BuildOptions[Arch] = set()\r
@@ -2502,7 +2502,7 @@ class DscBuildData(PlatformBuildClassObject):
                 CommonBuildOptions = reduce(lambda x,y: x&y, ArchBuildOptions.values())\r
                 BuildOptions['COMMON'] |= CommonBuildOptions\r
             ValueList = list(BuildOptions['COMMON'])\r
-            CC_FLAGS += " ".join([item for item in ValueList if item.startswith(('-D', '/D', '-U', '/U'))])\r
+            CC_FLAGS += " ".join(ValueList)\r
         MakeApp += CC_FLAGS\r
 \r
         if sys.platform == "win32":\r