forked from OSchip/llvm-project
Add a "Universal Driver" open project, and web page.
llvm-svn: 84366
This commit is contained in:
parent
4bbd1acf8b
commit
d512efa6d2
|
@ -102,6 +102,13 @@ StringRef'izing (converting to use <tt>llvm::StringRef</tt> instead of <tt>const
|
|||
char *</tt> or <tt>std::string</tt>) various clang interfaces. This generally
|
||||
simplifies the code and makes it more efficient.</li>
|
||||
|
||||
<li><b>Universal Driver</b>: Clang is inherently a cross compiler. We would like
|
||||
to define a new model for cross compilation which provides a great user
|
||||
experience -- it should be easy to cross compile applications, install support
|
||||
for new architectures, access different compilers and tools, and be consistent
|
||||
across different platforms. See the <a href="UniversalDriver.html">Universal
|
||||
Driver</a> web page for more information.</li>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||
"http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
|
||||
<title>Clang - Universal Driver</title>
|
||||
<link type="text/css" rel="stylesheet" href="menu.css" />
|
||||
<link type="text/css" rel="stylesheet" href="content.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!--#include virtual="menu.html.incl"-->
|
||||
|
||||
<div id="content">
|
||||
|
||||
<h1>The Clang Universal Driver Project</h1>
|
||||
|
||||
<p>Clang is inherently a cross compiler, in that it is always capable of
|
||||
building code for targets which are a different architecture or even operating
|
||||
system from the one running the compiler. However, actually cross compiling in
|
||||
practice involves much more than just generating the right assembly code for a
|
||||
target, it also requires having an appropriate tool chain (assemblers, linkers),
|
||||
access to header files and libraries for the target, and many other details (for
|
||||
example, the calling convention or whether software floating point is in
|
||||
use). Traditionally, compilers and development environments provide little
|
||||
assistance with this process, so users do not have easy access to the powerful
|
||||
underlying cross-compilation abilities of clang.</p>
|
||||
|
||||
<p>We would like to solve this problem by defining a new model for how cross
|
||||
compilation is done, based on the idea of a <i>universal driver</i>. The key
|
||||
point of this model is that the user would always access the compiler through a
|
||||
single entry point (e.g., <tt>/usr/bin/cc</tt>) and provide an argument
|
||||
specifying the <i>configuration</i> they would like to target. Under the hood
|
||||
this entry point (the universal driver) would have access to all the information
|
||||
that the driver, compiler, and other tools need to build applications for that
|
||||
target.</p>
|
||||
|
||||
<p>This is a large and open-ended project. It's eventually success depends not
|
||||
just on implementing the model, but also on getting buy-in from compiler
|
||||
developers, operating system distribution vendors and the development community
|
||||
at large. Our plan is to begin by defining a clear list of the problems we want
|
||||
to solve and a proposed implementation (from the user perspective).</p>
|
||||
|
||||
<p>This project is in the very early (i.e., thought experiment) stages of
|
||||
development. Stay tuned for more information, and of course, patches
|
||||
welcome!</p>
|
||||
|
||||
<p>See also <a href="http://llvm.org/PR4127">PR4127</a>.</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue