1 /*++
2 
3 Copyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR>
4 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
8 
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.
11 
12 Module Name:
13 
14   Common.h
15 
16 Abstract:
17 
18   Common include file for the ProcessDsc utility.
19 
20 --*/
21 
22 #ifndef _COMMON_H_
23 #define _COMMON_H_
24 
25 typedef char INT8;
26 typedef unsigned int UINT32;
27 
28 #include "EfiUtilityMsgs.h"
29 
30 #define MAX_LINE_LEN  1024
31 
32 #ifdef MAX_PATH
33 #undef MAX_PATH
34 #define MAX_PATH  1024
35 #endif
36 
37 //
38 // Defines for how to expand symbols
39 //
40 #define EXPANDMODE_NO_UNDEFS    0x01
41 #define EXPANDMODE_NO_DESTDIR   0x02
42 #define EXPANDMODE_NO_SOURCEDIR 0x04
43 #define EXPANDMODE_RECURSIVE    0x08
44 
45 //
46 // Defines for adding symbols
47 //
48 #define SYM_OVERWRITE 0x01      // overwrite existing assignments
49 #define SYM_GLOBAL    0x02      // global symbol (persistent)
50 #define SYM_LOCAL     0x04      // symbols at component level
51 #define SYM_FILE      0x08      // symbols at file level
52 #define SYM_FILEPATH  0x10      // symbol is a file path
53 #define SYM_FILENAME  0x20      // symbol is a file name
54 #define FV_DIR        "FV_DIR"  // symbol for base dir where FV files are
55 #define DSC_FILENAME  "DSC_FILENAME"
56 
57 //
58 // Smart file for better incremental build support.
59 // Only re-create .pkg .inf or .apr files when it's content is changed.
60 //
61 //
62 typedef struct _SMART_FILE {
63   char              *FileName;
64   char              *FileContent;        // Previous file content
65   int               FileLength;            // Previous file string length
66   int               FilePosition;        // The offset from FileContent for next comparison
67   FILE              *FilePtr;            // New file pointer if the file need to be re-created
68 } SMART_FILE;
69 
70 SMART_FILE *
71 SmartOpen (
72   char        *FileName
73   );
74 
75 int
76 SmartWrite (
77   SMART_FILE  *SmartFile,
78   char        *String
79   );
80 
81 void
82 SmartClose (
83   SMART_FILE  *SmartFile
84   );
85 
86 INT8  *
87 GetSymbolValue (
88   INT8 *SymbolName
89   );
90 
91 int
92 AddSymbol (
93   INT8  *Name,
94   INT8  *Value,
95   int   Mode
96   );
97 
98 int
99 ExpandSymbols (
100   INT8  *SourceLine,
101   INT8  *DestLine,
102   int   LineLen,
103   int   ExpandMode
104   );
105 
106 void
107 Message (
108   UINT32  PrintMask,
109   INT8    *Fmt,
110   ...
111   );
112 
113 int
114 MakeFilePath (
115   INT8 *FileName
116   );
117 
118 int
119 IsAbsolutePath (
120   INT8    *FileName
121   );
122 
123 #endif // ifndef _COMMON_H_
124