3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 package org
.tianocore
.migration
;
17 import java
.util
.regex
.*;
18 import org
.tianocore
.*;
20 public final class ModuleReader
{
21 ModuleReader(String path
, ModuleInfo moduleinfo
, Database database
, UI u
) {
27 //private static String modulepath;
28 //private static ModuleInfo mi;
29 private static Database db
;
32 private static final Pattern ptninfequation
= Pattern
.compile("([^\\s]*)\\s*=\\s*([^\\s]*)");
33 private static final Pattern ptnsection
= Pattern
.compile("\\[([^\\[\\]]*)\\]([^\\[\\]]*)\\n", Pattern
.MULTILINE
);
34 private static final Pattern ptnfilename
= Pattern
.compile("[^\\s]+");
36 public static final void readMsa(String name
, ModuleInfo mi
) throws Exception
{
37 ModuleSurfaceAreaDocument msadoc
= ModuleSurfaceAreaDocument
.Factory
.parse(new File(mi
.modulepath
+ File
.separator
+ name
));
38 ModuleSurfaceAreaDocument
.ModuleSurfaceArea msa
= msadoc
.getModuleSurfaceArea();
39 MsaHeaderDocument
.MsaHeader msaheader
= msa
.getMsaHeader();
41 mi
.modulename
= msaheader
.getModuleName();
42 mi
.guidvalue
= msaheader
.getGuidValue();
43 mi
.moduletype
= msaheader
.getModuleType().toString(); // ???
45 SourceFilesDocument
.SourceFiles sourcefiles
= msa
.getSourceFiles();
48 Iterator
<FilenameDocument
.Filename
> li
= sourcefiles
.getFilenameList().iterator();
49 while (li
.hasNext()) {
50 if (!mi
.localmodulesources
.contains(temp
= li
.next().toString())) {
51 System
.out
.println("Source File Missing! : " + temp
);
56 public static final void readInf(String name
, ModuleInfo mi
) throws Exception
{
57 System
.out
.println("\nParsing INF file: " + name
);
59 Matcher mtrinfequation
;
63 wholeline
= Common
.file2string(mi
.modulepath
+ File
.separator
+ name
);
64 mtrsection
= ptnsection
.matcher(wholeline
);
65 while (mtrsection
.find()) {
66 if (mtrsection
.group(1).matches("defines")) {
67 mtrinfequation
= ptninfequation
.matcher(mtrsection
.group(2));
68 while (mtrinfequation
.find()) {
69 if (mtrinfequation
.group(1).matches("BASE_NAME")) {
70 mi
.modulename
= mtrinfequation
.group(2);
72 if (mtrinfequation
.group(1).matches("FILE_GUID")) {
73 mi
.guidvalue
= mtrinfequation
.group(2);
75 if (mtrinfequation
.group(1).matches("COMPONENT_TYPE")) {
76 mi
.moduletype
= mtrinfequation
.group(2);
80 if (mtrsection
.group(1).matches("nmake.common")) {
81 mtrinfequation
= ptninfequation
.matcher(mtrsection
.group(2));
82 while (mtrinfequation
.find()) {
83 if (mtrinfequation
.group(1).matches("IMAGE_ENTRY_POINT")) {
84 mi
.entrypoint
= mtrinfequation
.group(2);
86 if (mtrinfequation
.group(1).matches("DPX_SOURCE")) {
87 if (!mi
.localmodulesources
.contains(mtrinfequation
.group(2))) {
88 ui
.println("DPX File Missing! : " + mtrinfequation
.group(2));
93 if (mtrsection
.group(1).contains("sources.")) {
94 mtrfilename
= ptnfilename
.matcher(mtrsection
.group(2));
95 while (mtrfilename
.find()) {
96 if (!mi
.localmodulesources
.contains(mtrfilename
.group())) {
97 ui
.println("Source File Missing! : " + mtrfilename
.group());