]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - BaseTools/Source/C/VfrCompile/VfrCompiler.h
BaseTools: resolve initialization order errors in VfrFormPkg.h
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrCompiler.h
... / ...
CommitLineData
1/** @file\r
2 \r
3 VfrCompiler internal defintions.\r
4\r
5Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>\r
6This program and the accompanying materials \r
7are licensed and made available under the terms and conditions of the BSD License \r
8which accompanies this distribution. The full text of the license may be found at \r
9http://opensource.org/licenses/bsd-license.php \r
10 \r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
13\r
14**/\r
15\r
16#ifndef _VFRCOMPILER_H_\r
17#define _VFRCOMPILER_H_\r
18\r
19#include "Common/UefiBaseTypes.h"\r
20#include "EfiVfr.h"\r
21#include "VfrFormPkg.h"\r
22#include "VfrUtilityLib.h"\r
23#include "ParseInf.h"\r
24\r
25#define PROGRAM_NAME "VfrCompile"\r
26#define VFR_COMPILER_VERSION " 2.01 (UEFI 2.4) "\r
27//\r
28// This is how we invoke the C preprocessor on the VFR source file\r
29// to resolve #defines, #includes, etc. To make C source files\r
30// shareable between VFR and drivers, define VFRCOMPILE so that\r
31// #ifdefs can be used in shared .h files.\r
32//\r
33#define PREPROCESSOR_COMMAND "cl "\r
34#define PREPROCESSOR_OPTIONS "/nologo /E /TC /DVFRCOMPILE "\r
35\r
36//\r
37// Specify the filename extensions for the files we generate.\r
38//\r
39#define VFR_PREPROCESS_FILENAME_EXTENSION ".i"\r
40#define VFR_PACKAGE_FILENAME_EXTENSION ".hpk"\r
41#define VFR_RECORDLIST_FILENAME_EXTENSION ".lst"\r
42\r
43typedef struct {\r
44 CHAR8 *VfrFileName;\r
45 CHAR8 *RecordListFile;\r
46 CHAR8 *PkgOutputFileName;\r
47 CHAR8 *COutputFileName;\r
48 bool CreateRecordListFile;\r
49 bool CreateIfrPkgFile;\r
50 CHAR8 *OutputDirectory;\r
51 CHAR8 *PreprocessorOutputFileName;\r
52 CHAR8 *VfrBaseFileName; // name of input VFR file with no path or extension\r
53 CHAR8 *IncludePaths;\r
54 bool SkipCPreprocessor;\r
55 CHAR8 *CPreprocessorOptions;\r
56 BOOLEAN CompatibleMode;\r
57 BOOLEAN HasOverrideClassGuid;\r
58 EFI_GUID OverrideClassGuid;\r
59 BOOLEAN WarningAsError;\r
60 BOOLEAN AutoDefault;\r
61 BOOLEAN CheckDefault;\r
62} OPTIONS;\r
63\r
64typedef enum {\r
65 STATUS_STARTED = 0,\r
66 STATUS_INITIALIZED,\r
67 STATUS_PREPROCESSED,\r
68 STATUS_COMPILEED,\r
69 STATUS_GENBINARY,\r
70 STATUS_FINISHED,\r
71 STATUS_FAILED,\r
72 STATUS_DEAD,\r
73} COMPILER_RUN_STATUS;\r
74\r
75class CVfrCompiler {\r
76private:\r
77 COMPILER_RUN_STATUS mRunStatus;\r
78 OPTIONS mOptions;\r
79 CHAR8 *mPreProcessCmd;\r
80 CHAR8 *mPreProcessOpt;\r
81\r
82 VOID OptionInitialization (IN INT32 , IN CHAR8 **);\r
83 VOID AppendIncludePath (IN CHAR8 *);\r
84 VOID AppendCPreprocessorOptions (IN CHAR8 *);\r
85 INT8 SetBaseFileName (VOID);\r
86 INT8 SetPkgOutputFileName (VOID);\r
87 INT8 SetCOutputFileName(VOID);\r
88 INT8 SetPreprocessorOutputFileName (VOID);\r
89 INT8 SetRecordListFileName (VOID);\r
90\r
91 VOID SET_RUN_STATUS (IN COMPILER_RUN_STATUS);\r
92 BOOLEAN IS_RUN_STATUS (IN COMPILER_RUN_STATUS);\r
93\r
94public:\r
95 COMPILER_RUN_STATUS RunStatus (VOID) {\r
96 return mRunStatus;\r
97 }\r
98\r
99public:\r
100 CVfrCompiler (IN INT32 , IN CHAR8 **);\r
101 ~CVfrCompiler ();\r
102\r
103 VOID Usage (VOID);\r
104 VOID Version (VOID);\r
105\r
106 VOID PreProcess (VOID);\r
107 VOID Compile (VOID);\r
108 VOID AdjustBin (VOID);\r
109 VOID GenBinary (VOID);\r
110 VOID GenCFile (VOID);\r
111 VOID GenRecordListFile (VOID);\r
112 VOID DebugError (IN CHAR8*, IN UINT32, IN UINT32, IN CONST CHAR8*, IN CONST CHAR8*, ...);\r
113};\r
114\r
115#endif\r