2010-02-08 10:48:29 +01:00
|
|
|
/*++
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
--*/
|
|
|
|
|
1) Sync EdkCompatibilityPkg with EDK 1.04. The changes includes:
1.1) Bug fixes. (For details, please check Documents & files: Snapshot/Release Notes at https://edk.tianocore.org/servlets/ProjectDocumentList?folderID=43&expandFolder=43&folderID=6)
1.2) Add new UEFI protocol definitions for AbsolutePointer, FormBrowser2, HiiConfigAccess, HiiConfigRouting, HiiDatabase, HiiFont, HiiImage, HiiString, SimpleTextInputEx, DPC protocol.
1.3) Add Smbios 2.5, 2.6 supports.
Incompatible changes hilighted:
1) EFI_MANAGED_NETWORK_PROTOCOL_GUID changed.
2) EFI_IP4_IPCONFIG_DATA changed.
2) Add in EdkCompatibilityPkg/EdkCompatibilityPkg.dsc to build all libraries in this package.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4624 6f19259b-4bc3-4df7-8a09-765794883524
2008-01-24 08:29:31 +01:00
|
|
|
#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
|