Files
2026-07-13 13:29:13 +08:00

66 lines
1.7 KiB
JavaScript

#!/usr/bin/env node
/**
* Auto-detect GPU and run Tauri with appropriate features
*/
const { execSync } = require('child_process');
const path = require('path');
const fs = require('fs');
const os = require('os');
// Get the command (dev or build)
const command = process.argv[2];
if (!command || !['dev', 'build'].includes(command)) {
console.error('Usage: node tauri-auto.js [dev|build]');
process.exit(1);
}
// Detect GPU feature
let feature = '';
// Check for environment variable override first
if (process.env.TAURI_GPU_FEATURE) {
feature = process.env.TAURI_GPU_FEATURE;
console.log(`🔧 Using forced GPU feature from environment: ${feature}`);
} else {
try {
const result = execSync('node scripts/auto-detect-gpu.js', {
encoding: 'utf8',
stdio: ['pipe', 'pipe', 'inherit']
});
feature = result.trim();
} catch (err) {
// If detection fails, continue with no features
}
}
console.log(''); // Empty line for spacing
// Platform-specific environment variables
const platform = os.platform();
const env = { ...process.env };
if (platform === 'linux' && feature === 'cuda') {
console.log('🐧 Linux/CUDA detected: Setting CMAKE flags for NVIDIA GPU');
env.CMAKE_CUDA_ARCHITECTURES = '75';
env.CMAKE_CUDA_STANDARD = '17';
env.CMAKE_POSITION_INDEPENDENT_CODE = 'ON';
}
// Build the tauri command
let tauriCmd = `tauri ${command}`;
if (feature && feature !== 'none') {
tauriCmd += ` -- --features ${feature}`;
console.log(`🚀 Running: tauri ${command} with features: ${feature}`);
} else {
console.log(`🚀 Running: tauri ${command} (CPU-only mode)`);
}
console.log('');
// Execute the command
try {
execSync(tauriCmd, { stdio: 'inherit', env });
} catch (err) {
process.exit(err.status || 1);
}