]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/C/VfrCompile/VfrCompiler.h
BaseTools: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrCompiler.h
CommitLineData
30fdf114 1/** @file\r
f7496d71 2\r
fb0b35e0 3 VfrCompiler internal definitions.\r
30fdf114 4\r
f7496d71 5Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>\r
2e351cbe 6SPDX-License-Identifier: BSD-2-Clause-Patent\r
30fdf114
LG
7\r
8**/\r
9\r
10#ifndef _VFRCOMPILER_H_\r
11#define _VFRCOMPILER_H_\r
12\r
13#include "Common/UefiBaseTypes.h"\r
14#include "EfiVfr.h"\r
15#include "VfrFormPkg.h"\r
16#include "VfrUtilityLib.h"\r
4234283c 17#include "ParseInf.h"\r
30fdf114
LG
18\r
19#define PROGRAM_NAME "VfrCompile"\r
45258285 20#define VFR_COMPILER_VERSION " 2.01 (UEFI 2.4) "\r
30fdf114
LG
21//\r
22// This is how we invoke the C preprocessor on the VFR source file\r
23// to resolve #defines, #includes, etc. To make C source files\r
24// shareable between VFR and drivers, define VFRCOMPILE so that\r
25// #ifdefs can be used in shared .h files.\r
26//\r
27#define PREPROCESSOR_COMMAND "cl "\r
28#define PREPROCESSOR_OPTIONS "/nologo /E /TC /DVFRCOMPILE "\r
29\r
30//\r
31// Specify the filename extensions for the files we generate.\r
32//\r
33#define VFR_PREPROCESS_FILENAME_EXTENSION ".i"\r
34#define VFR_PACKAGE_FILENAME_EXTENSION ".hpk"\r
35#define VFR_RECORDLIST_FILENAME_EXTENSION ".lst"\r
36\r
37typedef struct {\r
a6ac965b
HW
38 CHAR8 *VfrFileName;\r
39 CHAR8 *RecordListFile;\r
40 CHAR8 *PkgOutputFileName;\r
41 CHAR8 *COutputFileName;\r
30fdf114
LG
42 bool CreateRecordListFile;\r
43 bool CreateIfrPkgFile;\r
a6ac965b
HW
44 CHAR8 *OutputDirectory;\r
45 CHAR8 *PreprocessorOutputFileName;\r
46 CHAR8 *VfrBaseFileName; // name of input VFR file with no path or extension\r
30fdf114
LG
47 CHAR8 *IncludePaths;\r
48 bool SkipCPreprocessor;\r
49 CHAR8 *CPreprocessorOptions;\r
50 BOOLEAN CompatibleMode;\r
4234283c
LG
51 BOOLEAN HasOverrideClassGuid;\r
52 EFI_GUID OverrideClassGuid;\r
4afd3d04 53 BOOLEAN WarningAsError;\r
74bbe31b
DB
54 BOOLEAN AutoDefault;\r
55 BOOLEAN CheckDefault;\r
30fdf114
LG
56} OPTIONS;\r
57\r
58typedef enum {\r
e4ac870f
LG
59 STATUS_STARTED = 0,\r
60 STATUS_INITIALIZED,\r
30fdf114
LG
61 STATUS_PREPROCESSED,\r
62 STATUS_COMPILEED,\r
63 STATUS_GENBINARY,\r
64 STATUS_FINISHED,\r
65 STATUS_FAILED,\r
66 STATUS_DEAD,\r
67} COMPILER_RUN_STATUS;\r
68\r
69class CVfrCompiler {\r
70private:\r
71 COMPILER_RUN_STATUS mRunStatus;\r
72 OPTIONS mOptions;\r
73 CHAR8 *mPreProcessCmd;\r
74 CHAR8 *mPreProcessOpt;\r
75\r
76 VOID OptionInitialization (IN INT32 , IN CHAR8 **);\r
77 VOID AppendIncludePath (IN CHAR8 *);\r
78 VOID AppendCPreprocessorOptions (IN CHAR8 *);\r
79 INT8 SetBaseFileName (VOID);\r
80 INT8 SetPkgOutputFileName (VOID);\r
81 INT8 SetCOutputFileName(VOID);\r
82 INT8 SetPreprocessorOutputFileName (VOID);\r
83 INT8 SetRecordListFileName (VOID);\r
84\r
85 VOID SET_RUN_STATUS (IN COMPILER_RUN_STATUS);\r
86 BOOLEAN IS_RUN_STATUS (IN COMPILER_RUN_STATUS);\r
87\r
88public:\r
89 COMPILER_RUN_STATUS RunStatus (VOID) {\r
90 return mRunStatus;\r
91 }\r
92\r
93public:\r
94 CVfrCompiler (IN INT32 , IN CHAR8 **);\r
95 ~CVfrCompiler ();\r
96\r
97 VOID Usage (VOID);\r
cebd6ef9 98 VOID Version (VOID);\r
30fdf114
LG
99\r
100 VOID PreProcess (VOID);\r
101 VOID Compile (VOID);\r
102 VOID AdjustBin (VOID);\r
103 VOID GenBinary (VOID);\r
104 VOID GenCFile (VOID);\r
105 VOID GenRecordListFile (VOID);\r
52302d4d 106 VOID DebugError (IN CHAR8*, IN UINT32, IN UINT32, IN CONST CHAR8*, IN CONST CHAR8*, ...);\r
30fdf114
LG
107};\r
108\r
109#endif\r