X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkCompatibilityPkg%2FSample%2FTools%2FSource%2FUefiVfrCompile%2FVfrCompiler.h;fp=EdkCompatibilityPkg%2FSample%2FTools%2FSource%2FUefiVfrCompile%2FVfrCompiler.h;h=a980cb5b1a0c48ae2abcec9f43ee4503ca965d31;hp=0000000000000000000000000000000000000000;hb=95d675b5272d76105e2109a11d8b35f416be8b29;hpb=c7f33ca42470dc87bc41a8583f427883123d67a1 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