commands: move compiler.extractCommand -> commands.ts
This commit is contained in:
40
compiler.ts
40
compiler.ts
@@ -4,6 +4,7 @@ import path from "path"
|
||||
|
||||
// FIXME: these imports basically looks ugly.
|
||||
import { LLVM_EXTRACT, PREFIX, SYSROOT_PREFIX, FLANG } from "./environment";
|
||||
import { CompilerCommands } from "./commands";
|
||||
|
||||
|
||||
/**
|
||||
@@ -32,48 +33,13 @@ export function functionList(module: string) {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* CLI options used for llvm-extract executable.
|
||||
*/
|
||||
export interface ExtractOptions {
|
||||
/**
|
||||
* Functions to extract.
|
||||
*/
|
||||
func?: string[]
|
||||
|
||||
/**
|
||||
* Basic block specifiers.
|
||||
*/
|
||||
bb?: string[]
|
||||
|
||||
output?: string
|
||||
|
||||
/**
|
||||
* Input file name. If unspecified, llvm-extract reads from stdin
|
||||
*/
|
||||
input?: string
|
||||
|
||||
asm?: boolean
|
||||
}
|
||||
|
||||
export function extractCommand(options: ExtractOptions): string[] {
|
||||
return [
|
||||
...(options.func ?? []).flatMap(name => ["--func", name]),
|
||||
...(options.bb ?? []).flatMap(name => ["--bb", name]),
|
||||
...(options.output ? ["-o", options.output] : []),
|
||||
...(options.asm ? ["-S"] : []),
|
||||
...(options.input ? [options.input] : [])
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Extract one function using llvm-extract
|
||||
*/
|
||||
export async function extract(options: ExtractOptions) {
|
||||
export async function extract(options: CompilerCommands.ExtractOptions) {
|
||||
let process = child_process.spawn(
|
||||
LLVM_EXTRACT,
|
||||
extractCommand(options),
|
||||
CompilerCommands.extractCommand(options),
|
||||
{ stdio: "inherit" }
|
||||
)
|
||||
const exitcode = await new Promise((resolve, reject) => { process.on('close', resolve) })
|
||||
|
||||
Reference in New Issue
Block a user