| /*++ |
| |
| Copyright (c) 2004 - 2009, Intel Corporation |
| All rights reserved. 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. |
| |
| Module Name: |
| |
| VfrCompiler.h |
| |
| Abstract: |
| |
| --*/
|
|
|
| #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
|