]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrCompiler.h
1) Sync EdkCompatibilityPkg with EDK 1.04. The changes includes:
[mirror_edk2.git] / EdkCompatibilityPkg / Sample / Tools / Source / UefiVfrCompile / VfrCompiler.h
diff --git a/EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrCompiler.h b/EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrCompiler.h
new file mode 100644 (file)
index 0000000..a980cb5
--- /dev/null
@@ -0,0 +1,90 @@
+#ifndef _VFRCOMPILER_H_\r
+#define _VFRCOMPILER_H_\r
+\r
+#include "Tiano.h"\r
+#include "EfiTypes.h"\r
+#include "EfiVfr.h"\r
+#include "VfrFormPkg.h"\r
+#include "VfrUtilityLib.h"\r
+\r
+#define PROGRAM_NAME                       "VfrCompile"\r
+#define VFR_COMPILER_VERSION               "UEFI 2.1"\r
+\r
+//\r
+// This is how we invoke the C preprocessor on the VFR source file\r
+// to resolve #defines, #includes, etc. To make C source files\r
+// shareable between VFR and drivers, define VFRCOMPILE so that\r
+// #ifdefs can be used in shared .h files.\r
+//\r
+#define PREPROCESSOR_COMMAND                "cl "\r
+#define PREPROCESSOR_OPTIONS                "/nologo /E /TC /DVFRCOMPILE "\r
+\r
+//\r
+// Specify the filename extensions for the files we generate.\r
+//\r
+#define VFR_PREPROCESS_FILENAME_EXTENSION   ".i"\r
+#define VFR_PACKAGE_FILENAME_EXTENSION      ".hpk"\r
+#define VFR_RECORDLIST_FILENAME_EXTENSION   ".lst"\r
+\r
+typedef struct {\r
+  INT8    VfrFileName[MAX_PATH];\r
+  INT8    RecordListFile[MAX_PATH];\r
+  INT8    PkgOutputFileName[MAX_PATH];\r
+  INT8    COutputFileName[MAX_PATH];\r
+  bool    CreateRecordListFile;\r
+  bool    CreateIfrPkgFile;\r
+  INT8    OutputDirectory[MAX_PATH];\r
+  INT8    PreprocessorOutputFileName[MAX_PATH];\r
+  INT8    VfrBaseFileName[MAX_PATH];  // name of input VFR file with no path or extension\r
+  INT8    *IncludePaths;\r
+  INT8    *CPreprocessorOptions;\r
+} OPTIONS;\r
+\r
+typedef enum {\r
+  STATUS_INITIALIZED = 1,\r
+  STATUS_PREPROCESSED,\r
+  STATUS_COMPILEED,\r
+  STATUS_GENBINARY,\r
+  STATUS_FINISHED,\r
+  STATUS_FAILED,\r
+  STATUS_DEAD,\r
+} COMPILER_RUN_STATUS;\r
+\r
+class CVfrCompiler {\r
+private:\r
+  COMPILER_RUN_STATUS  mRunStatus;\r
+  OPTIONS              mOptions;\r
+  INT8                 *mPreProcessCmd;\r
+  INT8                 *mPreProcessOpt;\r
+\r
+  VOID    OptionInitialization (IN INT32 , IN INT8 **);\r
+  VOID    AppendIncludePath (IN INT8 *);\r
+  VOID    AppendCPreprocessorOptions (IN INT8 *);\r
+  INT8    SetBaseFileName (VOID);\r
+  INT8    SetPkgOutputFileName (VOID);\r
+  INT8    SetCOutputFileName(VOID);\r
+  INT8    SetPreprocessorOutputFileName (VOID);\r
+  INT8    SetRecordListFileName (VOID);\r
+\r
+  VOID    SET_RUN_STATUS (IN COMPILER_RUN_STATUS);\r
+  BOOLEAN IS_RUN_STATUS (IN COMPILER_RUN_STATUS);\r
+\r
+public:\r
+  COMPILER_RUN_STATUS RunStatus (VOID) {\r
+    return mRunStatus;\r
+  }\r
+\r
+public:\r
+  CVfrCompiler (IN INT32 , IN INT8 **);\r
+  ~CVfrCompiler ();\r
+\r
+  VOID                Usage (VOID);\r
+\r
+  VOID                PreProcess (VOID);\r
+  VOID                Compile (VOID);\r
+  VOID                GenBinary (VOID);\r
+  VOID                GenCFile (VOID);\r
+  VOID                GenRecordListFile (VOID);\r
+};\r
+\r
+#endif\r