Add a "Universal Driver" open project, and web page.

llvm-svn: 84366
This commit is contained in:
Daniel Dunbar 2009-10-17 21:50:11 +00:00
parent 4bbd1acf8b
commit d512efa6d2
2 changed files with 59 additions and 0 deletions

View File

@ -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>

View File

@ -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>