Shutdown the PCD's datum verification when building, it can save 2 minutes for full...
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / pcd / action / PlatformPcdPreprocessActionForBuilding.java
index 69be07f..e9d1372 100644 (file)
@@ -260,315 +260,10 @@ public class PlatformPcdPreprocessActionForBuilding extends PlatformPcdPreproces
                               String            datum,\r
                               Token.DATUM_TYPE  datumType,\r
                               int               maxDatumSize) {\r
-        String      exceptionString = null;\r
-        int         value;\r
-        BigInteger  value64;\r
-        String      subStr;\r
-        int         index;\r
-\r
-        if (moduleName == null) {\r
-            moduleName = "section <DynamicPcdBuildDefinitions>";\r
-        } else {\r
-            moduleName = "module " + moduleName;\r
-        }\r
-\r
-        if (maxDatumSize == 0) {\r
-            exceptionString = String.format("[FPD file error] You maybe miss <MaxDatumSize> for PCD %s in %s",\r
-                                            cName,\r
-                                            moduleName);\r
-            return exceptionString;\r
-        }\r
-\r
-        switch (datumType) {\r
-        case UINT8:\r
-            if (maxDatumSize != 1) {\r
-                exceptionString = String.format("[FPD file error] The datum type of PCD data %s in %s "+\r
-                                                "is UINT8, but datum size is %d, they are not matched!",\r
-                                                 cName,\r
-                                                 moduleName,\r
-                                                 maxDatumSize);\r
-                return exceptionString;\r
-            }\r
-\r
-            if (datum != null) {\r
-                try {\r
-                    value = Integer.decode(datum);\r
-                } catch (NumberFormatException nfeExp) {\r
-                    exceptionString = String.format("[FPD file error] The datum for PCD %s in %s is not valid "+\r
-                                                    "digital format of UINT8",\r
-                                                    cName,\r
-                                                    moduleName);\r
-                    return exceptionString;\r
-                }\r
-                if (value > 0xFF) {\r
-                    exceptionString = String.format("[FPD file error] The datum for PCD %s in %s is %s exceed"+\r
-                                                    " the max size of UINT8 - 0xFF",\r
-                                                    cName,\r
-                                                    moduleName,\r
-                                                    datum);\r
-                    return exceptionString;\r
-                }\r
-            }\r
-            break;\r
-        case UINT16:\r
-            if (maxDatumSize != 2) {\r
-                exceptionString = String.format("[FPD file error] The datum type of PCD data %s in %s "+\r
-                                                "is UINT16, but datum size is %d, they are not matched!",\r
-                                                 cName,\r
-                                                 moduleName,\r
-                                                 maxDatumSize);\r
-                return exceptionString;\r
-            }\r
-            if (datum != null) {\r
-                try {\r
-                    value = Integer.decode(datum);\r
-                } catch (NumberFormatException nfeExp) {\r
-                    exceptionString = String.format("[FPD file error] The datum for PCD %s in %s is "+\r
-                                                    "not valid digital of UINT16",\r
-                                                    cName,\r
-                                                    moduleName);\r
-                    return exceptionString;\r
-                }\r
-                if (value > 0xFFFF) {\r
-                    exceptionString = String.format("[FPD file error] The datum for PCD %s in %s is %s "+\r
-                                                    "which exceed the range of UINT16 - 0xFFFF",\r
-                                                    cName,\r
-                                                    moduleName,\r
-                                                    datum);\r
-                    return exceptionString;\r
-                }\r
-            }\r
-            break;\r
-        case UINT32:\r
-            if (maxDatumSize != 4) {\r
-                exceptionString = String.format("[FPD file error] The datum type of PCD data %s in %s "+\r
-                                                "is UINT32, but datum size is %d, they are not matched!",\r
-                                                 cName,\r
-                                                 moduleName,\r
-                                                 maxDatumSize);\r
-                return exceptionString;\r
-            }\r
-\r
-            if (datum != null) {\r
-                try {\r
-                    if (datum.length() > 2) {\r
-                        if ((datum.charAt(0) == '0')        &&\r
-                            ((datum.charAt(1) == 'x') || (datum.charAt(1) == 'X'))){\r
-                            subStr = datum.substring(2, datum.length());\r
-                            value64 = new BigInteger(subStr, 16);\r
-                        } else {\r
-                            value64 = new BigInteger(datum);\r
-                        }\r
-                    } else {\r
-                        value64 = new BigInteger(datum);\r
-                    }\r
-                } catch (NumberFormatException nfeExp) {\r
-                    exceptionString = String.format("[FPD file error] The datum for PCD %s in %s is not "+\r
-                                                    "valid digital of UINT32",\r
-                                                    cName,\r
-                                                    moduleName);\r
-                    return exceptionString;\r
-                }\r
-\r
-                if (value64.bitLength() > 32) {\r
-                    exceptionString = String.format("[FPD file error] The datum for PCD %s in %s is %s which "+\r
-                                                    "exceed the range of UINT32 - 0xFFFFFFFF",\r
-                                                    cName,\r
-                                                    moduleName,\r
-                                                    datum);\r
-                    return exceptionString;\r
-                }\r
-            }\r
-            break;\r
-        case UINT64:\r
-            if (maxDatumSize != 8) {\r
-                exceptionString = String.format("[FPD file error] The datum type of PCD data %s in %s "+\r
-                                                "is UINT64, but datum size is %d, they are not matched!",\r
-                                                 cName,\r
-                                                 moduleName,\r
-                                                 maxDatumSize);\r
-                return exceptionString;\r
-            }\r
-\r
-            if (datum != null) {\r
-                try {\r
-                    if (datum.length() > 2) {\r
-                        if ((datum.charAt(0) == '0')        &&\r
-                            ((datum.charAt(1) == 'x') || (datum.charAt(1) == 'X'))){\r
-                            subStr = datum.substring(2, datum.length());\r
-                            value64 = new BigInteger(subStr, 16);\r
-                        } else {\r
-                            value64 = new BigInteger(datum);\r
-                        }\r
-                    } else {\r
-                        value64 = new BigInteger(datum);\r
-                    }\r
-                } catch (NumberFormatException nfeExp) {\r
-                    exceptionString = String.format("[FPD file error] The datum for PCD %s in %s is not valid"+\r
-                                                    " digital of UINT64",\r
-                                                    cName,\r
-                                                    moduleName);\r
-                    return exceptionString;\r
-                }\r
-\r
-                if (value64.bitLength() > 64) {\r
-                    exceptionString = String.format("[FPD file error] The datum for PCD %s in %s is %s "+\r
-                                                    "exceed the range of UINT64 - 0xFFFFFFFFFFFFFFFF",\r
-                                                    cName,\r
-                                                    moduleName,\r
-                                                    datum);\r
-                    return exceptionString;\r
-                }\r
-            }\r
-            break;\r
-        case BOOLEAN:\r
-            if (maxDatumSize != 1) {\r
-                exceptionString = String.format("[FPD file error] The datum type of PCD data %s in %s "+\r
-                                                "is BOOLEAN, but datum size is %d, they are not matched!",\r
-                                                 cName,\r
-                                                 moduleName,\r
-                                                 maxDatumSize);\r
-                return exceptionString;\r
-            }\r
-\r
-            if (datum != null) {\r
-                if (!(datum.equalsIgnoreCase("TRUE") ||\r
-                     datum.equalsIgnoreCase("FALSE"))) {\r
-                    exceptionString = String.format("[FPD file error] The datum type of PCD data %s in %s "+\r
-                                                    "is BOOELAN, but value is not 'true'/'TRUE' or 'FALSE'/'false'",\r
-                                                    cName,\r
-                                                    moduleName);\r
-                    return exceptionString;\r
-                }\r
-\r
-            }\r
-            break;\r
-        case POINTER:\r
-            if (datum == null) {\r
-                break;\r
-            }\r
-\r
-            char    ch     = datum.charAt(0);\r
-            int     start, end;\r
-            String  strValue;\r
-            //\r
-            // For void* type PCD, only three datum is support:\r
-            // 1) Unicode: string with start char is "L"\r
-            // 2) Ansci: String start char is ""\r
-            // 3) byte array: String start char "{"\r
-            //\r
-            if (ch == 'L') {\r
-                start       = datum.indexOf('\"');\r
-                end         = datum.lastIndexOf('\"');\r
-                if ((start > end)           ||\r
-                    (end   > datum.length())||\r
-                    ((start == end) && (datum.length() > 0))) {\r
-                    exceptionString = String.format("[FPD file error] The datum type of PCD %s in %s is VOID* and datum is "+\r
-                                                    "a UNICODE string because start with L\", but format maybe"+\r
-                                                    "is not right, correct UNICODE string is L\"...\"!",\r
-                                                    cName,\r
-                                                    moduleName);\r
-                    return exceptionString;\r
-                }\r
-\r
-                strValue    = datum.substring(start + 1, end);\r
-                if ((strValue.length() * 2) > maxDatumSize) {\r
-                    exceptionString = String.format("[FPD file error] The datum type of PCD %s in %s is VOID*, and datum is "+\r
-                                                    "a UNICODE string, but the datum size is %d exceed to <MaxDatumSize> : %d",\r
-                                                    cName,\r
-                                                    moduleName,\r
-                                                    strValue.length() * 2,\r
-                                                    maxDatumSize);\r
-                    return exceptionString;\r
-                }\r
-            } else if (ch == '\"'){\r
-                start       = datum.indexOf('\"');\r
-                end         = datum.lastIndexOf('\"');\r
-                if ((start > end)           ||\r
-                    (end   > datum.length())||\r
-                    ((start == end) && (datum.length() > 0))) {\r
-                    exceptionString = String.format("[FPD file error] The datum type of PCD %s in %s is VOID* and datum is "+\r
-                                                    "a ANSCII string because start with \", but format maybe"+\r
-                                                    "is not right, correct ANSIC string is \"...\"!",\r
-                                                    cName,\r
-                                                    moduleName);\r
-                    return exceptionString;\r
-                }\r
-                strValue    = datum.substring(start + 1, end);\r
-                if ((strValue.length()) > maxDatumSize) {\r
-                    exceptionString = String.format("[FPD file error] The datum type of PCD %s in %s is VOID*, and datum is "+\r
-                                                    "a ANSCI string, but the datum size is %d which exceed to <MaxDatumSize> : %d",\r
-                                                    cName,\r
-                                                    moduleName,\r
-                                                    strValue.length(),\r
-                                                    maxDatumSize);\r
-                    return exceptionString;\r
-                }\r
-            } else if (ch =='{') {\r
-                String[]  strValueArray;\r
-\r
-                start           = datum.indexOf('{');\r
-                end             = datum.lastIndexOf('}');\r
-                strValue        = datum.substring(start + 1, end);\r
-                strValue        = strValue.trim();\r
-                if (strValue.length() == 0) {\r
-                    exceptionString = String.format ("[FPD file error] The datum type of PCD %s in %s is VOID*, and "+\r
-                                                     "it is byte array in fact, but '{}' is not valid for NULL datam but"+\r
-                                                     " need use '{0}'",\r
-                                                     cName,\r
-                                                     moduleName);\r
-                    return exceptionString;\r
-                }\r
-                strValueArray   = strValue.split(",");\r
-                for (index = 0; index < strValueArray.length; index ++) {\r
-                    try{\r
-                        value = Integer.decode(strValueArray[index].trim());\r
-                    } catch (NumberFormatException nfeEx) {\r
-                        exceptionString = String.format("[FPD file error] The datum type of PCD %s in %s is VOID*, and "+\r
-                                                         "it is byte array in fact. For every byte in array should be a valid"+\r
-                                                         "byte digital, but element %s is not a valid byte digital!",\r
-                                                         cName,\r
-                                                         moduleName,\r
-                                                         strValueArray[index]);\r
-                        return exceptionString;\r
-                    }\r
-                    if (value > 0xFF) {\r
-                        exceptionString = String.format("[FPD file error] The datum type of PCD %s in %s is VOID*, "+\r
-                                                        "it is byte array in fact. But the element of %s exceed the byte range",\r
-                                                        cName,\r
-                                                        moduleName,\r
-                                                        strValueArray[index]);\r
-                        return exceptionString;\r
-                    }\r
-                }\r
-\r
-                if (strValueArray.length > maxDatumSize) {\r
-                    exceptionString = String.format("[FPD file error] The datum type of PCD %s in %s is VOID*, and datum is byte"+\r
-                                                    "array, but the number of bytes is %d which exceed to <MaxDatumSzie> : %d!",\r
-                                                    cName,\r
-                                                    moduleName,\r
-                                                    strValueArray.length,\r
-                                                    maxDatumSize);\r
-                    return exceptionString;\r
-                }\r
-            } else {\r
-                exceptionString = String.format("[FPD file error] The datum type of PCD %s in %s is VOID*. For VOID* type, you have three format choise:\n"+\r
-                                                "1) UNICODE string: like L\"xxxx\";\r\n"+\r
-                                                "2) ANSIC string: like \"xxx\";\r\n"+\r
-                                                "3) Byte array: like {0x2, 0x45, 0x23}\r\n"+\r
-                                                "But the datum in seems does not following above format!",\r
-                                                cName,\r
-                                                moduleName);\r
-                return exceptionString;\r
-            }\r
-            break;\r
-        default:\r
-            exceptionString = String.format("[FPD file error] For PCD entry %s in %s, datum type is unknown, it should be one of "+\r
-                                            "UINT8, UINT16, UINT32, UINT64, VOID*, BOOLEAN",\r
-                                            cName,\r
-                                            moduleName);\r
-            return exceptionString;\r
-        }\r
+        //\r
+        // In building system, datum should not be checked, the checking work\r
+        // should be done by wizard tools or PCD verification tools.\r
+        //                                \r
         return null;\r
     }\r
 \r