From 30fdf1140b8d1ce93f3821d986fa165552023440 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Fri, 17 Jul 2009 09:10:31 +0000 Subject: Check In tool source code based on Build tool project revision r1655. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8964 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Source/C/VfrCompile/VfrCompiler.h | 108 ++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 BaseTools/Source/C/VfrCompile/VfrCompiler.h (limited to 'BaseTools/Source/C/VfrCompile/VfrCompiler.h') diff --git a/BaseTools/Source/C/VfrCompile/VfrCompiler.h b/BaseTools/Source/C/VfrCompile/VfrCompiler.h new file mode 100644 index 0000000000..d3aa8ca56a --- /dev/null +++ b/BaseTools/Source/C/VfrCompile/VfrCompiler.h @@ -0,0 +1,108 @@ +/** @file + + VfrCompiler internal defintions. + +Copyright (c) 2004 - 2008, 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. + +**/ + +#ifndef _VFRCOMPILER_H_ +#define _VFRCOMPILER_H_ + +#include "Common/UefiBaseTypes.h" +#include "EfiVfr.h" +#include "VfrFormPkg.h" +#include "VfrUtilityLib.h" + +#define PROGRAM_NAME "VfrCompile" +#define VFR_COMPILER_VERSION " 1.95 (UEFI 2.1)" +#define VFR_COMPILER_UPDATE_TIME " updated on 2009/05/20" +// +// 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; +} 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 (VOID); +}; + +#endif -- cgit v1.2.3