Commit cc6fd0a7 authored by MySQL Build Team's avatar MySQL Build Team

merge

parents 377c783e 6cae1bb9
...@@ -252,7 +252,7 @@ public: ...@@ -252,7 +252,7 @@ public:
character set is utf-8, we can safely assume that no character set is utf-8, we can safely assume that no
character starts with a zero byte. character starts with a zero byte.
*/ */
return memcmp(m_ptr, rhs->m_ptr, min(m_length, rhs->m_length)+1); return memcmp(m_ptr, rhs->m_ptr, min(m_length, rhs->m_length));
} }
MDL_key(const MDL_key *rhs) MDL_key(const MDL_key *rhs)
......
Windows building readme
======================================
The Windows build system uses a tool named CMake to generate build files for
a variety of project systems. This tool is combined with a set of jscript
files to enable building of MySQL for Windows directly out of a bzr clone.
For relevant information and/or for building binaries from source distribution,
please refer to http://forge.mysql.com/wiki/CMake
/*
manifest.js - Writes a custom XML manifest for each executable/library
5 command line options must be supplied:
name - Name of the executable/library into which the mainfest will be
embedded.
version - Version of the executable
arch - Architecture intended.
exe_level - Application execution level.
[asInvoker|highestAvailable|requireAdministrator]
outfile - Final destination where mainfest will be written.
Example:
cscript manifest.js name=mysql version=5.0.32 arch=X86 type=win32
exe_level=asInvoker outfile=out.xml
*/
try
{
var args = WScript.Arguments
for (i=0; i < args.Count(); i++)
{
var parts = args.Item(i).split('=');
switch (parts[0])
{
case "name":
var app_name= parts[1];
break;
case "version":
var supp_version= parts[1];
// Clean up the supplied version string.
var end= supp_version.indexOf("-");
if (end == -1) end= supp_version.length;
var app_version= supp_version.substring(0, end);
var fourth_element= 0;
if(app_version.match(/[a-z]$/)) {
fourth_element+= (1 + app_version.charCodeAt(end-1) - "a".charCodeAt(0));
app_version= app_version.substring(0,--end);
}
if(app_version.match(/sp[1-9]$/)) {
fourth_element+= 100*(app_version.charCodeAt(end-1) - "0".charCodeAt(0));
app_version= app_version.substring(0, end-3);
end-= 3;
}
app_version+= "." + fourth_element;
break;
case "arch":
var app_arch= parts[1];
break;
case "exe_level":
var app_exe_level= parts[1];
break;
case "outfile":
var manifest_file= parts[1];
break;
default:
WScript.echo("Invalid argument supplied.");
}
}
if (i != 5)
throw new Error(1, "Incorrect number of arguments.");
var manifest_xml= "<?xml version=\'1.0\' encoding=\'UTF-8\' standalone=\'yes\'?>\r\n";
manifest_xml+= "<assembly xmlns=\'urn:schemas-microsoft-com:asm.v1\'";
manifest_xml+= " manifestVersion=\'1.0\'>\r\n";
// Application Information
manifest_xml+= "\t<assemblyIdentity name=\'" + app_name + "\'";
manifest_xml+= " version=\'" + app_version + "\'";
manifest_xml+= " processorArchitecture=\'" + app_arch + "\'";
manifest_xml+= " publicKeyToken=\'02ad33b422233ae3\'";
manifest_xml+= " type=\'win32\' />\r\n";
// Identify the application security requirements.
manifest_xml+= "\t<trustInfo xmlns=\'urn:schemas-microsoft-com:asm.v2\'>\r\n";
manifest_xml+= "\t\t<security>\r\n\t\t\t<requestedPrivileges>\r\n\t\t\t\t";
manifest_xml+= "<requestedExecutionLevel level=\'" + app_exe_level + "\'";
manifest_xml+= " uiAccess=\'false\'/>\r\n";
manifest_xml+= "\t\t\t</requestedPrivileges>\r\n\t\t</security>\r\n";
manifest_xml+= "\t</trustInfo>\r\n</assembly>\r\n";
// Write the valid XML to it's final destination.
var outfileXML = WScript.CreateObject("Msxml2.DOMDocument.3.0");
outfileXML.async = false;
if (!outfileXML.loadXML(manifest_xml))
{
WScript.Echo(manifest_xml);
throw new Error(2, "Invalid XML");
}
outfileXML.save(manifest_file);
WScript.Echo("Success, created custom manifest!");
WScript.Quit(0);
}
catch (e)
{
WScript.Echo("Error: " + e.description);
WScript.Quit(1);
}
# - MYSQL_EMBED_MANIFEST(target_name required_privs)
# Create a manifest for target_name. Set the execution level to require_privs
#
# NOTE. PROCESSOR_ARCH must be defined before this MACRO is called.
MACRO(MYSQL_EMBED_MANIFEST _target_name _required_privs)
ADD_CUSTOM_COMMAND(
TARGET ${_target_name}
PRE_LINK
COMMAND cscript.exe
ARGS "${PROJECT_SOURCE_DIR}/win/create_manifest.js" name=$(TargetName) version=${VERSION} arch=${PROCESSOR_ARCH} exe_level=${_required_privs} outfile=$(IntDir)\\$(TargetFileName).intermediate.manifest
COMMENT "Generates the contents of the manifest contents.")
ADD_CUSTOM_COMMAND(
TARGET ${_target_name}
POST_BUILD
COMMAND mt.exe ARGS -nologo -hashupdate -makecdfs -manifest $(IntDir)\\$(TargetFileName).intermediate.manifest -outputresource:$(TargetPath)
COMMAND makecat.exe ARGS $(IntDir)\\$(TargetFileName).intermediate.manifest.cdf
COMMAND signtool.exe ARGS sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetPath)
COMMENT "Embeds the manifest contents, creates a cryptographic catalog, signs the target with Authenticode certificate.")
ENDMACRO(MYSQL_EMBED_MANIFEST)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment