SystemUtils.h revision 436f23ebf58418611f798faf7e00de05c7a42e21
1//===- SystemUtils.h - Utilities to do low-level system stuff ---*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file was developed by the LLVM research group and is distributed under 6// the University of Illinois Open Source License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file contains functions used to do a variety of low-level, often 11// system-specific, tasks. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_SUPPORT_SYSTEMUTILS_H 16#define LLVM_SUPPORT_SYSTEMUTILS_H 17 18#include "llvm/System/Program.h" 19 20namespace llvm { 21 22/// Determine if the ostream provided is connected to the std::cout and 23/// displayed or not (to a console window). If so, generate a warning message 24/// advising against display of bytecode and return true. Otherwise just return 25/// false 26/// @brief Check for output written to a console 27bool CheckBytecodeOutputToConsole(std::ostream* stream_to_check); 28 29/// FindExecutable - Find a named executable, giving the argv[0] of program 30/// being executed. This allows us to find another LLVM tool if it is built into 31/// the same directory, but that directory is neither the current directory, nor 32/// in the PATH. If the executable cannot be found, return an empty string. 33/// @brief Find a named executable. 34sys::Path FindExecutable(const std::string &ExeName, 35 const std::string &ProgramPath); 36 37/// RunProgramWithTimeout - This function provides an alternate interface to the 38/// sys::Program::ExecuteAndWait interface. 39/// @see sys:Program::ExecuteAndWait 40inline int RunProgramWithTimeout(const sys::Path &ProgramPath, 41 const char **Args, 42 const sys::Path &StdInFile, 43 const sys::Path &StdOutFile, 44 const sys::Path &StdErrFile, 45 unsigned NumSeconds = 0) { 46 const sys::Path* redirects[3]; 47 redirects[0] = &StdInFile; 48 redirects[1] = &StdOutFile; 49 redirects[2] = &StdErrFile; 50 51 return 52 sys::Program::ExecuteAndWait(ProgramPath, Args, 0, redirects, NumSeconds); 53} 54 55} // End llvm namespace 56 57#endif 58