summaryrefslogtreecommitdiff
path: root/EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrCompiler.h
diff options
context:
space:
mode:
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-01-24 07:29:31 +0000
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-01-24 07:29:31 +0000
commit95d675b5272d76105e2109a11d8b35f416be8b29 (patch)
treed8c0e4c20e5c30adce62c93d681706428ad75b1f /EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrCompiler.h
parentc7f33ca42470dc87bc41a8583f427883123d67a1 (diff)
downloadedk2-platforms-95d675b5272d76105e2109a11d8b35f416be8b29.tar.xz
1) Sync EdkCompatibilityPkg with EDK 1.04. The changes includes:
1.1) Bug fixes. (For details, please check Documents & files: Snapshot/Release Notes at https://edk.tianocore.org/servlets/ProjectDocumentList?folderID=43&expandFolder=43&folderID=6) 1.2) Add new UEFI protocol definitions for AbsolutePointer, FormBrowser2, HiiConfigAccess, HiiConfigRouting, HiiDatabase, HiiFont, HiiImage, HiiString, SimpleTextInputEx, DPC protocol. 1.3) Add Smbios 2.5, 2.6 supports. Incompatible changes hilighted: 1) EFI_MANAGED_NETWORK_PROTOCOL_GUID changed. 2) EFI_IP4_IPCONFIG_DATA changed. 2) Add in EdkCompatibilityPkg/EdkCompatibilityPkg.dsc to build all libraries in this package. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4624 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrCompiler.h')
-rw-r--r--EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrCompiler.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrCompiler.h b/EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrCompiler.h
new file mode 100644
index 0000000000..a980cb5b1a
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrCompiler.h
@@ -0,0 +1,90 @@
+#ifndef _VFRCOMPILER_H_
+#define _VFRCOMPILER_H_
+
+#include "Tiano.h"
+#include "EfiTypes.h"
+#include "EfiVfr.h"
+#include "VfrFormPkg.h"
+#include "VfrUtilityLib.h"
+
+#define PROGRAM_NAME "VfrCompile"
+#define VFR_COMPILER_VERSION "UEFI 2.1"
+
+//
+// This is how we invoke the C preprocessor on the VFR source file
+// to resolve #defines, #includes, etc. To make C source files
+// shareable between VFR and drivers, define VFRCOMPILE so that
+// #ifdefs can be used in shared .h files.
+//
+#define PREPROCESSOR_COMMAND "cl "
+#define PREPROCESSOR_OPTIONS "/nologo /E /TC /DVFRCOMPILE "
+
+//
+// Specify the filename extensions for the files we generate.
+//
+#define VFR_PREPROCESS_FILENAME_EXTENSION ".i"
+#define VFR_PACKAGE_FILENAME_EXTENSION ".hpk"
+#define VFR_RECORDLIST_FILENAME_EXTENSION ".lst"
+
+typedef struct {
+ INT8 VfrFileName[MAX_PATH];
+ INT8 RecordListFile[MAX_PATH];
+ INT8 PkgOutputFileName[MAX_PATH];
+ INT8 COutputFileName[MAX_PATH];
+ bool CreateRecordListFile;
+ bool CreateIfrPkgFile;
+ INT8 OutputDirectory[MAX_PATH];
+ INT8 PreprocessorOutputFileName[MAX_PATH];
+ INT8 VfrBaseFileName[MAX_PATH]; // name of input VFR file with no path or extension
+ INT8 *IncludePaths;
+ INT8 *CPreprocessorOptions;
+} OPTIONS;
+
+typedef enum {
+ STATUS_INITIALIZED = 1,
+ STATUS_PREPROCESSED,
+ STATUS_COMPILEED,
+ STATUS_GENBINARY,
+ STATUS_FINISHED,
+ STATUS_FAILED,
+ STATUS_DEAD,
+} COMPILER_RUN_STATUS;
+
+class CVfrCompiler {
+private:
+ COMPILER_RUN_STATUS mRunStatus;
+ OPTIONS mOptions;
+ INT8 *mPreProcessCmd;
+ INT8 *mPreProcessOpt;
+
+ VOID OptionInitialization (IN INT32 , IN INT8 **);
+ VOID AppendIncludePath (IN INT8 *);
+ VOID AppendCPreprocessorOptions (IN INT8 *);
+ INT8 SetBaseFileName (VOID);
+ INT8 SetPkgOutputFileName (VOID);
+ INT8 SetCOutputFileName(VOID);
+ INT8 SetPreprocessorOutputFileName (VOID);
+ INT8 SetRecordListFileName (VOID);
+
+ VOID SET_RUN_STATUS (IN COMPILER_RUN_STATUS);
+ BOOLEAN IS_RUN_STATUS (IN COMPILER_RUN_STATUS);
+
+public:
+ COMPILER_RUN_STATUS RunStatus (VOID) {
+ return mRunStatus;
+ }
+
+public:
+ CVfrCompiler (IN INT32 , IN INT8 **);
+ ~CVfrCompiler ();
+
+ VOID Usage (VOID);
+
+ VOID PreProcess (VOID);
+ VOID Compile (VOID);
+ VOID GenBinary (VOID);
+ VOID GenCFile (VOID);
+ VOID GenRecordListFile (VOID);
+};
+
+#endif