mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-04 05:17:07 +00:00 
			
		
		
		
	on ideas mentioned in PR686. Written by Mikhail Glushenkov and contributed by Codedgers, Inc. Old llvmc will be removed soon after new one will have all its properties. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48699 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
//===--- Utility.cpp - The LLVM Compiler Driver -----------------*- C++ -*-===//
 | 
						|
//
 | 
						|
//                     The LLVM Compiler Infrastructure
 | 
						|
//
 | 
						|
// This file is distributed under the University of Illinois Open
 | 
						|
// Source License. See LICENSE.TXT for details.
 | 
						|
//
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
//
 | 
						|
//  Various helper and utility functions - implementation.
 | 
						|
//
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
 | 
						|
#include "Utility.h"
 | 
						|
 | 
						|
#include "llvm/System/Program.h"
 | 
						|
 | 
						|
#include <stdexcept>
 | 
						|
 | 
						|
using namespace llvm;
 | 
						|
 | 
						|
int llvmcc::ExecuteProgram(const std::string& name,
 | 
						|
                           const std::vector<std::string>& args) {
 | 
						|
  sys::Path prog = sys::Program::FindProgramByName(name);
 | 
						|
 | 
						|
  if (prog.isEmpty())
 | 
						|
    throw std::runtime_error("Can't find program '" + name + "'");
 | 
						|
  if (!prog.canExecute())
 | 
						|
    throw std::runtime_error("Program '" + name + "' is not executable.");
 | 
						|
 | 
						|
  // Invoke the program
 | 
						|
  std::vector<const char*> argv((args.size()+2));
 | 
						|
  argv[0] = name.c_str();
 | 
						|
  for (unsigned i = 1; i <= args.size(); ++i)
 | 
						|
    argv[i] = args[i-1].c_str();
 | 
						|
  argv[args.size()+1] = 0;  // null terminate list.
 | 
						|
 | 
						|
  return sys::Program::ExecuteAndWait(prog, &argv[0]);
 | 
						|
}
 |