mirror of
https://github.com/webadderallorg/Recordly.git
synced 2026-09-28 16:55:36 +00:00
91 lines
2.6 KiB
JavaScript
91 lines
2.6 KiB
JavaScript
import { execSync } from 'node:child_process';
|
|
import { mkdirSync, existsSync } from 'node:fs';
|
|
import path from 'node:path';
|
|
|
|
const projectRoot = process.cwd();
|
|
const sourceDir = path.join(projectRoot, 'electron', 'native', 'wgc-capture');
|
|
const buildDir = path.join(sourceDir, 'build');
|
|
|
|
if (process.platform !== 'win32') {
|
|
console.log('[build-windows-capture] Skipping native Windows capture build: host platform is not Windows.');
|
|
process.exit(0);
|
|
}
|
|
|
|
if (!existsSync(path.join(sourceDir, 'CMakeLists.txt'))) {
|
|
console.error('[build-windows-capture] CMakeLists.txt not found at', sourceDir);
|
|
process.exit(1);
|
|
}
|
|
|
|
function findCmake() {
|
|
// Check PATH first
|
|
try {
|
|
execSync('cmake --version', { stdio: 'pipe' });
|
|
return 'cmake';
|
|
} catch {
|
|
// not on PATH
|
|
}
|
|
|
|
// VS 2022 bundled CMake
|
|
const vsEditions = ['Community', 'Professional', 'Enterprise', 'BuildTools'];
|
|
for (const edition of vsEditions) {
|
|
const cmakePath = path.join(
|
|
'C:', 'Program Files', 'Microsoft Visual Studio', '2022', edition,
|
|
'Common7', 'IDE', 'CommonExtensions', 'Microsoft', 'CMake', 'CMake', 'bin', 'cmake.exe'
|
|
);
|
|
if (existsSync(cmakePath)) {
|
|
return `"${cmakePath}"`;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
const cmake = findCmake();
|
|
if (!cmake) {
|
|
console.error('[build-windows-capture] CMake not found. Install Visual Studio with C++ CMake tools or standalone CMake.');
|
|
process.exit(1);
|
|
}
|
|
|
|
mkdirSync(buildDir, { recursive: true });
|
|
|
|
console.log('[build-windows-capture] Configuring CMake...');
|
|
try {
|
|
execSync(`${cmake} .. -G "Visual Studio 17 2022" -A x64`, {
|
|
cwd: buildDir,
|
|
stdio: 'inherit',
|
|
timeout: 120000,
|
|
});
|
|
} catch {
|
|
console.log('[build-windows-capture] VS 2022 generator not found, trying VS 2019...');
|
|
try {
|
|
execSync(`${cmake} .. -G "Visual Studio 16 2019" -A x64`, {
|
|
cwd: buildDir,
|
|
stdio: 'inherit',
|
|
timeout: 120000,
|
|
});
|
|
} catch (innerError) {
|
|
console.error('[build-windows-capture] CMake configure failed:', innerError.message);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
console.log('[build-windows-capture] Building native Windows capture helper...');
|
|
try {
|
|
execSync(`${cmake} --build . --config Release`, {
|
|
cwd: buildDir,
|
|
stdio: 'inherit',
|
|
timeout: 300000,
|
|
});
|
|
} catch (error) {
|
|
console.error('[build-windows-capture] Build failed:', error.message);
|
|
process.exit(1);
|
|
}
|
|
|
|
const exePath = path.join(buildDir, 'Release', 'wgc-capture.exe');
|
|
if (existsSync(exePath)) {
|
|
console.log(`[build-windows-capture] Built successfully: ${exePath}`);
|
|
} else {
|
|
console.error('[build-windows-capture] Expected exe not found at', exePath);
|
|
process.exit(1);
|
|
}
|