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
This commit is contained in:
lgao4
2009-07-17 09:10:31 +00:00
parent 577e30cdb4
commit 30fdf1140b
532 changed files with 231447 additions and 32 deletions

View File

@@ -0,0 +1,12 @@
!INCLUDE ..\Makefiles\ms.common
APPNAME = GenSec
LIBS = $(LIB_PATH)\Common.lib
OBJECTS = PyUtility.obj
#CFLAGS = $(CFLAGS) /nodefaultlib:libc.lib
!INCLUDE ..\Makefiles\ms.app

View File

@@ -0,0 +1,92 @@
#include <Python.h>
#include <Windows.h>
#include <Common/UefiBaseTypes.h>
/*
SaveFileToDisk(FilePath, Content)
*/
STATIC
PyObject*
SaveFileToDisk (
PyObject *Self,
PyObject *Args
)
{
CHAR8 *File;
UINT8 *Data;
UINTN DataLength;
UINTN WriteBytes;
UINTN Status;
HANDLE FileHandle;
PyObject *ReturnValue = Py_False;
Status = PyArg_ParseTuple(
Args,
"ss#",
&File,
&Data,
&DataLength
);
if (Status == 0) {
return NULL;
}
FileHandle = CreateFile(
File,
GENERIC_WRITE,
FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL
);
if (FileHandle == INVALID_HANDLE_VALUE) {
PyErr_SetString(PyExc_Exception, "File creation failure");
return NULL;
}
while (WriteFile(FileHandle, Data, DataLength, &WriteBytes, NULL)) {
if (DataLength <= WriteBytes) {
DataLength = 0;
break;
}
Data += WriteBytes;
DataLength -= WriteBytes;
}
if (DataLength != 0) {
// file saved unsuccessfully
PyErr_SetString(PyExc_Exception, "File write failure");
goto Done;
}
//
// Flush buffer may slow down the whole build performance (average 10s slower)
//
//if (!FlushFileBuffers(FileHandle)) {
// PyErr_SetString(PyExc_Exception, "File flush failure");
// goto Done;
//}
// success!
ReturnValue = Py_True;
Done:
CloseHandle(FileHandle);
return ReturnValue;
}
STATIC INT8 SaveFileToDiskDocs[] = "SaveFileToDisk(): Make sure the file is saved to disk\n";
STATIC PyMethodDef PyUtility_Funcs[] = {
{"SaveFileToDisk", (PyCFunction)SaveFileToDisk, METH_VARARGS, SaveFileToDiskDocs},
{NULL, NULL, 0, NULL}
};
PyMODINIT_FUNC
initPyUtility(VOID) {
Py_InitModule3("PyUtility", PyUtility_Funcs, "Utilties Module Implemented C Language");
}

View File

@@ -0,0 +1,42 @@
## @file
# package and install PyEfiCompressor extension
#
# Copyright (c) 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.
#
##
# Import Modules
#
from distutils.core import setup, Extension
import os
if 'BASE_TOOLS_PATH' not in os.environ:
raise "Please define BASE_TOOLS_PATH to the root of base tools tree"
BaseToolsDir = os.environ['BASE_TOOLS_PATH']
setup(
name="PyUtility",
version="0.01",
ext_modules=[
Extension(
'PyUtility',
sources=[
'PyUtility.c'
],
include_dirs=[
os.path.join(BaseToolsDir, 'Source', 'C', 'Include'),
os.path.join(BaseToolsDir, 'Source', 'C', 'Include', 'Ia32'),
os.path.join(BaseToolsDir, 'Source', 'C', 'Common')
],
)
],
)