add installer JScript file
This commit is contained in:
parent
1150ab329b
commit
9d158c3ad7
168
install.js
Normal file
168
install.js
Normal file
|
@ -0,0 +1,168 @@
|
||||||
|
var stdout = WScript.StdOut;
|
||||||
|
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
||||||
|
|
||||||
|
var DEFINES = [
|
||||||
|
"USE_WOLFSSL_IO",
|
||||||
|
"HAVE_AESGCM",
|
||||||
|
"WOLFSSL_TLS13",
|
||||||
|
"HAVE_HKDF",
|
||||||
|
"HAVE_FFDHE_4096",
|
||||||
|
"WC_RSA_PSS",
|
||||||
|
"WOLFSSL_DTLS",
|
||||||
|
"WOLFSSL_DTLS13",
|
||||||
|
"WOLFSSL_SEND_HRR_COOKIE",
|
||||||
|
"WOLFSSL_DTLS_CID",
|
||||||
|
"WOLF_C89",
|
||||||
|
"NO_WOLF_C99",
|
||||||
|
"WC_RSA_BLINDING",
|
||||||
|
"NO_MULTIBYTE_PRINT",
|
||||||
|
"HAVE_CRL",
|
||||||
|
"HAVE_CRL_MONITOR",
|
||||||
|
"OPENSSL_EXTRA",
|
||||||
|
"HAVE_ECC",
|
||||||
|
"XVSNPRINTF _vsnprintf"
|
||||||
|
];
|
||||||
|
|
||||||
|
var IGNORES = [
|
||||||
|
"wolfssl/wolfcrypt/port/atmel",
|
||||||
|
"wolfssl/wolfcrypt/port/af_alg",
|
||||||
|
"wolfssl/wolfcrypt/port/kcapi",
|
||||||
|
"wolfssl/wolfcrypt/port/devcrypto",
|
||||||
|
"wolfssl/wolfcrypt/async.h",
|
||||||
|
"wolfssl/wolfcrypt/wc_pkcs11.h",
|
||||||
|
"wolfssl/wolfcrypt/pkcs11.h",
|
||||||
|
"wolfssl/wolfcrypt/port/cavium",
|
||||||
|
"wolfssl/wolfcrypt/port/intel",
|
||||||
|
"wolfssl/wolfcrypt/sp.h",
|
||||||
|
"wolfssl/wolfcrypt/sp_int.h",
|
||||||
|
"wolfssl/wolfcrypt/selftest.h",
|
||||||
|
"wolfssl/wolfcrypt/fips.h",
|
||||||
|
"wolfssl/wolfcrypt/port/caam",
|
||||||
|
];
|
||||||
|
|
||||||
|
var IGNORE_RE = new RegExp("^(" + IGNORES.join(" | ") + ")");
|
||||||
|
|
||||||
|
function relative(root, path) {
|
||||||
|
if (path.indexOf(root) == 0) {
|
||||||
|
// without the root + path separator
|
||||||
|
return path.substr(root.length + 1);
|
||||||
|
} else {
|
||||||
|
// out of bounds, ignore
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function copyIncludes(root, dir, out) {
|
||||||
|
for (var fc = new Enumerator(dir.Files);
|
||||||
|
!fc.atEnd();
|
||||||
|
fc.moveNext()) {
|
||||||
|
var fci = fc.item();
|
||||||
|
if (fci.Name.match(".h$") != null) {
|
||||||
|
var relPath = relative(root, fc.item().Path);
|
||||||
|
if (relPath.match(IGNORE_RE) == null) {
|
||||||
|
stdout.WriteLine("->> " + relPath);
|
||||||
|
fci.Copy(out.Path + "\\" + relPath, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (var fc = new Enumerator(dir.SubFolders);
|
||||||
|
!fc.atEnd();
|
||||||
|
fc.moveNext()) {
|
||||||
|
var dir = fc.item();
|
||||||
|
var relPath = relative(root, dir.Path);
|
||||||
|
if (relPath.match(IGNORE_RE) == null) {
|
||||||
|
var newPath = out.Path + "\\" + relPath;
|
||||||
|
try {
|
||||||
|
fso.CreateFolder(newPath);
|
||||||
|
} catch (e) {
|
||||||
|
stdout.WriteLine("WARNING: couldn't create " + newPath +
|
||||||
|
": " + e.description);
|
||||||
|
}
|
||||||
|
copyIncludes(root, dir, out);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// options.h file generator
|
||||||
|
function writeOptions(file) {
|
||||||
|
file.WriteLine("/* auto-generated options file for win32 */");
|
||||||
|
file.WriteLine("");
|
||||||
|
file.WriteLine("#ifndef WOLFSSL_OPTIONS_H");
|
||||||
|
file.WriteLine("#define WOLFSSL_OPTIONS_H");
|
||||||
|
file.WriteLine("");
|
||||||
|
file.WriteLine("#ifdef __cplusplus");
|
||||||
|
file.WriteLine("extern \"C\" {");
|
||||||
|
file.WriteLine("#endif");
|
||||||
|
file.WriteLine("");
|
||||||
|
for (var def in DEFINES) {
|
||||||
|
file.WriteLine("#define " + DEFINES[def]);
|
||||||
|
}
|
||||||
|
file.WriteLine("");
|
||||||
|
file.WriteLine("#ifdef __cplusplus");
|
||||||
|
file.WriteLine("}");
|
||||||
|
file.WriteLine("#endif");
|
||||||
|
file.WriteLine("");
|
||||||
|
file.WriteLine("#endif /* WOLFSSL_OPTIONS_H */");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WScript.Arguments.length < 2) {
|
||||||
|
stdout.WriteLine("usage: install.js OUT-DIR Debug|Release");
|
||||||
|
WScript.Quit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var inRootPath = fso.GetParentFolderName(WScript.ScriptFullName);
|
||||||
|
var outPath = WScript.Arguments(0);
|
||||||
|
var profile = WScript.Arguments(1);
|
||||||
|
|
||||||
|
var inRoot = fso.GetFolder(inRootPath);
|
||||||
|
var wssl = fso.GetFolder(inRoot.Path + "\\wolfssl");
|
||||||
|
var inLibPath = inRoot.Path + "\\" + profile;
|
||||||
|
try {
|
||||||
|
var inLibDir = fso.GetFolder(inLibPath);
|
||||||
|
} catch (e) {
|
||||||
|
stdout.WriteLine("Couldn't find " + inLibPath + " (using profile "
|
||||||
|
+ profile + "): " + e.description);
|
||||||
|
WScript.Quit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
stdout.WriteLine("Opening " + outPath);
|
||||||
|
|
||||||
|
if (fso.FolderExists(outPath)) {
|
||||||
|
var outRoot = fso.GetFolder(outPath);
|
||||||
|
} else {
|
||||||
|
var outRoot = fso.CreateFolder(outPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the include dir and its prereq subdirs
|
||||||
|
var outIncludePath = outRoot.Path + "\\include";
|
||||||
|
if (fso.FolderExists(outIncludePath)) {
|
||||||
|
var outInclude = fso.GetFolder(outIncludePath);
|
||||||
|
} else {
|
||||||
|
var outInclude = fso.CreateFolder(outIncludePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fso.FolderExists(outIncludePath + "\\wolfssl")) {
|
||||||
|
fso.CreateFolder(outIncludePath + "\\wolfssl");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy all exposed headers to the include path
|
||||||
|
copyIncludes(inRoot.Path, wssl, outInclude);
|
||||||
|
|
||||||
|
// Modify options.h with our pre-defined options
|
||||||
|
var optsPath = outIncludePath + "\\wolfssl\\options.h";
|
||||||
|
var optsFile = fso.CreateTextFile(optsPath, true);
|
||||||
|
|
||||||
|
stdout.WriteLine(">> Writing options.h")
|
||||||
|
writeOptions(optsFile);
|
||||||
|
|
||||||
|
// Create the lib dir
|
||||||
|
var outLibPath = outRoot.Path + "\\lib";
|
||||||
|
if (!fso.FolderExists(outLibPath)) {
|
||||||
|
fso.CreateFolder(outLibPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
stdout.WriteLine(">> Copying wolfssl.lib");
|
||||||
|
fso.CopyFile(inLibPath + "\\wolfssl.lib", outLibPath + "\\wolfssl.lib",
|
||||||
|
true);
|
||||||
|
|
||||||
|
stdout.WriteLine(">> Done!");
|
Loading…
Reference in a new issue