Home | History | Annotate | Download | only in ProcessDsc
      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