]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrCompiler.h
1) Sync EdkCompatibilityPkg with EDK 1.04. The changes includes:
[mirror_edk2.git] / EdkCompatibilityPkg / Sample / Tools / Source / UefiVfrCompile / VfrCompiler.h
CommitLineData
95d675b5 1#ifndef _VFRCOMPILER_H_\r
2#define _VFRCOMPILER_H_\r
3\r
4#include "Tiano.h"\r
5#include "EfiTypes.h"\r
6#include "EfiVfr.h"\r
7#include "VfrFormPkg.h"\r
8#include "VfrUtilityLib.h"\r
9\r
10#define PROGRAM_NAME "VfrCompile"\r
11#define VFR_COMPILER_VERSION "UEFI 2.1"\r
12\r
13//\r
14// This is how we invoke the C preprocessor on the VFR source file\r
15// to resolve #defines, #includes, etc. To make C source files\r
16// shareable between VFR and drivers, define VFRCOMPILE so that\r
17// #ifdefs can be used in shared .h files.\r
18//\r
19#define PREPROCESSOR_COMMAND "cl "\r
20#define PREPROCESSOR_OPTIONS "/nologo /E /TC /DVFRCOMPILE "\r
21\r
22//\r
23// Specify the filename extensions for the files we generate.\r
24//\r
25#define VFR_PREPROCESS_FILENAME_EXTENSION ".i"\r
26#define VFR_PACKAGE_FILENAME_EXTENSION ".hpk"\r
27#define VFR_RECORDLIST_FILENAME_EXTENSION ".lst"\r
28\r
29typedef struct {\r
30 INT8 VfrFileName[MAX_PATH];\r
31 INT8 RecordListFile[MAX_PATH];\r
32 INT8 PkgOutputFileName[MAX_PATH];\r
33 INT8 COutputFileName[MAX_PATH];\r
34 bool CreateRecordListFile;\r
35 bool CreateIfrPkgFile;\r
36 INT8 OutputDirectory[MAX_PATH];\r
37 INT8 PreprocessorOutputFileName[MAX_PATH];\r
38 INT8 VfrBaseFileName[MAX_PATH]; // name of input VFR file with no path or extension\r
39 INT8 *IncludePaths;\r
40 INT8 *CPreprocessorOptions;\r
41} OPTIONS;\r
42\r
43typedef enum {\r
44 STATUS_INITIALIZED = 1,\r
45 STATUS_PREPROCESSED,\r
46 STATUS_COMPILEED,\r
47 STATUS_GENBINARY,\r
48 STATUS_FINISHED,\r
49 STATUS_FAILED,\r
50 STATUS_DEAD,\r
51} COMPILER_RUN_STATUS;\r
52\r
53class CVfrCompiler {\r
54private:\r
55 COMPILER_RUN_STATUS mRunStatus;\r
56 OPTIONS mOptions;\r
57 INT8 *mPreProcessCmd;\r
58 INT8 *mPreProcessOpt;\r
59\r
60 VOID OptionInitialization (IN INT32 , IN INT8 **);\r
61 VOID AppendIncludePath (IN INT8 *);\r
62 VOID AppendCPreprocessorOptions (IN INT8 *);\r
63 INT8 SetBaseFileName (VOID);\r
64 INT8 SetPkgOutputFileName (VOID);\r
65 INT8 SetCOutputFileName(VOID);\r
66 INT8 SetPreprocessorOutputFileName (VOID);\r
67 INT8 SetRecordListFileName (VOID);\r
68\r
69 VOID SET_RUN_STATUS (IN COMPILER_RUN_STATUS);\r
70 BOOLEAN IS_RUN_STATUS (IN COMPILER_RUN_STATUS);\r
71\r
72public:\r
73 COMPILER_RUN_STATUS RunStatus (VOID) {\r
74 return mRunStatus;\r
75 }\r
76\r
77public:\r
78 CVfrCompiler (IN INT32 , IN INT8 **);\r
79 ~CVfrCompiler ();\r
80\r
81 VOID Usage (VOID);\r
82\r
83 VOID PreProcess (VOID);\r
84 VOID Compile (VOID);\r
85 VOID GenBinary (VOID);\r
86 VOID GenCFile (VOID);\r
87 VOID GenRecordListFile (VOID);\r
88};\r
89\r
90#endif\r