UNPKG

nvk-optix-denoiser

Version:
95 lines (85 loc) 2.73 kB
const fs = require("fs"); const ncp = require("ncp"); const { spawn } = require("child_process"); const pkg = require("./package.json"); const platform = process.platform; const v8Version = process.versions.v8; const nodeVersion = process.versions.node; const architecture = process.arch; ncp.limit = 16; const msvsVersion = process.env.npm_config_msvsversion || ""; process.stdout.write(` Compiling... Platform: ${platform} | ${architecture} Node: ${nodeVersion} V8: ${v8Version} `); // build // build/release let buildDir = `./build/`; let buildReleaseDir = buildDir + "Release/"; if (!fs.existsSync(buildDir)) fs.mkdirSync(buildDir); if (!fs.existsSync(buildReleaseDir)) fs.mkdirSync(buildReleaseDir); function copyFiles() { process.stdout.write(`\nCopying files..\n`); return new Promise(resolve => { // copy files into release folder let libDir = `./third_party/lib/${platform}/${architecture}`; let binDir = `./third_party/bin/${platform}/${architecture}`; let targetDir = `./build/Release`; let sdkPath = process.env.VULKAN_SDK; let files = []; // add win32 runtime files if (platform === "win32") { // libs //files.push(); } let counter = 0; if (files.length <= 0) resolve(true); files.map(entry => { let source = entry[0]; let target = entry[1]; // copy single files let fileName = source.replace(/^.*[\\\/]/, ""); let isFile = fileName.length > 0; if (isFile) target += "/" + fileName; // copy ncp(source, target, error => { process.stdout.write(`Copying ${source} -> ${target}\n`); if (error) { process.stderr.write(`Failed to copy ${source} -> ${target}\n`); throw error; } }); if (counter++ >= files.length - 1) { process.stdout.write("Done!\n"); resolve(true); } }); }); }; function buildFiles() { process.stdout.write(`\nCompiling bindings..\n`); return new Promise(resolve => { let msargs = ""; // add win32 vs version if (platform === "win32") { msargs += `--msvs_version ${msvsVersion}`; } let cmd = `node-gyp configure && node-gyp build`; let shell = spawn(cmd, { shell: true, stdio: "inherit" }, { stdio: "pipe" }); shell.on("exit", error => { if (!error) process.stdout.write("Done!\n"); resolve(!error); }); }); }; (async function run() { await copyFiles(); let buildSuccess = await buildFiles(); if (buildSuccess) { process.stdout.write(`\nCompilation succeeded!\n`); } else { process.stderr.write(`\nCompilation failed!`); } })();