summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/C/VfrCompile/VfrCompiler.h
diff options
context:
space:
mode:
Diffstat (limited to 'BaseTools/Source/C/VfrCompile/VfrCompiler.h')
-rw-r--r--BaseTools/Source/C/VfrCompile/VfrCompiler.h111
1 files changed, 111 insertions, 0 deletions
diff --git a/BaseTools/Source/C/VfrCompile/VfrCompiler.h b/BaseTools/Source/C/VfrCompile/VfrCompiler.h
new file mode 100644
index 0000000000..1c83e87f5f
--- /dev/null
+++ b/BaseTools/Source/C/VfrCompile/VfrCompiler.h
@@ -0,0 +1,111 @@
+/** @file
+
+ VfrCompiler internal defintions.
+
+Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef _VFRCOMPILER_H_
+#define _VFRCOMPILER_H_
+
+#include "Common/UefiBaseTypes.h"
+#include "EfiVfr.h"
+#include "VfrFormPkg.h"
+#include "VfrUtilityLib.h"
+#include "ParseInf.h"
+
+#define PROGRAM_NAME "VfrCompile"
+#define VFR_COMPILER_VERSION " 2.00 (UEFI 2.3.1)"
+#define VFR_COMPILER_UPDATE_TIME " updated on 2011/07/15"
+//
+// 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 {
+ CHAR8 VfrFileName[MAX_PATH];
+ CHAR8 RecordListFile[MAX_PATH];
+ CHAR8 PkgOutputFileName[MAX_PATH];
+ CHAR8 COutputFileName[MAX_PATH];
+ bool CreateRecordListFile;
+ bool CreateIfrPkgFile;
+ CHAR8 OutputDirectory[MAX_PATH];
+ CHAR8 PreprocessorOutputFileName[MAX_PATH];
+ CHAR8 VfrBaseFileName[MAX_PATH]; // name of input VFR file with no path or extension
+ CHAR8 *IncludePaths;
+ bool SkipCPreprocessor;
+ CHAR8 *CPreprocessorOptions;
+ BOOLEAN CompatibleMode;
+ BOOLEAN HasOverrideClassGuid;
+ EFI_GUID OverrideClassGuid;
+} 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;
+ CHAR8 *mPreProcessCmd;
+ CHAR8 *mPreProcessOpt;
+
+ VOID OptionInitialization (IN INT32 , IN CHAR8 **);
+ VOID AppendIncludePath (IN CHAR8 *);
+ VOID AppendCPreprocessorOptions (IN CHAR8 *);
+ 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 CHAR8 **);
+ ~CVfrCompiler ();
+
+ VOID Usage (VOID);
+
+ VOID PreProcess (VOID);
+ VOID Compile (VOID);
+ VOID AdjustBin (VOID);
+ VOID GenBinary (VOID);
+ VOID GenCFile (VOID);
+ VOID GenRecordListFile (VOID);
+ VOID DebugError (IN CHAR8*, IN UINT32, IN UINT32, IN CONST CHAR8*, IN CONST CHAR8*, ...);
+};
+
+#endif