mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-12-17 15:18:06 +01:00
109 lines
3.1 KiB
C
109 lines
3.1 KiB
C
|
/** @file
|
||
|
|
||
|
VfrCompiler internal definitions.
|
||
|
|
||
|
Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.<BR>
|
||
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||
|
|
||
|
**/
|
||
|
|
||
|
#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.01 (UEFI 2.4) "
|
||
|
//
|
||
|
// 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;
|
||
|
CHAR8 *RecordListFile;
|
||
|
CHAR8 *PkgOutputFileName;
|
||
|
CHAR8 *COutputFileName;
|
||
|
bool CreateRecordListFile;
|
||
|
bool CreateIfrPkgFile;
|
||
|
CHAR8 *OutputDirectory;
|
||
|
CHAR8 *PreprocessorOutputFileName;
|
||
|
CHAR8 *VfrBaseFileName; // name of input VFR file with no path or extension
|
||
|
CHAR8 *IncludePaths;
|
||
|
bool SkipCPreprocessor;
|
||
|
CHAR8 *CPreprocessorOptions;
|
||
|
BOOLEAN HasOverrideClassGuid;
|
||
|
EFI_GUID OverrideClassGuid;
|
||
|
BOOLEAN WarningAsError;
|
||
|
BOOLEAN AutoDefault;
|
||
|
BOOLEAN CheckDefault;
|
||
|
} OPTIONS;
|
||
|
|
||
|
typedef enum {
|
||
|
STATUS_STARTED = 0,
|
||
|
STATUS_INITIALIZED,
|
||
|
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 Version (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
|