]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/C/VfrCompile/VfrCompiler.h
BaseTools: Change source files to DOS format.
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrCompiler.h
CommitLineData
30fdf114
LG
1/** @file\r
2 \r
3 VfrCompiler internal defintions.\r
4\r
45258285 5Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>\r
40d841f6 6This program and the accompanying materials \r
30fdf114
LG
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
4234283c 23#include "ParseInf.h"\r
30fdf114
LG
24\r
25#define PROGRAM_NAME "VfrCompile"\r
45258285 26#define VFR_COMPILER_VERSION " 2.01 (UEFI 2.4) "\r
30fdf114
LG
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[MAX_PATH];\r
45 CHAR8 RecordListFile[MAX_PATH];\r
46 CHAR8 PkgOutputFileName[MAX_PATH];\r
47 CHAR8 COutputFileName[MAX_PATH];\r
48 bool CreateRecordListFile;\r
49 bool CreateIfrPkgFile;\r
50 CHAR8 OutputDirectory[MAX_PATH];\r
51 CHAR8 PreprocessorOutputFileName[MAX_PATH];\r
52 CHAR8 VfrBaseFileName[MAX_PATH]; // 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
4234283c
LG
57 BOOLEAN HasOverrideClassGuid;\r
58 EFI_GUID OverrideClassGuid;\r
4afd3d04 59 BOOLEAN WarningAsError;\r
30fdf114
LG
60} OPTIONS;\r
61\r
62typedef enum {\r
e4ac870f
LG
63 STATUS_STARTED = 0,\r
64 STATUS_INITIALIZED,\r
30fdf114
LG
65 STATUS_PREPROCESSED,\r
66 STATUS_COMPILEED,\r
67 STATUS_GENBINARY,\r
68 STATUS_FINISHED,\r
69 STATUS_FAILED,\r
70 STATUS_DEAD,\r
71} COMPILER_RUN_STATUS;\r
72\r
73class CVfrCompiler {\r
74private:\r
75 COMPILER_RUN_STATUS mRunStatus;\r
76 OPTIONS mOptions;\r
77 CHAR8 *mPreProcessCmd;\r
78 CHAR8 *mPreProcessOpt;\r
79\r
80 VOID OptionInitialization (IN INT32 , IN CHAR8 **);\r
81 VOID AppendIncludePath (IN CHAR8 *);\r
82 VOID AppendCPreprocessorOptions (IN CHAR8 *);\r
83 INT8 SetBaseFileName (VOID);\r
84 INT8 SetPkgOutputFileName (VOID);\r
85 INT8 SetCOutputFileName(VOID);\r
86 INT8 SetPreprocessorOutputFileName (VOID);\r
87 INT8 SetRecordListFileName (VOID);\r
88\r
89 VOID SET_RUN_STATUS (IN COMPILER_RUN_STATUS);\r
90 BOOLEAN IS_RUN_STATUS (IN COMPILER_RUN_STATUS);\r
4afd3d04 91 VOID UpdateInfoForDynamicOpcode (VOID);\r
30fdf114
LG
92\r
93public:\r
94 COMPILER_RUN_STATUS RunStatus (VOID) {\r
95 return mRunStatus;\r
96 }\r
97\r
98public:\r
99 CVfrCompiler (IN INT32 , IN CHAR8 **);\r
100 ~CVfrCompiler ();\r
101\r
102 VOID Usage (VOID);\r
cebd6ef9 103 VOID Version (VOID);\r
30fdf114
LG
104\r
105 VOID PreProcess (VOID);\r
106 VOID Compile (VOID);\r
107 VOID AdjustBin (VOID);\r
108 VOID GenBinary (VOID);\r
109 VOID GenCFile (VOID);\r
110 VOID GenRecordListFile (VOID);\r
52302d4d 111 VOID DebugError (IN CHAR8*, IN UINT32, IN UINT32, IN CONST CHAR8*, IN CONST CHAR8*, ...);\r
30fdf114
LG
112};\r
113\r
114#endif\r