]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/C/VfrCompile/VfrCompiler.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[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
1b72fd51 5Copyright (c) 2004 - 2019, 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
4234283c
LG
50 BOOLEAN HasOverrideClassGuid;\r
51 EFI_GUID OverrideClassGuid;\r
4afd3d04 52 BOOLEAN WarningAsError;\r
74bbe31b
DB
53 BOOLEAN AutoDefault;\r
54 BOOLEAN CheckDefault;\r
30fdf114
LG
55} OPTIONS;\r
56\r
57typedef enum {\r
e4ac870f
LG
58 STATUS_STARTED = 0,\r
59 STATUS_INITIALIZED,\r
30fdf114
LG
60 STATUS_PREPROCESSED,\r
61 STATUS_COMPILEED,\r
62 STATUS_GENBINARY,\r
63 STATUS_FINISHED,\r
64 STATUS_FAILED,\r
65 STATUS_DEAD,\r
66} COMPILER_RUN_STATUS;\r
67\r
68class CVfrCompiler {\r
69private:\r
70 COMPILER_RUN_STATUS mRunStatus;\r
71 OPTIONS mOptions;\r
72 CHAR8 *mPreProcessCmd;\r
73 CHAR8 *mPreProcessOpt;\r
74\r
75 VOID OptionInitialization (IN INT32 , IN CHAR8 **);\r
76 VOID AppendIncludePath (IN CHAR8 *);\r
77 VOID AppendCPreprocessorOptions (IN CHAR8 *);\r
78 INT8 SetBaseFileName (VOID);\r
79 INT8 SetPkgOutputFileName (VOID);\r
80 INT8 SetCOutputFileName(VOID);\r
81 INT8 SetPreprocessorOutputFileName (VOID);\r
82 INT8 SetRecordListFileName (VOID);\r
83\r
84 VOID SET_RUN_STATUS (IN COMPILER_RUN_STATUS);\r
85 BOOLEAN IS_RUN_STATUS (IN COMPILER_RUN_STATUS);\r
86\r
87public:\r
88 COMPILER_RUN_STATUS RunStatus (VOID) {\r
89 return mRunStatus;\r
90 }\r
91\r
92public:\r
93 CVfrCompiler (IN INT32 , IN CHAR8 **);\r
94 ~CVfrCompiler ();\r
95\r
96 VOID Usage (VOID);\r
cebd6ef9 97 VOID Version (VOID);\r
30fdf114
LG
98\r
99 VOID PreProcess (VOID);\r
100 VOID Compile (VOID);\r
101 VOID AdjustBin (VOID);\r
102 VOID GenBinary (VOID);\r
103 VOID GenCFile (VOID);\r
104 VOID GenRecordListFile (VOID);\r
52302d4d 105 VOID DebugError (IN CHAR8*, IN UINT32, IN UINT32, IN CONST CHAR8*, IN CONST CHAR8*, ...);\r
30fdf114
LG
106};\r
107\r
108#endif\r