3 VfrCompiler internal definitions.
5 Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
6 SPDX-License-Identifier: BSD-2-Clause-Patent
10 #ifndef _VFRCOMPILER_H_
11 #define _VFRCOMPILER_H_
13 #include "Common/UefiBaseTypes.h"
15 #include "VfrFormPkg.h"
16 #include "VfrUtilityLib.h"
19 #define PROGRAM_NAME "VfrCompile"
20 #define VFR_COMPILER_VERSION " 2.01 (UEFI 2.4) "
22 // This is how we invoke the C preprocessor on the VFR source file
23 // to resolve #defines, #includes, etc. To make C source files
24 // shareable between VFR and drivers, define VFRCOMPILE so that
25 // #ifdefs can be used in shared .h files.
27 #define PREPROCESSOR_COMMAND "cl "
28 #define PREPROCESSOR_OPTIONS "/nologo /E /TC /DVFRCOMPILE "
31 // Specify the filename extensions for the files we generate.
33 #define VFR_PREPROCESS_FILENAME_EXTENSION ".i"
34 #define VFR_PACKAGE_FILENAME_EXTENSION ".hpk"
35 #define VFR_RECORDLIST_FILENAME_EXTENSION ".lst"
39 CHAR8
*RecordListFile
;
40 CHAR8
*PkgOutputFileName
;
41 CHAR8
*COutputFileName
;
42 bool CreateRecordListFile
;
43 bool CreateIfrPkgFile
;
44 CHAR8
*OutputDirectory
;
45 CHAR8
*PreprocessorOutputFileName
;
46 CHAR8
*VfrBaseFileName
; // name of input VFR file with no path or extension
48 bool SkipCPreprocessor
;
49 CHAR8
*CPreprocessorOptions
;
50 BOOLEAN CompatibleMode
;
51 BOOLEAN HasOverrideClassGuid
;
52 EFI_GUID OverrideClassGuid
;
53 BOOLEAN WarningAsError
;
67 } COMPILER_RUN_STATUS
;
71 COMPILER_RUN_STATUS mRunStatus
;
73 CHAR8
*mPreProcessCmd
;
74 CHAR8
*mPreProcessOpt
;
76 VOID
OptionInitialization (IN INT32
, IN CHAR8
**);
77 VOID
AppendIncludePath (IN CHAR8
*);
78 VOID
AppendCPreprocessorOptions (IN CHAR8
*);
79 INT8
SetBaseFileName (VOID
);
80 INT8
SetPkgOutputFileName (VOID
);
81 INT8
SetCOutputFileName(VOID
);
82 INT8
SetPreprocessorOutputFileName (VOID
);
83 INT8
SetRecordListFileName (VOID
);
85 VOID
SET_RUN_STATUS (IN COMPILER_RUN_STATUS
);
86 BOOLEAN
IS_RUN_STATUS (IN COMPILER_RUN_STATUS
);
89 COMPILER_RUN_STATUS
RunStatus (VOID
) {
94 CVfrCompiler (IN INT32
, IN CHAR8
**);
100 VOID
PreProcess (VOID
);
102 VOID
AdjustBin (VOID
);
103 VOID
GenBinary (VOID
);
104 VOID
GenCFile (VOID
);
105 VOID
GenRecordListFile (VOID
);
106 VOID
DebugError (IN CHAR8
*, IN UINT32
, IN UINT32
, IN CONST CHAR8
*, IN CONST CHAR8
*, ...);